Examples
Three complete strategy bundles with annotations: rules, thesis, custom data, and agent tools.
Three strategy bundles, with notes on what each one is doing and what we would change in retrospect. You can fork or subscribe to marketplace strategies from your dashboard.
Funding Harvester
A rules-first strategy that fades extreme funding on liquid perps, confirms with open-interest flow, and refuses to trade in volatility spikes.
STRATEGY.md
-----------
# Funding Harvester
Trade against extreme negative funding on liquid perps when open interest
confirms that shorts are still crowding in.
## Entry setup
- Funding is deeply negative and sustained.
- Open interest is rising, not falling.
- Volatility is not in cascade mode.
- Abstain when the book is thin or signals conflict.
## Exit and management
- Use a stop where the crowding thesis is invalidated.
- Take profit when funding normalizes or price squeezes into resistance.
- Trail stops only after the trade has protected entry.
## Rules
entry: funding_1h < -0.003 AND oi_delta_4h > 0.03 AND realized_vol_24h < 0.80
exit: pnl_pct >= 0.02 OR drawdown <= -0.012
size: fixed_pct(0.03) capped at position_pct
strategy.yaml
-------------
name: funding-harvester
slug: funding-harvester
author: "0x4f2a000000000000000000000000000000000001"
version: 1.0.0
universe: [BTC-PERP, ETH-PERP, SOL-PERP, HYPE-PERP]
capacity_usd: 500000
cadence: 5m
mode: both
data: [hl.funding, hl.oi, hl.marks]
risk:
max_leverage: 2
max_drawdown: 0.08
position_pct: 0.05
daily_loss_limit: 0.032
stop_loss: 0.012
take_profit: 0.02
fees:
perf: 0.10
hurdle: 0
hwm: true
inputs: [market_context, positions, account, regime_tags, memory]
permissions:
can_emit_trade_intents: true
can_execute_orders_directly: false
outputs: [TradeIntent, NoTrade]
when_to_use: Use in liquid markets when funding is stretched but volatility is not in cascade mode.
min_conviction: 0.55
What this is doing. strategy.yaml keeps the universe, cadence, risk, and mode explicit. The ## Rules block gives Engine a deterministic gate: negative funding, rising OI, and acceptable volatility. Because the mode is both, the agent still gets the matched rule trace and can use account state, memory, and exits before deciding whether to place, size down, or abstain.
What we would change in retrospect. The OI threshold is still broad. A future version could replace a single oi_delta_4h threshold with a custom data source that normalizes OI change by each market's notional volume.
Momentum Multibar
A thesis-first strategy for sustained directional moves. It uses prose for contextual judgment and asks the agent to confirm structure before acting.
STRATEGY.md
-----------
# Momentum Multibar
Catch sustained directional moves on liquid perps. Prefer breakouts where
the 1h trend, 4h structure, volume, and broader risk regime agree.
## Long setup
- 4h close breaks the prior 20-bar high.
- 1h trend is already rising.
- Breakout volume is materially above the recent average.
- BTC is not in active drawdown.
## Short setup
- 4h close breaks the prior 20-bar low.
- 1h trend is already falling.
- Breakdown volume confirms.
- Broader market risk is not violently mean-reverting.
## Management
- Use smaller size in high volatility.
- Take profit in two halves: first on the median move, second with a trail.
- Abstain during new listing noise or equity-driven risk-off weeks.
strategy.yaml
-------------
name: momentum-multibar
slug: momentum-multibar
author: "0x4f2a000000000000000000000000000000000001"
version: 1.0.0
universe: [BTC-PERP, ETH-PERP, SOL-PERP, AVAX-PERP, ARB-PERP]
capacity_usd: 750000
cadence: 15m
mode: thesis
data: [hl.marks, hl.oi]
risk:
max_leverage: 2
max_drawdown: 0.10
position_pct: 0.04
daily_loss_limit: 0.04
stop_loss: 0.025
take_profit: 0.06
fees:
perf: 0.10
hurdle: 0
hwm: true
inputs: [market_context, positions, account, regime_tags, memory]
permissions:
can_emit_trade_intents: true
can_execute_orders_directly: false
outputs: [TradeIntent, NoTrade]
when_to_use: Use when trend, volume, and market regime agree. Abstain in noisy post-listing or risk-off windows.
min_conviction: 0.60
What this is doing. The strategy does not need a deterministic ## Rules block because the setup is contextual: trend alignment, breakout quality, volume, and market regime all matter. strategy.yaml still enforces position caps, drawdown limits, default exits, and the context inputs the agent sees each tick.
What we would change in retrospect. The prose asks for time-of-day liquidity awareness, but that data is not native. A future version could add a custom data source for session-relative volume or an author tool that returns a richer breakout quality score.
News Sentiment Breakout
A thesis strategy with an author-declared HTTP tool. The agent calls fetch_news only when the market setup is close enough to justify extra context.
STRATEGY.md
-----------
# News Sentiment Breakout
Trade breakouts only when price structure and fresh news agree.
## Long setup
- Price breaks resistance with expanding volume.
- Social sentiment is positive and accelerating.
- Before entry, call `fetch_news` for the candidate symbol.
- Enter only if headlines support the breakout.
## Short setup
- Price breaks support with expanding volume.
- Social sentiment is negative and accelerating.
- Before entry, call `fetch_news` for the candidate symbol.
- Enter only if headlines support the breakdown.
## Vetoes
- Abstain when `fetch_news` is unavailable.
- Abstain when headlines conflict with the price move.
- Abstain in high-volatility liquidation cascades.
strategy.yaml
-------------
name: news-sentiment-breakout
slug: news-sentiment-breakout
author: "0x4f2a000000000000000000000000000000000001"
version: 1.0.0
universe: [BTC-PERP, ETH-PERP, SOL-PERP]
capacity_usd: 500000
cadence: 15m
mode: thesis
data: [hl.marks]
risk:
max_leverage: 2
max_drawdown: 0.10
position_pct: 0.05
daily_loss_limit: 0.03
stop_loss: 0.04
take_profit: 0.12
fees:
perf: 0.10
hurdle: 0
hwm: true
inputs: [market_context, positions, account, regime_tags, memory]
permissions:
can_emit_trade_intents: true
can_execute_orders_directly: false
outputs: [TradeIntent, NoTrade]
when_to_use: Use when sentiment is dispersive across the universe and price confirms the move.
min_conviction: 0.65
tools.yaml
----------
tools:
- name: fetch_news
description: Returns recent headlines and sentiment for a symbol.
endpoint: https://api.example.com/news
method: POST
auth:
type: bearer
secret: NEWS_API_KEY
input_schema:
type: object
properties:
symbol: { type: string }
required: [symbol]
output_schema:
type: object
properties:
headlines: { type: array }
news_sentiment_score: { type: number }
What this is doing. The bundle keeps public trading logic in STRATEGY.md, hard limits in strategy.yaml, and private headline context behind a declared tool. The secret name is public, but the secret value is stored in Engine. If fetch_news fails or returns conflicting sentiment, the playbook tells the agent to abstain.
What we would change in retrospect. If sentiment score becomes a hard threshold, move it into data_sources[] so rules can gate on it every tick. Keep fetch_news for the richer headline context the agent should fetch only when it is useful.
What to take from these
- Use config for boundaries. Universe, cadence, risk caps, default exits, and minimum conviction belong in
strategy.yaml. - Use prose for judgment. Setup quality, invalidation logic, tool workflow, and abstain conditions belong in
STRATEGY.md. - Use tools sparingly. A tool should answer a question the agent cannot answer from the normal snapshot.
- Use rules where thresholds matter. Rules are great gates. They are not required for every strategy.
If you want to start from one of these, fork it from the marketplace. If you want to write your own, Building your own walks through the process from a blank bundle.