銀行エンジニアリング 36:ストレスの比較・再現・対策案の決定
基準とストレスを同じ入力で並べ、結果を再計算で再現し、対策案を『決定の記録』として残します。リスクの計算が、取引や商品を自動では変えない理由も確かめます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 基準とストレスの比較と、比べられない組み合わせ
- 実行の冪等性と再計算による再現
- パラメータの版と対策案の二者承認
PLAIN LANGUAGE
まず、ここだけつかむ
基準とストレスは、同じスナップショット・同じパラメータの版どうしだけを比べます。
実行は冪等で、保存された入力から再計算して結果を再現できます。
パラメータの版と対策案は、提案者とは別の管理責任者が決裁します。決裁は記録で、取引は自動では変わりません。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
再現
同じ入力から同じ結果が出ることです。
説明と監査ができるようにするためです。
risk.recompute。ハッシュの一致。
冪等な実行
同じ組み合わせの再実行が、前の結果を返すことです。
二重に保存しないためです。
(snapshot, scenario, パラメータの版, モデルの版) が一意。
決定の記録
誰が、何を、なぜ承認したかの記録です。
責任の所在を残すためです。
risk.measures。実取引は変えない。
Level 1 基礎:ストレスは『もしも』の数字
ストレステストは、予測ではなく『もし、こうなったら』の試算です。基準(ストレスなし)と並べて、何がどれだけ悪化するかを見ます。
| シナリオ | 置く条件 |
|---|---|
| 基準 | ストレスなし |
| 金利+1% | 基準金利が100bp上がる |
| 預金流出20% | 普通預金の20%が出ていく |
| 信用ストレス | PDが2倍、LGDが10ポイント上がる |
| 複合 | 上の3つと、障害の損失1.5倍を同時に置く |
Level 2 銀行業務:比べるときの決まり
- 同じスナップショットから作った実行どうしだけを比べる(違うと RK003)
- 同じパラメータの版どうしだけを比べる(違うと RK004)
- PD・LGD などの版は、提案者とは別の管理責任者が承認する(自己承認は RK005)。承認すると、以後の実行が新しい版を使い、過去の実行は使った版のまま残る
- 対策案も同じ二者承認。承認は『決定の記録』で、取引・商品・上限は変わらない
Level 3 システム:MiniBankでの実装
- risk.run は (スナップショット, シナリオ, パラメータの版, モデルの版) が同じなら、前の実行をそのまま返す(冪等)。結果には式、仮定、警告が含まれ、結果のハッシュが保存される
- risk.recompute は、保存された入力とパラメータから結果を計算し直し、ハッシュが一致するかを返す。入力をこっそり書き換えると、一致しなくなる(入力ハッシュも合わなくなる)
- risk 関数は Posting を呼ばず、元帳・商品・契約の表に一切書かない。テストで、実行の前後に元帳の件数・試算表・口座残高が変わらないことと、移行のSQLに投稿する記述がないことを固定している
- 承認待ちのパラメータと対策案は、運用センターの承認キューに出る
異常時:ストレスの数字が急に変わった
| 段階 | 内容 |
|---|---|
| 症状 | 同じシナリオの悪影響の合計が、前日と大きく違う |
| 確認1 | スナップショットの入力ハッシュ:入力が変わったのか(融資の延滞、障害、預金残高) |
| 確認2 | パラメータの版:承認された新しい版に切り替わっていないか |
| 確認3 | recompute:保存された結果が、凍結した入力から再現できるか(できなければ調査) |
Level 4 アーキテクチャ:計算と決定を分ける
リスクの計算は『見る』仕組み、対策の決定は『決める』仕組みです。見る仕組みが商品や取引を書き換えられないようにしておけば、モデルの誤りが顧客に波及しません。決める仕組みは、人の承認の記録として残します。
どこを確認すればよいか
- 管理画面『リスク管理』:比較表、パラメータの版、対策案
- Lab:ストレスを実行し、再計算で再現できること、自己承認が断られることを確かめる
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1別のスナップショットの実行どうしを比べられますか?
できません(RK003)。
Q2提案者が自分の提案を承認できますか?
できません(RK005)。
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-risk-snapshot-creditスナップショットと信用リスク
- RELATED LESSON/docs/be-risk-market-liquidity-operational金利・流動性・オペレーショナル
- CURRENT IMPLEMENTATION
supabase/migrations/20260930140000_v18_risk.sqlrisk.run / risk.recompute / risk.compare実行の保存(冪等)・再計算による再現の確認・同じ入力どうしの比較 - CURRENT IMPLEMENTATION
supabase/migrations/20260930140000_v18_risk.sqlrisk.decide_parameters / risk.decide_measureパラメータの版と対策案は、提案者とは別の管理責任者が決裁する - CURRENT IMPLEMENTATION
scripts/banking/v18-risk.test.mjs式の手計算、v13との一致、凍結と再現、欠測、元帳を書かないこと、決裁のDBテスト