Projects
Software, tools, and research infrastructure.
This page covers the code that makes research possible: pipelines, validators, reconciliation harnesses, and analytics. Formal empirical studies live in the research archive.
Repositories
Pinned repositories
Pinned manually so that important work is not reordered by recent activity. Live statistics are read from GitHub's public API when a repository URL exists, with a static fallback if the request fails or is rate-limited.
trading-analytics-dashboard
Consolidated performance and risk view across multiple brokerage accounts.
Repository URL to be added — currently private repository.
futures-data-validation
Validation utilities for futures price history and continuous-contract construction.
Repository URL to be added — currently code available on request.
backtest-reconciliation-harness
Compares two backtest implementations and attributes every daily difference.
Repository URL to be added — currently code available on request.
research-chart-library
Chart helpers that refuse to draw a figure without period, units, and cost labels.
Repository URL to be added — currently code available on request.
broker-report-importer
Parses historical broker statements into a normalized trade and cash-flow ledger.
Repository URL to be added — currently private repository.
portfolio-risk-calculator
Risk and drawdown metrics with explicit annualization and cost conventions.
Repository URL to be added — currently code available on request.
market-data-pipeline
Scheduled ingestion and cleaning of daily market data into a research-ready store.
Repository URL to be added — currently code available on request.
GitHub profile URL to be added. Contribution activity is not a measure of research quality and is not displayed as one.
trading-analytics-dashboard
Consolidated performance and risk view across multiple brokerage accounts.
Problem
Performance read from account balances mixes trading results with deposits and withdrawals, and exposure viewed per broker hides the real portfolio.
Solution
An immutable ledger of trades and cash flows drives a reconstructed daily NAV series, from which every performance and risk metric is derived and reconciled back to broker records.
Architecture
Broker connectors and statement parsers feed a normalized ledger; a metrics layer computes NAV, exposure, and risk; a dashboard layer renders views. Reconciliation and data-quality checks run as separate jobs with audit logs.
Key features
- Daily NAV reconstruction with cash-flow separation
- Realized and unrealized P&L
- Drawdown, recovery time, CAGR, Sharpe
- Exposure by asset class and strategy
- Broker reconciliation break reports
- Data-quality checks and audit logging
Known limitations
- Broker API field semantics differ by provider
- Historical statement formats need per-format parsers
- Private data prevents external verification
Future improvements
- Strategy tagging at order entry
- Correlation monitoring between strategies
- Capital-allocation scenarios
futures-data-validation
Validation utilities for futures price history and continuous-contract construction.
Problem
Futures research fails quietly when roll dates, holiday calendars, or stale settlements are wrong, because the resulting series still looks plausible.
Solution
A rule-based validation suite that checks calendars, price limits, volume and open-interest transitions, and roll inventories, and reports failures per market and per date.
Architecture
A check registry runs independent validators over a normalized price panel and emits a structured report that can gate downstream research runs.
Key features
- Exchange-calendar alignment checks
- Stale and duplicate quote detection
- Roll-date inventory and transition checks
- Outlier screening against contract price limits
- Structured, machine-readable failure reports
Known limitations
- Calendar coverage depends on maintained exchange metadata
- Thresholds require per-market tuning
Future improvements
- Wider exchange coverage
- Report diffing between data vintages
backtest-reconciliation-harness
Compares two backtest implementations and attributes every daily difference.
Problem
When two implementations of the same strategy disagree, the difference is usually blamed on the platform rather than located precisely.
Solution
A comparison harness that differences daily return series, applies tolerance thresholds, and attributes each break to signal, sizing, timing, rounding, roll, or accounting.
Architecture
Two output files are normalized to a common schema, differenced, and passed through an attribution rule set that produces a break report and tolerance table.
Key features
- Daily return differencing with tolerance bands
- Break attribution by component
- Per-market reconciliation summaries
- Deterministic, re-runnable reports
Known limitations
- Attribution rules are heuristics, not proofs
- Requires both systems to export comparable daily detail
Future improvements
- Automatic tolerance calibration
- Regression tracking across code versions
research-chart-library
Chart helpers that refuse to draw a figure without period, units, and cost labels.
Problem
Research figures are frequently published without axis units, sample period, or a gross-versus-net label, which makes them uninterpretable later.
Solution
A thin plotting layer that requires metadata as arguments and stamps it onto every figure it produces.
Architecture
Figure factories wrap a plotting backend and validate a metadata contract before rendering; output paths are content-addressed for reproducibility.
Key features
- Mandatory sample-period and units metadata
- Gross or net stamping
- Consistent accessible color assignment
- Deterministic figure regeneration
Known limitations
- Opinionated defaults are not suited to every figure type
Future improvements
- Table companion with the same metadata contract
broker-report-importer
Parses historical broker statements into a normalized trade and cash-flow ledger.
Problem
Years of broker statements arrive in inconsistent formats, and manual entry both loses history and introduces errors.
Solution
Format-specific parsers that emit a single normalized ledger schema, with idempotent imports and duplicate detection so replays are safe.
Architecture
A parser registry keyed by broker and statement version writes to a staging table, followed by validation and promotion into the ledger.
Key features
- Per-broker, per-version parsers
- Idempotent import with duplicate detection
- Cash-flow versus trade classification
- Validation before ledger promotion
Known limitations
- New statement layouts require a new parser version
Future improvements
- Schema inference to speed up new-format onboarding
portfolio-risk-calculator
Risk and drawdown metrics with explicit annualization and cost conventions.
Problem
Risk statistics are often reported without stating annualization method, return frequency, or whether costs are included, which makes numbers incomparable.
Solution
A metrics library where every function requires its conventions to be stated and returns them alongside the value.
Architecture
Pure functions over return series, each returning a value plus a convention record used by reporting layers.
Key features
- Volatility, Sharpe, drawdown, recovery time, expected shortfall
- Explicit annualization and frequency handling
- Gross and net variants
- Bootstrap intervals for headline statistics
Known limitations
- Assumes clean, aligned return series as input
Future improvements
- Rolling-window API
- Attribution helpers
market-data-pipeline
Scheduled ingestion and cleaning of daily market data into a research-ready store.
Problem
Research runs become unreproducible when the underlying data store changes silently between runs.
Solution
A versioned ingestion pipeline that records data vintages, so any published result can be regenerated against the exact data it used.
Architecture
Scheduled fetch, validation, and load stages write immutable dated partitions; research jobs pin a vintage identifier.
Key features
- Immutable dated partitions
- Vintage pinning for research runs
- Validation gates before load
- Backfill and repair workflows
Known limitations
- Storage grows with vintage retention policy
Future improvements
- Vintage diff reports
- Automated retention policy