Skip to main content
aifinhub

Worked example

Running the shipped walk-forward-validation-visualizer engine on the input below produces exactly this output. Continuous integration recomputes it against the engine bundle on every build, so these numbers cannot drift from the code.

Input1268 lines

{
  "tool": "walk-forward-validation-visualizer",
  "num_windows": 4,
  "train_pct": 0.7,
  "rows": [
    {
      "strategy": 0.008538,
      "benchmark": 0.010128,
      "date": "2024-01-02"
    },
    {
      "strategy": -0.009035,
      "benchmark": -0.002693,
      "date": "2024-01-03"
    },
    {
      "strategy": -0.00485,
      "benchmark": -0.005739,
      "date": "2024-01-04"
    },
    {
      "strategy": -0.004299,
      "benchmark": -0.008399,
      "date": "2024-01-06"
    },
    {
      "strategy": 0.001682,
      "benchmark": -0.014444,
      "date": "2024-01-07"
    },
    {
      "strategy": -0.010691,
      "benchmark": -0.001063,
      "date": "2024-01-09"
    },
    {
      "strategy": 0.008703,
      "benchmark": 0.000927,
      "date": "2024-01-10"
    },
    {
      "strategy": -0.009063,
      "benchmark": -0.002943,
      "date": "2024-01-11"
    },
    {
      "strategy": 0.01387,
      "benchmark": 0.007545,
      "date": "2024-01-13"
    },
    {
      "strategy": -0.017203,
      "benchmark": -0.004229,
      "date": "2024-01-14"
    },
    {
      "strategy": 0.00198,
      "benchmark": -0.012984,
      "date": "2024-01-16"
    },
    {
      "strategy": -0.005247,
      "benchmark": 0.002364,
      "date": "2024-01-17"
    },
    {
      "strategy": 0.011788,
      "benchmark": 0.011842,
      "date": "2024-01-18"
    },
    {
      "strategy": 0.009747,
      "benchmark": 0.004972,
      "date": "2024-01-20"
    },
    {
      "strategy": 0.00087,
      "benchmark": -0.00282,
      "date": "2024-01-21"
    },
    {
      "strategy": 0.025601,
      "benchmark": -0.013159,
      "date": "2024-01-23"
    },
    {
      "strategy": 0.024723,
      "benchmark": 0.015524,
      "date": "2024-01-24"
    },
    {
      "strategy": -0.00461,
      "benchmark": -0.001381,
      "date": "2024-01-25"
    },
    {
      "strategy": -0.001132,
      "benchmark": 0.000951,
      "date": "2024-01-27"
    },
    {
      "strategy": 0.009532,
      "benchmark": 0.001385,
      "date": "2024-01-28"
    },
    {
      "strategy": 0.002474,
      "benchmark": -0.004438,
      "date": "2024-01-30"
    },
    {
      "strategy": 0.001653,
      "benchmark": -0.00602,
      "date": "2024-01-31"
    },
    {
      "strategy": -0.017705,
      "benchmark": -0.003071,
      "date": "2024-02-01"
    },
    {
      "strategy": -0.001297,
      "benchmark": -0.00175,
      "date": "2024-02-03"
    },
    {
      "strategy": 0.016704,
      "benchmark": -0.009671,
      "date": "2024-02-04"
    },
    {
      "strategy": -0.002093,
      "benchmark": 0.006072,
      "date": "2024-02-06"
    },
    {
      "strategy": -0.010562,
      "benchmark": 0.006235,
      "date": "2024-02-07"
    },
    {
      "strategy": 0.019989,
      "benchmark": 0.004561,
      "date": "2024-02-08"
    },
    {
      "strategy": 0.014457,
      "benchmark": -0.001855,
      "date": "2024-02-10"
    },
    {
      "strategy": -0.014516,
      "benchmark": 0.000499,
      "date": "2024-02-11"
    },
    {
      "strategy": 0.001912,
      "benchmark": 0.004835,
      "date": "2024-02-13"
    },
    {
      "strategy": -0.017212,
      "benchmark": -0.00224,
      "date": "2024-02-14"
    },
    {
      "strategy": -0.00907,
      "benchmark": 0.008297,
      "date": "2024-02-15"
    },
    {
      "strategy": 0.003058,
      "benchmark": 0.003732,
      "date": "2024-02-17"
    },
    {
      "strategy": -0.011051,
      "benchmark": -0.001967,
      "date": "2024-02-18"
    },
    {
      "strategy": 0.002497,
      "benchmark": 0.002087,
      "date": "2024-02-20"
    },
    {
      "strategy": -0.01918,
      "benchmark": 0.00103,
      "date": "2024-02-21"
    },
    {
      "strategy": 0.015659,
      "benchmark": 0.003739,
      "date": "2024-02-22"
    },
    {
      "strategy": -0.000613,
      "benchmark": -0.00639,
      "date": "2024-02-24"
    },
    {
      "strategy": 0.007792,
      "benchmark": 0.004002,
      "date": "2024-02-25"
    },
    {
      "strategy": -0.001473,
      "benchmark": -0.008621,
      "date": "2024-02-27"
    },
    {
      "strategy": -0.008194,
      "benchmark": -0.006566,
      "date": "2024-02-28"
    },
    {
      "strategy": 0.006163,
      "benchmark": -0.011074,
      "date": "2024-02-29"
    },
    {
      "strategy": -0.000594,
      "benchmark": -0.001632,
      "date": "2024-03-02"
    },
    {
      "strategy": -0.012849,
      "benchmark": -0.021191,
      "date": "2024-03-03"
    },
    {
      "strategy": -0.002912,
      "benchmark": -0.005024,
      "date": "2024-03-05"
    },
    {
      "strategy": -0.013931,
      "benchmark": -0.000794,
      "date": "2024-03-06"
    },
    {
      "strategy": -0.002914,
      "benchmark": 0.006406,
      "date": "2024-03-07"
    },
    {
      "strategy": -0.001987,
      "benchmark": 0.010563,
      "date": "2024-03-09"
    },
    {
      "strategy": -0.022437,
      "benchmark": 0.006555,
      "date": "2024-03-10"
    },
    {
      "strategy": 0.00308,
      "benchmark": 0.001108,
      "date": "2024-03-12"
    },
    {
      "strategy": -0.00148,
      "benchmark": -0.01693,
      "date": "2024-03-13"
    },
    {
      "strategy": -0.012127,
      "benchmark": 0.00766,
      "date": "2024-03-14"
    },
    {
      "strategy": 0.012776,
      "benchmark": 0.011662,
      "date": "2024-03-16"
    },
    {
      "strategy": 0.004278,
      "benchmark": 0.000996,
      "date": "2024-03-17"
    },
    {
      "strategy": -0.006677,
      "benchmark": 0.010027,
      "date": "2024-03-19"
    },
    {
      "strategy": 0.006854,
      "benchmark": 0.000816,
      "date": "2024-03-20"
    },
    {
      "strategy": 0.035752,
      "benchmark": -0.001844,
      "date": "2024-03-21"
    },
    {
      "strategy": -0.001126,
      "benchmark": -0.007271,
      "date": "2024-03-23"
    },
    {
      "strategy": -0.018662,
      "benchmark": 0.007279,
      "date": "2024-03-24"
    },
    {
      "strategy": -0.008372,
      "benchmark": 0.012291,
      "date": "2024-03-26"
    },
    {
      "strategy": 0.000831,
      "benchmark": 0.004401,
      "date": "2024-03-27"
    },
    {
      "strategy": -0.003225,
      "benchmark": -0.004881,
      "date": "2024-03-28"
    },
    {
      "strategy": 0.005582,
      "benchmark": 0.000149,
      "date": "2024-03-30"
    },
    {
      "strategy": -0.007725,
      "benchmark": -0.008267,
      "date": "2024-03-31"
    },
    {
      "strategy": -0.029234,
      "benchmark": 0.010008,
      "date": "2024-04-02"
    },
    {
      "strategy": -0.008016,
      "benchmark": 0.002909,
      "date": "2024-04-03"
    },
    {
      "strategy": -0.002689,
      "benchmark": -0.010913,
      "date": "2024-04-04"
    },
    {
      "strategy": -0.008693,
      "benchmark": 0.015632,
      "date": "2024-04-06"
    },
    {
      "strategy": 0.010906,
      "benchmark": 0.003799,
      "date": "2024-04-07"
    },
    {
      "strategy": 0.00794,
      "benchmark": -0.010689,
      "date": "2024-04-09"
    },
    {
      "strategy": -0.002492,
      "benchmark": 0.003529,
      "date": "2024-04-10"
    },
    {
      "strategy": -0.005407,
      "benchmark": -0.004725,
      "date": "2024-04-11"
    },
    {
      "strategy": -0.014941,
      "benchmark": 0.006628,
      "date": "2024-04-13"
    },
    {
      "strategy": 0.000292,
      "benchmark": -0.003231,
      "date": "2024-04-14"
    },
    {
      "strategy": -0.01554,
      "benchmark": 0.008623,
      "date": "2024-04-16"
    },
    {
      "strategy": 0.006896,
      "benchmark": -0.005388,
      "date": "2024-04-17"
    },
    {
      "strategy": -0.022319,
      "benchmark": -0.007422,
      "date": "2024-04-18"
    },
    {
      "strategy": -0.006387,
      "benchmark": 0.006,
      "date": "2024-04-20"
    },
    {
      "strategy": 0.012044,
      "benchmark": 0.009683,
      "date": "2024-04-21"
    },
    {
      "strategy": 0.016803,
      "benchmark": 0.004976,
      "date": "2024-04-23"
    },
    {
      "strategy": -0.015922,
      "benchmark": -0.001079,
      "date": "2024-04-24"
    },
    {
      "strategy": -0.004215,
      "benchmark": 0.006967,
      "date": "2024-04-25"
    },
    {
      "strategy": 0.010124,
      "benchmark": -0.001797,
      "date": "2024-04-27"
    },
    {
      "strategy": -0.014712,
      "benchmark": -0.004754,
      "date": "2024-04-28"
    },
    {
      "strategy": 0.009615,
      "benchmark": 0.006856,
      "date": "2024-04-30"
    },
    {
      "strategy": 0.017401,
      "benchmark": -0.000832,
      "date": "2024-05-01"
    },
    {
      "strategy": 0.001001,
      "benchmark": -0.021464,
      "date": "2024-05-02"
    },
    {
      "strategy": -0.011647,
      "benchmark": 0.016024,
      "date": "2024-05-04"
    },
    {
      "strategy": 0.005878,
      "benchmark": 0.013184,
      "date": "2024-05-05"
    },
    {
      "strategy": 0.002472,
      "benchmark": 0.001345,
      "date": "2024-05-07"
    },
    {
      "strategy": -0.014185,
      "benchmark": -0.002034,
      "date": "2024-05-08"
    },
    {
      "strategy": 0.000274,
      "benchmark": 0.007506,
      "date": "2024-05-09"
    },
    {
      "strategy": 0.010928,
      "benchmark": 0.002581,
      "date": "2024-05-11"
    },
    {
      "strategy": -0.015124,
      "benchmark": -0.004217,
      "date": "2024-05-12"
    },
    {
      "strategy": -0.003655,
      "benchmark": 0.00067,
      "date": "2024-05-14"
    },
    {
      "strategy": -0.009135,
      "benchmark": 0.009495,
      "date": "2024-05-15"
    },
    {
      "strategy": 0.010549,
      "benchmark": -0.00217,
      "date": "2024-05-16"
    },
    {
      "strategy": -0.015304,
      "benchmark": -0.015582,
      "date": "2024-05-18"
    },
    {
      "strategy": 0.00091,
      "benchmark": 0.003508,
      "date": "2024-05-19"
    },
    {
      "strategy": -0.007701,
      "benchmark": 0.003669,
      "date": "2024-05-21"
    },
    {
      "strategy": 0.010217,
      "benchmark": -0.002894,
      "date": "2024-05-22"
    },
    {
      "strategy": -0.008943,
      "benchmark": 0.002487,
      "date": "2024-05-23"
    },
    {
      "strategy": -0.007827,
      "benchmark": -0.00274,
      "date": "2024-05-25"
    },
    {
      "strategy": 0.01371,
      "benchmark": -0.013883,
      "date": "2024-05-26"
    },
    {
      "strategy": -0.006219,
      "benchmark": -0.003419,
      "date": "2024-05-28"
    },
    {
      "strategy": 0.00434,
      "benchmark": 0.009265,
      "date": "2024-05-29"
    },
    {
      "strategy": -0.016585,
      "benchmark": 0.002056,
      "date": "2024-05-30"
    },
    {
      "strategy": -0.009965,
      "benchmark": -0.003465,
      "date": "2024-06-01"
    },
    {
      "strategy": 0.000573,
      "benchmark": 0.003763,
      "date": "2024-06-02"
    },
    {
      "strategy": -0.010124,
      "benchmark": 0.006134,
      "date": "2024-06-04"
    },
    {
      "strategy": 0.000907,
      "benchmark": 0.016407,
      "date": "2024-06-05"
    },
    {
      "strategy": 0.007244,
      "benchmark": 0.00366,
      "date": "2024-06-06"
    },
    {
      "strategy": 0.002072,
      "benchmark": -0.004384,
      "date": "2024-06-08"
    },
    {
      "strategy": -0.012711,
      "benchmark": 0.013436,
      "date": "2024-06-09"
    },
    {
      "strategy": 0.013983,
      "benchmark": 0.011829,
      "date": "2024-06-11"
    },
    {
      "strategy": 0.0127,
      "benchmark": 0.003955,
      "date": "2024-06-12"
    },
    {
      "strategy": -0.009799,
      "benchmark": -0.001265,
      "date": "2024-06-13"
    },
    {
      "strategy": 0.020076,
      "benchmark": -0.009506,
      "date": "2024-06-15"
    },
    {
      "strategy": 0.018974,
      "benchmark": 0.006435,
      "date": "2024-06-16"
    },
    {
      "strategy": 0.012356,
      "benchmark": 0.006964,
      "date": "2024-06-18"
    },
    {
      "strategy": -0.010154,
      "benchmark": 0.012788,
      "date": "2024-06-19"
    },
    {
      "strategy": -0.013309,
      "benchmark": -0.01354,
      "date": "2024-06-20"
    },
    {
      "strategy": -0.00334,
      "benchmark": -0.006174,
      "date": "2024-06-22"
    },
    {
      "strategy": 0.00329,
      "benchmark": -0.008276,
      "date": "2024-06-23"
    },
    {
      "strategy": 0.001063,
      "benchmark": 0.000029,
      "date": "2024-06-25"
    },
    {
      "strategy": 0.001222,
      "benchmark": -0.003633,
      "date": "2024-06-26"
    },
    {
      "strategy": -0.014286,
      "benchmark": 0.013976,
      "date": "2024-06-27"
    },
    {
      "strategy": -0.025105,
      "benchmark": 0.002238,
      "date": "2024-06-29"
    },
    {
      "strategy": 0.004061,
      "benchmark": -0.013407,
      "date": "2024-06-30"
    },
    {
      "strategy": 0.011599,
      "benchmark": 0.014488,
      "date": "2024-07-02"
    },
    {
      "strategy": -0.030022,
      "benchmark": 0.00373,
      "date": "2024-07-03"
    },
    {
      "strategy": -0.007892,
      "benchmark": -0.001737,
      "date": "2024-07-04"
    },
    {
      "strategy": -0.004524,
      "benchmark": -0.018544,
      "date": "2024-07-06"
    },
    {
      "strategy": 0.002724,
      "benchmark": 0.000756,
      "date": "2024-07-07"
    },
    {
      "strategy": 0.006471,
      "benchmark": -0.003572,
      "date": "2024-07-09"
    },
    {
      "strategy": -0.007293,
      "benchmark": 0.003563,
      "date": "2024-07-10"
    },
    {
      "strategy": 0.016563,
      "benchmark": -0.003857,
      "date": "2024-07-11"
    },
    {
      "strategy": 0.007157,
      "benchmark": -0.004608,
      "date": "2024-07-13"
    },
    {
      "strategy": 0.007971,
      "benchmark": 0.010455,
      "date": "2024-07-14"
    },
    {
      "strategy": -0.003698,
      "benchmark": -0.002027,
      "date": "2024-07-16"
    },
    {
      "strategy": 0.014246,
      "benchmark": 0.006433,
      "date": "2024-07-17"
    },
    {
      "strategy": -0.014005,
      "benchmark": 0.013663,
      "date": "2024-07-18"
    },
    {
      "strategy": 0.000198,
      "benchmark": -0.00883,
      "date": "2024-07-20"
    },
    {
      "strategy": 0.011667,
      "benchmark": 0.006418,
      "date": "2024-07-21"
    },
    {
      "strategy": 0.012365,
      "benchmark": -0.006557,
      "date": "2024-07-23"
    },
    {
      "strategy": 0.001055,
      "benchmark": -0.008527,
      "date": "2024-07-24"
    },
    {
      "strategy": -0.006774,
      "benchmark": -0.003852,
      "date": "2024-07-25"
    },
    {
      "strategy": 0.01441,
      "benchmark": -0.003044,
      "date": "2024-07-27"
    },
    {
      "strategy": 0.001434,
      "benchmark": -0.006146,
      "date": "2024-07-28"
    },
    {
      "strategy": -0.002771,
      "benchmark": 0.001131,
      "date": "2024-07-30"
    },
    {
      "strategy": 0.003228,
      "benchmark": -0.007136,
      "date": "2024-07-31"
    },
    {
      "strategy": -0.018225,
      "benchmark": 0.005673,
      "date": "2024-08-01"
    },
    {
      "strategy": -0.015463,
      "benchmark": 0.003644,
      "date": "2024-08-03"
    },
    {
      "strategy": -0.001978,
      "benchmark": -0.000454,
      "date": "2024-08-04"
    },
    {
      "strategy": -0.000292,
      "benchmark": 0.007515,
      "date": "2024-08-06"
    },
    {
      "strategy": -0.000067,
      "benchmark": 0.008026,
      "date": "2024-08-07"
    },
    {
      "strategy": -0.004606,
      "benchmark": 0.001826,
      "date": "2024-08-08"
    },
    {
      "strategy": 0.004295,
      "benchmark": 0.004589,
      "date": "2024-08-10"
    },
    {
      "strategy": 0.002043,
      "benchmark": 0.00198,
      "date": "2024-08-11"
    },
    {
      "strategy": -0.005863,
      "benchmark": -0.006557,
      "date": "2024-08-13"
    },
    {
      "strategy": 0.013963,
      "benchmark": -0.002738,
      "date": "2024-08-14"
    },
    {
      "strategy": 0.007384,
      "benchmark": 0.011303,
      "date": "2024-08-15"
    },
    {
      "strategy": -0.004937,
      "benchmark": 0.003281,
      "date": "2024-08-17"
    },
    {
      "strategy": 0.00063,
      "benchmark": -0.005382,
      "date": "2024-08-18"
    },
    {
      "strategy": -0.004042,
      "benchmark": -0.009135,
      "date": "2024-08-20"
    },
    {
      "strategy": -0.004109,
      "benchmark": -0.013532,
      "date": "2024-08-21"
    },
    {
      "strategy": -0.016423,
      "benchmark": -0.007807,
      "date": "2024-08-22"
    },
    {
      "strategy": -0.025791,
      "benchmark": -0.003393,
      "date": "2024-08-24"
    },
    {
      "strategy": -0.008503,
      "benchmark": 0.007272,
      "date": "2024-08-25"
    },
    {
      "strategy": 0.001698,
      "benchmark": -0.002267,
      "date": "2024-08-27"
    },
    {
      "strategy": 0.015058,
      "benchmark": 0.011,
      "date": "2024-08-28"
    },
    {
      "strategy": 0.0036,
      "benchmark": -0.02159,
      "date": "2024-08-29"
    },
    {
      "strategy": -0.004001,
      "benchmark": -0.010592,
      "date": "2024-08-31"
    },
    {
      "strategy": -0.010952,
      "benchmark": -0.011262,
      "date": "2024-09-01"
    },
    {
      "strategy": 0.000783,
      "benchmark": -0.001587,
      "date": "2024-09-03"
    },
    {
      "strategy": -0.015374,
      "benchmark": 0.007549,
      "date": "2024-09-04"
    },
    {
      "strategy": 0.029542,
      "benchmark": -0.003219,
      "date": "2024-09-05"
    },
    {
      "strategy": 0.005966,
      "benchmark": -0.003728,
      "date": "2024-09-07"
    },
    {
      "strategy": 0.00413,
      "benchmark": -0.002338,
      "date": "2024-09-08"
    },
    {
      "strategy": -0.024146,
      "benchmark": -0.017483,
      "date": "2024-09-10"
    },
    {
      "strategy": -0.000306,
      "benchmark": 0.009238,
      "date": "2024-09-11"
    },
    {
      "strategy": 0.006664,
      "benchmark": -0.003435,
      "date": "2024-09-12"
    },
    {
      "strategy": 0.010603,
      "benchmark": -0.000441,
      "date": "2024-09-14"
    },
    {
      "strategy": -0.001093,
      "benchmark": -0.003452,
      "date": "2024-09-15"
    },
    {
      "strategy": 0.001293,
      "benchmark": 0.011808,
      "date": "2024-09-17"
    },
    {
      "strategy": -0.003454,
      "benchmark": 0.018433,
      "date": "2024-09-18"
    },
    {
      "strategy": -0.007257,
      "benchmark": -0.001605,
      "date": "2024-09-19"
    },
    {
      "strategy": -0.000819,
      "benchmark": 0.005652,
      "date": "2024-09-21"
    },
    {
      "strategy": 0.01063,
      "benchmark": -0.012928,
      "date": "2024-09-22"
    },
    {
      "strategy": 0.015343,
      "benchmark": -0.016632,
      "date": "2024-09-24"
    },
    {
      "strategy": 0.022439,
      "benchmark": -0.014814,
      "date": "2024-09-25"
    },
    {
      "strategy": -0.017399,
      "benchmark": 0.018529,
      "date": "2024-09-26"
    },
    {
      "strategy": 0.005517,
      "benchmark": -0.00857,
      "date": "2024-09-28"
    },
    {
      "strategy": 0.005001,
      "benchmark": 0.014181,
      "date": "2024-09-29"
    },
    {
      "strategy": 0.002244,
      "benchmark": -0.001163,
      "date": "2024-10-01"
    },
    {
      "strategy": 0.005913,
      "benchmark": 0.001884,
      "date": "2024-10-02"
    },
    {
      "strategy": 0.004575,
      "benchmark": -0.003345,
      "date": "2024-10-03"
    },
    {
      "strategy": -0.000194,
      "benchmark": 0.006838,
      "date": "2024-10-05"
    },
    {
      "strategy": 0.001614,
      "benchmark": -0.006469,
      "date": "2024-10-06"
    },
    {
      "strategy": 0.008926,
      "benchmark": -0.002936,
      "date": "2024-10-08"
    },
    {
      "strategy": 0.003551,
      "benchmark": 0.007777,
      "date": "2024-10-09"
    },
    {
      "strategy": 0.01369,
      "benchmark": -0.015217,
      "date": "2024-10-10"
    },
    {
      "strategy": -0.006121,
      "benchmark": 0.002248,
      "date": "2024-10-12"
    },
    {
      "strategy": 0.005587,
      "benchmark": 0.012377,
      "date": "2024-10-13"
    },
    {
      "strategy": -0.009903,
      "benchmark": -0.008052,
      "date": "2024-10-15"
    },
    {
      "strategy": 0.00142,
      "benchmark": 0.016188,
      "date": "2024-10-16"
    },
    {
      "strategy": 0.026184,
      "benchmark": -0.000017,
      "date": "2024-10-17"
    },
    {
      "strategy": 0.009614,
      "benchmark": 0.002076,
      "date": "2024-10-19"
    },
    {
      "strategy": 0.0053,
      "benchmark": -0.007489,
      "date": "2024-10-20"
    },
    {
      "strategy": 0.011917,
      "benchmark": -0.004725,
      "date": "2024-10-22"
    },
    {
      "strategy": -0.013585,
      "benchmark": 0.003527,
      "date": "2024-10-23"
    },
    {
      "strategy": -0.011222,
      "benchmark": 0.008703,
      "date": "2024-10-24"
    },
    {
      "strategy": -0.009386,
      "benchmark": 0.008608,
      "date": "2024-10-26"
    },
    {
      "strategy": 0.018157,
      "benchmark": -0.012119,
      "date": "2024-10-27"
    },
    {
      "strategy": -0.0066,
      "benchmark": -0.012938,
      "date": "2024-10-29"
    },
    {
      "strategy": 0.015147,
      "benchmark": -0.007633,
      "date": "2024-10-30"
    },
    {
      "strategy": -0.011954,
      "benchmark": -0.003934,
      "date": "2024-10-31"
    },
    {
      "strategy": 0.005687,
      "benchmark": 0.000532,
      "date": "2024-11-02"
    },
    {
      "strategy": 0.017285,
      "benchmark": 0.012507,
      "date": "2024-11-03"
    },
    {
      "strategy": -0.010812,
      "benchmark": -0.00511,
      "date": "2024-11-05"
    },
    {
      "strategy": -0.005358,
      "benchmark": -0.004182,
      "date": "2024-11-06"
    },
    {
      "strategy": -0.019386,
      "benchmark": -0.008108,
      "date": "2024-11-07"
    },
    {
      "strategy": 0.018922,
      "benchmark": 0.00009,
      "date": "2024-11-09"
    },
    {
      "strategy": -0.00159,
      "benchmark": -0.000298,
      "date": "2024-11-10"
    },
    {
      "strategy": -0.007819,
      "benchmark": 0.005112,
      "date": "2024-11-12"
    },
    {
      "strategy": -0.012536,
      "benchmark": -0.006723,
      "date": "2024-11-13"
    },
    {
      "strategy": 0.001341,
      "benchmark": 0.01639,
      "date": "2024-11-14"
    },
    {
      "strategy": -0.008409,
      "benchmark": -0.004769,
      "date": "2024-11-16"
    },
    {
      "strategy": 0.009245,
      "benchmark": 0.003726,
      "date": "2024-11-17"
    },
    {
      "strategy": -0.002429,
      "benchmark": -0.00393,
      "date": "2024-11-19"
    },
    {
      "strategy": 0.002911,
      "benchmark": 0.003127,
      "date": "2024-11-20"
    },
    {
      "strategy": 0.026725,
      "benchmark": -0.01297,
      "date": "2024-11-21"
    },
    {
      "strategy": 0.006205,
      "benchmark": 0.000173,
      "date": "2024-11-23"
    },
    {
      "strategy": -0.011584,
      "benchmark": 0.008726,
      "date": "2024-11-24"
    },
    {
      "strategy": 0.006461,
      "benchmark": -0.005389,
      "date": "2024-11-26"
    },
    {
      "strategy": 0.023686,
      "benchmark": -0.001837,
      "date": "2024-11-27"
    },
    {
      "strategy": -0.013444,
      "benchmark": -0.001276,
      "date": "2024-11-28"
    },
    {
      "strategy": 0.015965,
      "benchmark": 0.011464,
      "date": "2024-11-30"
    },
    {
      "strategy": 0.025414,
      "benchmark": -0.002788,
      "date": "2024-12-01"
    },
    {
      "strategy": 0.016531,
      "benchmark": 0.012993,
      "date": "2024-12-03"
    },
    {
      "strategy": 0.009368,
      "benchmark": 0.001694,
      "date": "2024-12-04"
    },
    {
      "strategy": -0.01292,
      "benchmark": 0.00199,
      "date": "2024-12-05"
    },
    {
      "strategy": 0.005555,
      "benchmark": 0.005871,
      "date": "2024-12-07"
    },
    {
      "strategy": 0.002591,
      "benchmark": 0.002151,
      "date": "2024-12-08"
    },
    {
      "strategy": 0.001749,
      "benchmark": -0.009941,
      "date": "2024-12-10"
    },
    {
      "strategy": -0.001953,
      "benchmark": 0.004667,
      "date": "2024-12-11"
    },
    {
      "strategy": 0.003645,
      "benchmark": 0.011478,
      "date": "2024-12-12"
    },
    {
      "strategy": -0.004807,
      "benchmark": 0.010766,
      "date": "2024-12-14"
    },
    {
      "strategy": 0.008585,
      "benchmark": 0.001628,
      "date": "2024-12-15"
    },
    {
      "strategy": 0.00677,
      "benchmark": 0.007118,
      "date": "2024-12-17"
    },
    {
      "strategy": -0.019627,
      "benchmark": 0.002115,
      "date": "2024-12-18"
    }
  ],
  "mode": "rolling"
}

