銀行エンジニアリング 35:金利・流動性・オペレーショナルリスクの測り方
同じスナップショットから、金利の影響、預金が流出したときの資金繰り、障害による損失を、それぞれ円で表します。式を1つずつ追い、Treasuryと同じ式が使われていることを確かめます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 純金利収益(NII)の感応度と預金ベータ
- 流動性バッファと資金不足の調達費用
- 障害の所要時間を損失に換算する
PLAIN LANGUAGE
まず、ここだけつかむ
金利は純金利収益の変化、流動性は流出後の比率と調達費用、オペレーショナルは障害の所要時間から、円で表します。
金利と流動性の式は、v13のTreasuryと同じです。両者が一致することをテストで固定しています。
4つを単純に足した合計は、相関や分散の効果を考えていない、と明記します。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
預金ベータ
基準金利が動いたとき、預金金利がどれだけ追随するかの割合です。
預金の利息費用の増え方を決めるためです。
treasury.policy の deposit_beta(30%)。
流動性バッファ
残存預金に対して持つべき、すぐ払える資金の割合です。
預金が出ていっても払えるようにするためです。
20%。下回ると不足分の調達が必要。
重大度の重み
障害の深刻さに応じた倍率です。
重い障害ほど損失が大きいと見積もるためです。
SEV1=4、SEV2=2、SEV3=1(架空)。
Level 1 基礎:3つのリスクは、原因も単位も違う
| リスク | 起きること | MiniBankでの数字 |
|---|---|---|
| 金利(市場) | 金利が動くと、受け取る利息と支払う利息の差が変わる | 純金利収益(NII)の年間の変化 |
| 流動性 | 預金が急に出ていき、払えるお金が足りなくなる | 流出後の流動性比率と、不足分を借りる年間の費用 |
| オペレーショナル | 障害や事務の失敗で損失が出る | 障害の所要時間から見積もる損失 |
Level 2 銀行業務:例題
普通預金1,000万円、定期預金200万円、流動資産250万円(中央銀行預け金250万円)、コールローン700万円の銀行を考えます(基準金利0.25%、調達スプレッド0.10%、流動性の最低バッファは残存預金の20%)。
- 金利が上がると得をするのは、この銀行が『金利に敏感な資産』を多く持っているからです。リスクの比較では、純金利収益の『減少』だけを損失として数え、増えるときは0とします。
| シナリオ | 計算 | 結果 |
|---|---|---|
| 預金が20%流出 | 流出 200万円。流動資産は 250万 − 200万 = 50万円。バッファは (800万 + 200万) × 20% = 200万円 | 不足 150万円。流動性比率は 5%(警戒水準の20%を下回る) |
| 不足分の調達費用 | 150万円 × 調達金利 0.35% | 年間 5,250円 |
| 金利が+1.00% | 受け取る利息は増え、預金の利息は預金ベータ(30%)ぶんだけ増える | この例では、純金利収益は年間 65,000円増える |
Level 3 システム:MiniBankでの実装
- risk.alm_calc は、v13のTreasuryの式(treasury.run_scenario)と同じ計算を、書込みのない純粋な関数にしたもの。同じ入力で両方を実行し、結果が一致することをテストで固定している。式が片方だけ変わると、テストが失敗する
- 預金の金利は、v15の価格の版が営業日に定める実際の金利(普通預金の年利、定期預金の加重平均の契約金利)を使う。価格が欠けたときだけ、v13の市場の仮定に置き換え、警告を残す
- 再評価ギャップ(1年以内に金利が見直される資産 − 負債の累積)も併せて示す
- risk.operational_calc:所要時間(分)→時間 × 1時間あたりの損失 × 重大度の重み × 障害の倍率。継続中のインシデントは、スナップショットを取った時刻までで数え、『継続中』の注意を残す
- 重大度の重みは SEV1=4、SEV2=2、SEV3=1、1時間あたりの損失は50,000円(承認済みの版。いずれも教育用の仮定)
異常時:流動性が警戒水準を下回る
| 段階 | 内容 |
|---|---|
| 症状 | 預金流出のシナリオで、流動性の欄に『下回り』と出る |
| 読み方 | 実際に流出が起きたら、警戒水準を満たすために不足分を借りる必要がある。その費用が『不足資金の調達費用』 |
| 対応の例 | コールローンの運用を減らして預け金に戻す、定期預金の満期を分散する、を対策案として記録する(実際の取引は自動では変わらない) |
Level 4 アーキテクチャ:数字をそのまま足さない
4つのリスクの円の数字は、同じ単位に並べられますが、単純に足すと、リスクどうしの相関や分散の効果が無視されます。MiniBankはそのことを結果に明記し、合計を『単純合算』と呼びます。規制上の比率(LCRなど)とは別物です。
どこを確認すればよいか
- 管理画面『リスク管理』:シナリオ別の比較表(金利・流動性・障害の欄)
- 運用センター:継続中のインシデントが、注意としてスナップショットに残る
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1金利が上がると純金利収益はいつも減りますか?
いいえ。金利に敏感な資産が多ければ増えます。リスクとして数えるのは減少分だけです。
Q2継続中のインシデントは、どう数えますか?
スナップショットを取った時刻までの時間で数え、『継続中』の注意を残します。
Q3リスクの合計は規制上の比率ですか?
いいえ。教育用の単純合算です。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
SOURCE TRAIL
根拠と関連教材
CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。
確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。
Implementation Status: IMPLEMENTED IN MINIBANK(この教材が扱うコードの範囲)
- RELATED LESSON/docs/be-rate-shock金利ショックの試算(v13)
- RELATED LESSON/docs/be-deposit-outflow-scenario預金流出の試算(v13)
- RELATED LESSON/docs/be-incident-recoveryインシデントと復旧
- CURRENT IMPLEMENTATION
supabase/migrations/20260930140000_v18_risk.sqlrisk.alm_calc金利・流動性:v13のTreasuryと同じ式の、書込みのない版 - CURRENT IMPLEMENTATION
supabase/migrations/20260930140000_v18_risk.sqlrisk.operational_calcオペレーショナルリスク:所要時間 × 1時間の損失 × 重大度の重み - CURRENT IMPLEMENTATION
supabase/migrations/20260930140000_v18_risk.sqlrisk.compute凍結した入力・パラメータ・シナリオから結果を作る純粋な関数 - CURRENT IMPLEMENTATION
scripts/banking/v18-risk.test.mjs式の手計算、v13との一致、凍結と再現、欠測、元帳を書かないこと、決裁のDBテスト