# yhilpisch/dx architecture

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

- Interactive diagram: https://gitdiagram.com/yhilpisch/dx
- Repository: https://github.com/yhilpisch/dx

## Overview

DX Analytics is a Python financial analytics library centered on global Monte Carlo valuation and risk analysis of derivatives portfolios. Its main workflow is to define market and valuation environments, configure risk-factor models and derivative positions, simulate shared paths, value payoffs, then aggregate portfolio values and sensitivities. The repository also provides analytical and Fourier pricing, model calibration, interest-rate swaps, mean-variance portfolio analysis, and plotting. Some subsystem wiring is supported by the README rather than sampled implementation excerpts, so uncertain call links are omitted.

Main entry points: [`dx/valuation/derivatives_portfolio.py`](https://github.com/yhilpisch/dx/blob/master/dx/valuation/derivatives_portfolio.py) (Derivatives Portfolio), [`dx/models`](https://github.com/yhilpisch/dx/tree/master/dx/models) (Risk-Factor Models), [`dx/models/simulation_class.py`](https://github.com/yhilpisch/dx/blob/master/dx/models/simulation_class.py) (Simulation Framework), [`dx/frame.py`](https://github.com/yhilpisch/dx/blob/master/dx/frame.py) (Market Environment)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portfolio["Portfolio Analytics"]
  node_deriv_port["Derivatives Portfolio"]
  node_portfolio_risk["Portfolio Risk<br/>[var_portfolio.py]"]
  node_parallel_val["Parallel Valuation"]
  node_mean_var["Mean-Variance Analysis<br/>[portfolio.py]"]
  node_plot["Analytics Plotting<br/>[plot.py]"]
end

subgraph group_simulation["Simulation and Markets"]
  node_market_env["Market Environment<br/>[frame.py]"]
  node_discounting["Discount Curves<br/>[frame.py]"]
  node_random_numbers["Random Numbers<br/>[frame.py]"]
  node_simulation_base["Simulation Framework"]
  node_risk_models["Risk-Factor Models"]
end

subgraph group_pricing["Derivative Pricing"]
  node_single_val["Single-Risk Valuation<br/>[single_risk.py]"]
  node_multi_val["Multi-Risk Valuation<br/>[multi_risk.py]"]
  node_fourier["Fourier Pricing"]
  node_bsm["Black-Scholes Pricing"]
  node_sabr["SABR Calibration"]
end

subgraph group_rates["Rates and Allocation"]
  node_swaps["Interest-Rate Swaps<br/>[rates.py]"]
  node_stoch_rates["Stochastic Short Rates"]
end

node_user(("Analyst"))

node_user -->|"configures portfolio"| node_deriv_port
node_deriv_port -->|"uses environments"| node_market_env
node_deriv_port -->|"creates risk models"| node_risk_models
node_deriv_port -->|"creates valuations"| node_single_val
node_deriv_port -->|"creates valuations"| node_multi_val
node_deriv_port -->|"dispatches parallel work"| node_parallel_val
node_deriv_port -.->|"supports risk analysis"| node_portfolio_risk
node_deriv_port -.->|"provides analytics"| node_plot
node_risk_models -->|"extends simulation"| node_simulation_base
node_simulation_base -->|"reads parameters"| node_market_env
node_simulation_base -->|"generates paths with"| node_random_numbers
node_single_val -->|"gets simulated paths"| node_risk_models
node_single_val -->|"discounts values"| node_discounting
node_multi_val -->|"simulates risk factors"| node_risk_models
node_multi_val -->|"discounts values"| node_discounting
node_user -->|"requests analytical price"| node_bsm
node_user -->|"requests Fourier price"| node_fourier
node_user -->|"calibrates model"| node_sabr
node_sabr -->|"reads parameters"| node_market_env
node_user -->|"values swap"| node_swaps
node_swaps -->|"reads rate paths"| node_simulation_base
node_swaps -->|"discounts payments"| node_discounting
node_stoch_rates -->|"uses rate process"| node_risk_models
node_user -->|"analyzes allocation"| node_mean_var
node_mean_var -->|"reads asset inputs"| node_market_env

click node_deriv_port "https://github.com/yhilpisch/dx/blob/master/dx/valuation/derivatives_portfolio.py"
click node_portfolio_risk "https://github.com/yhilpisch/dx/blob/master/dx/valuation/var_portfolio.py"
click node_parallel_val "https://github.com/yhilpisch/dx/blob/master/dx/valuation/parallel_valuation.py"
click node_mean_var "https://github.com/yhilpisch/dx/blob/master/dx/portfolio.py"
click node_market_env "https://github.com/yhilpisch/dx/blob/master/dx/frame.py"
click node_discounting "https://github.com/yhilpisch/dx/blob/master/dx/frame.py"
click node_random_numbers "https://github.com/yhilpisch/dx/blob/master/dx/frame.py"
click node_simulation_base "https://github.com/yhilpisch/dx/blob/master/dx/models/simulation_class.py"
click node_risk_models "https://github.com/yhilpisch/dx/tree/master/dx/models"
click node_single_val "https://github.com/yhilpisch/dx/blob/master/dx/valuation/single_risk.py"
click node_multi_val "https://github.com/yhilpisch/dx/blob/master/dx/valuation/multi_risk.py"
click node_fourier "https://github.com/yhilpisch/dx/blob/master/dx/analytical/stoch_vol_jump_diffusion.py"
click node_bsm "https://github.com/yhilpisch/dx/blob/master/dx/analytical/black_scholes_merton.py"
click node_sabr "https://github.com/yhilpisch/dx/blob/master/dx/models/sabr_stochastic_volatility.py"
click node_swaps "https://github.com/yhilpisch/dx/blob/master/dx/rates.py"
click node_stoch_rates "https://github.com/yhilpisch/dx/blob/master/dx/models/square_root_diffusion.py"
click node_plot "https://github.com/yhilpisch/dx/blob/master/dx/plot.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_deriv_port,node_portfolio_risk,node_parallel_val,node_mean_var,node_plot toneBlue
class node_market_env,node_discounting,node_random_numbers,node_simulation_base,node_risk_models toneAmber
class node_single_val,node_multi_val,node_fourier,node_bsm,node_sabr toneMint
class node_swaps,node_stoch_rates toneRose
class node_user toneIndigo
```

## Components

### Portfolio Analytics

- [Derivatives Portfolio](https://github.com/yhilpisch/dx/blob/master/dx/valuation/derivatives_portfolio.py): `dx/valuation/derivatives_portfolio.py`
- [Portfolio Risk](https://github.com/yhilpisch/dx/blob/master/dx/valuation/var_portfolio.py): `dx/valuation/var_portfolio.py`
- [Parallel Valuation](https://github.com/yhilpisch/dx/blob/master/dx/valuation/parallel_valuation.py): `dx/valuation/parallel_valuation.py`
- [Mean-Variance Analysis](https://github.com/yhilpisch/dx/blob/master/dx/portfolio.py): `dx/portfolio.py`
- [Analytics Plotting](https://github.com/yhilpisch/dx/blob/master/dx/plot.py): `dx/plot.py`

### Simulation and Markets

- [Market Environment](https://github.com/yhilpisch/dx/blob/master/dx/frame.py): `dx/frame.py`
- [Discount Curves](https://github.com/yhilpisch/dx/blob/master/dx/frame.py): `dx/frame.py`
- [Random Numbers](https://github.com/yhilpisch/dx/blob/master/dx/frame.py): `dx/frame.py`
- [Simulation Framework](https://github.com/yhilpisch/dx/blob/master/dx/models/simulation_class.py): `dx/models/simulation_class.py`
- [Risk-Factor Models](https://github.com/yhilpisch/dx/tree/master/dx/models): `dx/models`

### Derivative Pricing

- [Single-Risk Valuation](https://github.com/yhilpisch/dx/blob/master/dx/valuation/single_risk.py): `dx/valuation/single_risk.py`
- [Multi-Risk Valuation](https://github.com/yhilpisch/dx/blob/master/dx/valuation/multi_risk.py): `dx/valuation/multi_risk.py`
- [Fourier Pricing](https://github.com/yhilpisch/dx/blob/master/dx/analytical/stoch_vol_jump_diffusion.py): `dx/analytical/stoch_vol_jump_diffusion.py`
- [Black-Scholes Pricing](https://github.com/yhilpisch/dx/blob/master/dx/analytical/black_scholes_merton.py): `dx/analytical/black_scholes_merton.py`
- [SABR Calibration](https://github.com/yhilpisch/dx/blob/master/dx/models/sabr_stochastic_volatility.py): `dx/models/sabr_stochastic_volatility.py`

### Rates and Allocation

- [Interest-Rate Swaps](https://github.com/yhilpisch/dx/blob/master/dx/rates.py): `dx/rates.py`
- [Stochastic Short Rates](https://github.com/yhilpisch/dx/blob/master/dx/models/square_root_diffusion.py): `dx/models/square_root_diffusion.py`

### Other components

- **Analyst**

## Connections

- Analyst → Derivatives Portfolio: configures portfolio
- Derivatives Portfolio → Market Environment: uses environments
- Derivatives Portfolio → Risk-Factor Models: creates risk models
- Derivatives Portfolio → Single-Risk Valuation: creates valuations
- Derivatives Portfolio → Multi-Risk Valuation: creates valuations
- Derivatives Portfolio → Parallel Valuation: dispatches parallel work
- Derivatives Portfolio → Portfolio Risk: supports risk analysis
- Derivatives Portfolio → Analytics Plotting: provides analytics
- Risk-Factor Models → Simulation Framework: extends simulation
- Simulation Framework → Market Environment: reads parameters
- Simulation Framework → Random Numbers: generates paths with
- Single-Risk Valuation → Risk-Factor Models: gets simulated paths
- Single-Risk Valuation → Discount Curves: discounts values
- Multi-Risk Valuation → Risk-Factor Models: simulates risk factors
- Multi-Risk Valuation → Discount Curves: discounts values
- Analyst → Black-Scholes Pricing: requests analytical price
- Analyst → Fourier Pricing: requests Fourier price
- Analyst → SABR Calibration: calibrates model
- SABR Calibration → Market Environment: reads parameters
- Analyst → Interest-Rate Swaps: values swap
- Interest-Rate Swaps → Simulation Framework: reads rate paths
- Interest-Rate Swaps → Discount Curves: discounts payments
- Stochastic Short Rates → Risk-Factor Models: uses rate process
- Analyst → Mean-Variance Analysis: analyzes allocation
- Mean-Variance Analysis → Market Environment: reads asset inputs