Output53 lines

{
  "windows": [
    {
      "index": 0,
      "isStart": 0,
      "isEnd": 44,
      "oosStart": 44,
      "oosEnd": 63,
      "isSharpe": 0.9539588330724562,
      "oosSharpe": -2.9617964984518803,
      "isReturn": 0.029701999999999996,
      "oosReturn": -0.045128000000000015
    },
    {
      "index": 1,
      "isStart": 19,
      "isEnd": 63,
      "oosStart": 63,
      "oosEnd": 82,
      "isSharpe": -1.752112016152432,
      "oosSharpe": -5.368174072437243,
      "isReturn": -0.05679800000000001,
      "oosReturn": -0.078902
    },
    {
      "index": 2,
      "isStart": 38,
      "isEnd": 82,
      "oosStart": 82,
      "oosEnd": 101,
      "isSharpe": -3.7244267362396593,
      "oosSharpe": -2.143579547404645,
      "isReturn": -0.120949,
      "oosReturn": -0.026526
    },
    {
      "index": 3,
      "isStart": 57,
      "isEnd": 101,
      "oosStart": 101,
      "oosEnd": 120,
      "isSharpe": -2.944837453830619,
      "oosSharpe": 1.645026025038073,
      "isReturn": -0.10023000000000004,
      "oosReturn": 0.02262300000000001
    }
  ],
  "meanIsSharpe": -1.8668543432875635,
  "meanOosSharpe": -2.207131023313924,
  "dropPct": 0.18227275269217166,
  "totalIsObs": 176,
  "totalOosObs": 76
}

