銀行エンジニアリング Lab 13:Twin Lab(凍結 → 実行 → 因果を読む → 比べる → 再現)
実績を凍結し、全シナリオを実行して、政策金利の上昇が預金・貸出・調達・損益にどう伝わるかを読み、同じシード値で再現できること、実績と予測が別の欄にあること、元帳が動かないことを確かめます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- ベースラインの凍結とシナリオの実行
- 因果の各段階の式と仕訳の読み方
- 再現・感応度・実績との差
PLAIN LANGUAGE
まず、ここだけつかむ
実績を凍結し、全シナリオを実行して、金利上昇の伝わり方を段階ごとに読みます。
同じシード値の再現、感応度、実績との差を確かめます。
模型が元帳を動かさず、モデルの版の承認が別の管理責任者であることを確かめます。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
冪等な実行
同じ組み合わせの再実行が、前の結果を返すことです。
二重に保存しないためです。
(ベースライン, シナリオ, モデルの版, シード値) が一意。
再計算による再現
保存された入力から結果を作り直して比べることです。
入力や結果の改ざんを見つけるためです。
twin.recompute。
実績と予測の分離
二つを別の欄・別の色で示すことです。
予測が事実のように読まれるのを防ぐためです。
『実績(元帳)』と『予測(模型の出力)』。
準備
ローカルの検証用DBを用意し、管理画面『Digital Twin』を開きます。実行は operator、モデルの承認は管理責任者で行います。operator(役割のない担当者)に見えるのは、基準の銀行と、自分に役割のある法人だけで、グループ全体の連結と相互勘定の消去は『管理責任者だけが見られます』と表示されます(v19 の法人の分離に従う)。連結を確かめるときは管理責任者でログインします。
open 'http://localhost:54336/local/login?as=operator&next=/admin/twin'演習
| 演習 | 操作 | 観察すること |
|---|---|---|
| 1. 凍結 | 『実績を凍結する』を実行 | 営業日と入力ハッシュ。何も変えずに2回取ると同じハッシュ。実績が動くと別のハッシュ |
| 2. 実行 | 『全シナリオを実行する』(シード値1) | 5つのシナリオが比較表に並ぶ。会計恒等式は全実行で成立 |
| 3. 因果を読む | 政策金利+1%の実行を開く | 段階1〜9の式・入力・出力・上流。既存の固定金利の貸出の利息は他のシナリオと同じ、新しい貸出の量と金利だけが違う |
| 4. シード値 | 同じシナリオを、別のシード値で実行 | 預金の揺らぎが違う経路になる。同じシード値の再実行は、前の結果を返す |
| 5. 再現 | 『この実行を再計算する』 | 一致。ベースラインを書き換えると(DBの所有者だけが可能)、一致しなくなる |
| 6. 感応度 | 感応度の表を見る | どのパラメータに累計損益が敏感か。20%動かした変化 |
| 7. 実績との差 | 『いまの実績との差』を見る | 実績と予測が別の欄。取引をしてから開くと、実績の欄だけが動く |
| 8. モデルの承認 | operator でモデルの新しい版を提案し、自分で承認を試す | 承認はできない。別の管理責任者が承認すると、以後の実行が新しい版を使い、過去の実行は使った版のまま |
振り返り
- 予測が『事実のように読まれる』のを防ぐために、画面と保存のどこで実績と分けているか
- 元帳が動かないことは、どの仕組みで守られているか(純粋な関数・書込みが twin だけ・テスト)
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-twin-baseline-modelベースラインと模型
- RELATED LESSON/docs/be-twin-causal-chain因果の連鎖
- RELATED LESSON/docs/be-twin-entities-riskentity・リスク・実績との差
- CURRENT IMPLEMENTATION
src/app/admin/(protected)/twin/page.tsxTwinPage()管理画面 Digital Twin(表示は TwinAdminView) - CURRENT IMPLEMENTATION
scripts/banking/v20-twin.test.mjs手計算の1か月・因果・シード値の再現・恒等式・entity と連結・元帳の不変・決裁のDBテスト