Designing a Reproducible ETF Decision-Support System
I designed a reproducible decision-support system that turns market and risk data into monthly ETF allocation recommendations with backtests and operational checks.
Product owner, system architect, developer · 2026 · Python, data ingestion, feature engineering, backtesting, dashboard/API, testing workflows
Context
Portfolio decisions become inconsistent when they rely on ad hoc judgment. The goal was to make allocation recommendations a repeatable decision process rather than a one-off prediction.
Decisions
- Frame the system as decision support, not a stock-picking oracle.
- Separate ingest, features, decisioning, backtesting, and dashboard layers.
- Build operational checks and documentation into the product.
Solution
The system includes ETF price and macro input ingestion, leakage-safe feature computation, regime signals, monthly allocations, weekly diagnostics, backtests, robustness checks, integrity gates, a local dashboard/API, and documentation.
TODO_ASSET: dashboard + architecture diagram
Insert a dashboard screenshot and a simple data-to-dashboard flow diagram with dummy or simulated data.
Repository Structure
config/ contracts, universe, policy, versioning, run identity ingest/ raw data fetch, logging, scheduling, bundle creation features/ feature computation and eligibility checks decisioning/ regime scoring, tilts, allocation, artifacts backtest/ timing, costs, baselines, robustness, validation ops/ orchestration, integrity checks, alerts, releases, gates dashboard/ API services and UI tests/ milestone, regression, and live-data smoke coverage documents/ specs, playbooks, decisions, roadmap docs tools/ recurring developer automation
Outcome
- Created a reproducible ETF allocation workflow.
- Built a documented repo with clear system boundaries.
- Created a dashboard/API surface for run status and artifacts.
- Added test workflows for smoke, regression, fetch, and full checks.