Canonical Upload Specification

Strategy Robustness Lab Docs

Accepted upload formats, supported fields, runtime assumptions, and what each artifact unlocks.

The lab can analyze multiple artifact classes, but richer uploads unlock deeper diagnostics and stronger interpretation fidelity. Treat this page as the canonical upload and runtime specification for Strategy Robustness Lab.

Minimum

Trade CSV

Canonical core trade fields only

Recommended

Rich trade CSV

Add MAE/MFE + risk + R fields

Richest accepted

bundle_v1 ZIP

trades + metadata + assumptions + params + optional OHLCV

Runtime assumptions

Benchmark + account size + risk %

Set before running analysis

Accepted Upload Types

Trade CSV

Extension: .csv

Closed trades table resolved through canonical field aliases.

Unlocks: overview, distribution, monte carlo, ruin, report (execution/regimes may be limited).

For: fastest baseline validation intake.

Structured bundle (bundle_v1)

Extension: .zip

ZIP with required manifest.json + trades.csv; optional metadata/assumptions/params/OHLCV files.

Unlocks: richer eligibility and context-aware diagnostics.

For: institutional upload workflows and reproducibility.

Research bundle profile

Container: bundle_v1 with artifact_type: research_bundle

Not a separate parser route; this is a manifest-level artifact profile under bundle_v1.

Unlocks: full diagnostic availability when artifact richness is classified as research_complete.

For: teams supplying full contextual artifacts.

Trade CSV Specification

Core required fields

FieldRequiredMeaningExampleAccepted aliases
symbolRequiredInstrument identifier.BTCUSDTsymbol, ticker, instrument, asset
sideRequiredTrade direction (normalizes to long/short).longside, direction, position_side, trade_side
entry_timeRequiredEntry timestamp (UTC ISO after normalization).2026-01-05T10:00:00Zentry_time, entry time, entry, opened_at, open_time
exit_timeRequiredExit timestamp (UTC ISO after normalization).2026-01-05T14:30:00Zexit_time, exit time, exit, closed_at, close_time
entry_priceRequiredEntry price.43125.50entry_price, entry price, open_price, buy_price
exit_priceRequiredExit price.43520.00exit_price, exit price, close_price, sell_price
quantityRequiredPosition size (> 0).0.50quantity, qty, size, position_size

Optional fields — economics

FieldRequiredMeaningExampleAccepted aliases
pnlOptionalAbsolute P&L for trade.197.25pnl, profit, net_pnl, realized_pnl
pnl_pctOptionalTrade return in percent units.0.92pnl_pct, return_pct, pnl_percent, roi
feesOptionalCommissions/fees.6.75fees, fee, commission, cost
duration_secondsOptionalTrade duration in seconds.16200duration_seconds

Optional fields — excursion

FieldRequiredMeaningExampleAccepted aliases
maeOptionalMax adverse excursion.-120.00mae, mae_price, max_adverse_excursion
mfeOptionalMax favorable excursion.320.00mfe, mfe_price, max_favorable_excursion

Optional fields — risk

FieldRequiredMeaningExampleAccepted aliases
risk_amountOptionalRisk capital tied to trade.1000risk_amount, risk, risk_amt
stop_distanceOptionalEntry-to-stop distance.80stop_distance, entry_stop_distance, stop_dist
r_multipleOptionalNet/generic R multiple.1.75r_multiple, r, r_value
r_multiple_netOptionalNet R multiple.1.62r_multiple_net
r_multiple_grossOptionalGross R multiple.1.70r_multiple_gross

Optional fields — metadata

FieldRequiredMeaningExampleAccepted aliases
trade_idOptionalUnique trade identifier.T-2026-00142trade_id, id, ticket, order_id
strategy_nameOptionalStrategy label.mean_revert_v4strategy_name, strategy, system
timeframeOptionalExecution timeframe.1htimeframe, tf, interval
marketOptionalMarket or asset class hint.cryptomarket, asset_class
exchangeOptionalExecution venue.binanceexchange, venue
notesOptionalFree-form notes.post-FOMC continuationnotes
entry_reasonOptionalEntry rationale text.breakout confirmationentry_reason
exit_reasonOptionalExit rationale text.target hitexit_reason

Side normalization accepts long aliases (buy, long, b, bull) and short aliases (sell, short, s, bear).

What Each Field Unlocks

Input richnessPrimary unlocks
Core trade fieldsOverview, Distribution, Monte Carlo, Ruin, Report available.
MAE/MFEImproved excursion interpretation and richer distribution context.
risk_amount / stop_distance / R-multiplesStronger execution-quality framing and risk translation.
Bundle assumptions.jsonExecution diagnostic can move from limited to available.
Bundle params.jsonStability can move from limited/unavailable toward available.
Bundle ohlcv.csv / ohlcv.parquetRegimes can move from limited/unavailable toward available.
Runtime account_size + risk_per_trade_pctSizing-aware survivability interpretation for ruin diagnostics.
Benchmark selectionBenchmark-relative comparison diagnostics when benchmark data is available.

Runtime Assumptions You Can Set

Benchmark

Optional but recommended for relative performance framing. Used to configure benchmark comparison diagnostics.

Account size

Optional positive number. Used for capital translation and survivability framing in risk diagnostics.

Risk per trade %

Optional positive percent. Used in sizing-aware ruin/survivability interpretation.

Runtime assumptions enrich interpretation; they do not replace missing trade-level fields.

Benchmark Selection

Example Rich Trade CSV

symbol,side,entry_time,exit_time,entry_price,exit_price,quantity,pnl,pnl_pct,fees,mae,mfe,risk_amount,stop_distance,r_multiple,strategy_name,timeframe,market,exchange,trade_id\nBTCUSDT,long,2026-01-05T10:00:00Z,2026-01-05T14:30:00Z,43125.5,43520.0,0.5,197.25,0.92,6.75,-120.0,320.0,1000,80,1.75,momentum_v2,1h,crypto,binance,T-2026-001\nETHUSDT,short,2026-01-07T09:15:00Z,2026-01-07T12:45:00Z,2520.0,2478.0,2.0,84.0,1.67,5.8,-48.0,112.0,900,45,1.40,momentum_v2,1h,crypto,binance,T-2026-002

How to Get the Best Analysis

Current Limits

Ready to run?

Use this specification to package your next upload, then return to the lab intake.