{
 "market": "US",
 "start": "2017-01-03",
 "end": "2026-11-09",
 "run_date": "2026-11-11",
 "finlab_version": "2.3.8",
 "results": {
  "ichimoku_timing": {
   "a": 9,
   "b": 26,
   "cagr": 0.13176530966113087,
   "sharpe": 1.0228606921444134,
   "mdd": -0.19705302449438122,
   "exposure": 0.615260395639887,
   "holdings_mean": 0.615260395639887,
   "target_turnover_monthly_mean": 0.5084033613445378,
   "target_turnover_monthly_max": 3.0,
   "trades": 61,
   "halves": [
    1.2177527023001613,
    0.8171546759397879
   ],
   "benchmark_halves": [
    1.217210645767313,
    0.6316040689473775
   ],
   "benchmark": {
    "cagr": 0.20099246760789202,
    "sharpe": 0.9172253457551629,
    "mdd": -0.35122525674823246
   },
   "fixed_exposure_sharpe": 0.9172253457551627,
   "excess_sharpe": 0.8415723162847433,
   "benchmark_excess_sharpe": 0.8143479291094804,
   "best_year": 2023,
   "without_best_year": [
    0.8436511434425179,
    0.7790888266531092
   ],
   "winning_grid": 9,
   "grid": [
    {
     "a": 7,
     "b": 22,
     "cagr": 0.13605715246939987,
     "sharpe": 1.066698326226354,
     "mdd": -0.20151687037283328
    },
    {
     "a": 7,
     "b": 26,
     "cagr": 0.13853870155026504,
     "sharpe": 1.0746432574249312,
     "mdd": -0.2081636007678851
    },
    {
     "a": 7,
     "b": 30,
     "cagr": 0.1415082390168787,
     "sharpe": 1.087671754213223,
     "mdd": -0.17021948015285038
    },
    {
     "a": 9,
     "b": 22,
     "cagr": 0.13550050537123526,
     "sharpe": 1.0688186293071782,
     "mdd": -0.19873757630547495
    },
    {
     "a": 9,
     "b": 26,
     "cagr": 0.13176530966113087,
     "sharpe": 1.0228606921444134,
     "mdd": -0.19705302449438122
    },
    {
     "a": 9,
     "b": 30,
     "cagr": 0.14934078277272733,
     "sharpe": 1.140206637434631,
     "mdd": -0.16945766945968177
    },
    {
     "a": 11,
     "b": 22,
     "cagr": 0.13418035965924102,
     "sharpe": 1.0794859896551516,
     "mdd": -0.163521124721266
    },
    {
     "a": 11,
     "b": 26,
     "cagr": 0.12902706704579892,
     "sharpe": 1.0169150689519133,
     "mdd": -0.17102133384013152
    },
    {
     "a": 11,
     "b": 30,
     "cagr": 0.12215235879014474,
     "sharpe": 0.9521559806795251,
     "mdd": -0.1681314206644835
    }
   ],
   "passed": false,
   "cost_0_1pct": {
    "cagr": 0.11782428822392799,
    "sharpe": 0.926731978755698,
    "mdd": -0.2066355699515764,
    "excess_sharpe": 0.7454802804725155
   }
  },
  "ichimoku_avoid": {
   "a": 9,
   "b": 26,
   "cagr": 0.060583248777556165,
   "sharpe": 0.40672395515857934,
   "mdd": -0.26576344049241274,
   "exposure": 0.3843358901897457,
   "holdings_mean": 0.38473960436011306,
   "target_turnover_monthly_mean": 0.5084033613445378,
   "target_turnover_monthly_max": 3.0,
   "trades": 61,
   "halves": [
    0.6039335437840816,
    0.22830034812149663
   ],
   "benchmark_halves": [
    1.217210645767313,
    0.6316040689473775
   ],
   "benchmark": {
    "cagr": 0.20099246760789202,
    "sharpe": 0.9172253457551629,
    "mdd": -0.35122525674823246
   },
   "fixed_exposure_sharpe": 0.9172253457551627,
   "excess_sharpe": 0.28209320532274534,
   "benchmark_excess_sharpe": 0.8143479291094804,
   "best_year": 2019,
   "without_best_year": [
    0.322029892374634,
    0.8284695255565342
   ],
   "winning_grid": 0,
   "grid": [
    {
     "a": 7,
     "b": 22,
     "cagr": 0.05657653434515031,
     "sharpe": 0.38523167916056117,
     "mdd": -0.2748466213038061
    },
    {
     "a": 7,
     "b": 26,
     "cagr": 0.05427362929317692,
     "sharpe": 0.37453568166648504,
     "mdd": -0.2632077705750909
    },
    {
     "a": 7,
     "b": 30,
     "cagr": 0.051531025310795675,
     "sharpe": 0.3613593542304197,
     "mdd": -0.2739314715549527
    },
    {
     "a": 9,
     "b": 22,
     "cagr": 0.05709449119241716,
     "sharpe": 0.38726316809294814,
     "mdd": -0.2773619201918307
    },
    {
     "a": 9,
     "b": 26,
     "cagr": 0.060583248777556165,
     "sharpe": 0.40672395515857934,
     "mdd": -0.26576344049241274
    },
    {
     "a": 9,
     "b": 30,
     "cagr": 0.04436503686782922,
     "sharpe": 0.3250556308872605,
     "mdd": -0.3024675747776301
    },
    {
     "a": 11,
     "b": 22,
     "cagr": 0.05832491168756637,
     "sharpe": 0.39157036593799255,
     "mdd": -0.3077855802537658
    },
    {
     "a": 11,
     "b": 26,
     "cagr": 0.06315549379601149,
     "sharpe": 0.4180588677233595,
     "mdd": -0.28882002778998817
    },
    {
     "a": 11,
     "b": 30,
     "cagr": 0.06966876607405026,
     "sharpe": 0.45274129747238967,
     "mdd": -0.3029576571498238
    }
   ],
   "passed": false,
   "cost_0_1pct": {
    "cagr": 0.04762547076535539,
    "sharpe": 0.34142984260082954,
    "mdd": -0.27015786097478767
   }
  },
  "ichimoku_stocks": {
   "a": 9,
   "b": 26,
   "cagr": 0.05139996150610826,
   "sharpe": 0.33015159084529955,
   "mdd": -0.5637981650619821,
   "exposure": 0.9979814291481631,
   "holdings_mean": 28.426322163907955,
   "target_turnover_monthly_mean": 2.427160960799185,
   "target_turnover_monthly_max": 5.4523809523809526,
   "trades": 4696,
   "halves": [
    0.4276175850121514,
    0.21822900606586665
   ],
   "benchmark_halves": [
    1.217210645767313,
    0.6316040689473775
   ],
   "benchmark": {
    "cagr": 0.20099246760789202,
    "sharpe": 0.9172253457551629,
    "mdd": -0.35122525674823246
   },
   "fixed_exposure_sharpe": 0.9172253457551627,
   "excess_sharpe": 0.2313202480686959,
   "benchmark_excess_sharpe": 0.8143479291094804,
   "best_year": 2023,
   "without_best_year": [
    0.19839140928193258,
    0.7790888266531092
   ],
   "winning_grid": 0,
   "grid": [
    {
     "a": 7,
     "b": 22,
     "cagr": 0.0248827694511764,
     "sharpe": 0.22509103913775233,
     "mdd": -0.5233133777964579
    },
    {
     "a": 7,
     "b": 26,
     "cagr": 0.04450436091053067,
     "sharpe": 0.30292439626242246,
     "mdd": -0.5169806330729576
    },
    {
     "a": 7,
     "b": 30,
     "cagr": 0.024527787057355033,
     "sharpe": 0.2229689965498983,
     "mdd": -0.5601089086387472
    },
    {
     "a": 9,
     "b": 22,
     "cagr": 0.02950071825266032,
     "sharpe": 0.2432271096167346,
     "mdd": -0.533309627313237
    },
    {
     "a": 9,
     "b": 26,
     "cagr": 0.05139996150610826,
     "sharpe": 0.33015159084529955,
     "mdd": -0.5637981650619821
    },
    {
     "a": 9,
     "b": 30,
     "cagr": 0.032426981975100855,
     "sharpe": 0.25354881905520166,
     "mdd": -0.5723420615345699
    },
    {
     "a": 11,
     "b": 22,
     "cagr": -0.001057563538248707,
     "sharpe": 0.12511281478829256,
     "mdd": -0.605382541576613
    },
    {
     "a": 11,
     "b": 26,
     "cagr": 0.029578616820911563,
     "sharpe": 0.24178555694401999,
     "mdd": -0.6022959434776191
    },
    {
     "a": 11,
     "b": 30,
     "cagr": 0.006593944175016686,
     "sharpe": 0.1458421162969753,
     "mdd": -0.6066023120337533
    }
   ],
   "passed": false,
   "cost_0_1pct": {
    "cagr": -0.009409215502561796,
    "sharpe": 0.07934231137286689,
    "mdd": -0.6147438203674025
   }
  }
 },
 "validation_note": "US candidates must also beat QQQ after 0.1% per-side costs and subtracting BIL from both returns. Ichimoku timing fails this joint check despite passing the default-cost grid and halves."
}
