INTERACTIVE PORTFOLIO DECISION LAB / EXPERIMENTAL v0.1

Portfolio decisions, under uncertainty.

Explore how uncertainty-aware risk budgeting changes allocations, forecast disagreement, and the cost of protection.

LIVE BROWSER CALCULATION SIMULATED CASE STUDIES · NO LOGIN
02 / DECISION OUTPUT

Portfolio decision dashboard

MODEL READY
RISK BUDGET12.0%PM annual limit
EFFECTIVE RISK LIMIT—Selected UQ mode
WORST MODEL RISK—UQ allocation
EXPECTED RETURN CHANGE—Vs. standard allocation
ALLOCATION / 01

Portfolio weights

Standard Uncertainty-aware
ASSETSTANDARDUNCERTAINTY-AWAREΔ WEIGHT
RISK MODELS / 02

Forecast disagreement

Standard Uncertainty-aware

Annualized volatility across three estimated covariance matrices.

DECISION SPACE / 03

Risk versus return

Current Standard UQ

Forecast estimates, not realized investment performance.

DECISION TRADE-OFF / 04

The cost of protection

Historical calibration
MetricStandardUQ
Research boundaryHistorical risk margins can reduce modeled exposure but have not consistently improved economic utility against simpler risk-matched limits. Quantiles are descriptive, not coverage guarantees.
METHODOLOGY

Designed for decisions, not backtest promises.

Three risk estimates reveal model disagreement. Historical forecasting errors inform a risk margin. Every allocation exposes the trade-off between risk protection and expected return.

01 / FORECAST

Model disagreement

Compare long-window, short-window and EWMA covariance estimates.

02 / CALIBRATE

Forecast reliability

Use only completed months to measure historical volatility underprediction.

03 / CONSTRAIN

Scenario robustness

Require allocation feasibility under the selected risk scenarios.

04 / EXPLAIN

PM trade-offs

Show risk, return assumptions, weight changes and rebalancing costs.

PYTHON PACKAGE + CLI

A general-purpose Python optimization API

Pass your own daily returns and holdings. The full library uses SciPy; this static page uses a checked browser approximation.

Browse source ↗
portfolio_example.py
from portfolio_risk_lab import PortfolioAnalyzer

lab = PortfolioAnalyzer(
    returns,
    cash_asset="Cash_Proxy",
    risk_budget=0.12,
    max_weight=0.40
)
result = lab.compare(
    methods=["standard", "scenario_robust"],
    uncertainty="historical_calibration"
)
print(result.risk_budget_analysis)
LOCAL INSTALL pip install -e .