Projects

Interface

PortDash

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.

  • React
  • TypeScript
  • FastAPI
  • PostgreSQL
  • Plotly
  • Dagster

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.