Minimum
Trade CSV
Canonical core trade fields only
Canonical Upload Specification
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
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.
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.
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.
| Field | Required | Meaning | Example | Accepted aliases |
|---|---|---|---|---|
| symbol | Required | Instrument identifier. | BTCUSDT | symbol, ticker, instrument, asset |
| side | Required | Trade direction (normalizes to long/short). | long | side, direction, position_side, trade_side |
| entry_time | Required | Entry timestamp (UTC ISO after normalization). | 2026-01-05T10:00:00Z | entry_time, entry time, entry, opened_at, open_time |
| exit_time | Required | Exit timestamp (UTC ISO after normalization). | 2026-01-05T14:30:00Z | exit_time, exit time, exit, closed_at, close_time |
| entry_price | Required | Entry price. | 43125.50 | entry_price, entry price, open_price, buy_price |
| exit_price | Required | Exit price. | 43520.00 | exit_price, exit price, close_price, sell_price |
| quantity | Required | Position size (> 0). | 0.50 | quantity, qty, size, position_size |
| Field | Required | Meaning | Example | Accepted aliases |
|---|---|---|---|---|
| pnl | Optional | Absolute P&L for trade. | 197.25 | pnl, profit, net_pnl, realized_pnl |
| pnl_pct | Optional | Trade return in percent units. | 0.92 | pnl_pct, return_pct, pnl_percent, roi |
| fees | Optional | Commissions/fees. | 6.75 | fees, fee, commission, cost |
| duration_seconds | Optional | Trade duration in seconds. | 16200 | duration_seconds |
| Field | Required | Meaning | Example | Accepted aliases |
|---|---|---|---|---|
| mae | Optional | Max adverse excursion. | -120.00 | mae, mae_price, max_adverse_excursion |
| mfe | Optional | Max favorable excursion. | 320.00 | mfe, mfe_price, max_favorable_excursion |
| Field | Required | Meaning | Example | Accepted aliases |
|---|---|---|---|---|
| risk_amount | Optional | Risk capital tied to trade. | 1000 | risk_amount, risk, risk_amt |
| stop_distance | Optional | Entry-to-stop distance. | 80 | stop_distance, entry_stop_distance, stop_dist |
| r_multiple | Optional | Net/generic R multiple. | 1.75 | r_multiple, r, r_value |
| r_multiple_net | Optional | Net R multiple. | 1.62 | r_multiple_net |
| r_multiple_gross | Optional | Gross R multiple. | 1.70 | r_multiple_gross |
| Field | Required | Meaning | Example | Accepted aliases |
|---|---|---|---|---|
| trade_id | Optional | Unique trade identifier. | T-2026-00142 | trade_id, id, ticket, order_id |
| strategy_name | Optional | Strategy label. | mean_revert_v4 | strategy_name, strategy, system |
| timeframe | Optional | Execution timeframe. | 1h | timeframe, tf, interval |
| market | Optional | Market or asset class hint. | crypto | market, asset_class |
| exchange | Optional | Execution venue. | binance | exchange, venue |
| notes | Optional | Free-form notes. | post-FOMC continuation | notes |
| entry_reason | Optional | Entry rationale text. | breakout confirmation | entry_reason |
| exit_reason | Optional | Exit rationale text. | target hit | exit_reason |
Side normalization accepts long aliases (buy, long, b, bull) and short aliases (sell, short, s, bear).
| Input richness | Primary unlocks |
|---|---|
| Core trade fields | Overview, Distribution, Monte Carlo, Ruin, Report available. |
| MAE/MFE | Improved excursion interpretation and richer distribution context. |
| risk_amount / stop_distance / R-multiples | Stronger execution-quality framing and risk translation. |
| Bundle assumptions.json | Execution diagnostic can move from limited to available. |
| Bundle params.json | Stability can move from limited/unavailable toward available. |
| Bundle ohlcv.csv / ohlcv.parquet | Regimes can move from limited/unavailable toward available. |
| Runtime account_size + risk_per_trade_pct | Sizing-aware survivability interpretation for ruin diagnostics. |
| Benchmark selection | Benchmark-relative comparison diagnostics when benchmark data is available. |
Optional but recommended for relative performance framing. Used to configure benchmark comparison diagnostics.
Optional positive number. Used for capital translation and survivability framing in risk diagnostics.
Optional positive percent. Used in sizing-aware ruin/survivability interpretation.
Runtime assumptions enrich interpretation; they do not replace missing trade-level fields.
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
Use this specification to package your next upload, then return to the lab intake.