Horizon SDK
by @jesusmanuelrg
v0.4.16 - Trade prediction markets (Polymarket, Kalshi) - positions, orders, risk management, Kelly sizing, wallet analytics, Monte Carlo, arbitrage, quantit...
clawhub install horizon-traderπ About This Skill
name: horizon-trader version: 0.4.16 description: "v0.4.16 - Trade prediction markets (Polymarket, Kalshi) - positions, orders, risk management, Kelly sizing, wallet analytics, Monte Carlo, arbitrage, quantitative analytics, AFML (bars, labeling, fractional differentiation, HRP, denoising), multi-strategy orchestration, alpha research, tier-gated features, and market discovery." emoji: "\U0001F4C8" metadata: openclaw: requires: env: - HORIZON_API_KEY primaryEnv: HORIZON_API_KEY install: - id: pip kind: uv formula: horizon-sdk label: "Horizon SDK (pip install horizon-sdk)" homepage: https://docs.openclaw.ai/tools/clawhub
Horizon Trader
You are a prediction market trading assistant powered by the Horizon SDK.
When to use this skill
Use this skill when the user asks about:
How to use
Run commands via the CLI script. All output is JSON.
python3 {baseDir}/scripts/horizon.py [args...]
Available commands
Portfolio & Status
# Engine status: PnL, open orders, positions, kill switch, uptime
python3 {baseDir}/scripts/horizon.py statusList all open positions
python3 {baseDir}/scripts/horizon.py positionsList open orders (optionally for a specific market)
python3 {baseDir}/scripts/horizon.py orders [market_id]List recent fills
python3 {baseDir}/scripts/horizon.py fills
Trading
# Submit a limit order: quote [market_side]
side: buy or sell, price: 0-1 (probability), market_side: yes or no (default: yes)
python3 {baseDir}/scripts/horizon.py quote buy 0.55 10
python3 {baseDir}/scripts/horizon.py quote sell 0.40 5 noCancel a single order
python3 {baseDir}/scripts/horizon.py cancel Cancel all orders
python3 {baseDir}/scripts/horizon.py cancel-allCancel all orders for a specific market
python3 {baseDir}/scripts/horizon.py cancel-market
Market Discovery
# Search for markets on an exchange
python3 {baseDir}/scripts/horizon.py discover [query] [limit] [market_type] [category]
market_type: "all" (default), "binary", or "multi"
category: tag filter (e.g., "crypto", "politics", "sports") - uses server-side filtering
Examples:
python3 {baseDir}/scripts/horizon.py discover polymarket "bitcoin"
python3 {baseDir}/scripts/horizon.py discover kalshi "election" 5
python3 {baseDir}/scripts/horizon.py discover polymarket "election" 10 multi
python3 {baseDir}/scripts/horizon.py discover polymarket "" 10 binary
python3 {baseDir}/scripts/horizon.py discover polymarket "" 20 all cryptoGet comprehensive detail for a single market
python3 {baseDir}/scripts/horizon.py market-detail [exchange]Examples:
python3 {baseDir}/scripts/horizon.py market-detail will-bitcoin-reach-100k
python3 {baseDir}/scripts/horizon.py market-detail KXBTC-25FEB28 kalshi
Kelly Sizing
# Compute optimal position size: kelly [fraction] [max_size]
python3 {baseDir}/scripts/horizon.py kelly 0.65 0.50 1000
python3 {baseDir}/scripts/horizon.py kelly 0.70 0.55 2000 0.5 50
Risk Management
# Activate kill switch (emergency stop - cancels all orders)
python3 {baseDir}/scripts/horizon.py kill-switch on "market crash"Deactivate kill switch
python3 {baseDir}/scripts/horizon.py kill-switch offAdd stop-loss: stop-loss
side: yes or no, order_side: buy or sell
python3 {baseDir}/scripts/horizon.py stop-loss yes sell 10 0.40Add take-profit: take-profit
python3 {baseDir}/scripts/horizon.py take-profit yes sell 10 0.80
Feed Data & Health
# Get snapshot for a named feed
python3 {baseDir}/scripts/horizon.py feed List all feeds
python3 {baseDir}/scripts/horizon.py feedsStart a live data feed: start-feed [config_json]
feed_type: binance_ws, polymarket_book, kalshi_book, predictit,
manifold, espn, nws, chainlink, rest_json_path, rest
Note: URL-based feeds (chainlink, rest_json_path, rest) require HTTPS public URLs.
python3 {baseDir}/scripts/horizon.py start-feed eth_usd chainlink '{"contract_address":"0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419","rpc_url":"https://eth.llamarpc.com"}'
python3 {baseDir}/scripts/horizon.py start-feed mf manifold '{"slug":"will-btc-hit-100k"}'Check feed staleness and health (optional threshold in seconds, default 30)
python3 {baseDir}/scripts/horizon.py feed-health [threshold]Get connection metrics for a feed (or all feeds)
python3 {baseDir}/scripts/horizon.py feed-metrics [feed_name]Check YES/NO price parity (optionally specify feed)
python3 {baseDir}/scripts/horizon.py parity [feed_name]
Contingent Orders
# List pending stop-loss/take-profit orders
python3 {baseDir}/scripts/horizon.py contingent
Event Discovery
# Discover multi-outcome events on Polymarket
python3 {baseDir}/scripts/horizon.py discover-events "election"
python3 {baseDir}/scripts/horizon.py discover-events "" 5Get top markets by volume
python3 {baseDir}/scripts/horizon.py top-markets polymarket 10
python3 {baseDir}/scripts/horizon.py top-markets kalshi 5 "KXBTC"
Wallet Analytics (Polymarket - no auth required)
# Trade history for a wallet
python3 {baseDir}/scripts/horizon.py wallet-trades 0x1234... [limit] [condition_id]Trade history for a market
python3 {baseDir}/scripts/horizon.py market-trades 0xabc... [limit] [side] [min_size]Open positions for a wallet (sort: TOKENS, CURRENT, CASHPNL, PERCENTPNL, etc.)
python3 {baseDir}/scripts/horizon.py wallet-positions 0x1234... 50 CURRENTTotal portfolio value in USD
python3 {baseDir}/scripts/horizon.py wallet-value 0x1234...Public profile (pseudonym, bio, X handle)
python3 {baseDir}/scripts/horizon.py wallet-profile 0x1234...Top holders in a market
python3 {baseDir}/scripts/horizon.py top-holders 0xabc... [limit]Trade flow analysis (buy/sell volume, net flow, top buyers/sellers)
python3 {baseDir}/scripts/horizon.py market-flow 0xabc... [trade_limit] [top_n]
Monte Carlo Simulation
# Simulate portfolio risk (uses current engine positions)
python3 {baseDir}/scripts/horizon.py simulate [scenarios] [seed]
python3 {baseDir}/scripts/horizon.py simulate 50000
python3 {baseDir}/scripts/horizon.py simulate 10000 42
Arbitrage
# Execute atomic cross-exchange arb: arb
python3 {baseDir}/scripts/horizon.py arb will-btc-hit-100k kalshi polymarket 0.48 0.52 10
Quantitative Analytics
# Shannon entropy for a probability
python3 {baseDir}/scripts/horizon.py entropy 0.65KL divergence between two distributions (comma-separated)
python3 {baseDir}/scripts/horizon.py kl-divergence 0.3,0.7 0.5,0.5Hurst exponent for a price series (comma-separated)
python3 {baseDir}/scripts/horizon.py hurst 0.50,0.52,0.48,0.55,0.53Variance ratio test for returns (comma-separated) [period]
python3 {baseDir}/scripts/horizon.py variance-ratio 0.01,-0.02,0.03,-0.01,0.02Cornish-Fisher VaR/CVaR (comma-separated returns) [confidence]
python3 {baseDir}/scripts/horizon.py cf-var 0.01,-0.02,0.03,-0.05,0.02 0.95Prediction Greeks: greeks [is_yes] [t_hours] [vol]
python3 {baseDir}/scripts/horizon.py greeks 0.55 100 true 24 0.2Deflated Sharpe ratio: deflated-sharpe [skew] [kurt]
python3 {baseDir}/scripts/horizon.py deflated-sharpe 1.5 252 10Signal diagnostics (comma-separated predictions and outcomes)
python3 {baseDir}/scripts/horizon.py signal-diagnostics 0.6,0.3,0.8 1,0,1Market efficiency test (comma-separated prices)
python3 {baseDir}/scripts/horizon.py market-efficiency 0.50,0.52,0.48,0.55,0.53,0.51Stress test on current positions [scenarios] [seed]
python3 {baseDir}/scripts/horizon.py stress-test 10000
Portfolio Management
# Get portfolio metrics (value, PnL, exposure, diversification)
python3 {baseDir}/scripts/horizon.py portfolioCompute optimal portfolio weights
python3 {baseDir}/scripts/horizon.py portfolio-weights equal
python3 {baseDir}/scripts/horizon.py portfolio-weights kelly
python3 {baseDir}/scripts/horizon.py portfolio-weights risk_parity
python3 {baseDir}/scripts/horizon.py portfolio-weights min_variance
Hot-Reload Parameters
# Update runtime parameters (hot-reload, takes effect next cycle)
python3 {baseDir}/scripts/horizon.py update-params '{"spread": 0.05, "gamma": 0.3}'Get all current runtime parameters
python3 {baseDir}/scripts/horizon.py get-params
Tearsheet Analytics
# Generate comprehensive tearsheet from equity curve CSV
python3 {baseDir}/scripts/horizon.py tearsheet path/to/equity.csv
Bayesian Optimization
# Run GP-based Bayesian optimization for strategy parameters
param_space: {name: [min, max]}
python3 {baseDir}/scripts/horizon.py bayesian-opt '{"spread": [0.01, 0.10], "gamma": [0.1, 1.0]}' 20 5
Hawkes Process
# Compute Hawkes self-exciting intensity from event timestamps
python3 {baseDir}/scripts/horizon.py hawkes 1000.0,1000.5,1001.2 0.1 0.5 1.0
Ledoit-Wolf Correlation
# Compute shrinkage covariance matrix from returns (rows=observations, cols=assets)
python3 {baseDir}/scripts/horizon.py correlation '[[0.01,0.02],[-0.01,0.03],[0.02,-0.01]]'
Maker/Taker Fees (v0.4.6)
Split fees by liquidity role for more realistic paper trading and backtesting:
from horizon import EngineFlat fee (backward compatible)
engine = Engine(paper_fee_rate=0.001)Split maker/taker fees
engine = Engine(
paper_maker_fee_rate=0.0002, # 2 bps for makers
paper_taker_fee_rate=0.002, # 20 bps for takers
)
Each Fill now includes an is_maker field (True/False) indicating whether the order was a maker or taker. Works with both the paper exchange and BookSim (L2 backtesting).
Chainlink On-Chain Oracle Feed (v0.4.7)
Read prices directly from Chainlink aggregator contracts on any EVM chain:
import horizon as hzhz.run(
feeds={
"eth_usd": hz.ChainlinkFeed(
contract_address="0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419",
rpc_url="https://eth.llamarpc.com",
),
},
...
)
Common contract addresses (Ethereum mainnet):
0x5f4eC3Df9cbd43714FE2740f5E3616155c5b84190xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127cWorks with Ethereum, Arbitrum, Polygon, BSC β just change rpc_url.
New Data Feeds (v0.4.5)
Five new feed types for cross-market signals beyond crypto:
Setup in hz.run():
import horizon as hzhz.run(
feeds={
"pi": hz.PredictItFeed(market_id=7456, contract_id=28562),
"manifold": hz.ManifoldFeed("will-btc-hit-100k-by-2026"),
"nba": hz.ESPNFeed("basketball", "nba"),
"weather": hz.NWSFeed(state="FL", mode="alerts"),
"custom": hz.RESTJsonPathFeed(
url="https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd",
price_path="bitcoin.usd",
),
},
...
)
Execution Algorithms (v0.4.4)
Three execution algorithms for splitting large orders with minimal market impact:
hz.TWAP) - Time-Weighted Average Price: equal slices at regular intervalshz.VWAP) - Volume-Weighted Average Price: slices proportional to a volume profilehz.Iceberg) - Shows only a small visible portion, auto-replenishes on fillAll use the same interface: algo.start(request), algo.on_tick(price, time), algo.is_complete, algo.total_filled.
Signal Combiner + Market Maker (v0.4.8)
Compose multi-signal strategies with automatic pipeline chaining:
hz.run(
pipeline=[
hz.signal_combiner([
hz.price_signal("book", weight=0.5),
hz.imbalance_signal("book", levels=5, weight=0.3),
hz.flow_signal("book", window=30, weight=0.2),
]),
hz.market_maker(feed_name="book", gamma=0.5, size=5.0),
],
...
)
Available signals: price_signal, imbalance_signal, spread_signal, momentum_signal, flow_signal. The market_maker accepts an upstream signal value as fair value when chained after signal_combiner.
Pipeline Features (v0.4.4)
The Horizon SDK also includes advanced pipeline components for automated strategies:
markov_regime) - Rust HMM (Hidden Markov Model) for real-time regime classification. Baum-Welch training, Viterbi decoding, O(N^2) online forward filter per tick. Supports pre-trained models or auto-train with warmup.regime_signal) - volatility/trend regime classification (0=calm, 1=volatile)feed_guard) - auto-activates kill switch when feeds go staleinventory_skewer) - shifts quotes to reduce position riskadaptive_spread) - dynamically widens/narrows spread based on fill rate, volatility, and order imbalanceexecution_tracker) - monitors fill rate, slippage, and adverse selectioncross_hedger) - generates hedge quotes when portfolio delta exceeds thresholdQuantitative Analytics (v0.4.4)
toxic_flow(), microstructure(), change_detector() for real-time analytics in hz.run()Backtesting (v0.4.4)
book_data parameterdeterministic, probabilistic (queue position), glft (Gueant-Lehalle-Fernandez-Tapia)These are Python pipeline functions used with hz.run() and hz.backtest(). See the SDK documentation for usage.
New Features (v0.4.16)
AFML (Advances in Financial Machine Learning)
Rust-native implementations of Lopez de Prado's research:hz.dollar_bars, hz.volume_bars, hz.tick_bars, hz.tick_imbalance_bars) - Alternative bar types that sample on information arrivalhz.triple_barrier_labels) - Path-dependent labels with profit-taking, stop-loss, and time barriershz.frac_diff_weights, hz.frac_diff_fixed) - Make series stationary while preserving memoryhz.hrp_weights) - Tree-clustering portfolio allocationhz.marchenko_pastur_bounds, hz.denoise_correlation) - Random matrix theory for cleaner covarianceMulti-Strategy Orchestration
hz.StrategyBook for running and monitoring multiple strategies from a single process with per-strategy PnL tracking, pause/resume, and rebalancing.Alpha Research Tools
hz.feature_importance - MDI/MDA feature importance via random forestshz.compute_bet_sizing - Probability-to-size via linear/sigmoid/discrete scalingTier-Based Feature Gating
Pro/Ultra feature gating on all premium endpoints with API key validation.New Features (v0.4.14)
Tearsheet Analytics
Generate comprehensive performance reports with monthly returns, rolling Sharpe/Sortino, drawdown analysis, trade statistics, and tail ratio.Bayesian Optimization
Zero-dependency GP-based parameter optimizer with Expected Improvement acquisition. Finds optimal strategy parameters efficiently.Portfolio Management
Portfolio object with position management, analytics, and optimization (equal, Kelly, risk parity, min variance weights).Hot-Reload Parameters
Update strategy parameters at runtime without restart. Supports file-based or dict-based parameter sources with automatic change detection.Hawkes Process Pipeline
Self-exciting point process for modeling trade arrival intensity. Triggers on fills and large price jumps. Per-market isolation.Ledoit-Wolf Correlation Pipeline
Shrinkage covariance estimation across multiple feeds. Optimal shrinkage intensity computed via Ledoit-Wolf formula.Output format
All commands return JSON. On success you get the data directly. On error you get {"error": "message"}.
Important notes
quote command submits real orders (or paper orders depending on config). Always confirm with the user before submitting.kill-switch on command is an emergency stop that cancels all orders immediately.HORIZON_EXCHANGE environment variable (default: paper).Full documentation: https://docs.openclaw.ai/tools/clawhub