BitValue / schema
bitvalue.io/schema/strategy-manifest/v1 v1.0 · stable

Strategy Manifest — v1

A manifest.yaml is the single source of truth for a strategy asset: identity (family@version), market/symbol/timeframe, engine/ABI, parameter schema, data requirements, signal contract, risk constraints and admission state. The same manifest drives Athena backtests and hermes/signal live signal generation, so backtest and live never drift.

Machine-readable: manifest.schema.json (JSON Schema 2020-12, $id: https://bitvalue.io/schema/strategy-manifest/v1). Validate a manifest with any JSON-Schema validator after parsing the YAML to JSON.

1 · Discovery

Each strategy version is a directory; the manifest has a fixed name:

strategies/assets/<family>/<version>/manifest.yaml

family and version come from the manifest itself and must match the directory (a validation check). The locator is family@version (e.g. eth15m@2026q3).

2 · Example

schema_version: "1.0"

# 1) identity
name: eth-15m-psar
family: eth15m
version: "2026q3"

# 2) market
market: crypto
symbol: ETH-USDT-SWAP
timeframe: 15m
exchanges: [OKX]

# 3) engine
engine:
  kind: bsl                  # go | bsl | so | python
  entrypoint: strategy.js     # required when kind=bsl
  language: js

# 4) parameters
parameters:
  - { name: atr_length, type: int,   default: 14, min: 1, max: 500, tunable: true }
  - { name: er_threshold, type: float, default: 45.0, min: 0, max: 100, step: 0.1, tunable: true }

# 6) data requirements
data_requirements:
  input_types: [OHLCV]
  lookback_bars: 300
  warmup_minutes: 4500      # = lookback_bars × timeframe

# 7) signal contract
signal_output:
  actions: [ENTER_LONG, CLOSE_LONG, FLIP_TO_LONG]
  emits_desired_orders: true

# 8) risk constraints (AGENTS §9 hard-checks)
risk:
  sl_protection_mode: enforced   # enforced | strategy_managed
  has_protective_sl: true
  reduce_only_close: true        # must be true
  flip_two_phase: true           # required if strategy emits FLIP

# 9) admission (governance)
admission:
  state: backtest_passed
  paper_allowed: true
  live_allowed: false

3 · Top-level blocks

BlockRequired fieldsPurpose
identityschema_version, name, family, versionfamily@version locator
marketmarket, symbol, timeframeresearch/live target
engineengine.kind (so|go|python|bsl)engine + ABI; entrypoint required when kind=bsl
parameterseach: name, type, defaulttype ∈ int|float|bool|enum; enum needs options[]
data_requirementsinput_types, lookback_barswarmup; warmup_minutes should = lookback_bars × timeframe
signal_outputactions (advisory)cross-checked against the execution layer
riskreduce_only_close, has_protective_sladmission hard-checks (AGENTS §9)
admissionstate, paper_allowed, live_allowedgovernance; default live_allowed: false
provenancelineage/audit (source commit, Pine source, reviews)

4 · Cross-field rules (validator)

Beyond the structural schema, athena strategy validate enforces:

5 · Admission states

draft → pine_mapped → engine_implemented → golden_aligned → backtest_passed → walkforward_passed → health_check_passed → paper_approved → live_small_cap_approved → live_scaled → deprecated