Write the strategy once.
Run it everywhere.

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)
)
1

Describe the signal

Your strategy returns opinions: direction, confidence, expected edge. Not orders, not sizes. Just what you think will happen.

2

Let the math size it

Kelly, Carver, or equal-weight. The optimizer reads your signal quality and decides how much capital each opinion deserves.

3

Deploy with one flag

Switch from .backtest() to .paper() to .live(). Same strategy, same risk engine, same code.

Know exactly what's working

Signal wrong? Sizing too aggressive? Execution leaking? Each layer is separate and measurable.

Trade anything, one codebase

Equities, crypto, prediction markets. Your strategy says "up." The executor handles the rest.

Sleep at night

Seven risk layers on every order, every tick. Stops, drawdown guards, kill switch. Always on.

Pipe builder

Chain tickers, strategies, sizers, and risk in one fluent expression.

30+ quant tools

Kalman filters, copulas, optimal execution, HRP, bootstrap. All built in.

Real validation

Bootstrap confidence intervals, walk-forward, out-of-sample. Not just a Sharpe number.

Data providers

Yahoo, Polygon, Alpaca, CSV, DataFrame. Or register your own.

Custom everything

Write your own sizer, executor, feature, or data source. One method each.

Zero lock-in

Pure Python. No vendor dependencies. No cloud requirement. Yours to run.

Built for quants who ship.

Stop rewriting backtests for production. Start with the same code you'll deploy.

Start building