Quantitative research

Equity factor risk model

Understand what drives a portfolio.

A 15-factor equity risk model, brought out of the notebook and into an interactive portfolio workbench.

Runs locally in your browser against a saved model fitted on August 7, 2026. No account or market-data key required.

Interactive research toolFactor decomposition · Concept illustration
stocks in the saved model
503
sector + style factors
15
model fit date
2026-08-07
Contribution
Personal research & implementation

01 / The problem

Understand what drives a portfolio.

A portfolio can look diversified by ticker while remaining concentrated in the same sources of risk. A list of holdings does not explain how sector exposure, style exposure, and stock-specific risk combine.

I built a factor model that separates those drivers, then made the saved model explorable without a Python environment. Edit positions, compare portfolios, and inspect the contribution of each factor to total variance.

02 / In practice

Follow the workflow.

Open risk workbench ↗
  1. Start with a sample portfolio or enter holdings and weights.

  2. Inspect annualized risk, factor exposures, and signed risk contributions.

  3. Change the allocation, compare it with a baseline, and export the analysis.

Equity factor risk model interface with example inputs and results
Actual interface · Public research snapshot. Open the demo to change the inputs and inspect the results.
A working interface, ready to explore.

Runs locally in your browser against a saved model fitted on August 7, 2026. No account or market-data key required.

Launch demo ↗

03 / Under the hood

How the pieces fit.

  1. 01

    Estimate

    Python builds 11 sector exposures and four style factors: Beta, Momentum, Size, and residual volatility.

  2. 02

    Persist

    The fitted exposure matrix, factor covariance, and specific variances are saved as portable CSV and JSON artifacts.

  3. 03

    Analyze

    The browser evaluates the same covariance decomposition for the entered holdings. The saved fit date stays visible.

  4. 04

    Explain

    Attribution separates common-factor risk from stock-specific risk and keeps negative contributions visible.

04 / Engineering judgment

Decisions & tradeoffs.

Explain risk through a smaller model

The model represents asset covariance as B F Bᵀ + D. It makes portfolio risk interpretable through common factors and a stock-specific remainder.

Use different memories for volatility and correlation

EWMA uses an 84-day volatility half-life and a 504-day correlation half-life, with Newey–West adjustments and a positive-semidefinite repair.

Preserve portfolio intent

Weights represent fractions of net asset value. Short positions and leverage are meaningful inputs; the interface must not silently normalize them away.

05 / Inspect the work

Evidence, with context.