# chihchen22/nmd-regime-aware-model architecture

> Architecture diagram of the GitHub repository chihchen22/nmd-regime-aware-model, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/chihchen22/nmd-regime-aware-model
- Repository: https://github.com/chihchen22/nmd-regime-aware-model

## Overview

This repository implements a research framework for modeling nonmaturity-deposit (NMD) runoff under market-implied interest-rate uncertainty. Its principal workflow uses SOFR market data to construct rate inputs, simulates deposit balances under behavioral decay, and compares Monte Carlo results with analytical and bifurcation approaches. Separate analyses test regime amplification and parameter sensitivity, including March 2022 versus September 2025 scenarios. The master controller documents a registry of runnable analyses. The README describes broader framework capabilities; sampled excerpts support the core model and several analysis links, but not every internal call.

Main entry points: [`nmd_master.py`](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/nmd_master.py) (Master controller), [`model_outputs`](https://github.com/chihchen22/nmd-regime-aware-model/tree/main/model_outputs) (Model result files), [`dual_period_alpha_sensitivity.py`](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/dual_period_alpha_sensitivity.py) (Dual-period comparison), [`market_data_loader.py`](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/market_data_loader.py) (Market data loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Analysis control"]
  node_master["Master controller<br/>[nmd_master.py]"]
  node_config["Model parameters<br/>[config.py]"]
end

subgraph group_markets["Market inputs"]
  node_market_loader["Market data loader"]
  node_market_2025["September 2025 SOFR data"]
  node_market_2022["March 2022 SOFR data"]
  node_sofr_history["SOFR history<br/>[SOFR_History.xlsx]"]
end

subgraph group_rates["Rate modeling"]
  node_sabr["SABR volatility surface<br/>[sabr_volatility.py]"]
  node_curve_paths["Curve and rate paths"]
end

subgraph group_behavior["Deposit modeling"]
  node_base_model["Base NMD model"]
  node_regime_model["Regime amplification"]
  node_model_outputs["Model result files"]
end

subgraph group_research["Sensitivity studies"]
  node_param_sensitivity["Parameter sensitivity"]
  node_matrix_sensitivity["Two-dimensional sensitivity"]
  node_dual_period["Dual-period comparison"]
  node_alpha_sensitivity["Alpha sensitivity"]
  node_validation["Result validation<br/>[validate_model.py]"]
end

node_analyst(("Researcher"))

node_analyst -->|"selects analysis"| node_master
node_master -->|"sets parameters"| node_config
node_master -->|"dispatches market data"| node_market_loader
node_market_loader -->|"reads"| node_market_2025
node_market_loader -.->|"reads"| node_market_2022
node_market_loader -->|"provides cap vols"| node_sabr
node_master -->|"dispatches base model"| node_base_model
node_base_model -->|"constructs rates"| node_curve_paths
node_base_model -->|"writes results"| node_model_outputs
node_master -->|"dispatches analysis"| node_regime_model
node_regime_model -->|"writes results"| node_model_outputs
node_master -->|"dispatches analysis"| node_param_sensitivity
node_param_sensitivity -->|"writes results"| node_model_outputs
node_master -->|"dispatches analysis"| node_matrix_sensitivity
node_matrix_sensitivity -->|"reads"| node_sofr_history
node_matrix_sensitivity -->|"reads rate summary"| node_model_outputs
node_matrix_sensitivity -->|"writes analysis"| node_model_outputs
node_master -->|"dispatches analysis"| node_dual_period
node_dual_period -->|"reads"| node_sofr_history
node_dual_period -->|"uses period data"| node_market_2022
node_dual_period -->|"reads rate summary"| node_model_outputs
node_dual_period -->|"compares alpha values"| node_alpha_sensitivity
node_alpha_sensitivity -->|"writes analysis"| node_model_outputs
node_validation -->|"reads WAL results"| node_model_outputs

click node_master "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/nmd_master.py"
click node_config "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/config.py"
click node_market_loader "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/market_data_loader.py"
click node_market_2025 "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_Market_Data_20250930.xlsx"
click node_market_2022 "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_Market_Data_20220331.xlsx"
click node_sofr_history "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_History.xlsx"
click node_sabr "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/sabr_volatility.py"
click node_curve_paths "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/comprehensive_nmd_model.py"
click node_base_model "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/comprehensive_nmd_model.py"
click node_regime_model "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/regime_amplification_analysis.py"
click node_model_outputs "https://github.com/chihchen22/nmd-regime-aware-model/tree/main/model_outputs"
click node_param_sensitivity "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/parameter_sensitivity.py"
click node_matrix_sensitivity "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/sensitivity_matrix_2d.py"
click node_dual_period "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/dual_period_alpha_sensitivity.py"
click node_alpha_sensitivity "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/dual_period_alpha_sensitivity.py"
click node_validation "https://github.com/chihchen22/nmd-regime-aware-model/blob/main/validate_model.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_master,node_config toneBlue
class node_market_loader,node_market_2025,node_market_2022,node_sofr_history toneAmber
class node_sabr,node_curve_paths toneMint
class node_base_model,node_regime_model,node_model_outputs toneRose
class node_param_sensitivity,node_matrix_sensitivity,node_dual_period,node_alpha_sensitivity,node_validation,node_analyst toneIndigo
```

## Components

### Analysis control

- [Master controller](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/nmd_master.py): `nmd_master.py`
- [Model parameters](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/config.py): `config.py`

### Market inputs

- [Market data loader](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/market_data_loader.py): `market_data_loader.py`
- [September 2025 SOFR data](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_Market_Data_20250930.xlsx): `SOFR_Market_Data_20250930.xlsx`
- [March 2022 SOFR data](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_Market_Data_20220331.xlsx): `SOFR_Market_Data_20220331.xlsx`
- [SOFR history](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/SOFR_History.xlsx): `SOFR_History.xlsx`

### Rate modeling

- [SABR volatility surface](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/sabr_volatility.py): `sabr_volatility.py`
- [Curve and rate paths](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/comprehensive_nmd_model.py): `comprehensive_nmd_model.py`

### Deposit modeling

- [Base NMD model](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/comprehensive_nmd_model.py): `comprehensive_nmd_model.py`
- [Regime amplification](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/regime_amplification_analysis.py): `regime_amplification_analysis.py`
- [Model result files](https://github.com/chihchen22/nmd-regime-aware-model/tree/main/model_outputs): `model_outputs`

### Sensitivity studies

- [Parameter sensitivity](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/parameter_sensitivity.py): `parameter_sensitivity.py`
- [Two-dimensional sensitivity](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/sensitivity_matrix_2d.py): `sensitivity_matrix_2d.py`
- [Dual-period comparison](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/dual_period_alpha_sensitivity.py): `dual_period_alpha_sensitivity.py`
- [Alpha sensitivity](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/dual_period_alpha_sensitivity.py): `dual_period_alpha_sensitivity.py`
- [Result validation](https://github.com/chihchen22/nmd-regime-aware-model/blob/main/validate_model.py): `validate_model.py`

### Other components

- **Researcher**

## Connections

- Researcher → Master controller: selects analysis
- Master controller → Model parameters: sets parameters
- Master controller → Market data loader: dispatches market data
- Market data loader → September 2025 SOFR data: reads
- Market data loader → March 2022 SOFR data: reads
- Market data loader → SABR volatility surface: provides cap vols
- Master controller → Base NMD model: dispatches base model
- Base NMD model → Curve and rate paths: constructs rates
- Base NMD model → Model result files: writes results
- Master controller → Regime amplification: dispatches analysis
- Regime amplification → Model result files: writes results
- Master controller → Parameter sensitivity: dispatches analysis
- Parameter sensitivity → Model result files: writes results
- Master controller → Two-dimensional sensitivity: dispatches analysis
- Two-dimensional sensitivity → SOFR history: reads
- Two-dimensional sensitivity → Model result files: reads rate summary
- Two-dimensional sensitivity → Model result files: writes analysis
- Master controller → Dual-period comparison: dispatches analysis
- Dual-period comparison → SOFR history: reads
- Dual-period comparison → March 2022 SOFR data: uses period data
- Dual-period comparison → Model result files: reads rate summary
- Dual-period comparison → Alpha sensitivity: compares alpha values
- Alpha sensitivity → Model result files: writes analysis
- Result validation → Model result files: reads WAL results
