json result has six parts. Amounts are in coin unless the field name says usd; returns and rates are
decimals (0.089 is 8.9%).
strategy
Check this first: it confirms the engine understood your spec.stats
number
Return over the run, and annualised.
number
Annualised volatility of daily returns, and the usual risk-adjusted ratios.
object
max_drawdown, avg_drawdown, longest_underwater_days, and the dates the worst drawdown started
(max_drawdown_start) and bottomed (max_drawdown_trough).object
Per-leg statistics:
count, winners, losers, win_rate, avg_pnl, avg_win, avg_loss, best,
worst, profit_factor, avg_holding_days and total_fees.object
The same statistics per position. For multi-leg strategies this is the figure that matters: a condor whose
short legs win and long legs lose is one winning position, not a 50% win rate.
object
Return per calendar year, keyed by year.
mixed
The span actually reported. With
trim_to_first_trade on, start is the first trade, not your requested
start.equity
equity = cash + positions_value. equity_usd is equity × spot.
positions
One per structure, with the rule that closed it inreason, or expiry and end_of_run:
trades
One per leg, with the instrument actually traded:warnings and diagnostics
Treat these as part of the answer.diagnostics counts the same things as numbers: fills_total, fills_degraded and fills_degraded_pct
(fills priced from a fallback), stale_marks, structure_unresolved (times the structure couldn’t be built,
such as a missing strike or expiry) and bars_before_first_trade.