API Reference¶
Auto-generated documentation from source code docstrings.
Domain Layer¶
Value Objects¶
portfolio_risk_engine.domain.value_objects.ticker
¶
Ticker
dataclass
¶
Financial asset ticker symbol.
Represents the identifier used on exchanges (e.g., AAPL, MSFT, BRK.B).
The ticker is normalized to uppercase and validated using a simple regex.
Source code in src/portfolio_risk_engine/domain/value_objects/ticker.py
portfolio_risk_engine.domain.value_objects.currency
¶
Currency
dataclass
¶
Value object representing a currency using a 3-letter ISO code.
The code is normalized to uppercase and validated to ensure it follows the ISO 4217 format (e.g., USD, EUR, JPY).
Source code in src/portfolio_risk_engine/domain/value_objects/currency.py
__post_init__()
¶
Normalize and validate the currency code after initialization.
Source code in src/portfolio_risk_engine/domain/value_objects/currency.py
portfolio_risk_engine.domain.value_objects.weight
¶
Weight
dataclass
¶
Portfolio weight value object.
Represents the allocation of an asset in a portfolio.
The value must be between 0 and 1 inclusive.
Source code in src/portfolio_risk_engine/domain/value_objects/weight.py
portfolio_risk_engine.domain.value_objects.date_range
¶
Models¶
portfolio_risk_engine.domain.models.asset
¶
portfolio_risk_engine.domain.models.position
¶
portfolio_risk_engine.domain.models.portfolio
¶
portfolio_risk_engine.domain.models.historical_prices
¶
portfolio_risk_engine.domain.models.historical_returns
¶
portfolio_risk_engine.domain.models.market_parameters
¶
portfolio_risk_engine.domain.models.gbm_model
¶
MultivariateGBM
dataclass
¶
Multivariate Geometric Brownian Motion model with pre-computed Cholesky factor.
Source code in src/portfolio_risk_engine/domain/models/gbm_model.py
portfolio_risk_engine.domain.models.simulation_result
¶
portfolio_risk_engine.domain.models.portfolio_risk_metrics
¶
PortfolioRiskMetrics
dataclass
¶
Risk metrics computed from Monte Carlo simulation. VaR and ES use loss-positive convention.
Source code in src/portfolio_risk_engine/domain/models/portfolio_risk_metrics.py
Ports¶
portfolio_risk_engine.domain.ports.market_data_provider
¶
portfolio_risk_engine.domain.ports.monte_carlo_engine
¶
Services¶
portfolio_risk_engine.domain.services.cholesky
¶
cholesky(matrix)
¶
Pure-Python Cholesky decomposition. Returns lower-triangular L such that L @ L^T == matrix.
Source code in src/portfolio_risk_engine/domain/services/cholesky.py
Application Layer¶
Use Cases¶
portfolio_risk_engine.application.use_cases.fetch_market_data
¶
portfolio_risk_engine.application.use_cases.compute_log_returns
¶
portfolio_risk_engine.application.use_cases.estimate_market_parameters
¶
portfolio_risk_engine.application.use_cases.run_monte_carlo
¶
portfolio_risk_engine.application.use_cases.compute_portfolio_risk
¶
Infrastructure Layer¶
Market Data¶
portfolio_risk_engine.infrastructure.market_data.yahoo_finance_market_data_provider
¶
Simulation Engines¶
portfolio_risk_engine.infrastructure.simulation.cpu_monte_carlo_engine
¶
CpuMonteCarloEngine
¶
NumPy-based CPU implementation of the MonteCarloEngine port.
Source code in src/portfolio_risk_engine/infrastructure/simulation/cpu_monte_carlo_engine.py
portfolio_risk_engine.infrastructure.simulation.gpu_monte_carlo_engine
¶
GpuMonteCarloEngine
¶
CuPy-based GPU implementation of the MonteCarloEngine port.
Source code in src/portfolio_risk_engine/infrastructure/simulation/gpu_monte_carlo_engine.py
portfolio_risk_engine.infrastructure.simulation.gpu_accelerated_pipeline
¶
End-to-end GPU simulation + risk computation.
Keeps all data on GPU throughout the pipeline. Only 6 scalar floats are transferred back to CPU. No intermediate tuple conversion.
Architecture: this is an infrastructure-level optimization. Domain models and application use cases are not modified.
GpuAcceleratedPipeline
¶
Simulation + risk in a single GPU pass — zero tuple allocation.
Source code in src/portfolio_risk_engine/infrastructure/simulation/gpu_accelerated_pipeline.py
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | |
run_with_summary(market_params, initial_prices, weights, num_simulations, time_horizon_days)
¶
Like run(), but also returns per-ticker mean terminal prices.