{
  "app_version": null,
  "artifact_kind": "local_strategy_replay",
  "artifact_version": "2",
  "break_even_config": {
    "break_even_apply_next_bar": true,
    "break_even_buffer_atr_fraction": 0.05,
    "break_even_min_buffer_points": null,
    "break_even_requires_close_beyond_trigger": false,
    "break_even_trigger_rr": 1.0,
    "enable_break_even": false
  },
  "counts": {
    "candidate_signals_count": 52,
    "candidates_csv_count": 28,
    "rejected_candidates_csv_count": 24,
    "risk_decisions_count": 52,
    "trade_events_count": 84,
    "trades_count": 28
  },
  "created_at": "not_provided",
  "created_at_utc": "not_provided",
  "data_file_hash": "2a487e4fb516fec8c63f99635a1910ba1c3ed49c4227d5b9d08c11c07da4fbd1",
  "data_file_path": "data/cache/binance/spot/BTCUSDT/15m.csv",
  "data_source": "binance_spot",
  "exchange": "binance",
  "file_hashes": {
    "candidate_signals.jsonl": "f435abb87ea497bb9dc9c21658e954c2741111fcdda6b9862544c0e06d2a33d1",
    "candidates.csv": "b7c510f4ef8d5daa7191a2f1cb51cf93ad8e7691b84ca957f635964ea82a4f6f",
    "config.json": "919b9c47db07e5c8c84821f5c7e0e79aa0807f8d3db5538b6874b246e731bbc5",
    "notes.md": "5c5e582ea4c322e7928152de9275ba9f4f0c5af85da5fa6b8bc2c694d76b0ebd",
    "rejected_candidates.csv": "ae3c537586ca413842e9e45a13f4e7304f1cf564a531175ebe29ad7da8435265",
    "replay_summary.json": "438420881487f87b068ac6cc7d8efcc10b85670866bc010fec6f6301a1ae8b9d",
    "risk_decisions.jsonl": "62655f29cb85bc9e7aed30cfa9cc6c4d7eff75b5f43a5c2b3b0dad0c010a090f",
    "trade_events.jsonl": "63b53caf85e3dcf01a919ee0b07f1723992ce80460466f763a2cd0d0aef1e3be",
    "trades.jsonl": "f31bed6abca7f385f62db42a6bc505a5363204d378ea600b9e4bd434d685478d",
    "trading_metrics.json": "0a2b2e9a6e5f127a7637a7083c0364af00f85805bedf4a6068a8ea6119a6d815",
    "warnings.json": "09d5ba180584956ecc2564eb86b85c742d4e072e399255144c920c2587d5e11e"
  },
  "files": [
    "manifest.json",
    "config.json",
    "replay_summary.json",
    "trading_metrics.json",
    "trades.jsonl",
    "trade_events.jsonl",
    "candidate_signals.jsonl",
    "risk_decisions.jsonl",
    "candidates.csv",
    "rejected_candidates.csv",
    "warnings.json",
    "notes.md"
  ],
  "force_redownload": false,
  "from": "2026-06-01T00:00:00+00:00",
  "full_risk_config_normalized": {
    "max_consecutive_losses": 3,
    "max_cost_to_risk_r": 0.2,
    "max_daily_loss_pct": 1.0,
    "max_open_positions": 1,
    "max_spread": 25.0,
    "max_stop_distance": 10000.0,
    "max_trades_per_day": 999,
    "max_weekly_loss_pct": 3.0,
    "min_confidence": 75.0,
    "min_rr_to_tp2": 1.5,
    "min_stop_distance": 50.0
  },
  "full_strategy_config_normalized": {
    "allow_choch": false,
    "atr_period": 14,
    "lookback_bars": 50,
    "max_ob_age_bars": 80,
    "max_zone_height_atr_multiple": 2.0,
    "metadata": {},
    "min_confidence_score": 75.0,
    "min_displacement_atr_multiple": 1.0,
    "pivot_left": 2,
    "pivot_right": 2,
    "require_retest": true,
    "require_trend_filter": false,
    "retest_tolerance_atr": 0.25,
    "rr_target_1": 1.0,
    "rr_target_2": 1.5,
    "stop_buffer_atr": 0.4,
    "strategy_name": "ORDER_BLOCK_V1",
    "trend_ema_period": 50
  },
  "git_commit": null,
  "market_type": "spot",
  "run_id": "btcusdt-15m-ob-20260618T151048Z",
  "strategy_id": "ORDER_BLOCK_V1",
  "strategy_name": "ORDER_BLOCK_V1",
  "symbol": "BTCUSDT",
  "timeframe": "15m",
  "to": "2026-06-18T15:10:48+00:00",
  "warnings": []
}
