From backtest to live trading in one line change.
import horizon as hz from horizon.quant import BollingerMeanRev result = ( hz.pipe("AAPL", "MSFT", "NVDA") .strategy(BollingerMeanRev(window=20)) .kelly(fraction=0.25) .stop_loss(pct=0.05) .backtest(cash=100_000) )
Your strategy returns opinions: direction, confidence, expected edge. Not orders, not sizes. Just what you think will happen.
Kelly, Carver, or equal-weight. The optimizer reads your signal quality and decides how much capital each opinion deserves.
Switch from .backtest() to .paper() to .live(). Same strategy, same risk engine, same code.
Signal wrong? Sizing too aggressive? Execution leaking? Each layer is separate and measurable.
Equities, crypto, prediction markets. Your strategy says "up." The executor handles the rest.
Seven risk layers on every order, every tick. Stops, drawdown guards, kill switch. Always on.
Chain tickers, strategies, sizers, and risk in one fluent expression.
Kalman filters, copulas, optimal execution, HRP, bootstrap. All built in.
Bootstrap confidence intervals, walk-forward, out-of-sample. Not just a Sharpe number.
Yahoo, Polygon, Alpaca, CSV, DataFrame. Or register your own.
Write your own sizer, executor, feature, or data source. One method each.
Pure Python. No vendor dependencies. No cloud requirement. Yours to run.
Stop rewriting backtests for production. Start with the same code you'll deploy.
Start building