00 / Systems
The machine, with the cover off.
The same system does the research and places the trades. Six components carry one decision from raw market data to a costed fill. Here is each, in order.
data to factors to portfolio to backtester to overlays to paper loop
Paper and simulation only. No real capital.
01 / Data integrity
Point-in-time, or it does not count.
Every bar is stamped to the millisecond it became knowable. A decision made at one o'clock reads only what existed at one o'clock. One reader sits in front of every query and blocks anything that looks ahead. Research and live trading read the same store, so a backtest and a real decision can't quietly drift apart.
The universe includes the graveyard.
The universe is survivorship-bias-free. Listing and delisting are recorded as historical facts. A backtest cannot drop the names that went to zero and keep only the winners.
Research and live code share one path.
There is no second implementation that drifts. What the backtester runs is what the paper loop runs. The parity is structural, not a promise to keep two codebases in step.
3.5M+ hourly bars, crypto / from 2020 / 94 instruments, live and delisted / zero look-ahead
24M+ daily bars, equity lake / 8,436 US stocks, survivorship-free / 1997 to 2026 (25 years) / 392K+ point-in-time fundamentals
02 / The factor library
Many signals, measured before they vote.
The engine scores every instrument across 50 factors drawn from the published anomaly literature and from market microstructure: momentum, reversal, funding carry, low-volatility anomalies. The blend is information-coefficient weighted. A factor earns its weight by its measured correlation with future returns, not by how good its story sounds. What does not earn its place is shrunk toward zero, and a signal that can't be defended trades nothing.
-
01
Momentum, two kinds.
Cross-sectional, which names lead the pack, and time-series, whether a name trends against its own past. Held on a short leash, the factor most prone to crowding.
-
02
Residual reversal.
The short-horizon tendency of a name to revert after it moves away from what its peers and its own structure imply it should be.
-
03
Funding carry.
The funding rate paid between longs and shorts on a perpetual, read as a carry signal to harvest rather than noise to ignore.
-
04
Low-volatility and low-beta.
The persistent tendency of calmer, lower-beta instruments to deliver better risk-adjusted returns than their racier peers.
-
05
Volatility estimators.
Yang-Zhang and Parkinson estimators that use the full open-high-low-close bar, not just closes, for a less noisy read on risk.
-
06
Liquidity measures.
Amihud illiquidity and the Corwin-Schultz spread estimator, so the engine knows what a position will actually cost to hold and to exit.
The output is one score per instrument, per hour. A single number that the rest of the system can size, constrain, and fill against.
See how the library is organized
// 50 factors, grouped into families, each weighted by its measured information coefficient, the correlation with future returns. Families with more predictive content carry more weight; the rest are shrunk toward zero.
- Momentum IC-weighted
- Residual reversal IC-weighted
- Funding carry IC-weighted
- Low-volatility and low-beta IC-weighted
- Volatility estimators IC-weighted
- Liquidity measures IC-weighted
Hover a family to read how it earns its weight.
50 factors / IC-weighted blend / one score per instrument, per hour
03 / Portfolio and risk
A portfolio, not a pile of trades.
Scores become positions through a step that treats correlated bets as one bet. Covariance is estimated with an EWMA on recent data and Ledoit-Wolf shrinkage toward a stable target, so it stays usable on short history. Positions solve by mean-variance optimization through the Clarabel conic solver, with a rank and inverse-volatility fallback when no clean solution exists.
Sized by covariance.
EWMA plus Ledoit-Wolf shrinkage gives a usable covariance on short history. Mean-variance optimization through Clarabel solves the book, with a rank and inverse-volatility fallback when no clean solution exists. A volatility-target overlay holds the book at a chosen risk.
The brakes are the engine.
A drawdown ladder reduces gross exposure in steps as losses accumulate, and a kill switch stands behind it for the case the ladder is not enough. The system does less when the market gives it less, and fails toward safety when something is wrong.
EWMA + Ledoit-Wolf covariance / Clarabel MVO, rank fallback / vol-target overlay / drawdown ladder + kill switch
04 / The truth backtester
Costs that tell the truth.
The backtester is event-driven and removes the two ways a backtest flatters itself. Timing: a signal computed at a bar's close fills at the next bar's open, so nothing looks ahead. Cost: spreads, exchange fees, and perpetual funding are charged exactly as they would be live. Funding is modeled as the discrete cash flow it is, not smeared into an average. One transaction-cost authority prices every fill, research and paper alike.
The validation gauntlet
Survive this, or the number means nothing.
A good backtest is easy to fake and easy to fool yourself with. Before a result is trusted it clears a validation gauntlet. Each test asks the same question a different way: would this survive if the world had not been so kind?
-
01
Purged walk-forward.
Train on the past, test on a future the model never saw, with a purge and embargo so no information bleeds across the boundary, then roll forward and repeat.
-
02
Deflated and Probabilistic Sharpe.
A Sharpe is discounted for how many strategies were tried to find it and for the non-normal shape of returns, so a number that survives is one that is unlikely to be luck.
-
03
Probability of Backtest Overfitting, via CSCV.
Combinatorially symmetric cross-validation estimates the chance that the strategy that looked best in-sample is actually no better than the median out-of-sample.
-
04
Combinatorially-purged cross-validation.
Many train and test splits, each purged, so the estimate of performance is not a single lucky path through history.
-
05
Honest trial counts.
We count the number of configurations tested and feed that count into the deflation, rather than pretending we only ever tried one.
-
06
A must-beat-baseline gate.
A strategy must beat a simple baseline by a meaningful margin, or it does not pass. Beating zero is not the bar.
Most strategies never survive a gauntlet this severe. That is the point: what survives, you can trust.
signal-at-close to fill-at-next-open / event-driven funding / one cost authority / purged WFV + DSR + PBO + baseline gate
05 / The overlays
Conviction, scaled. Exposure, gated.
Meta-labeling scales conviction. It never flips a signal.
A gradient-boosted classifier sits on the factor signal as a meta-labeler. It trains on triple-barrier labels: did a position hit its profit target, its stop, or its time limit first, net of costs. Its target is the live outcome a trade would have had, not a raw forward return. Its probabilities are isotonically calibrated, so a stated seventy percent means roughly seventy percent and conviction sizes against it. The model only scales conviction. The factor engine decides direction; the meta-labeler decides how much to believe it.
A regime gate throttles exposure in adverse states.
A hand-rolled Gaussian hidden-Markov model reads the market's latent regime. A sharp shift in the joint behaviour of returns and volatility means the market has changed state, and an edge measured in one state should not be trusted at full size in another. When the latent state turns adverse, the model throttles gross exposure. It runs filtered, with no lookahead, so its view uses only what was knowable then.
Scales, never flips.
Triple-barrier labels, a gradient-boosted classifier, isotonic calibration. It sits inside a decision the factor engine has already made and adjusts only how much to believe it.
Carries less when hostile.
A filtered Gaussian hidden-Markov model with no lookahead. When the latent regime turns adverse, gross exposure is throttled down.
Neither overlay is a black box bolted to the front. Both sit inside a decision the factor engine has already made. Both can only make the engine more careful.
triple-barrier labels / gradient-boosted + isotonic calibration / scales conviction, never flips / Gaussian HMM regime gate
06 / The paper loop
The same system, run live, on paper.
Research and paper trading are one system, run twice. A 24/7 loop walks the live order book to estimate realistic fills, places idempotent orders so a retry can never double-count, reconciles its ledger against the venue, and runs off a single authoritative clock so every component agrees on what was knowable. State is written down, so a process killed mid-decision resumes where it stopped, with no lost position and no double fill. This is where an edge meets a real market, built for the moment things go wrong.
No real capital touches this loop. It runs as long as it takes before a live stage.
The same six-stage architecture runs all four algorithms in paper: AlphaForge in crypto funding carry, AlphaMax in US equity momentum, AlphaTrend in managed-futures trend across a 17-market ETF basket, and ALPHAC, the equal-risk combination of the equity and crypto sleeves. The equities layer is trained on 25 years of leak-proof market data across 8,436 survivorship-free US stocks, and breadth research continues. What the live paper record has earned so far is reported in full on the performance page.
order-book-walking fills / idempotent orders / reconciliation / one authoritative clock / crash-safe, resumable