銀行エンジニアリング 41:政策金利から預金・貸出・資金繰り・損益までの因果
政策金利が動くと、預金の価格、預金の量、調達コスト、貸出の需要、資金の不足、損益が順に動きます。その順番と、各段階の式、仕訳に相当する動きを、1か月の小さな銀行で手計算して確かめます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 9段階の因果の順序
- 既存の固定金利の貸出を遡って改定しない理由
- 手計算と模型の一致
PLAIN LANGUAGE
まず、ここだけつかむ
政策金利 → 預金価格 → 預金残高 → 調達コスト → 貸出需要と利息収益 → Treasury/ALM → 資金不足 → 予測BS/PL → リスク、の順に計算します。
既存の固定金利の貸出は改定せず、新しい貸出と預金と借入にだけショックが伝わります。
資産=負債+資本+損益が、毎月・全 entity・連結で成り立つことを確かめます。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
追随率
政策金利の変化のうち、預金金利に反映する割合です。
追随しなかった分が、預金の出入りを生むためです。
deposit_rate_pass_through(0.3)。架空の仮定。
固定金利の貸出
契約したときの金利が、返済まで変わらない貸出です。
ショックが既存の貸出に遡らないことを表すためです。
既存の貸出の利息はシナリオで変わらない。
資金不足
流動資産がバッファに足りない額です。
足りない分は借入になり、次の月から利息がかかるためです。
段階7。月末に借入で埋める。
Level 1 基礎:ドミノの順番
| 段階 | 何が動くか | もとにする既存の機能 |
|---|---|---|
| 1 政策金利 | 基準の政策金利 + ショック | Treasury の市場シナリオ(v13) |
| 2 預金商品の価格 | 普通預金金利 = 価格の版の金利 + 追随率 × ショック | 預金価格(v15) |
| 3 預金残高 | 価格が追随しなかった分だけ預金が出入りする | —(模型の仮定) |
| 4 調達コスト | 預金利息・借入利息 | Treasury(v13) |
| 5 貸出需要と利息収益 | 新しい貸出の量と金利。既存の貸出は変えない | 融資(v14) |
| 6 Treasury / ALM | 預け金・コールローンの利息、流動資産 | Treasury(v13) |
| 7 資金不足 | バッファに足りない分を借入で埋める | Treasury(v13) |
| 8 予測のBS/PL | 残高と損益から作り、会計恒等式で照合 | GL(v10) |
| 9 リスクへの接続 | 予測の期末の状態を v18 の式に渡す | リスク(v18) |
Level 2 銀行業務:1か月の小さな銀行(手計算)
預け金200万円、貸出120万円(金利6%、固定)、普通預金200万円、資本120万円の銀行。政策金利1.2%、普通預金金利0.12%、新規貸出は残高の10%、ショックなし、1か月。
- 既存の固定金利の貸出は、政策金利のショックで金利を変えない。ショックは、新しい貸出の価格と量、預金の価格と量、借入の金利にだけ伝わる
| 項目 | 計算 | 金額 |
|---|---|---|
| 貸出利息(現金で受取り) | 1,200,000 × 6.00% ÷ 12 | 6,000円 |
| 預け金の利息(現金で受取り) | 2,000,000 × 1.20% ÷ 12 | 2,000円 |
| 預金利息(預金に入金) | 2,000,000 × 0.12% ÷ 12 | 200円 |
| 当期純損益 | 6,000 + 2,000 − 200 | 7,800円 |
| 新規貸出(現金が出る) | 1,200,000 × 10% | 120,000円 |
| 月末の資産 | 預け金 1,888,000 + 貸出 1,320,000 | 3,208,000円 |
| 月末の負債 + 資本 | 預金 2,000,200 + 資本 1,207,800 | 3,208,000円(一致) |
Level 3 システム:MiniBankでの実装
- twin.simulate は毎月、月初の残高で利息を出し、預金の増減・貸出・借入を反映して、月末に流動資産とバッファを比べる。金額はその都度円に丸め、同じ丸めた金額を借方と貸方の両方に使うので、恒等式が崩れない
- 資産は残高から、資本は『実績の資本 + 実績の損益 + 予測の損益』から、別々に作って照合する(毎月)。さらに GL の行から作った期末の試算表でも、同じ恒等式を確かめる
- 各段階は key、上流の段階の番号、式、入力、出力、仕訳に相当する動き(accounting)を持つ。画面はこれをそのまま表示する
- 預金は0未満にならない。金利が下がるときの流入は、流出より弱く(流入の強さの仮定)する
異常時:予測の恒等式が不成立
| 段階 | 内容 |
|---|---|
| 症状 | 画面の『会計恒等式』が不成立、または月の行の『恒等式』が不成立 |
| 原因の候補 | ベースラインの試算表が、もともと恒等式を満たしていない(BASELINE_IDENTITY_BROKEN の注意が出る) |
| 確認 | 実績の試算表:資産 + 費用 = 負債 + 資本 + 収益 か。満たさないなら、模型ではなく実績の不整合 |
| 対応 | 実績の整合性チェックと補助元帳の照合で原因を直し、ベースラインを取り直す |
Level 4 アーキテクチャ:因果を『説明できる』形にする
ブラックボックスの予測は、外れたときに何を疑えばよいか分かりません。各段階の入力・式・出力を残しておけば、『預金の感応度を疑うのか、貸出の需要を疑うのか』を、感応度の表(各パラメータを20%動かしたときの変化)と合わせて切り分けられます。
どこを確認すればよいか
- 管理画面『Digital Twin』の『因果の連鎖』と『月ごとの予測』
- テスト:手計算の1か月(利息 8,000円、費用 200円、純損益 7,800円)と、各段階の上流の番号
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-rate-shock金利ショック(v13)
- CURRENT IMPLEMENTATION
supabase/migrations/20260930160000_v20_twin.sqltwin.simulate凍結した事実・シナリオ・パラメータ・シード値から、9段階の因果と予測のBS/PLを作る純粋な関数(元帳を読まず、書かない) - CURRENT IMPLEMENTATION
supabase/migrations/20260930160000_v20_twin.sqltwin.run / twin.recompute / twin.compare実行の保存(冪等)・再計算による再現の確認・同じベースライン・モデル・シード値どうしの比較 - CURRENT IMPLEMENTATION
supabase/migrations/20260930160000_v20_twin.sqltwin.sensitivity各パラメータを20%動かしたときの結果の変化 - CURRENT IMPLEMENTATION
scripts/banking/v20-twin.test.mjs手計算の1か月・因果・シード値の再現・恒等式・entity と連結・元帳の不変・決裁のDBテスト