# aditri-07/counterparty-credit-risk-imm architecture

> Architecture diagram of the GitHub repository aditri-07/counterparty-credit-risk-imm, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/aditri-07/counterparty-credit-risk-imm
- Repository: https://github.com/aditri-07/counterparty-credit-risk-imm

## Overview

This repository is a counterparty-credit-risk Monte Carlo simulator. The principal workflow loads market curves and a portfolio, bootstraps a yield curve, simulates rates and credit spreads, reprices bonds and swaps across paths, and derives EE/PFE and CVA. Separate branches provide deterministic DV01/convexity analysis and stressed exposure runs. The runner excerpt shows SQL staging, but the referenced SQL pipeline has no file in the supplied tree; it is represented at the existing src/ directory. Other links follow the README where runner excerpts are incomplete.

Main entry points: [`run_simulation.py`](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/run_simulation.py) (Simulation Runner), [`src/exposure_engine.py`](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/exposure_engine.py) (Exposure Engine), [`src/stress_testing.py`](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/stress_testing.py) (Stress Scenarios), [`src/data_loader.py`](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/data_loader.py) (Market Data Loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Market and Portfolio Inputs"]
  node_market_data["Market Data Loader<br/>[data_loader.py]"]
  node_portfolio["Portfolio Input<br/>[data_loader.py]"]
  node_sql[("SQL Staging")]
end

subgraph group_models["Market Models"]
  node_curve["Yield Curve"]
  node_rates["Hull-White Rates<br/>[hull_white.py]"]
  node_spreads["Credit Spread GBM<br/>[credit_spread.py]"]
end

subgraph group_valuation["Exposure and Valuation"]
  node_instruments["Bond and Swap Pricing<br/>[instruments.py]"]
  node_engine["Exposure Engine<br/>[exposure_engine.py]"]
  node_profile["EE and PFE Profile<br/>[exposure_engine.py]"]
end

subgraph group_risk["Risk Analysis"]
  node_cva["CVA Calculation<br/>[cva.py]"]
  node_sensitivity["DV01 and Convexity<br/>[sensitivity.py]"]
  node_stress["Stress Scenarios<br/>[stress_testing.py]"]
  node_results["Reports and Plots<br/>[run_simulation.py]"]
end

node_user(("Analyst"))
node_runner["Simulation Runner<br/>[run_simulation.py]"]
node_fred["FRED"]
node_wrds["WRDS"]

node_user -->|"runs"| node_runner
node_runner -->|"loads curves"| node_market_data
node_runner -->|"loads portfolio"| node_portfolio
node_market_data -.->|"fetches data"| node_fred
node_market_data -.->|"queries data"| node_wrds
node_runner -->|"stages and queries"| node_sql
node_runner -->|"bootstraps curve"| node_curve
node_runner -->|"calibrates model"| node_rates
node_runner -->|"calibrates model"| node_spreads
node_runner -->|"runs simulation"| node_engine
node_engine -->|"simulates paths"| node_rates
node_engine -->|"simulates paths"| node_spreads
node_engine -->|"builds and reprices"| node_instruments
node_engine -->|"aggregates exposure"| node_profile
node_runner -->|"computes CVA"| node_cva
node_runner -->|"computes risk"| node_sensitivity
node_runner -->|"runs scenarios"| node_stress
node_stress -->|"builds stressed model"| node_rates
node_stress -->|"builds stressed model"| node_spreads
node_stress -->|"reruns simulation"| node_engine
node_runner -->|"writes reports"| node_results

click node_runner "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/run_simulation.py"
click node_market_data "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/data_loader.py"
click node_portfolio "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/data_loader.py"
click node_sql "https://github.com/aditri-07/counterparty-credit-risk-imm/tree/main/src"
click node_curve "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/curve_construction.py"
click node_rates "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/hull_white.py"
click node_spreads "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/credit_spread.py"
click node_instruments "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/instruments.py"
click node_engine "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/exposure_engine.py"
click node_profile "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/exposure_engine.py"
click node_cva "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/cva.py"
click node_sensitivity "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/sensitivity.py"
click node_stress "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/stress_testing.py"
click node_results "https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/run_simulation.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_market_data,node_portfolio,node_sql toneBlue
class node_curve,node_rates,node_spreads toneAmber
class node_instruments,node_engine,node_profile toneMint
class node_cva,node_sensitivity,node_stress,node_results toneRose
class node_user,node_fred,node_wrds toneIndigo
class node_runner toneTeal
```

## Components

### Market and Portfolio Inputs

- [Market Data Loader](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/data_loader.py): `src/data_loader.py`
- [Portfolio Input](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/data_loader.py): `src/data_loader.py`
- [SQL Staging](https://github.com/aditri-07/counterparty-credit-risk-imm/tree/main/src): `src`

### Market Models

- [Yield Curve](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/curve_construction.py): `src/curve_construction.py`
- [Hull-White Rates](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/hull_white.py): `src/hull_white.py`
- [Credit Spread GBM](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/credit_spread.py): `src/credit_spread.py`

### Exposure and Valuation

- [Bond and Swap Pricing](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/instruments.py): `src/instruments.py`
- [Exposure Engine](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/exposure_engine.py): `src/exposure_engine.py`
- [EE and PFE Profile](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/exposure_engine.py): `src/exposure_engine.py`

### Risk Analysis

- [CVA Calculation](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/cva.py): `src/cva.py`
- [DV01 and Convexity](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/sensitivity.py): `src/sensitivity.py`
- [Stress Scenarios](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/src/stress_testing.py): `src/stress_testing.py`
- [Reports and Plots](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/run_simulation.py): `run_simulation.py`

### Other components

- **Analyst**
- [Simulation Runner](https://github.com/aditri-07/counterparty-credit-risk-imm/blob/main/run_simulation.py): `run_simulation.py`
- **FRED**
- **WRDS**

## Connections

- Analyst → Simulation Runner: runs (evidence: `README.md`)
- Simulation Runner → Market Data Loader: loads curves (evidence: `run_simulation.py`)
- Simulation Runner → Portfolio Input: loads portfolio (evidence: `run_simulation.py`)
- Market Data Loader → FRED: fetches data (evidence: `README.md`)
- Market Data Loader → WRDS: queries data (evidence: `README.md`)
- Simulation Runner → SQL Staging: stages and queries (evidence: `run_simulation.py`)
- Simulation Runner → Yield Curve: bootstraps curve (evidence: `README.md`)
- Simulation Runner → Hull-White Rates: calibrates model (evidence: `README.md`)
- Simulation Runner → Credit Spread GBM: calibrates model (evidence: `README.md`)
- Simulation Runner → Exposure Engine: runs simulation (evidence: `run_simulation.py`)
- Exposure Engine → Hull-White Rates: simulates paths (evidence: `src/exposure_engine.py`)
- Exposure Engine → Credit Spread GBM: simulates paths (evidence: `src/exposure_engine.py`)
- Exposure Engine → Bond and Swap Pricing: builds and reprices (evidence: `src/exposure_engine.py`)
- Exposure Engine → EE and PFE Profile: aggregates exposure (evidence: `src/exposure_engine.py`)
- Simulation Runner → CVA Calculation: computes CVA (evidence: `run_simulation.py`)
- Simulation Runner → DV01 and Convexity: computes risk (evidence: `README.md`)
- Simulation Runner → Stress Scenarios: runs scenarios (evidence: `run_simulation.py`)
- Stress Scenarios → Hull-White Rates: builds stressed model (evidence: `src/stress_testing.py`)
- Stress Scenarios → Credit Spread GBM: builds stressed model (evidence: `src/stress_testing.py`)
- Stress Scenarios → Exposure Engine: reruns simulation (evidence: `src/stress_testing.py`)
- Simulation Runner → Reports and Plots: writes reports (evidence: `README.md`)