Frequently asked questions

What does the Walk-Forward Validation Visualizer methodology page document?
Window construction, in-sample vs out-of-sample Sharpe, and how to read the IS→OOS drop reported by the AI Fin Hub Walk-Forward Validation Visualizer. It states the formulas, assumptions, data sources, limitations, and reproducibility steps behind the Walk-Forward Validation Visualizer, in the Finance category.
When was the Walk-Forward Validation Visualizer methodology last reviewed?
This methodology was last reviewed on 2026-05-08. The matching tool is at https://aifinhub.io/walk-forward-validation-visualizer/.
Are the Walk-Forward Validation Visualizer numbers reproducible?
Yes. This page embeds a worked example whose output is the verbatim result of running the shipped walk-forward-validation-visualizer engine on a fixed input; the embedded JSON is recomputed and diffed against the engine in CI, so the numbers cannot drift from the code.

Methodology · Tool · Last updated 2026-05-08

How Walk-Forward Validation Visualizer works

How the Walk-Forward Validation Visualizer splits a returns series and computes per-window Sharpe.

Inputs

  • A CSV with at least a strategy returns column. Optional date and benchmark columns are recognised.
  • Number of windows N (2–20).
  • Train fraction per window (0.5–0.9).
  • Mode: rolling (fixed-length window slides forward) or anchored (in-sample anchored to t=0).

