PortDash replaced two earlier dashboards with a single application covering the entire stack, what the portfolio holds, what the factor engine currently thinks, how the backtests came out, and how much risk is on.
Portfolio and holdings
NAV tracked against a benchmark drawn from the platform's own price tables, with allocation breakdown and performance attribution.
Holdings go to position-level: profit and loss per position, sector exposure, and a link straight through to that name's factor page, so the question "why do I own this?" is one click from the position, not a separate research exercise.
Factor dashboard
A front end onto the factor engine: the current macro regime indicator, the factor weights actually in force, the names trending by composite score, and a per-stock factor radar with its sentiment breakdown.
It is what makes the factor model usable day to day. A score in the database does not help me much until I can see which factors drove it.
Backtests and risk
A Lean backtest viewer with equity curves, drawdown, order-level detail and full statistics, so I review results in the same place as the live positions instead of digging out whatever notebook produced them.
Risk analysis runs value at risk three ways: parametric, historical and Monte Carlo, each with conditional VaR, alongside return distribution analysis. I run all three because they disagree in exactly the conditions I care about.
Data in
Broker statements are ingested nightly as a scheduled Dagster job, with an import history view, so positions reconcile against the broker instead of being hand-maintained. ETF look-through for true underlying exposure and Greeks-based risk for options positions are both planned.
Stack
React and TypeScript on the front end with Plotly for charting, a FastAPI backend over PostgreSQL, deployed as one of the Dagster tenants on the cluster.