Documentation Index
Fetch the complete documentation index at: https://mathematicalcompany.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
The strategy registry lets you browse your deployed strategies on Horizon Cloud, download them locally, and run them with a single command. Think of it as git pull for your trading strategies.
Quick Start
import horizon as hz
# List all your cloud strategies
strategies = hz.registry.list()
for s in strategies:
print(s)
# Strategy('Fed Rate MM' [deployed], id=a1b2c3d4...)
# Strategy('BTC Arb Scanner' [validated], id=e5f6a7b8...)
# Search by keyword
hz.registry.search("market making")
# Pull a strategy locally
pulled = hz.registry.pull("a1b2c3d4-...")
print(pulled.path)
# ~/.horizon/strategies/fed_rate_mm-a1b2c3d4/
# Run it directly
hz.registry.run("a1b2c3d4-...", exchange=hz.Polymarket())
Authentication
The registry uses your SDK key (the same one you use for hz.run() and cloud deploy):
export HORIZON_API_KEY="hz_sdk_..."
Or pass it explicitly:
from horizon import Registry
reg = Registry(api_key="hz_sdk_...")
Browsing Strategies
List all
strategies = hz.registry.list()
Returns a list of StrategyInfo objects with id, name, description, status, class_name, created_at.
Search
results = hz.registry.search("volatility")
Searches your strategies by name, description, and class name. Results are ranked by relevance.
Details
info = hz.registry.info("strategy-id")
print(info["params"]) # strategy parameters
print(info["risk_config"]) # risk configuration
print(info["status"]) # draft, validated, deployed, stopped, error
Version History
Every time you save changes to a strategy on Horizon Cloud, a version snapshot is created automatically.
versions = hz.registry.versions("strategy-id")
for v in versions:
print(v)
# v5 (2026-03-10)
# v4 (2026-03-08)
# v3 (2026-03-05)
Pull a specific version:
pulled = hz.registry.pull("strategy-id", version=3)
Pulling Strategies
pull() downloads the strategy code and metadata to ~/.horizon/strategies/:
pulled = hz.registry.pull("strategy-id")
~/.horizon/strategies/
fed_rate_mm-a1b2c3d4/
strategy.py # the strategy code
manifest.json # metadata, params, risk config, version
Custom directory
pulled = hz.registry.pull("strategy-id", directory="./my-strategies")
What’s in the manifest
{
"id": "a1b2c3d4-...",
"name": "Fed Rate MM",
"description": "Market maker for Fed rate prediction markets",
"class_name": "FedRateMM",
"version": 3,
"params": {"spread": 0.02, "size": 10},
"risk_config": {"max_position": 100},
"pulled_at": "2026-03-11T10:30:00Z"
}
Running Strategies
Pull and execute in one step:
hz.registry.run("strategy-id", exchange=hz.Polymarket())
With a specific version:
hz.registry.run("strategy-id", version=3, exchange=hz.Coinbase())
The strategy module is dynamically loaded and executed. If it defines a main() or run() function, that gets called. Otherwise it runs on import (the standard hz.run() pattern).
Managing Local Strategies
List pulled strategies
local = hz.registry.local()
for s in local:
print(f"{s.name} v{s.version} at {s.path}")
Remove a local strategy
hz.registry.remove("strategy-id")
Workflow Example
import horizon as hz
# 1. See what you have deployed
for s in hz.registry.list():
print(f"{s.name} [{s.status}]")
# 2. Pull the one you want
pulled = hz.registry.pull("a1b2c3d4-...", version=5)
# 3. Read and customize the code
code = pulled.code_path.read_text()
print(code[:200])
# 4. Edit locally, then run
hz.registry.run("a1b2c3d4-...", exchange=hz.Polymarket(), mode="paper")
Use pull() to download and inspect strategy code before running it. The pulled strategy is plain Python you can read, modify, and version control with git.