Window construction

For N windows on n observations:

window_span  = floor(n / N)
train_span   = floor(window_span · train_pct)
test_span    = window_span − train_span

Rolling window k:
  IS  = [k · test_span,  k · test_span + train_span)
  OOS = [k · test_span + train_span,  k · test_span + train_span + test_span)

Anchored window k:
  IS  = [0,  train_span + k · test_span)
  OOS = [train_span + k · test_span,  train_span + (k+1) · test_span)

Per-window Sharpe

Annualized using a 252-day factor:

SR_window = mean(returns) / stdev(returns) · √252

IS → OOS drop

The hero number is the proportional Sharpe loss:

drop = (mean(IS_Sharpe) − mean(OOS_Sharpe)) / |mean(IS_Sharpe)|

A drop above 50% is a strong overfitting signal. Drops in the 20–50% range are typical for honest strategies once costs are added; sub-20% drops are uncommon and worth verifying for look-ahead leakage.

References

  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies, 2nd ed., Wiley. ISBN: 978-0-470-12801-5.
  • Bailey, D. H., Borwein, J., López de Prado, M., Zhu, Q. J. (2014). "The probability of backtest overfitting." Journal of Computational Finance 20(4): 39–69. DOI: 10.21314/JCF.2016.322.

Limitations

  • The tool tests realised Sharpe stability. It does not refit a model — you supply pre-computed strategy returns.
  • Overlapping returns (intraday holding periods, leveraged ETFs) violate i.i.d. assumptions inside Sharpe; consider Newey-West-adjusted variants.
  • Anchored mode reuses early in-sample rows in every window — a single bad early sample biases all in-sample Sharpes.

External resources