{
  "version": "1.0",
  "hub": "aifinhub",
  "generated_at": "2026-05-27T14:09:35.152Z",
  "total": 45,
  "base": "https://aifinhub.io/engines/",
  "engines": [
    {
      "slug": "agent-cost-envelope-calculator",
      "url": "https://aifinhub.io/engines/agent-cost-envelope-calculator.js",
      "types": "https://aifinhub.io/engines/agent-cost-envelope-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "input_tokens_per_step": {
            "type": "number"
          },
          "output_tokens_per_step": {
            "type": "number"
          },
          "steps_per_loop": {
            "type": "number"
          },
          "convergence_check_pct": {
            "type": "number"
          },
          "markets_per_day": {
            "type": "number"
          },
          "target_monthly_usd": {
            "type": "number"
          },
          "calendar_mode": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "model_id",
          "input_tokens_per_step",
          "output_tokens_per_step",
          "steps_per_loop",
          "convergence_check_pct",
          "markets_per_day",
          "target_monthly_usd",
          "calendar_mode"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "tier": {
                "type": "string"
              },
              "inputUsdPerMToken": {
                "type": "number"
              },
              "outputUsdPerMToken": {
                "type": "number"
              },
              "contextWindow": {
                "type": "integer"
              }
            }
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "step",
                    "convergence"
                  ]
                },
                "inputCost": {
                  "type": "number"
                },
                "outputCost": {
                  "type": "number"
                },
                "totalCost": {
                  "type": "number"
                }
              }
            }
          },
          "costPerLoop": {
            "type": "number"
          },
          "toolUseSubtotal": {
            "type": "number"
          },
          "convergenceCost": {
            "type": "number"
          },
          "costPerDay": {
            "type": "number"
          },
          "costPerMonth": {
            "type": "number"
          },
          "daysPerMonth": {
            "type": "integer"
          },
          "tokensPerLoop": {
            "type": "number"
          },
          "blendedUsdPer1KTokens": {
            "type": "number"
          },
          "withinBudget": {
            "type": "boolean"
          },
          "budgetUtilization": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "agent_cost_envelope_calculator",
        "model_id": "claude-sonnet-4-6",
        "input_tokens_per_step": 4000,
        "output_tokens_per_step": 800,
        "steps_per_loop": 6,
        "convergence_check_pct": 50,
        "markets_per_day": 25,
        "target_monthly_usd": 500,
        "calendar_mode": "business"
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/agent-cost-envelope-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/agent-cost-envelope-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "agent-skill-tester",
      "url": "https://aifinhub.io/engines/agent-skill-tester.js",
      "types": "https://aifinhub.io/engines/agent-skill-tester.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "skill_md": {
            "type": "string"
          },
          "sample_input_text": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "max_output_tokens": {
            "type": "integer"
          },
          "anthropic_api_key": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "skill_md",
          "sample_input_text",
          "model",
          "max_output_tokens",
          "anthropic_api_key"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "structured_output": {
            "type": "object"
          },
          "latency_ms": {
            "type": "number"
          },
          "input_tokens": {
            "type": "integer"
          },
          "output_tokens": {
            "type": "integer"
          },
          "cost_usd": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "agent_skill_tester",
        "skill_md": "# Skill: extract-10k-revenue\n\nReturn a JSON object with the reported total revenue...",
        "sample_input_text": "Excerpt from Form 10-K: ...",
        "model": "claude-opus-4-7",
        "max_output_tokens": 1024,
        "anthropic_api_key": "sk-ant-..."
      },
      "usage": "Client-side playground. Open https://aifinhub.io/agent-skill-tester/ and paste a SKILL.md + sample input + your Anthropic key. The key never leaves the browser."
    },
    {
      "slug": "backtest-overfitting-score",
      "url": "https://aifinhub.io/engines/backtest-overfitting-score.js",
      "types": "https://aifinhub.io/engines/backtest-overfitting-score.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "s": {
            "type": "number"
          },
          "max_combos": {
            "type": "number"
          },
          "seed": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "s",
          "max_combos",
          "seed"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "probability_of_backtest_overfitting": {
            "type": "number"
          },
          "deflated_sharpe_ratio": {
            "type": "number"
          },
          "expected_max_sharpe_null": {
            "type": "number"
          },
          "rank_consistency": {
            "type": "number"
          },
          "verdict": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "backtest-overfitting-score",
        "s": 8,
        "max_combos": 500,
        "seed": 42,
        "returns": [
          [
            -0.007607,
            -0.008433,
            0.002527,
            0.009548,
            0.000386,
            -0.003086,
            -0.013818,
            0.003103,
            -0.001452,
            -0.001876,
            -0.009661,
            0.003698,
            -0.008879,
            0.000087,
            0.005411,
            -0.013957,
            -0.016225,
            -0.008241,
            -0.00932,
            -0.005203,
            0.013635,
            -0.01494,
            0.013488,
            0.001743,
            0.001842,
            -0.009871,
            -0.011032,
            -0.003489,
            -0.001506,
            -0.007647,
            -0.003465,
            -0.002703,
            0.001128,
            -0.000813,
            -0.011485,
            0.001114,
            -0.014121,
            -0.007701,
            0.021711,
            -0.008674,
            0.001477,
            -0.023238,
            -0.001341,
            0.003694,
            -0.010272,
            -0.010004,
            0.0139,
            0.003259,
            -0.001892,
            0.002446,
            -0.00491,
            -0.00949,
            0.001046,
            0.010993,
            -0.007657,
            0.002868,
            0.010116,
            -0.015102,
            0.012324,
            0.003874,
            -0.006297,
            -0.007557,
            0.001614,
            0.003874,
            0.005329,
            -0.01097,
            -0.006333,
            -0.011446,
            -0.010086,
            0.023615,
            0.009435,
            0.006638,
            0.011219,
            0.015323,
            0.002509,
            0.01685,
            0.006612,
            0.00075,
            0.005775,
            -0.000548,
            -0.001559,
            -0.006039,
            0.010799,
            0.011098,
            0.000106,
            -0.003287,
            0.018143,
            -0.001286,
            0.013772,
            -0.007472,
            -0.001242,
            -0.012453,
            0.001156,
            -0.003853,
            -0.002835,
            0.002068,
            0.008257,
            -0.002199,
            0.014797,
            -0.00126,
            -0.004281,
            0.014395,
            -0.014099,
            0.013682,
            0.008156,
            -0.003939,
            -0.004044,
            0.001098,
            0.015018,
            0.007361,
            -0.005574,
            -0.008443,
            0.011462,
            0.018576,
            0.007605,
            -0.002427,
            -0.006412,
            -0.021952,
            -0.006747,
            -0.008918,
            -0.00762,
            -0.012725,
            0.010202,
            0.004645,
            0.01703,
            0.000061,
            0.008105,
            -0.003123,
            -0.000806,
            -0.008311,
            -0.003523,
            -0.007899,
            0.002521,
            0.005408,
            0.007466,
            -0.008198,
            0.002437,
            -0.005085,
            0.01975,
            0.00599,
            0.001853,
            0.018434,
            0.00253,
            0.000584,
            0.000106,
            0.003099,
            0.002464,
            0.005883,
            -0.002776,
            -0.011954,
            0.005296,
            -0.005343,
            -0.002491,
            0.017611,
            0.00696,
            0.008335,
            -0.001531,
            -0.003152,
            -0.00285,
            0.005455,
            0.005163,
            -0.005818,
            -0.014524,
            0.006273,
            0.008741,
            0.00559,
            0.007341,
            -0.001281,
            0.018982,
            -0.002406,
            -0.010218,
            -0.005839,
            0.000264,
            -0.002979,
            -0.000778,
            -0.0101,
            0.004605,
            -0.003556,
            -0.001231,
            -0.002957,
            -0.005795,
            -0.009402,
            -0.001695,
            0.000745,
            -0.010244,
            -0.012969,
            -0.005555,
            -0.008597,
            0.006853,
            0.003049,
            0.003559,
            0.003363,
            -0.003207,
            0.001758,
            0.002949,
            -0.001688,
            0.002311,
            0.000368,
            -0.006301,
            0.000936,
            -0.010952,
            0.009508,
            -0.009308,
            -0.00056,
            -0.009114,
            -0.001343,
            0.003215,
            -0.017557,
            -0.006617,
            -0.005486,
            -0.001897,
            -0.009472,
            0.002418,
            0.001107,
            0.01974,
            0.011345,
            0.010953,
            0.006522,
            0.00396,
            0.002117,
            -0.009888,
            0.005347,
            0.012451,
            0.01582,
            0.00519,
            -0.009875,
            -0.002421,
            0.012211,
            -0.01189,
            -0.012948,
            -0.002372,
            -0.013299,
            -0.00759,
            0.003687,
            0.001551,
            -0.003671,
            -0.002077,
            0.004934,
            0.000243,
            -0.010124,
            0.005935,
            -0.011534,
            0.005383,
            0.014001,
            0.01137,
            0.00832,
            0.001503,
            0.006466,
            -0.00883,
            -0.00862,
            -0.006858,
            -0.018451
          ],
          [
            -0.002599,
            -0.01249,
            -0.000768,
            0.014659,
            -0.007903,
            0.001668,
            -0.00597,
            0.006913,
            -0.002515,
            -0.009598,
            0.012531,
            0.022728,
            -0.008417,
            0.003026,
            -0.005167,
            0.0072,
            -0.012631,
            -0.007466,
            -0.006282,
            0.000575,
            -0.005115,
            0.001796,
            0.00165,
            0.004601,
            0.002381,
            0.004698,
            -0.007147,
            0.01338,
            -0.002692,
            0.01626,
            0.004157,
            -0.009184,
            0.003456,
            -0.004427,
            -0.004837,
            0.0042,
            -0.000564,
            0.003732,
            0.002595,
            0.00147,
            -0.003464,
            -0.007321,
            0.007342,
            -0.006111,
            -0.017633,
            -0.016906,
            -0.000206,
            -0.006414,
            0.007947,
            -0.007423,
            -0.006619,
            -0.001341,
            0.008039,
            0.004998,
            0.004973,
            -0.012833,
            -0.014551,
            0.006823,
            -0.002911,
            -0.004485,
            -0.001641,
            0.006185,
            -0.002446,
            0.002514,
            -0.003903,
            -0.00003,
            0.008278,
            -0.010454,
            0.004771,
            0.004374,
            -0.022943,
            -0.010161,
            0.006163,
            -0.004155,
            0.004424,
            -0.009182,
            0.006865,
            -0.011443,
            0.001149,
            -0.006493,
            0.002135,
            -0.010179,
            -0.007789,
            -0.011033,
            -0.005326,
            -0.01244,
            -0.003092,
            -0.00182,
            -0.003007,
            -0.003795,
            -0.00116,
            -0.001842,
            -0.012457,
            -0.021907,
            -0.006275,
            0.008307,
            -0.006231,
            -0.005329,
            0.017913,
            -0.004898,
            0.002562,
            -0.009148,
            -0.007493,
            -0.004149,
            -0.01313,
            -0.001028,
            -0.002185,
            -0.014841,
            0.012308,
            -0.00101,
            -0.001641,
            0.002098,
            0.026443,
            -0.002785,
            -0.005596,
            -0.003746,
            0.000018,
            -0.007626,
            0.006118,
            -0.0022,
            0.018846,
            -0.005512,
            0.011388,
            0.007531,
            -0.004823,
            -0.003043,
            -0.007229,
            0.004015,
            0.009033,
            0.000679,
            0.000818,
            -0.002525,
            -0.008156,
            0.011269,
            -0.009309,
            0.002143,
            -0.001107,
            0.01047,
            0.000274,
            0.005718,
            0.001913,
            0.013187,
            -0.005715,
            0.00549,
            0.012165,
            -0.008927,
            0.012049,
            0.005841,
            -0.00299,
            -0.001533,
            -0.00256,
            0.012738,
            0.001877,
            -0.005116,
            0.010483,
            -0.014202,
            0.008472,
            -0.003035,
            -0.003723,
            0.006801,
            0.019795,
            0.018834,
            -0.002,
            -0.001073,
            0.019896,
            0.001447,
            0.005193,
            -0.005287,
            0.002826,
            -0.005817,
            -0.006516,
            -0.008045,
            0.00054,
            0.002332,
            0.001308,
            -0.012459,
            -0.012143,
            0.00048,
            0.002915,
            0.006755,
            -0.01107,
            -0.005805,
            0.012398,
            -0.001902,
            -0.008612,
            -0.002507,
            0.004902,
            -0.00165,
            -0.009832,
            -0.007272,
            0.00347,
            0.000857,
            0.004866,
            0.003938,
            0.010866,
            -0.008823,
            0.0217,
            0.007548,
            0.010955,
            -0.001893,
            -0.006616,
            -0.013243,
            0.00621,
            0.003595,
            -0.013117,
            -0.008922,
            -0.012827,
            -0.001665,
            -0.007163,
            0.012076,
            -0.000828,
            0.014302,
            -0.003096,
            0.002416,
            0.001582,
            -0.003323,
            0.002436,
            -0.006585,
            0.000963,
            0.00037,
            -0.006513,
            0.003063,
            0.000498,
            0.007974,
            -0.00442,
            0.002107,
            0.00479,
            0.000312,
            -0.006624,
            -0.009057,
            -0.001558,
            -0.015349,
            0.000891,
            0.003371,
            -0.00437,
            0.000723,
            0.006585,
            0.003907,
            -0.019742,
            -0.014603,
            -0.001371,
            -0.01082,
            0.006477,
            -0.001051,
            0.003705,
            -0.005935,
            0.016919,
            0.003175,
            -0.009761,
            0.010011,
            0.006377,
            -0.002754
          ],
          [
            0.003486,
            -0.01331,
            0.001114,
            0.002542,
            0.003635,
            0.014253,
            -0.007912,
            0.019006,
            0.002954,
            -0.00251,
            0.004889,
            -0.006149,
            -0.006969,
            0.005837,
            -0.002009,
            -0.009907,
            -0.01021,
            -0.006779,
            -0.012268,
            0.013655,
            0.011315,
            -0.001646,
            0.003776,
            0.010479,
            -0.001971,
            -0.00643,
            0.002708,
            -0.000718,
            0.020762,
            -0.00495,
            0.002591,
            0.002292,
            -0.002019,
            -0.003038,
            -0.008764,
            0.014829,
            0.001607,
            0.008474,
            0.00003,
            0.004912,
            -0.009748,
            -0.005388,
            -0.019528,
            0.009265,
            -0.009732,
            -0.009528,
            -0.022486,
            0.001387,
            0.000133,
            0.012331,
            -0.001881,
            0.002814,
            0.003454,
            -0.00165,
            0.000802,
            0.012993,
            0.019009,
            -0.005461,
            -0.010639,
            0.026615,
            -0.002979,
            -0.022924,
            -0.003852,
            -0.001726,
            0.014881,
            0.010805,
            0.010043,
            0.014801,
            -0.005783,
            -0.002314,
            0.002512,
            0.005949,
            0.000233,
            0.005222,
            -0.003598,
            0.006489,
            -0.003603,
            -0.004326,
            -0.006227,
            -0.005739,
            0.009195,
            -0.011944,
            -0.012541,
            0.012824,
            -0.006702,
            -0.003601,
            -0.010387,
            0.006808,
            -0.000709,
            0.009398,
            0.003454,
            -0.005537,
            -0.018698,
            0.001332,
            0.000639,
            0.000286,
            0.00154,
            0.000774,
            0.00292,
            0.000921,
            -0.001871,
            0.000798,
            0.001025,
            0.000922,
            0.007591,
            0.013319,
            0.009731,
            -0.001231,
            0.006471,
            -0.003417,
            0.006932,
            0.006744,
            0.013241,
            -0.024821,
            -0.006818,
            0.011626,
            0.00466,
            -0.014313,
            0.003097,
            0.016559,
            0.00463,
            0.021152,
            0.012273,
            0.011978,
            0.010992,
            -0.006009,
            0.012956,
            0.000066,
            -0.002637,
            0.026311,
            0.006168,
            0.011745,
            -0.006737,
            -0.000939,
            0.008149,
            0.000019,
            0.014362,
            -0.021293,
            -0.007537,
            0.005119,
            0.002852,
            0.007819,
            0.001501,
            -0.008867,
            -0.009108,
            -0.010194,
            0.015899,
            -0.00692,
            0.01571,
            -0.003153,
            -0.012947,
            -0.012684,
            0.002476,
            0.009866,
            -0.004376,
            -0.003654,
            0.002282,
            0.010798,
            -0.004496,
            0.008029,
            -0.009739,
            0.008663,
            0.001425,
            -0.007216,
            0.009156,
            -0.004389,
            0.000084,
            -0.006304,
            -0.008008,
            -0.001895,
            -0.002614,
            -0.008904,
            0.008343,
            0.018334,
            0.004495,
            -0.014895,
            0.015643,
            0.010954,
            -0.000684,
            -0.001145,
            -0.014152,
            -0.000439,
            -0.003169,
            0.008985,
            -0.018804,
            0.013682,
            -0.000287,
            0.013181,
            0.000439,
            0.000605,
            0.006022,
            0.004664,
            -0.009431,
            0.003879,
            0.002882,
            -0.009042,
            0.007386,
            -0.01762,
            -0.004178,
            -0.001909,
            0.01808,
            -0.007329,
            -0.012838,
            -0.00906,
            -0.001583,
            -0.006148,
            -0.000189,
            0.011673,
            0.008158,
            0.008813,
            0.002587,
            -0.008601,
            0.022004,
            0.000851,
            -0.003402,
            -0.000193,
            -0.015078,
            0.001615,
            0.006137,
            0.016117,
            -0.002529,
            0.002285,
            -0.009308,
            0.00888,
            0.005664,
            -0.004795,
            0.011285,
            -0.005619,
            -0.003784,
            -0.005674,
            -0.000319,
            -0.017527,
            -0.013529,
            0.011023,
            0.012447,
            -0.023654,
            0.000652,
            -0.005188,
            -0.011734,
            0.002771,
            -0.007129,
            -0.008234,
            -0.006469,
            -0.016879,
            -0.010539,
            -0.001697,
            0.005634,
            -0.008947,
            0.011191,
            -0.000963,
            0.004449,
            0.013423
          ],
          [
            0.008852,
            -0.010706,
            -0.002378,
            0.005423,
            0.004518,
            -0.000613,
            0.000615,
            0.013326,
            0.00759,
            -0.0091,
            -0.004475,
            0.002714,
            -0.004472,
            0.008336,
            -0.002838,
            -0.001532,
            -0.008167,
            -0.005782,
            -0.000678,
            0.010727,
            -0.015255,
            -0.007146,
            0.001326,
            0.018322,
            0.002475,
            -0.001778,
            0.002247,
            -0.01457,
            -0.00048,
            0.002975,
            0.007482,
            0.009793,
            0.005549,
            -0.001337,
            -0.000496,
            0.010937,
            0.008461,
            0.006448,
            -0.005786,
            0.004251,
            -0.013087,
            0.002977,
            0.00819,
            0.000845,
            -0.01503,
            -0.014416,
            -0.000959,
            0.013313,
            -0.005762,
            0.002067,
            0.004587,
            0.022055,
            -0.003401,
            0.001916,
            -0.001477,
            -0.004317,
            -0.019222,
            -0.008712,
            0.013596,
            -0.000347,
            -0.009065,
            -0.000463,
            -0.001257,
            -0.005261,
            0.004553,
            -0.012928,
            -0.010092,
            -0.00059,
            -0.007615,
            0.017119,
            -0.013338,
            -0.006089,
            0.012117,
            0.016367,
            0.002061,
            0.001139,
            -0.017257,
            -0.000665,
            -0.008947,
            0.000609,
            0.021839,
            -0.010826,
            0.002841,
            0.001951,
            -0.003404,
            0.003122,
            0.003013,
            0.015499,
            0.020236,
            -0.007719,
            -0.002011,
            0.003386,
            -0.001359,
            0.012023,
            0.000961,
            0.008937,
            -0.000753,
            -0.028231,
            0.005139,
            -0.001166,
            0.005966,
            -0.011924,
            0.009752,
            0.010457,
            -0.000199,
            -0.016738,
            0.001022,
            0.005433,
            0.003096,
            0.0006,
            0.002228,
            -0.017246,
            -0.011228,
            -0.020622,
            0.009741,
            0.012772,
            0.003404,
            -0.003908,
            -0.008984,
            -0.000814,
            -0.022696,
            -0.001972,
            0.004675,
            -0.000933,
            -0.015595,
            0.001657,
            -0.010628,
            -0.000527,
            -0.009139,
            -0.00587,
            -0.011357,
            0.004861,
            -0.009659,
            -0.015855,
            -0.006604,
            -0.005845,
            -0.002768,
            0.005903,
            -0.00951,
            -0.005424,
            0.000457,
            0.018983,
            0.004286,
            0.013662,
            -0.008631,
            0.003531,
            0.000912,
            -0.018602,
            -0.004687,
            -0.016904,
            0.000894,
            0.00101,
            -0.001467,
            -0.014426,
            -0.00351,
            0.005983,
            -0.013143,
            -0.00345,
            -0.005084,
            0.009319,
            -0.007078,
            -0.006828,
            0.012212,
            -0.006276,
            0.01022,
            -0.01452,
            -0.004641,
            -0.002479,
            -0.002729,
            0.0192,
            0.001188,
            -0.008389,
            0.012928,
            -0.004732,
            0.010695,
            -0.01944,
            -0.003619,
            -0.006542,
            0.002616,
            0.006235,
            -0.014373,
            0.005552,
            -0.007615,
            -0.01575,
            -0.001048,
            0.008588,
            -0.005942,
            -0.0041,
            -0.003245,
            -0.007467,
            0.003649,
            0.001682,
            0.008666,
            0.001958,
            0.000471,
            -0.023063,
            -0.009793,
            -0.000602,
            0.007254,
            0.002173,
            0.010535,
            0.019484,
            0.003534,
            0.013919,
            -0.000796,
            -0.012619,
            0.011209,
            0.001546,
            0.000545,
            -0.00369,
            -0.008794,
            0.007748,
            -0.021979,
            0.00259,
            0.004601,
            0.004005,
            0.006019,
            0.007067,
            0.000473,
            0.01317,
            -0.015218,
            -0.003715,
            -0.0023,
            0.000023,
            -0.000084,
            -0.003739,
            0.005473,
            -0.017922,
            -0.002169,
            -0.000483,
            0.001692,
            -0.020054,
            0.006654,
            -0.001044,
            -0.012923,
            0.015904,
            -0.00658,
            0.006153,
            -0.002146,
            -0.000691,
            -0.010927,
            -0.004342,
            -0.011426,
            0.004418,
            0.003777,
            0.002299,
            -0.005798,
            -0.025346,
            -0.016124,
            -0.024896,
            -0.00642,
            0.002277
          ],
          [
            0.011729,
            -0.005773,
            -0.007699,
            0.006794,
            -0.000552,
            -0.008731,
            0.019041,
            0.033483,
            0.007347,
            -0.000291,
            0.001521,
            0.015613,
            -0.001193,
            0.010122,
            -0.00869,
            -0.019155,
            -0.006399,
            -0.004445,
            0.003505,
            0.004141,
            0.004318,
            0.001827,
            -0.003733,
            0.008366,
            -0.01758,
            -0.007719,
            -0.005996,
            -0.005417,
            0.007886,
            0.011099,
            -0.001841,
            0.021641,
            0.000632,
            -0.009277,
            0.001416,
            0.003799,
            0.008694,
            -0.002379,
            -0.009175,
            -0.002104,
            -0.00056,
            -0.002422,
            -0.01603,
            -0.003501,
            -0.008582,
            -0.008568,
            0.003612,
            0.002075,
            0.012406,
            -0.002588,
            0.015132,
            0.007146,
            -0.001863,
            0.008983,
            0.00495,
            -0.00158,
            0.018503,
            0.010479,
            -0.006045,
            -0.002337,
            0.001861,
            -0.014421,
            0.00303,
            -0.005246,
            -0.003122,
            0.000034,
            -0.014536,
            -0.012657,
            0.016035,
            0.007777,
            0.010025,
            0.017608,
            0.007086,
            -0.001172,
            -0.01303,
            0.001829,
            -0.007165,
            0.009146,
            -0.004829,
            0.005551,
            0.007639,
            -0.000074,
            -0.014306,
            -0.000761,
            -0.013949,
            0.002893,
            0.012667,
            -0.004379,
            -0.004138,
            -0.007296,
            0.004135,
            0.002569,
            0.012599,
            -0.00043,
            0.007188,
            0.017048,
            -0.009827,
            0.010878,
            0.005988,
            -0.003293,
            -0.005724,
            0.00403,
            -0.003844,
            0.009897,
            -0.003228,
            0.003344,
            -0.015898,
            0.004611,
            -0.008967,
            -0.006089,
            -0.010759,
            0.003398,
            -0.015596,
            0.004213,
            0.009417,
            -0.00463,
            0.009835,
            -0.006524,
            0.001871,
            -0.002942,
            0.003756,
            -0.001074,
            0.005464,
            0.002217,
            0.005844,
            -0.0083,
            0.016704,
            0.006948,
            0.011722,
            -0.006093,
            -0.008204,
            -0.007806,
            0.004224,
            -0.010366,
            0.002536,
            0.00412,
            0.016236,
            -0.010085,
            0.002869,
            -0.01268,
            0.001888,
            0.014263,
            -0.017421,
            -0.008968,
            -0.002271,
            -0.000096,
            0.001382,
            0.000378,
            -0.004642,
            -0.002268,
            -0.008866,
            0.005075,
            0.003363,
            0.002907,
            0.011057,
            -0.000787,
            0.014325,
            -0.022647,
            -0.005624,
            0.010579,
            0.000866,
            -0.003546,
            0.022907,
            0.007693,
            0.002303,
            -0.007771,
            -0.005333,
            0.004746,
            0.010793,
            0.003392,
            0.004414,
            -0.006833,
            -0.006227,
            -0.005267,
            0.001398,
            -0.002947,
            -0.004245,
            0.011868,
            0.000303,
            0.001265,
            -0.011969,
            0.01069,
            0.010384,
            0.007087,
            0.003364,
            0.000833,
            0.01531,
            -0.014459,
            0.002397,
            0.014341,
            0.008909,
            0.005115,
            -0.013495,
            0.009696,
            -0.005752,
            -0.013766,
            0.009333,
            0.010953,
            -0.017236,
            -0.013103,
            -0.019697,
            0.009537,
            -0.004786,
            -0.001116,
            0.005204,
            -0.017204,
            0.003276,
            -0.00737,
            -0.009889,
            0.007233,
            0.004274,
            -0.005628,
            0.015721,
            0.004893,
            0.006023,
            -0.007373,
            0.002966,
            -0.002997,
            -0.003431,
            0.01014,
            -0.007883,
            -0.00338,
            -0.004258,
            -0.007795,
            0.017959,
            0.002908,
            0.000229,
            -0.006163,
            -0.000723,
            -0.012504,
            0.005908,
            -0.025767,
            -0.00452,
            0.010136,
            0.001943,
            -0.019074,
            0.008654,
            0.009423,
            0.009538,
            -0.007598,
            -0.01274,
            -0.000106,
            -0.000541,
            0.006797,
            0.011531,
            -0.009658,
            -0.0114,
            -0.007155,
            -0.009824,
            0.002054,
            -0.007449,
            -0.010328
          ],
          [
            0.011256,
            -0.000223,
            0.001441,
            -0.001179,
            -0.012583,
            0.003316,
            0.010388,
            0.01025,
            0.01555,
            -0.002517,
            0.002669,
            0.001067,
            0.002634,
            0.010967,
            0.001981,
            0.00513,
            -0.004714,
            -0.002447,
            0.024113,
            0.001211,
            -0.003333,
            -0.010601,
            -0.008761,
            0.012841,
            0.016576,
            -0.005681,
            -0.010863,
            0.002369,
            0.006501,
            -0.004645,
            -0.006234,
            0.007844,
            0.00037,
            0.000444,
            0.010076,
            0.010562,
            -0.00168,
            -0.006651,
            -0.005482,
            -0.009678,
            0.002108,
            0.002485,
            0.004866,
            0.00583,
            -0.013947,
            -0.01345,
            -0.003561,
            -0.011908,
            -0.004512,
            0.015576,
            0.013835,
            -0.00485,
            0.003579,
            0.009374,
            -0.010021,
            -0.002477,
            0.000416,
            -0.004641,
            0.000633,
            0.006917,
            -0.027076,
            -0.00093,
            0.005321,
            -0.001833,
            0.01852,
            0.008322,
            0.001178,
            -0.020347,
            -0.003362,
            0.004747,
            -0.009566,
            -0.002999,
            -0.024022,
            0.011943,
            0.010809,
            0.005892,
            0.000108,
            0.024052,
            0.001224,
            0.003922,
            0.010204,
            0.004479,
            -0.008172,
            0.010669,
            -0.008238,
            0.007124,
            -0.005708,
            0.001868,
            -0.003056,
            0.011157,
            0.014347,
            0.005166,
            0.005869,
            -0.016238,
            0.006389,
            0.005478,
            0.011501,
            -0.010862,
            0.006021,
            -0.005646,
            0.01212,
            -0.014722,
            -0.016397,
            -0.000976,
            0.003076,
            0.00203,
            -0.002783,
            -0.009184,
            -0.007076,
            0.005028,
            0.004236,
            0.018429,
            0.007052,
            0.018105,
            -0.010309,
            -0.002394,
            0.00331,
            0.000534,
            0.011778,
            0.008003,
            0.006434,
            0.003531,
            0.004997,
            0.00461,
            -0.007504,
            0.001296,
            -0.01234,
            -0.00878,
            0.008247,
            0.007796,
            -0.001149,
            -0.00522,
            0.002953,
            -0.001744,
            -0.000605,
            -0.007237,
            -0.001682,
            0.001705,
            0.020191,
            -0.001263,
            -0.005979,
            0.033385,
            0.003368,
            0.00115,
            0.005386,
            -0.012863,
            0.003545,
            0.009453,
            0.022688,
            -0.006624,
            -0.001311,
            -0.009879,
            -0.001674,
            -0.007016,
            -0.002642,
            -0.020404,
            0.006088,
            0.00398,
            -0.006127,
            0.011828,
            0.010052,
            0.007447,
            0.004753,
            0.008225,
            -0.005209,
            -0.012407,
            -0.000213,
            0.011395,
            0.012609,
            -0.010347,
            0.006798,
            -0.004541,
            -0.004424,
            0.010899,
            0.003831,
            -0.003812,
            0.016229,
            -0.015076,
            0.001982,
            0.00495,
            -0.00768,
            0.013847,
            -0.005161,
            0.006032,
            0.014895,
            -0.00216,
            0.005364,
            0.008787,
            0.000558,
            -0.003571,
            0.004095,
            0.003615,
            0.011424,
            -0.00324,
            -0.005738,
            -0.007359,
            0.016256,
            -0.00762,
            0.002604,
            0.003739,
            0.002564,
            -0.000472,
            -0.006371,
            0.004742,
            0.020126,
            -0.021834,
            -0.002943,
            -0.000946,
            0.001758,
            0.014899,
            -0.011367,
            -0.000837,
            -0.018771,
            0.000841,
            -0.006678,
            -0.00388,
            -0.010419,
            -0.004883,
            -0.005978,
            0.006797,
            -0.00313,
            -0.002307,
            0.004947,
            -0.019637,
            -0.008832,
            -0.014962,
            -0.004709,
            -0.000226,
            0.000391,
            -0.007044,
            -0.003552,
            -0.006143,
            0.007567,
            -0.010228,
            -0.007883,
            0.012963,
            0.005235,
            -0.00732,
            -0.004037,
            -0.014201,
            -0.012702,
            0.003607,
            0.012718,
            0.00157,
            0.000148,
            -0.00375,
            -0.00369,
            -0.002591,
            0.000397,
            -0.000262,
            -0.001766,
            -0.000278
          ],
          [
            0.007631,
            0.004042,
            -0.003391,
            -0.001324,
            0.002492,
            0.003408,
            0.004977,
            0.005391,
            0.009904,
            0.00359,
            -0.013735,
            -0.002114,
            0.006711,
            0.010716,
            -0.009982,
            -0.011107,
            -0.012562,
            -0.018067,
            0.009087,
            -0.009137,
            0.001357,
            0.013068,
            -0.016555,
            0.013036,
            -0.010255,
            0.002186,
            0.006072,
            0.006931,
            -0.00557,
            0.013895,
            -0.011879,
            -0.001353,
            0.008163,
            -0.008732,
            0.007106,
            0.004134,
            -0.012348,
            0.002976,
            0.004026,
            -0.011379,
            0.009395,
            0.001386,
            -0.007777,
            -0.009859,
            -0.020942,
            -0.019683,
            -0.010013,
            0.00459,
            -0.006786,
            0.001025,
            0.006314,
            -0.009702,
            0.003731,
            0.0063,
            0.008087,
            -0.013245,
            0.000883,
            -0.00239,
            0.012924,
            -0.005082,
            -0.001465,
            -0.008386,
            0.003671,
            0.00183,
            0.003836,
            -0.014406,
            -0.004504,
            -0.006225,
            -0.006222,
            0.015315,
            0.000619,
            0.01276,
            0.013281,
            0.017771,
            -0.002314,
            -0.00229,
            0.007379,
            0.010253,
            0.002479,
            -0.002408,
            0.009221,
            0.011061,
            -0.007428,
            0.002185,
            -0.016834,
            0.016038,
            -0.009821,
            0.011365,
            0.005714,
            -0.002801,
            0.001172,
            0.009558,
            -0.009161,
            -0.015026,
            0.014644,
            0.007483,
            -0.012905,
            -0.005553,
            0.00531,
            -0.008305,
            -0.009963,
            0.004821,
            0.000998,
            -0.003496,
            -0.007968,
            -0.002101,
            0.005229,
            -0.000745,
            -0.000517,
            0.01048,
            0.002966,
            -0.001683,
            0.029784,
            0.002484,
            -0.007352,
            0.020163,
            0.010221,
            0.001169,
            -0.004935,
            0.005096,
            -0.000041,
            0.004792,
            0.003576,
            0.006878,
            0.012652,
            -0.020815,
            0.029841,
            0.031106,
            0.002828,
            0.00235,
            0.010255,
            0.00582,
            0.011567,
            0.004781,
            -0.002398,
            0.001545,
            0.016446,
            -0.003486,
            0.001459,
            0.006074,
            -0.000095,
            0.019416,
            -0.007524,
            0.006644,
            -0.012779,
            -0.007376,
            0.017699,
            0.011036,
            -0.006762,
            -0.021686,
            0.004537,
            0.013187,
            0.010867,
            0.010066,
            -0.005867,
            -0.001485,
            -0.00612,
            0.003709,
            -0.0066,
            0.013079,
            -0.006814,
            0.005428,
            -0.002822,
            0.011532,
            -0.001725,
            -0.003191,
            0.008966,
            0.013052,
            0.0041,
            -0.001376,
            0.008191,
            -0.001881,
            0.007918,
            0.007948,
            0.006348,
            -0.003603,
            -0.009235,
            0.000673,
            -0.008589,
            -0.017069,
            -0.002686,
            0.014393,
            0.004456,
            -0.01166,
            0.006483,
            -0.00938,
            -0.003064,
            -0.001005,
            -0.003182,
            0.009465,
            0.011355,
            0.004696,
            -0.017993,
            0.020861,
            -0.016795,
            -0.007922,
            -0.000219,
            -0.009241,
            -0.009295,
            -0.01554,
            0.006853,
            0.000789,
            -0.001668,
            -0.007994,
            0.007739,
            -0.007413,
            0.002101,
            0.00182,
            0.004953,
            0.003292,
            0.00232,
            -0.003627,
            0.012066,
            0.007845,
            0.002976,
            0.008208,
            0.002466,
            0.005215,
            -0.007241,
            0.003357,
            0.000656,
            -0.000032,
            0.009229,
            -0.004244,
            0.006663,
            0.00577,
            0.003643,
            0.010436,
            -0.00003,
            -0.002328,
            -0.002684,
            -0.007725,
            -0.004625,
            0.019142,
            -0.003996,
            -0.017522,
            -0.010835,
            0.004204,
            -0.024369,
            -0.015649,
            -0.011136,
            0.005935,
            -0.001589,
            -0.004825,
            0.001895,
            0.00843,
            -0.000644,
            0.006872,
            -0.010314,
            -0.012681,
            0.002772,
            0.007539
          ],
          [
            0.002048,
            0.005523,
            -0.008066,
            -0.003909,
            0.010556,
            -0.002183,
            0.011698,
            -0.001406,
            0.018,
            0.006978,
            -0.002558,
            0.01189,
            0.010698,
            0.00931,
            -0.001249,
            -0.003277,
            -0.008838,
            -0.013396,
            0.000021,
            -0.009976,
            0.002116,
            -0.005387,
            -0.007579,
            0.00689,
            0.008725,
            -0.012971,
            -0.000674,
            -0.009595,
            0.023219,
            0.008246,
            -0.000345,
            0.001351,
            -0.003896,
            -0.006942,
            0.017163,
            -0.001102,
            -0.008344,
            0.020793,
            0.012062,
            -0.00376,
            0.016507,
            -0.006928,
            0.000304,
            0.006745,
            -0.013109,
            -0.012801,
            0.003163,
            0.025392,
            0.016923,
            0.004972,
            0.000482,
            -0.00692,
            -0.00272,
            -0.016127,
            -0.005475,
            0.011086,
            0.001796,
            -0.008449,
            -0.008578,
            0.001564,
            -0.021133,
            -0.014325,
            -0.000398,
            0.002364,
            -0.002013,
            0.000277,
            -0.010549,
            -0.000514,
            0.0089,
            0.011132,
            -0.015534,
            -0.014591,
            0.008161,
            0.001962,
            0.008913,
            0.022393,
            0.026505,
            -0.002767,
            -0.002542,
            -0.006752,
            0.003652,
            0.019488,
            -0.033398,
            0.007073,
            -0.00783,
            0.015248,
            0.004515,
            0.014988,
            -0.004112,
            -0.010998,
            0.006237,
            0.015724,
            -0.011523,
            -0.002247,
            0.008054,
            0.000407,
            0.006845,
            0.000312,
            0.003805,
            -0.011588,
            0.002502,
            -0.004538,
            0.028605,
            0.010201,
            -0.001033,
            0.011886,
            0.00564,
            0.017292,
            0.005632,
            0.009578,
            -0.015656,
            -0.004341,
            0.024859,
            -0.024528,
            0.017137,
            0.016584,
            0.020839,
            0.006452,
            -0.007646,
            -0.018027,
            0.001231,
            -0.003496,
            0.000994,
            0.009503,
            -0.002081,
            -0.00169,
            0.001376,
            -0.001782,
            0.006596,
            -0.013976,
            -0.008982,
            0.007135,
            0.002409,
            0.003218,
            0.001068,
            -0.003573,
            0.002234,
            -0.00098,
            -0.006153,
            0.008412,
            0.002468,
            0.015212,
            0.001556,
            -0.009053,
            -0.007837,
            0.00353,
            0.028753,
            -0.006503,
            -0.005639,
            -0.003013,
            -0.028265,
            -0.004795,
            -0.012861,
            -0.014399,
            0.002507,
            0.004764,
            0.000413,
            -0.012965,
            -0.007046,
            0.014343,
            -0.004563,
            -0.004432,
            -0.012528,
            0.004261,
            -0.008489,
            0.001216,
            0.017456,
            0.007674,
            -0.001264,
            0.004878,
            0.008573,
            0.000756,
            0.003848,
            0.000074,
            0.008992,
            -0.0025,
            0.009588,
            0.006549,
            0.011056,
            0.023766,
            0.00169,
            0.012332,
            0.004776,
            0.012552,
            0.002776,
            -0.026795,
            0.006117,
            -0.014597,
            0.009576,
            -0.013017,
            0.005232,
            0.006244,
            0.000137,
            0.003258,
            -0.010708,
            -0.002772,
            0.002943,
            0.005565,
            -0.001682,
            0.002634,
            0.004574,
            0.006207,
            -0.014891,
            0.006187,
            0.01193,
            -0.002907,
            0.020392,
            0.00402,
            -0.007208,
            0.004126,
            -0.009064,
            -0.008286,
            -0.016542,
            -0.000151,
            0.012171,
            -0.007094,
            0.017559,
            -0.009326,
            -0.007272,
            0.000138,
            -0.003668,
            -0.017945,
            0.017881,
            0.00225,
            0.00138,
            -0.015835,
            0.008341,
            -0.003081,
            0.009376,
            -0.012552,
            -0.001771,
            -0.008746,
            -0.000842,
            -0.000032,
            -0.004745,
            0.010096,
            0.007954,
            0.016613,
            -0.013507,
            0.000423,
            -0.026589,
            0.019477,
            -0.021889,
            0.002099,
            0.005214,
            -0.003103,
            0.001465,
            -0.003244,
            -0.019464,
            0.005564,
            -0.01604,
            0.009813
          ]
        ],
        "names": [
          "config_1",
          "config_2",
          "config_3",
          "config_4",
          "config_5",
          "config_6",
          "config_7",
          "config_8"
        ]
      },
      "usage": "Client-side analyzer. Open https://aifinhub.io/backtest-overfitting-score/ and paste a returns CSV. Computes PBO + Deflated Sharpe in-browser."
    },
    {
      "slug": "batch-vs-realtime-cost-calculator",
      "url": "https://aifinhub.io/engines/batch-vs-realtime-cost-calculator.js",
      "types": "https://aifinhub.io/engines/batch-vs-realtime-cost-calculator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "jobs_per_day": {
            "type": "number"
          },
          "input_tokens_per_job": {
            "type": "number"
          },
          "output_tokens_per_job": {
            "type": "number"
          },
          "deadline_hours": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "model_id",
          "jobs_per_day",
          "input_tokens_per_job",
          "output_tokens_per_job",
          "deadline_hours"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "provider": {
                "type": "string"
              },
              "tier": {
                "type": "string"
              },
              "inputUsdPerMToken": {
                "type": "number"
              },
              "outputUsdPerMToken": {
                "type": "number"
              },
              "contextWindow": {
                "type": "integer"
              }
            }
          },
          "realtimeCostPerDay": {
            "type": "number"
          },
          "batchCostPerDay": {
            "type": "number"
          },
          "effectiveCostPerDay": {
            "type": "number"
          },
          "savingsPerDay": {
            "type": "number"
          },
          "savingsPerMonth": {
            "type": "number"
          },
          "batchEligible": {
            "type": "boolean"
          },
          "usingBatch": {
            "type": "boolean"
          },
          "modeSuggestion": {
            "type": "string"
          },
          "providerComparison": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "provider": {
                  "type": "string"
                },
                "model": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "tier": {
                      "type": "string"
                    },
                    "inputUsdPerMToken": {
                      "type": "number"
                    },
                    "outputUsdPerMToken": {
                      "type": "number"
                    },
                    "contextWindow": {
                      "type": "integer"
                    }
                  }
                },
                "realtimeCostPerDay": {
                  "type": "number"
                },
                "batchCostPerDay": {
                  "type": "number"
                },
                "batchEligible": {
                  "type": "boolean"
                },
                "supportsBatch": {
                  "type": "boolean"
                },
                "batchSlaHours": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "batch_vs_realtime_cost_calculator",
        "model_id": "claude-sonnet-4-6",
        "jobs_per_day": 10000,
        "input_tokens_per_job": 4000,
        "output_tokens_per_job": 800,
        "deadline_hours": 24
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/batch-vs-realtime-cost-calculator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/batch-vs-realtime-cost-calculator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "broker-api-comparator",
      "url": "https://aifinhub.io/engines/broker-api-comparator.js",
      "types": "https://aifinhub.io/engines/broker-api-comparator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "require_options": {
            "type": "boolean"
          },
          "require_futures": {
            "type": "boolean"
          },
          "require_crypto": {
            "type": "boolean"
          },
          "require_mcp": {
            "type": "boolean"
          },
          "require_free_tier": {
            "type": "boolean"
          },
          "max_auth_complexity": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "require_options",
          "require_futures",
          "require_crypto",
          "require_mcp",
          "require_free_tier",
          "max_auth_complexity"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "filters": {
            "type": "object",
            "properties": {
              "requireOptions": {
                "type": "boolean"
              },
              "requireFutures": {
                "type": "boolean"
              },
              "requireCrypto": {
                "type": "boolean"
              },
              "requireMcp": {
                "type": "boolean"
              },
              "requireFreeTier": {
                "type": "boolean"
              },
              "maxAuthComplexity": {
                "type": "integer"
              }
            }
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "broker": {
                  "type": "object"
                },
                "score": {
                  "type": "integer"
                },
                "maxScore": {
                  "type": "integer"
                },
                "fits": {
                  "type": "boolean"
                },
                "failReasons": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "fittingBrokers": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "example": {
        "tool": "broker-api-comparator",
        "require_options": false,
        "require_futures": false,
        "require_crypto": false,
        "require_mcp": false,
        "require_free_tier": false,
        "max_auth_complexity": 3
      },
      "usage": "Client-side broker API comparator. Open https://aifinhub.io/broker-api-comparator/ and set filters for asset classes, MCP availability, free tier, and max auth complexity. Ranked side-by-side of Alpaca, IBKR, Tradier, Schwab, Robinhood."
    },
    {
      "slug": "calibration-dojo",
      "url": "https://aifinhub.io/engines/calibration-dojo.js",
      "types": "https://aifinhub.io/engines/calibration-dojo.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "session_length_questions": {
            "type": "integer"
          },
          "difficulty": {
            "type": "string",
            "enum": [
              "easy",
              "medium",
              "hard"
            ]
          },
          "domain_filter": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "session_length_questions",
          "difficulty",
          "domain_filter"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "brier_score": {
            "type": "number"
          },
          "reliability_curve": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "bucket_midpoint": {
                  "type": "number"
                },
                "observed_frequency": {
                  "type": "number"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          },
          "total_questions_answered": {
            "type": "integer"
          }
        }
      },
      "example": {
        "tool": "calibration_dojo",
        "session_length_questions": 20,
        "difficulty": "medium",
        "domain_filter": "general_knowledge"
      },
      "usage": "Client-side training game. Open https://aifinhub.io/calibration-dojo/ and answer binary forecasting questions. Brier score and reliability curve persist in localStorage."
    },
    {
      "slug": "cointegration-half-life-solver",
      "url": "https://aifinhub.io/engines/cointegration-half-life-solver.js",
      "types": "https://aifinhub.io/engines/cointegration-half-life-solver.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "lookback": {
            "type": "number"
          },
          "a": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "b": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "lookback",
          "a",
          "b"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "beta": {
            "type": "number"
          },
          "intercept": {
            "type": "number"
          },
          "half_life_days": {
            "type": "number"
          },
          "adf_p_value": {
            "type": "number"
          },
          "r_squared": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "cointegration-half-life-solver",
        "lookback": 252,
        "a": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "b": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/cointegration-half-life-solver/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "correlation-matrix-visualizer",
      "url": "https://aifinhub.io/engines/correlation-matrix-visualizer.js",
      "types": "https://aifinhub.io/engines/correlation-matrix-visualizer.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "name",
          "values"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "correlation_matrix": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          },
          "avg_abs_off_diagonal": {
            "type": "number"
          },
          "condition_number": {
            "type": "number"
          },
          "largest_eigenvalue": {
            "type": "number"
          },
          "explained_by_first_pc": {
            "type": "number"
          },
          "effective_n_strategies": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "correlation-matrix-visualizer",
        "name": "",
        "values": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "series": [
          {
            "name": "SPY",
            "values": [
              -0.012843,
              0.005562,
              -0.001332,
              0.001416,
              0.00507,
              0.006107,
              0.002444,
              0.004272,
              -0.002891,
              0.003178,
              0.00737,
              -0.004567,
              0.014355,
              0.001974,
              -0.016935,
              -0.010687,
              0.009715,
              -0.01316,
              0.002776,
              0.009778,
              -0.009737,
              0.008914,
              -0.01883,
              0.001544,
              0.003879,
              -0.002691,
              0.008995,
              0.005585,
              -0.014312,
              0.001967,
              -0.002495,
              -0.006723,
              -0.0054,
              -0.005222,
              0.008261,
              -0.015781,
              0.006483,
              0.017268,
              -0.00435,
              0.005738,
              0.014771,
              -0.005635,
              0.018411,
              0.003669,
              0.018039,
              0.009265,
              -0.010561,
              0.01211,
              -0.002028,
              0.01238,
              0.009775,
              0.000424,
              -0.000378,
              0.00086,
              0.012193,
              0.014755,
              -0.00371,
              0.00031,
              -0.002188,
              -0.002964,
              -0.001428,
              0.010406,
              0.01182,
              0.015166,
              0.001065,
              -0.014253,
              0.007842,
              -0.001464,
              0.00991,
              -0.008253,
              0.00308,
              -0.001735,
              -0.003622,
              0.000376,
              0.012419,
              0.008751,
              -0.001225,
              -0.002371,
              -0.006899,
              -0.001794,
              -0.004752,
              0.001034,
              0.017518,
              -0.00552,
              -0.004451,
              -0.010671,
              0.001204,
              0.000336,
              0.007898,
              -0.007922
            ]
          },
          {
            "name": "QQQ",
            "values": [
              -0.031916,
              0.002634,
              -0.011198,
              0.005715,
              0.018762,
              -0.004141,
              0.018624,
              0.014513,
              -0.017789,
              0.009618,
              -0.014868,
              -0.018661,
              0.034994,
              -0.001143,
              0.000166,
              -0.004298,
              0.022187,
              -0.026972,
              0.009172,
              0.01473,
              0.023033,
              -0.000811,
              -0.027468,
              -0.001253,
              0.003574,
              -0.000692,
              0.025005,
              -0.013477,
              0.008568,
              0.019203,
              0.008534,
              -0.022472,
              -0.003708,
              0.006383,
              0.008743,
              -0.029749,
              0.009631,
              0.018816,
              -0.015848,
              0.00575,
              0.017909,
              -0.00919,
              0.010624,
              -0.001175,
              0.028728,
              0.01482,
              -0.001177,
              0.021045,
              -0.008706,
              0.005515,
              0.016491,
              -0.005974,
              0.013348,
              0.027957,
              0.00799,
              0.014165,
              0.002433,
              0.003304,
              -0.007366,
              0.018022,
              0.010786,
              -0.008399,
              0.004896,
              0.040605,
              -0.009269,
              -0.008257,
              0.014355,
              0.013894,
              -0.012422,
              -0.016563,
              -0.006656,
              0.004864,
              0.006888,
              0.017675,
              0.006275,
              -0.002203,
              -0.016777,
              -0.004303,
              -0.013832,
              0.005731,
              -0.015763,
              -0.002646,
              0.001072,
              -0.014675,
              -0.010051,
              -0.01666,
              0.001137,
              -0.008157,
              -0.019128,
              -0.015845
            ]
          },
          {
            "name": "TLT",
            "values": [
              -0.00348,
              -0.009532,
              -0.009495,
              0.000817,
              -0.013736,
              -0.015894,
              0.004593,
              -0.001288,
              -0.001997,
              -0.001013,
              -0.003634,
              0.009398,
              0.00554,
              -0.006177,
              -0.001788,
              0.002708,
              0.002679,
              -0.001143,
              0.012816,
              -0.004805,
              -0.002266,
              -0.003514,
              0.000678,
              -0.007108,
              0.000749,
              -0.01357,
              -0.007189,
              -0.005792,
              0.004324,
              -0.004217,
              0.004665,
              0.002427,
              0.005592,
              -0.004194,
              -0.004193,
              0.003148,
              -0.000006,
              -0.009479,
              -0.002826,
              -0.008549,
              -0.006357,
              -0.003985,
              0.001047,
              0.008022,
              0.003591,
              0.00166,
              0.004496,
              -0.005119,
              0.00236,
              -0.004365,
              -0.003749,
              -0.002313,
              0.014693,
              -0.00415,
              0.001604,
              -0.006466,
              -0.001518,
              -0.003088,
              0.008285,
              -0.002019,
              -0.003034,
              -0.000748,
              -0.018276,
              -0.001174,
              0.002488,
              0.006478,
              -0.014903,
              0.007155,
              -0.002883,
              0.006239,
              0.009014,
              -0.004145,
              0.004603,
              -0.006128,
              -0.003621,
              0.001894,
              -0.002112,
              0.003447,
              0.004219,
              0.006163,
              -0.004697,
              -0.007648,
              -0.003381,
              0.01139,
              -0.010122,
              -0.001475,
              -0.008228,
              0.001127,
              -0.001511,
              0.009058
            ]
          },
          {
            "name": "GLD",
            "values": [
              -0.003609,
              -0.012319,
              -0.021546,
              -0.002169,
              -0.004775,
              0.005111,
              0.013753,
              -0.00704,
              -0.010183,
              -0.003458,
              0.001939,
              -0.000451,
              0.011093,
              -0.010069,
              0.005469,
              -0.000815,
              0.006727,
              -0.005372,
              0.007507,
              -0.007042,
              0.009549,
              0.005708,
              -0.005644,
              -0.016476,
              0.003559,
              0.013871,
              -0.008904,
              0.008505,
              -0.004197,
              0.006495,
              0.005826,
              0.008331,
              -0.008403,
              0.003081,
              -0.009843,
              -0.00735,
              -0.003255,
              -0.004908,
              0.003471,
              -0.009825,
              -0.007725,
              -0.006961,
              -0.000686,
              -0.004962,
              0.004599,
              0.002335,
              -0.009787,
              -0.005587,
              -0.007217,
              0.011802,
              -0.013529,
              -0.007763,
              -0.00092,
              -0.015819,
              -0.006159,
              0.007921,
              0.001881,
              0.005359,
              -0.004545,
              -0.002579,
              0.009985,
              -0.002308,
              -0.012648,
              -0.010327,
              -0.001297,
              -0.014548,
              -0.002061,
              -0.003556,
              0.006531,
              -0.004733,
              -0.002126,
              0.000976,
              -0.002299,
              0.000269,
              0.006541,
              -0.019175,
              0.001406,
              0.012067,
              0.006353,
              0.001284,
              -0.003715,
              -0.01589,
              0.005951,
              -0.008455,
              -0.008778,
              -0.00084,
              0.003219,
              0.012961,
              0.011134,
              -0.008317
            ]
          },
          {
            "name": "XLE",
            "values": [
              -0.002192,
              -0.018241,
              -0.012517,
              -0.002803,
              0.018884,
              0.020946,
              0.010029,
              -0.009388,
              -0.006646,
              -0.001194,
              -0.005981,
              -0.018604,
              0.024496,
              -0.022882,
              -0.016148,
              -0.007482,
              0.016719,
              -0.015994,
              0.002954,
              -0.003783,
              -0.028953,
              -0.018085,
              -0.013025,
              -0.009177,
              -0.009086,
              -0.02035,
              0.011058,
              0.010048,
              0.006068,
              -0.003638,
              -0.015797,
              0.030323,
              0.012459,
              0.001212,
              -0.005477,
              -0.01347,
              -0.011012,
              0.015869,
              0.018623,
              -0.002396,
              -0.018033,
              -0.003577,
              0.014222,
              0.025015,
              0.030849,
              0.015369,
              -0.013728,
              0.019073,
              -0.006631,
              -0.004999,
              -0.012875,
              0.008698,
              -0.027086,
              -0.002681,
              0.015284,
              -0.011607,
              -0.002139,
              -0.010654,
              0.003021,
              0.028778,
              -0.033415,
              0.006098,
              0.013032,
              -0.019776,
              -0.011667,
              -0.000766,
              0.017896,
              -0.011583,
              -0.00953,
              -0.014308,
              0.016854,
              -0.004918,
              0.009794,
              0.019875,
              -0.004763,
              0.025017,
              0.007828,
              0.003628,
              0.002251,
              -0.010632,
              -0.001618,
              -0.005849,
              -0.000072,
              -0.000858,
              -0.007604,
              -0.006899,
              0.038137,
              -0.011498,
              -0.000513,
              -0.009543
            ]
          }
        ]
      },
      "usage": "Client-side visualizer. Open https://aifinhub.io/correlation-matrix-visualizer/ and paste a wide-format returns CSV. Pearson correlation heatmap, eigenvalue spectrum, condition number, and effective-N render in-browser."
    },
    {
      "slug": "data-vendor-tco",
      "url": "https://aifinhub.io/engines/data-vendor-tco.js",
      "types": "https://aifinhub.io/engines/data-vendor-tco.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "needs_live": {
            "type": "boolean"
          },
          "needs_options": {
            "type": "boolean"
          },
          "needs_futures": {
            "type": "boolean"
          }
        },
        "required": [
          "tool",
          "needs_live",
          "needs_options",
          "needs_futures"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "per_vendor": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "vendor": {
                  "type": "string"
                },
                "annual_cost_usd": {
                  "type": "number"
                },
                "notes": {
                  "type": "string"
                }
              }
            }
          },
          "ranked_cheapest_first": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "example": {
        "tool": "data-vendor-tco",
        "needs_live": false,
        "needs_options": false,
        "needs_futures": false
      },
      "usage": "Client-side comparator. Open https://aifinhub.io/data-vendor-tco/ and enter universe, bars, and history needs. Computes annual cost per vendor in-browser."
    },
    {
      "slug": "deflated-sharpe-ratio",
      "url": "https://aifinhub.io/engines/deflated-sharpe-ratio.js",
      "types": "https://aifinhub.io/engines/deflated-sharpe-ratio.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "observed_sr": {
            "type": "number"
          },
          "n": {
            "type": "number"
          },
          "skew": {
            "type": "number"
          },
          "kurt": {
            "type": "number"
          },
          "num_trials": {
            "type": "number"
          },
          "periods_per_year": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "observed_sr",
          "n",
          "skew",
          "kurt",
          "num_trials",
          "periods_per_year"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "deflated_sr": {
            "type": "number"
          },
          "psr": {
            "type": "number"
          },
          "max_expected_sr": {
            "type": "number"
          },
          "z_statistic": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "deflated-sharpe-ratio",
        "observed_sr": 1.5,
        "n": 252,
        "skew": -0.4,
        "kurt": 3,
        "num_trials": 100,
        "periods_per_year": 252
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/deflated-sharpe-ratio/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "drawdown-recovery-markov",
      "url": "https://aifinhub.io/engines/drawdown-recovery-markov.js",
      "types": "https://aifinhub.io/engines/drawdown-recovery-markov.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "monthly_sharpe": {
            "type": "number"
          },
          "monthly_skew": {
            "type": "number"
          },
          "monthly_excess_kurt": {
            "type": "number"
          },
          "recovery_threshold": {
            "type": "number"
          },
          "paths": {
            "type": "number"
          },
          "max_months": {
            "type": "number"
          },
          "seed": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "monthly_sharpe",
          "monthly_skew",
          "monthly_excess_kurt",
          "recovery_threshold",
          "paths",
          "max_months",
          "seed"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "median": {
            "type": "number"
          },
          "p25": {
            "type": "number"
          },
          "p75": {
            "type": "number"
          },
          "p95": {
            "type": "number"
          },
          "pct_recovered_in_12_mo": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "drawdown-recovery-markov",
        "monthly_sharpe": 0.6,
        "monthly_skew": -0.3,
        "monthly_excess_kurt": 2,
        "recovery_threshold": 0.2,
        "paths": 2000,
        "max_months": 120,
        "seed": 42
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/drawdown-recovery-markov/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "earnings-call-summarization-cost",
      "url": "https://aifinhub.io/engines/earnings-call-summarization-cost.js",
      "types": "https://aifinhub.io/engines/earnings-call-summarization-cost.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "tickers_per_quarter": {
            "type": "number"
          },
          "avg_transcript_tokens": {
            "type": "number"
          },
          "avg_summary_tokens": {
            "type": "number"
          },
          "cache_hit_rate": {
            "type": "number"
          },
          "summarization_attempts": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "tickers_per_quarter",
          "avg_transcript_tokens",
          "avg_summary_tokens",
          "cache_hit_rate",
          "summarization_attempts"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "per_stock_per_quarter": {
            "type": "number"
          },
          "per_stock_per_year": {
            "type": "number"
          },
          "per_year_total": {
            "type": "number"
          },
          "ranked": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "earnings-call-summarization-cost",
        "tickers_per_quarter": 50,
        "avg_transcript_tokens": 15000,
        "avg_summary_tokens": 800,
        "cache_hit_rate": 0.5,
        "summarization_attempts": 1
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/earnings-call-summarization-cost/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "efficient-frontier-builder",
      "url": "https://aifinhub.io/engines/efficient-frontier-builder.js",
      "types": "https://aifinhub.io/engines/efficient-frontier-builder.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "returns": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "risk_free_annual": {
            "type": "number"
          },
          "steps": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "name",
          "returns",
          "risk_free_annual",
          "steps"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "min_variance_portfolio": {
            "type": "object",
            "properties": {
              "weights": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "expected_return_annual": {
                "type": "number"
              },
              "volatility_annual": {
                "type": "number"
              },
              "sharpe_annual": {
                "type": "number"
              }
            }
          },
          "tangency_portfolio": {
            "type": "object",
            "properties": {
              "weights": {
                "type": "array",
                "items": {
                  "type": "number"
                }
              },
              "expected_return_annual": {
                "type": "number"
              },
              "volatility_annual": {
                "type": "number"
              },
              "sharpe_annual": {
                "type": "number"
              }
            }
          },
          "frontier_points": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "expected_return_annual": {
                  "type": "number"
                },
                "volatility_annual": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "efficient-frontier-builder",
        "name": "",
        "returns": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "risk_free_annual": 0.04,
        "steps": 60,
        "assets": [
          {
            "name": "US Equities",
            "returns": [
              -0.026084,
              -0.009339,
              0.022423,
              0.024265,
              -0.00407,
              -0.032333,
              -0.00286,
              -0.013928,
              0.011828,
              0.020775,
              0.011517,
              0.006625,
              0.003477,
              0.00601,
              -0.008305,
              -0.01288,
              -0.013881,
              0.015359,
              0.011678,
              -0.016119,
              -0.003055,
              0.010377,
              -0.010538,
              -0.022867,
              0.001126,
              0.004041,
              -0.019115,
              -0.020235,
              0.016568,
              -0.005748,
              -0.011775,
              0.032105,
              0.002526,
              -0.000716,
              0.021207,
              0.005723,
              -0.002615,
              0.014075,
              0.017308,
              0.012199,
              0.014812,
              -0.024036,
              -0.007398,
              -0.009666,
              0.034898,
              -0.00267,
              -0.008985,
              0.013844,
              0.006004,
              -0.012636,
              0.00792,
              -0.001344,
              -0.033702,
              0.010719,
              -0.009275,
              -0.002554,
              -0.001274,
              -0.004542,
              0.009619,
              0.003683,
              0.00918,
              0.008551,
              0.003124,
              -0.04027,
              -0.004669,
              0.022377,
              0.027628,
              0.008361,
              0.000285,
              -0.010508,
              0.010258,
              -0.003251,
              0.015045,
              -0.007165,
              -0.004979,
              0.020983,
              0.008768,
              0.012502,
              0.000001,
              0.020556,
              -0.021939,
              0.018329,
              -0.001071,
              -0.004927,
              0.005116,
              -0.019207,
              -0.01628,
              -0.016438,
              -0.013193,
              0.011414,
              0.005628,
              -0.02627,
              -0.030247,
              0.015763,
              -0.006258,
              0.023799
            ]
          },
          {
            "name": "Intl Equities",
            "returns": [
              -0.01789,
              -0.016342,
              0.011449,
              0.013527,
              0.002128,
              -0.000148,
              -0.003973,
              -0.005458,
              0.004932,
              0.012879,
              0.00009,
              -0.004105,
              0.004944,
              0.005493,
              0.012637,
              0.016019,
              -0.011988,
              0.012194,
              0.008298,
              -0.00734,
              -0.002411,
              -0.01554,
              -0.003597,
              -0.026939,
              0.014074,
              0.001976,
              -0.001698,
              0.000053,
              -0.002408,
              0.015902,
              -0.007393,
              0.009357,
              -0.004008,
              0.001894,
              0.013792,
              -0.000589,
              0.00913,
              0.007222,
              0.003309,
              0.016436,
              0.006723,
              -0.009458,
              -0.000424,
              -0.036102,
              0.020203,
              -0.001423,
              0.006391,
              0.0019,
              -0.011855,
              -0.008596,
              -0.000051,
              -0.020171,
              -0.002348,
              0.008743,
              0.002821,
              0.013084,
              0.024959,
              0.005673,
              -0.01992,
              0.01727,
              0.007925,
              0.025043,
              0.019246,
              -0.018409,
              0.007818,
              -0.012283,
              0.005164,
              -0.000647,
              0.000651,
              0.016975,
              -0.016459,
              0.010047,
              0.011959,
              0.008598,
              0.008194,
              -0.020397,
              0.016703,
              0.000529,
              0.008447,
              0.008478,
              -0.025,
              0.011464,
              0.007115,
              -0.003013,
              -0.003825,
              -0.030416,
              -0.001629,
              -0.007607,
              -0.009038,
              -0.011127,
              0.004869,
              -0.014431,
              -0.003256,
              0.011009,
              -0.000182,
              0.030479
            ]
          },
          {
            "name": "Aggregate Bonds",
            "returns": [
              0.003383,
              -0.005414,
              -0.000468,
              0.003312,
              0.001429,
              0.005737,
              -0.005907,
              -0.000994,
              -0.002542,
              0.004991,
              -0.004859,
              0.00201,
              0.001642,
              0.000324,
              -0.003314,
              -0.002803,
              0.00019,
              -0.000551,
              -0.007022,
              -0.000428,
              -0.001826,
              0.005103,
              0.00709,
              -0.002827,
              -0.002037,
              0.00013,
              0.004804,
              0.005379,
              0.002667,
              -0.00091,
              -0.003758,
              -0.007383,
              0.001706,
              0.000864,
              0.005508,
              -0.007142,
              0.004368,
              -0.004738,
              -0.007385,
              0.001689,
              -0.004507,
              -0.000357,
              -0.000415,
              0.005325,
              0.004308,
              -0.000416,
              0.00277,
              -0.007876,
              0.001166,
              -0.006418,
              -0.005774,
              -0.001906,
              0.0091,
              -0.002563,
              -0.002665,
              -0.001689,
              -0.005174,
              -0.003989,
              0.00354,
              0.001622,
              0.001807,
              -0.008514,
              0.007035,
              0.010241,
              -0.001968,
              -0.000503,
              -0.005232,
              -0.000794,
              0.009881,
              -0.001286,
              0.006395,
              -0.002523,
              0.004048,
              0.00066,
              -0.003002,
              0.003417,
              -0.000537,
              -0.00362,
              0.003066,
              -0.005197,
              -0.00165,
              -0.005964,
              -0.001629,
              -0.007396,
              -0.003472,
              -0.001102,
              0.005919,
              -0.000683,
              0.001568,
              -0.000526,
              0.004182,
              -0.002288,
              0.008541,
              -0.002672,
              0.00223,
              -0.000601
            ]
          },
          {
            "name": "Commodities",
            "returns": [
              0.010693,
              -0.014358,
              0.001653,
              0.026449,
              0.036177,
              -0.024715,
              -0.01015,
              0.003149,
              -0.004191,
              0.008498,
              0.006201,
              0.006443,
              0.007429,
              0.001224,
              0.008414,
              0.004634,
              -0.026895,
              0.014692,
              -0.009684,
              0.003576,
              0.01979,
              -0.013675,
              0.006075,
              -0.006749,
              0.017848,
              -0.024232,
              0.006072,
              -0.00843,
              -0.005465,
              -0.010567,
              0.005011,
              -0.00479,
              -0.002642,
              -0.006506,
              0.005338,
              -0.015151,
              -0.010684,
              -0.02011,
              -0.017681,
              -0.01455,
              -0.014944,
              0.003162,
              0.015392,
              -0.015318,
              0.009544,
              -0.000737,
              -0.01655,
              -0.003292,
              0.013558,
              0.007808,
              -0.010701,
              0.006641,
              -0.014237,
              -0.022369,
              0.011828,
              -0.004968,
              0.008261,
              0.019919,
              0.00125,
              -0.009036,
              -0.003743,
              0.00962,
              -0.012011,
              0.025194,
              0.006848,
              0.037353,
              0.011328,
              -0.021955,
              -0.00327,
              -0.007504,
              -0.0303,
              0.008215,
              -0.000348,
              -0.012391,
              0.007949,
              -0.002983,
              -0.013971,
              -0.009568,
              -0.009759,
              -0.009918,
              -0.013714,
              -0.022232,
              -0.013597,
              0.016836,
              -0.003036,
              -0.004977,
              -0.024345,
              -0.024586,
              0.002842,
              0.014054,
              0.005342,
              -0.004593,
              -0.010622,
              -0.018985,
              0.012889,
              0.014289
            ]
          }
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/efficient-frontier-builder/ and paste a multi-asset returns CSV. Markowitz frontier + min-var + tangency portfolios render in-browser."
    },
    {
      "slug": "execution-simulator",
      "url": "https://aifinhub.io/engines/execution-simulator.js",
      "types": "https://aifinhub.io/engines/execution-simulator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "side": {
            "type": "string"
          },
          "order_size": {
            "type": "number"
          },
          "adv": {
            "type": "number"
          },
          "spread_bps": {
            "type": "number"
          },
          "daily_vol_pct": {
            "type": "number"
          },
          "participation_pct": {
            "type": "number"
          },
          "latency_ms": {
            "type": "number"
          },
          "latency_jitter_ms": {
            "type": "number"
          },
          "ref_price": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "side",
          "order_size",
          "adv",
          "spread_bps",
          "daily_vol_pct",
          "participation_pct",
          "latency_ms",
          "latency_jitter_ms",
          "ref_price"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "side": {
            "type": "string",
            "enum": [
              "buy",
              "sell"
            ]
          },
          "permanentBps": {
            "type": "number"
          },
          "temporaryBps": {
            "type": "number"
          },
          "halfSpreadBps": {
            "type": "number"
          },
          "totalBps": {
            "type": "number"
          },
          "totalDollars": {
            "type": "number"
          },
          "notionalUsd": {
            "type": "number"
          },
          "durationMinutes": {
            "type": "number"
          },
          "latencyDriftBps": {
            "type": "number"
          },
          "latencyDriftWorstBps": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "execution-simulator",
        "side": "buy",
        "order_size": 50000,
        "adv": 5000000,
        "spread_bps": 8,
        "daily_vol_pct": 2,
        "participation_pct": 10,
        "latency_ms": 150,
        "latency_jitter_ms": 40,
        "ref_price": 100
      },
      "usage": "Client-side execution simulator. Open https://aifinhub.io/execution-simulator/ and configure order size, ADV, spread, volatility, participation rate, and latency. Square-root permanent impact + linear temporary impact + latency drift are computed in-browser."
    },
    {
      "slug": "fallback-chain-simulator",
      "url": "https://aifinhub.io/engines/fallback-chain-simulator.js",
      "types": "https://aifinhub.io/engines/fallback-chain-simulator.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "provider_id": {
            "type": "string"
          },
          "model_id": {
            "type": "string"
          },
          "rate_429": {
            "type": "number"
          },
          "p99_latency_ms": {
            "type": "number"
          },
          "deadline_ms": {
            "type": "number"
          },
          "input_tokens": {
            "type": "number"
          },
          "output_tokens": {
            "type": "number"
          },
          "trials": {
            "type": "number"
          },
          "seed": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "provider_id",
          "model_id",
          "rate_429",
          "p99_latency_ms",
          "deadline_ms",
          "input_tokens",
          "output_tokens",
          "trials",
          "seed"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "models": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "hint": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "fallback_chain_simulator",
        "provider_id": "",
        "model_id": "",
        "rate_429": 0,
        "p99_latency_ms": 0,
        "deadline_ms": 0,
        "input_tokens": 0,
        "output_tokens": 0,
        "trials": 1000,
        "seed": 1
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/fallback-chain-simulator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/fallback-chain-simulator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "finance-mcp-directory",
      "url": "https://aifinhub.io/engines/finance-mcp-directory.js",
      "types": "https://aifinhub.io/engines/finance-mcp-directory.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "filter_by_venue": {
            "type": "string"
          },
          "filter_by_scope": {
            "type": "string"
          },
          "min_security_grade": {
            "type": "string",
            "enum": [
              "A",
              "B",
              "C",
              "D",
              "F"
            ]
          }
        },
        "required": [
          "tool"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "servers": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "venue": {
                  "type": "string"
                },
                "scopes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "transport": {
                  "type": "string"
                },
                "auth": {
                  "type": "string"
                },
                "idempotency": {
                  "type": "boolean"
                },
                "security_grade": {
                  "type": "string"
                },
                "source_url": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "finance_mcp_directory",
        "filter_by_venue": "alpaca",
        "filter_by_scope": "market_data",
        "min_security_grade": "B"
      },
      "usage": "Static directory. Open https://aifinhub.io/finance-mcp-directory/ to browse MCP servers by venue, scope, and security grade. Read-only; no inputs required for browsing."
    },
    {
      "slug": "financial-document-token-estimator",
      "url": "https://aifinhub.io/engines/financial-document-token-estimator.js",
      "types": "https://aifinhub.io/engines/financial-document-token-estimator.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "mode": {
            "type": "string"
          },
          "archetype_id": {
            "type": "string"
          },
          "output_tokens": {
            "type": "number"
          },
          "peers": {
            "type": "number"
          },
          "cache_hit_rate": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "mode",
          "archetype_id",
          "output_tokens",
          "peers",
          "cache_hit_rate"
        ]
      },
      "output_schema": {
        "type": "array",
        "description": "One row per model in the rate table.",
        "items": {
          "type": "object",
          "properties": {
            "model": {
              "type": "object"
            },
            "inputTokens": {
              "type": "integer"
            },
            "cacheReadTokens": {
              "type": "integer"
            },
            "outputTokens": {
              "type": "integer"
            },
            "onePassCost": {
              "type": "number"
            },
            "synthesisCost": {
              "type": "number"
            },
            "synthesisInputTokens": {
              "type": "integer"
            },
            "fitsInContext": {
              "type": "boolean"
            }
          }
        }
      },
      "example": {
        "tool": "financial_document_token_estimator",
        "mode": "archetype",
        "archetype_id": "10-k",
        "output_tokens": 1000,
        "peers": 0,
        "cache_hit_rate": 0
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/financial-document-token-estimator/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/financial-document-token-estimator.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "forecast-scoring-sandbox",
      "url": "https://aifinhub.io/engines/forecast-scoring-sandbox.js",
      "types": "https://aifinhub.io/engines/forecast-scoring-sandbox.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "n_bins": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "n_bins"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "brier": {
            "type": "object",
            "properties": {
              "brier": {
                "type": "number"
              },
              "reliability": {
                "type": "number"
              },
              "resolution": {
                "type": "number"
              },
              "uncertainty": {
                "type": "number"
              },
              "baseRate": {
                "type": "number"
              },
              "count": {
                "type": "integer"
              },
              "binsUsed": {
                "type": "integer"
              }
            }
          },
          "logLoss": {
            "type": "number"
          },
          "bins": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer"
                },
                "lower": {
                  "type": "number"
                },
                "upper": {
                  "type": "number"
                },
                "mid": {
                  "type": "number"
                },
                "meanPred": {
                  "type": "number"
                },
                "observedFreq": {
                  "type": "number"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "forecast_scoring_sandbox",
        "n_bins": 10,
        "forecasts": [
          {
            "prob": 0.6116,
            "outcome": 1
          },
          {
            "prob": 0.2413,
            "outcome": 0
          },
          {
            "prob": 0.5151,
            "outcome": 1
          },
          {
            "prob": 0.7806,
            "outcome": 1
          },
          {
            "prob": 0.7085,
            "outcome": 1
          },
          {
            "prob": 0.9285,
            "outcome": 1
          },
          {
            "prob": 0.4567,
            "outcome": 0
          },
          {
            "prob": 0.5556,
            "outcome": 1
          },
          {
            "prob": 0.0636,
            "outcome": 0
          },
          {
            "prob": 0.2901,
            "outcome": 0
          },
          {
            "prob": 0.3226,
            "outcome": 0
          },
          {
            "prob": 0.3229,
            "outcome": 1
          },
          {
            "prob": 0.5248,
            "outcome": 1
          },
          {
            "prob": 0.8689,
            "outcome": 1
          },
          {
            "prob": 0.1544,
            "outcome": 1
          },
          {
            "prob": 0.531,
            "outcome": 1
          },
          {
            "prob": 0.6319,
            "outcome": 1
          },
          {
            "prob": 0.7363,
            "outcome": 1
          },
          {
            "prob": 0.0861,
            "outcome": 0
          },
          {
            "prob": 0.3397,
            "outcome": 1
          },
          {
            "prob": 0.4632,
            "outcome": 0
          },
          {
            "prob": 0.7156,
            "outcome": 0
          },
          {
            "prob": 0.6064,
            "outcome": 1
          },
          {
            "prob": 0.4834,
            "outcome": 1
          },
          {
            "prob": 0.4628,
            "outcome": 0
          },
          {
            "prob": 0.6358,
            "outcome": 0
          },
          {
            "prob": 0.4015,
            "outcome": 0
          },
          {
            "prob": 0.5665,
            "outcome": 1
          },
          {
            "prob": 0.5495,
            "outcome": 0
          },
          {
            "prob": 0.8171,
            "outcome": 1
          },
          {
            "prob": 0.7797,
            "outcome": 1
          },
          {
            "prob": 0.6885,
            "outcome": 0
          },
          {
            "prob": 0.4069,
            "outcome": 1
          },
          {
            "prob": 0.6873,
            "outcome": 1
          },
          {
            "prob": 0.477,
            "outcome": 0
          },
          {
            "prob": 0.202,
            "outcome": 0
          },
          {
            "prob": 0.0545,
            "outcome": 0
          },
          {
            "prob": 0.83,
            "outcome": 1
          },
          {
            "prob": 0.644,
            "outcome": 1
          },
          {
            "prob": 0.8006,
            "outcome": 1
          },
          {
            "prob": 0.7005,
            "outcome": 1
          },
          {
            "prob": 0.3634,
            "outcome": 1
          },
          {
            "prob": 0.2142,
            "outcome": 0
          },
          {
            "prob": 0.439,
            "outcome": 1
          },
          {
            "prob": 0.4753,
            "outcome": 1
          },
          {
            "prob": 0.4507,
            "outcome": 0
          },
          {
            "prob": 0.5532,
            "outcome": 0
          },
          {
            "prob": 0.5839,
            "outcome": 1
          },
          {
            "prob": 0.3468,
            "outcome": 0
          },
          {
            "prob": 0.4419,
            "outcome": 1
          },
          {
            "prob": 0.4895,
            "outcome": 0
          },
          {
            "prob": 0.6959,
            "outcome": 1
          },
          {
            "prob": 0.4164,
            "outcome": 0
          },
          {
            "prob": 0.1464,
            "outcome": 0
          },
          {
            "prob": 0.6264,
            "outcome": 0
          },
          {
            "prob": 0.6437,
            "outcome": 0
          },
          {
            "prob": 0.097,
            "outcome": 0
          },
          {
            "prob": 0.1371,
            "outcome": 0
          },
          {
            "prob": 0.7351,
            "outcome": 1
          },
          {
            "prob": 0.2478,
            "outcome": 0
          },
          {
            "prob": 0.3712,
            "outcome": 1
          },
          {
            "prob": 0.086,
            "outcome": 0
          },
          {
            "prob": 0.1293,
            "outcome": 0
          },
          {
            "prob": 0.4576,
            "outcome": 0
          },
          {
            "prob": 0.9319,
            "outcome": 1
          },
          {
            "prob": 0.5308,
            "outcome": 1
          },
          {
            "prob": 0.1206,
            "outcome": 0
          },
          {
            "prob": 0.7578,
            "outcome": 1
          },
          {
            "prob": 0.3031,
            "outcome": 0
          },
          {
            "prob": 0.8722,
            "outcome": 1
          },
          {
            "prob": 0.4556,
            "outcome": 0
          },
          {
            "prob": 0.907,
            "outcome": 0
          },
          {
            "prob": 0.7428,
            "outcome": 0
          },
          {
            "prob": 0.8038,
            "outcome": 0
          },
          {
            "prob": 0.534,
            "outcome": 0
          },
          {
            "prob": 0.708,
            "outcome": 1
          },
          {
            "prob": 0.8266,
            "outcome": 1
          },
          {
            "prob": 0.6718,
            "outcome": 1
          },
          {
            "prob": 0.9079,
            "outcome": 1
          },
          {
            "prob": 0.5081,
            "outcome": 1
          },
          {
            "prob": 0.913,
            "outcome": 1
          },
          {
            "prob": 0.7671,
            "outcome": 1
          },
          {
            "prob": 0.5628,
            "outcome": 1
          },
          {
            "prob": 0.6314,
            "outcome": 0
          },
          {
            "prob": 0.7891,
            "outcome": 1
          },
          {
            "prob": 0.4478,
            "outcome": 0
          },
          {
            "prob": 0.7792,
            "outcome": 0
          },
          {
            "prob": 0.6429,
            "outcome": 1
          },
          {
            "prob": 0.2988,
            "outcome": 0
          },
          {
            "prob": 0.6932,
            "outcome": 0
          },
          {
            "prob": 0.2757,
            "outcome": 0
          },
          {
            "prob": 0.2425,
            "outcome": 0
          },
          {
            "prob": 0.2513,
            "outcome": 0
          },
          {
            "prob": 0.1898,
            "outcome": 1
          },
          {
            "prob": 0.534,
            "outcome": 1
          },
          {
            "prob": 0.8913,
            "outcome": 1
          },
          {
            "prob": 0.9111,
            "outcome": 0
          },
          {
            "prob": 0.2472,
            "outcome": 1
          },
          {
            "prob": 0.6036,
            "outcome": 1
          },
          {
            "prob": 0.0688,
            "outcome": 0
          },
          {
            "prob": 0.7694,
            "outcome": 1
          },
          {
            "prob": 0.5462,
            "outcome": 1
          },
          {
            "prob": 0.2897,
            "outcome": 1
          },
          {
            "prob": 0.6614,
            "outcome": 0
          },
          {
            "prob": 0.0963,
            "outcome": 0
          },
          {
            "prob": 0.118,
            "outcome": 0
          },
          {
            "prob": 0.9207,
            "outcome": 1
          },
          {
            "prob": 0.382,
            "outcome": 1
          },
          {
            "prob": 0.2754,
            "outcome": 0
          },
          {
            "prob": 0.8545,
            "outcome": 1
          },
          {
            "prob": 0.0979,
            "outcome": 0
          },
          {
            "prob": 0.8213,
            "outcome": 1
          },
          {
            "prob": 0.7177,
            "outcome": 1
          },
          {
            "prob": 0.9499,
            "outcome": 1
          },
          {
            "prob": 0.2261,
            "outcome": 0
          },
          {
            "prob": 0.1295,
            "outcome": 0
          },
          {
            "prob": 0.5591,
            "outcome": 1
          },
          {
            "prob": 0.7734,
            "outcome": 0
          },
          {
            "prob": 0.2254,
            "outcome": 1
          },
          {
            "prob": 0.8302,
            "outcome": 1
          },
          {
            "prob": 0.6368,
            "outcome": 1
          },
          {
            "prob": 0.4734,
            "outcome": 0
          },
          {
            "prob": 0.1246,
            "outcome": 0
          },
          {
            "prob": 0.3651,
            "outcome": 0
          },
          {
            "prob": 0.349,
            "outcome": 0
          },
          {
            "prob": 0.1132,
            "outcome": 0
          },
          {
            "prob": 0.5355,
            "outcome": 0
          },
          {
            "prob": 0.3697,
            "outcome": 0
          },
          {
            "prob": 0.1944,
            "outcome": 0
          },
          {
            "prob": 0.537,
            "outcome": 1
          },
          {
            "prob": 0.6084,
            "outcome": 0
          },
          {
            "prob": 0.4809,
            "outcome": 1
          },
          {
            "prob": 0.0937,
            "outcome": 1
          },
          {
            "prob": 0.468,
            "outcome": 0
          },
          {
            "prob": 0.7695,
            "outcome": 1
          },
          {
            "prob": 0.075,
            "outcome": 0
          },
          {
            "prob": 0.6921,
            "outcome": 0
          },
          {
            "prob": 0.6378,
            "outcome": 0
          },
          {
            "prob": 0.3382,
            "outcome": 0
          },
          {
            "prob": 0.738,
            "outcome": 0
          },
          {
            "prob": 0.443,
            "outcome": 0
          },
          {
            "prob": 0.5461,
            "outcome": 0
          },
          {
            "prob": 0.8276,
            "outcome": 0
          },
          {
            "prob": 0.4662,
            "outcome": 1
          },
          {
            "prob": 0.1732,
            "outcome": 0
          },
          {
            "prob": 0.4532,
            "outcome": 0
          },
          {
            "prob": 0.5243,
            "outcome": 0
          },
          {
            "prob": 0.2983,
            "outcome": 0
          },
          {
            "prob": 0.7292,
            "outcome": 0
          },
          {
            "prob": 0.5018,
            "outcome": 1
          },
          {
            "prob": 0.1507,
            "outcome": 1
          },
          {
            "prob": 0.8793,
            "outcome": 1
          },
          {
            "prob": 0.9044,
            "outcome": 0
          },
          {
            "prob": 0.572,
            "outcome": 1
          },
          {
            "prob": 0.7079,
            "outcome": 0
          },
          {
            "prob": 0.655,
            "outcome": 1
          },
          {
            "prob": 0.1483,
            "outcome": 0
          },
          {
            "prob": 0.8662,
            "outcome": 1
          },
          {
            "prob": 0.7007,
            "outcome": 0
          },
          {
            "prob": 0.198,
            "outcome": 0
          },
          {
            "prob": 0.6565,
            "outcome": 1
          },
          {
            "prob": 0.5257,
            "outcome": 0
          },
          {
            "prob": 0.8426,
            "outcome": 1
          },
          {
            "prob": 0.0648,
            "outcome": 0
          },
          {
            "prob": 0.7416,
            "outcome": 1
          },
          {
            "prob": 0.5789,
            "outcome": 1
          },
          {
            "prob": 0.943,
            "outcome": 1
          },
          {
            "prob": 0.2844,
            "outcome": 0
          },
          {
            "prob": 0.1861,
            "outcome": 0
          },
          {
            "prob": 0.4199,
            "outcome": 1
          },
          {
            "prob": 0.6753,
            "outcome": 1
          },
          {
            "prob": 0.5781,
            "outcome": 0
          },
          {
            "prob": 0.4762,
            "outcome": 1
          },
          {
            "prob": 0.4191,
            "outcome": 1
          },
          {
            "prob": 0.6264,
            "outcome": 0
          },
          {
            "prob": 0.4104,
            "outcome": 0
          },
          {
            "prob": 0.8167,
            "outcome": 1
          },
          {
            "prob": 0.765,
            "outcome": 0
          },
          {
            "prob": 0.9276,
            "outcome": 1
          },
          {
            "prob": 0.6712,
            "outcome": 1
          },
          {
            "prob": 0.7273,
            "outcome": 0
          },
          {
            "prob": 0.1366,
            "outcome": 0
          },
          {
            "prob": 0.1657,
            "outcome": 0
          },
          {
            "prob": 0.6893,
            "outcome": 0
          },
          {
            "prob": 0.22,
            "outcome": 1
          },
          {
            "prob": 0.5081,
            "outcome": 1
          },
          {
            "prob": 0.8771,
            "outcome": 1
          },
          {
            "prob": 0.477,
            "outcome": 1
          },
          {
            "prob": 0.2583,
            "outcome": 1
          },
          {
            "prob": 0.0835,
            "outcome": 0
          },
          {
            "prob": 0.9217,
            "outcome": 1
          },
          {
            "prob": 0.1064,
            "outcome": 0
          },
          {
            "prob": 0.797,
            "outcome": 1
          },
          {
            "prob": 0.4639,
            "outcome": 0
          },
          {
            "prob": 0.4387,
            "outcome": 0
          },
          {
            "prob": 0.7163,
            "outcome": 1
          },
          {
            "prob": 0.9031,
            "outcome": 1
          },
          {
            "prob": 0.1449,
            "outcome": 0
          },
          {
            "prob": 0.0834,
            "outcome": 0
          },
          {
            "prob": 0.8509,
            "outcome": 1
          }
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/forecast-scoring-sandbox/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/forecast-scoring-sandbox.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "ftc-vs-nlt-regulatory-cost",
      "url": "https://aifinhub.io/engines/ftc-vs-nlt-regulatory-cost.js",
      "types": "https://aifinhub.io/engines/ftc-vs-nlt-regulatory-cost.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "data_volume_tier": {
            "type": "number"
          },
          "processing_complexity": {
            "type": "number"
          },
          "hourly_rate": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "data_volume_tier",
          "processing_complexity",
          "hourly_rate"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "lowest_friction": {
            "type": "string"
          },
          "monthly_cost_usd": {
            "type": "number"
          },
          "annual_cost_usd": {
            "type": "number"
          },
          "ranked": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "ftc-vs-nlt-regulatory-cost",
        "data_volume_tier": 2,
        "processing_complexity": 1.5,
        "hourly_rate": 120
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/ftc-vs-nlt-regulatory-cost/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "hallucination-detector",
      "url": "https://aifinhub.io/engines/hallucination-detector.js",
      "types": "https://aifinhub.io/engines/hallucination-detector.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "output": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "source",
          "output"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "numeric_claims": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "claim": {
                  "type": "string"
                },
                "value": {
                  "type": "number"
                },
                "supported": {
                  "type": "boolean"
                },
                "source_quote": {
                  "type": "string"
                }
              }
            }
          },
          "unsupported_fraction": {
            "type": "number"
          },
          "verdict": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "hallucination-detector",
        "source": "",
        "output": ""
      },
      "usage": "Client-side analyzer. Open https://aifinhub.io/hallucination-detector/ and paste a source document + LLM output. Every numeric claim is cross-checked against the source in-browser."
    },
    {
      "slug": "kalshi-poly-arb",
      "url": "https://aifinhub.io/engines/kalshi-poly-arb.js",
      "types": "https://aifinhub.io/engines/kalshi-poly-arb.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "yes_ask": {
            "type": "number"
          },
          "no_ask": {
            "type": "number"
          },
          "fees_bps": {
            "type": "number"
          },
          "slippage_bps": {
            "type": "number"
          },
          "capital_usd": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "yes_ask",
          "no_ask",
          "fees_bps",
          "slippage_bps",
          "capital_usd"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "subject": {
                  "type": "string"
                },
                "kalshi_ticker": {
                  "type": "string"
                },
                "polymarket_id": {
                  "type": "string"
                },
                "edge_bps": {
                  "type": "number"
                },
                "resolution_risk_flags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "generated_at": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "kalshi-poly-arb",
        "yes_ask": 0,
        "no_ask": 0,
        "fees_bps": 100,
        "slippage_bps": 50,
        "capital_usd": 1000
      },
      "usage": "Static-data scanner. Open https://aifinhub.io/kalshi-poly-arb/ to browse daily-refreshed arb candidates across Kalshi + Polymarket. Data source: public markets APIs (daily refresh)."
    },
    {
      "slug": "kelly-sizer",
      "url": "https://aifinhub.io/engines/kelly-sizer.js",
      "types": "https://aifinhub.io/engines/kelly-sizer.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "win_rate": {
            "type": "number"
          },
          "win_loss_ratio": {
            "type": "number"
          },
          "max_cap_pct": {
            "type": "number"
          },
          "trades": {
            "type": "number"
          },
          "sims": {
            "type": "number"
          },
          "ruin_threshold_pct": {
            "type": "number"
          },
          "seed": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "win_rate",
          "win_loss_ratio",
          "max_cap_pct",
          "trades",
          "sims",
          "ruin_threshold_pct",
          "seed"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "full_kelly_fraction": {
            "type": "number"
          },
          "recommended_fraction": {
            "type": "number"
          },
          "recommended_bet_size": {
            "type": "number"
          },
          "expected_growth_rate": {
            "type": "number"
          },
          "monte_carlo": {
            "type": "object",
            "properties": {
              "median_final_bankroll": {
                "type": "number"
              },
              "p05_final_bankroll": {
                "type": "number"
              },
              "p95_final_bankroll": {
                "type": "number"
              },
              "max_drawdown_median": {
                "type": "number"
              },
              "ruin_probability": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "kelly-sizer",
        "win_rate": 0.55,
        "win_loss_ratio": 1.2,
        "max_cap_pct": 0.05,
        "trades": 250,
        "sims": 1000,
        "ruin_threshold_pct": 0.5,
        "seed": 42
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/kelly-sizer/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "llm-finance-error-taxonomy",
      "url": "https://aifinhub.io/engines/llm-finance-error-taxonomy.js",
      "types": "https://aifinhub.io/engines/llm-finance-error-taxonomy.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "ground_truth": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "text"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "flagged_modes_count": {
            "type": "integer"
          },
          "flags": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "llm_finance_error_taxonomy",
        "text": "XYZW shares trade at €120 with P/E = price * earnings.",
        "ground_truth": ""
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/llm-finance-error-taxonomy/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "model-selector-finance",
      "url": "https://aifinhub.io/engines/model-selector-finance.js",
      "types": "https://aifinhub.io/engines/model-selector-finance.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "task": {
            "type": "string"
          },
          "latency": {
            "type": "string"
          },
          "cost": {
            "type": "string"
          },
          "context": {
            "type": "string"
          },
          "quality": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "task",
          "latency",
          "cost",
          "context",
          "quality"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ranked": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "model": {
                  "type": "object"
                },
                "score": {
                  "type": "number"
                },
                "rationale": {
                  "type": "string"
                },
                "whyNot": {
                  "type": "string"
                },
                "axes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "axis": {
                        "type": "string"
                      },
                      "note": {
                        "type": "string"
                      },
                      "passed": {
                        "type": "boolean"
                      }
                    }
                  }
                },
                "monthlyBudgetEstimate": {
                  "type": "number"
                },
                "disqualified": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "model_selector_finance",
        "task": "extract",
        "latency": "sub_5s",
        "cost": "b50",
        "context": "k32_200k",
        "quality": "medium"
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/model-selector-finance/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/model-selector-finance.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "options-greeks-explorer",
      "url": "https://aifinhub.io/engines/options-greeks-explorer.js",
      "types": "https://aifinhub.io/engines/options-greeks-explorer.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "spot": {
            "type": "number"
          },
          "strike": {
            "type": "number"
          },
          "vol_pct": {
            "type": "number"
          },
          "days_to_exp": {
            "type": "number"
          },
          "rf_pct": {
            "type": "number"
          },
          "div_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "spot",
          "strike",
          "vol_pct",
          "days_to_exp",
          "rf_pct",
          "div_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "price": {
            "type": "number"
          },
          "delta": {
            "type": "number"
          },
          "gamma": {
            "type": "number"
          },
          "theta_per_day": {
            "type": "number"
          },
          "vega_per_1pct": {
            "type": "number"
          },
          "rho_per_1pct": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "options-greeks-explorer",
        "spot": 100,
        "strike": 105,
        "vol_pct": 25,
        "days_to_exp": 30,
        "rf_pct": 4.5,
        "div_pct": 0
      },
      "usage": "Client-side pricer. Open https://aifinhub.io/options-greeks-explorer/ and drag inputs to see delta/gamma/theta/vega/rho + payoff curve update live."
    },
    {
      "slug": "options-payoff-builder",
      "url": "https://aifinhub.io/engines/options-payoff-builder.js",
      "types": "https://aifinhub.io/engines/options-payoff-builder.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "side": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "strike": {
            "type": "number"
          },
          "contracts": {
            "type": "number"
          },
          "spot": {
            "type": "number"
          },
          "annual_vol": {
            "type": "number"
          },
          "days_to_expiry": {
            "type": "number"
          },
          "risk_free_rate": {
            "type": "number"
          },
          "dividend_yield": {
            "type": "number"
          },
          "grid_points": {
            "type": "number"
          },
          "spot_range_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "side",
          "type",
          "strike",
          "contracts",
          "spot",
          "annual_vol",
          "days_to_expiry",
          "risk_free_rate",
          "dividend_yield",
          "grid_points",
          "spot_range_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "net_premium": {
            "type": "number"
          },
          "max_profit": {
            "type": "number"
          },
          "max_loss": {
            "type": "number"
          },
          "break_evens": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "aggregated_greeks": {
            "type": "object",
            "properties": {
              "delta": {
                "type": "number"
              },
              "gamma": {
                "type": "number"
              },
              "theta_per_day": {
                "type": "number"
              },
              "vega_per_1pct": {
                "type": "number"
              },
              "rho_per_1pct": {
                "type": "number"
              }
            }
          }
        }
      },
      "example": {
        "tool": "options-payoff-builder",
        "side": "",
        "type": "",
        "strike": 0,
        "contracts": 0,
        "spot": 100,
        "annual_vol": 0.25,
        "days_to_expiry": 30,
        "risk_free_rate": 0.045,
        "dividend_yield": 0,
        "grid_points": 121,
        "spot_range_pct": 0.4,
        "legs": [
          {
            "side": "long",
            "type": "call",
            "strike": 105,
            "contracts": 1
          },
          {
            "side": "short",
            "type": "call",
            "strike": 115,
            "contracts": 1
          }
        ]
      },
      "usage": "Client-side builder. Open https://aifinhub.io/options-payoff-builder/, configure 1–4 legs, see payoff diagram + break-evens + aggregated Greeks."
    },
    {
      "slug": "order-book-replay",
      "url": "https://aifinhub.io/engines/order-book-replay.js",
      "types": "https://aifinhub.io/engines/order-book-replay.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "size": {
            "type": "number"
          },
          "depth_bps": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "price",
          "size",
          "depth_bps"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "animation_ready": {
            "type": "boolean"
          },
          "detected_event_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tick_count": {
            "type": "integer"
          },
          "duration_seconds": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "order-book-replay",
        "price": 0,
        "size": 0,
        "depth_bps": 10,
        "snapshots": [
          {
            "t": 0,
            "bids": [
              {
                "price": 100.01,
                "size": 200
              },
              {
                "price": 100,
                "size": 350
              },
              {
                "price": 99.99,
                "size": 500
              },
              {
                "price": 99.98,
                "size": 650
              },
              {
                "price": 99.97,
                "size": 800
              }
            ],
            "asks": [
              {
                "price": 100.03,
                "size": 180
              },
              {
                "price": 100.04,
                "size": 320
              },
              {
                "price": 100.05,
                "size": 460
              },
              {
                "price": 100.06,
                "size": 600
              },
              {
                "price": 100.07,
                "size": 740
              }
            ]
          },
          {
            "t": 500,
            "bids": [
              {
                "price": 100.01,
                "size": 250
              },
              {
                "price": 100,
                "size": 400
              },
              {
                "price": 99.99,
                "size": 550
              },
              {
                "price": 99.98,
                "size": 700
              },
              {
                "price": 99.97,
                "size": 850
              }
            ],
            "asks": [
              {
                "price": 100.03,
                "size": 220
              },
              {
                "price": 100.04,
                "size": 360
              },
              {
                "price": 100.05,
                "size": 500
              },
              {
                "price": 100.06,
                "size": 640
              },
              {
                "price": 100.07,
                "size": 780
              }
            ]
          },
          {
            "t": 1000,
            "bids": [
              {
                "price": 100.03,
                "size": 300
              },
              {
                "price": 100.02,
                "size": 450
              },
              {
                "price": 100.01,
                "size": 600
              },
              {
                "price": 100,
                "size": 750
              },
              {
                "price": 99.99,
                "size": 900
              }
            ],
            "asks": [
              {
                "price": 100.05,
                "size": 260
              },
              {
                "price": 100.06,
                "size": 400
              },
              {
                "price": 100.07,
                "size": 540
              },
              {
                "price": 100.08,
                "size": 680
              },
              {
                "price": 100.09,
                "size": 820
              }
            ]
          },
          {
            "t": 1500,
            "bids": [
              {
                "price": 100.03,
                "size": 200
              },
              {
                "price": 100.02,
                "size": 350
              },
              {
                "price": 100.01,
                "size": 500
              },
              {
                "price": 100,
                "size": 650
              },
              {
                "price": 99.99,
                "size": 800
              }
            ],
            "asks": [
              {
                "price": 100.05,
                "size": 300
              },
              {
                "price": 100.06,
                "size": 440
              },
              {
                "price": 100.07,
                "size": 580
              },
              {
                "price": 100.08,
                "size": 720
              },
              {
                "price": 100.09,
                "size": 860
              }
            ]
          },
          {
            "t": 2000,
            "bids": [
              {
                "price": 100.03,
                "size": 250
              },
              {
                "price": 100.02,
                "size": 400
              },
              {
                "price": 100.01,
                "size": 550
              },
              {
                "price": 100,
                "size": 700
              },
              {
                "price": 99.99,
                "size": 850
              }
            ],
            "asks": [
              {
                "price": 100.05,
                "size": 180
              },
              {
                "price": 100.06,
                "size": 320
              },
              {
                "price": 100.07,
                "size": 460
              },
              {
                "price": 100.08,
                "size": 600
              },
              {
                "price": 100.09,
                "size": 740
              }
            ]
          },
          {
            "t": 2500,
            "bids": [
              {
                "price": 100.04,
                "size": 300
              },
              {
                "price": 100.03,
                "size": 450
              },
              {
                "price": 100.02,
                "size": 600
              },
              {
                "price": 100.01,
                "size": 750
              },
              {
                "price": 100,
                "size": 900
              }
            ],
            "asks": [
              {
                "price": 100.06,
                "size": 220
              },
              {
                "price": 100.07,
                "size": 360
              },
              {
                "price": 100.08,
                "size": 500
              },
              {
                "price": 100.09,
                "size": 640
              },
              {
                "price": 100.1,
                "size": 780
              }
            ]
          },
          {
            "t": 3000,
            "bids": [
              {
                "price": 100.05,
                "size": 200
              },
              {
                "price": 100.04,
                "size": 350
              },
              {
                "price": 100.03,
                "size": 500
              },
              {
                "price": 100.02,
                "size": 650
              },
              {
                "price": 100.01,
                "size": 800
              }
            ],
            "asks": [
              {
                "price": 100.07,
                "size": 260
              },
              {
                "price": 100.08,
                "size": 400
              },
              {
                "price": 100.09,
                "size": 540
              },
              {
                "price": 100.1,
                "size": 680
              },
              {
                "price": 100.11,
                "size": 820
              }
            ]
          },
          {
            "t": 3500,
            "bids": [
              {
                "price": 100.06,
                "size": 250
              },
              {
                "price": 100.05,
                "size": 400
              },
              {
                "price": 100.04,
                "size": 550
              },
              {
                "price": 100.03,
                "size": 700
              },
              {
                "price": 100.02,
                "size": 850
              }
            ],
            "asks": [
              {
                "price": 100.08,
                "size": 300
              },
              {
                "price": 100.09,
                "size": 440
              },
              {
                "price": 100.1,
                "size": 580
              },
              {
                "price": 100.11,
                "size": 720
              },
              {
                "price": 100.12,
                "size": 860
              }
            ]
          },
          {
            "t": 4000,
            "bids": [
              {
                "price": 100.05,
                "size": 300
              },
              {
                "price": 100.04,
                "size": 450
              },
              {
                "price": 100.03,
                "size": 600
              },
              {
                "price": 100.02,
                "size": 750
              },
              {
                "price": 100.01,
                "size": 900
              }
            ],
            "asks": [
              {
                "price": 100.07,
                "size": 180
              },
              {
                "price": 100.08,
                "size": 320
              },
              {
                "price": 100.09,
                "size": 460
              },
              {
                "price": 100.1,
                "size": 600
              },
              {
                "price": 100.11,
                "size": 740
              }
            ]
          },
          {
            "t": 4500,
            "bids": [
              {
                "price": 100.06,
                "size": 200
              },
              {
                "price": 100.05,
                "size": 350
              },
              {
                "price": 100.04,
                "size": 500
              },
              {
                "price": 100.03,
                "size": 650
              },
              {
                "price": 100.02,
                "size": 800
              }
            ],
            "asks": [
              {
                "price": 100.08,
                "size": 220
              },
              {
                "price": 100.09,
                "size": 360
              },
              {
                "price": 100.1,
                "size": 500
              },
              {
                "price": 100.11,
                "size": 640
              },
              {
                "price": 100.12,
                "size": 780
              }
            ]
          },
          {
            "t": 5000,
            "bids": [
              {
                "price": 100.06,
                "size": 250
              },
              {
                "price": 100.05,
                "size": 400
              },
              {
                "price": 100.04,
                "size": 550
              },
              {
                "price": 100.03,
                "size": 700
              },
              {
                "price": 100.02,
                "size": 850
              }
            ],
            "asks": [
              {
                "price": 100.08,
                "size": 260
              },
              {
                "price": 100.09,
                "size": 400
              },
              {
                "price": 100.1,
                "size": 540
              },
              {
                "price": 100.11,
                "size": 680
              },
              {
                "price": 100.12,
                "size": 820
              }
            ]
          },
          {
            "t": 5500,
            "bids": [
              {
                "price": 100.04,
                "size": 300
              },
              {
                "price": 100.03,
                "size": 450
              },
              {
                "price": 100.02,
                "size": 600
              },
              {
                "price": 100.01,
                "size": 750
              },
              {
                "price": 100,
                "size": 900
              }
            ],
            "asks": [
              {
                "price": 100.06,
                "size": 300
              },
              {
                "price": 100.07,
                "size": 440
              },
              {
                "price": 100.08,
                "size": 580
              },
              {
                "price": 100.09,
                "size": 720
              },
              {
                "price": 100.1,
                "size": 860
              }
            ]
          }
        ]
      },
      "usage": "Client-side visualizer. Open https://aifinhub.io/order-book-replay/ and drop a Level-2 CSV. The book reconstructs tick-by-tick in the browser. No upload, no backend."
    },
    {
      "slug": "pair-trading-tester",
      "url": "https://aifinhub.io/engines/pair-trading-tester.js",
      "types": "https://aifinhub.io/engines/pair-trading-tester.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "a": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "b": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "lags": {
            "type": "number"
          },
          "z_window": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "a",
          "b",
          "lags",
          "z_window"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "hedge_ratio_beta": {
            "type": "number"
          },
          "ols_r2": {
            "type": "number"
          },
          "adf_t_stat": {
            "type": "number"
          },
          "adf_p_value_band": {
            "type": "string"
          },
          "is_stationary_5pct": {
            "type": "boolean"
          },
          "ou_half_life_days": {
            "type": "number"
          },
          "entry_events": {
            "type": "integer"
          },
          "exit_events": {
            "type": "integer"
          },
          "verdict": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "pair-trading-tester",
        "a": [
          100,
          98.5874,
          97.8259,
          98.015,
          97.6033,
          97.5598,
          97.4391,
          95.4593,
          96.8625,
          97.6213,
          96.884,
          97.9378,
          96.7864,
          96.052,
          96.7539,
          97.0884,
          96.2998,
          96.8609,
          96.4113,
          94.7817,
          94.0908,
          95.2396,
          94.912,
          95.9782,
          94.1185,
          94.1316,
          95.6987,
          94.2103,
          94.2116,
          95.9806,
          95.3522,
          94.9435,
          93.114,
          94.4138,
          93.5007,
          92.7732,
          93.5529,
          92.4435,
          91.7068,
          91.0294,
          89.8526,
          90.4241,
          89.7977,
          88.3319,
          90.5591,
          91.0151,
          90.6968,
          90.7679,
          89.7283,
          90.0064,
          90.209,
          92.9212,
          92.3561,
          91.9658,
          89.6928,
          89.0712,
          89.7689,
          89.4756,
          89.6975,
          89.6835,
          89.6376,
          90.0946,
          90.1572,
          90.8464,
          93.7497,
          92.1072,
          93.1928,
          94.5939,
          91.9662,
          94.5231,
          95.2861,
          95.7917,
          95.5093,
          94.1203,
          93.5651,
          92.9154,
          94.495,
          94.4734,
          94.3377,
          95.4258
        ],
        "b": [
          151.141,
          149.3602,
          148.5811,
          149.3006,
          149.0083,
          149.3586,
          148.3213,
          145.2459,
          146.8073,
          148.1455,
          147.1322,
          148.4226,
          147.5568,
          146.0558,
          145.4098,
          146.5035,
          146.4691,
          147.5213,
          145.983,
          144.2597,
          142.6992,
          144.0918,
          143.485,
          145.0805,
          142.3363,
          141.9733,
          144.8319,
          143.6638,
          144.3719,
          147.3897,
          146.2313,
          146.8656,
          144.1777,
          145.6877,
          143.6726,
          142.1663,
          144.0035,
          140.4674,
          140.1333,
          139.8269,
          138.2176,
          137.391,
          137.1818,
          134.8946,
          138.3316,
          138.8633,
          138.7863,
          139.4953,
          137.8307,
          138.0143,
          138.1207,
          141.8669,
          140.5081,
          139.9323,
          136.2529,
          135.6546,
          137.3739,
          137.2101,
          138.5398,
          139.4239,
          138.4136,
          138.4121,
          138.646,
          137.7651,
          142.8305,
          140.5458,
          142.8138,
          145.3761,
          141.5616,
          144.592,
          146.166,
          146.9859,
          146.5194,
          144.7299,
          144.0425,
          142.9379,
          144.9803,
          145.411,
          144.2937,
          146.1881
        ],
        "lags": 1,
        "z_window": 30
      },
      "usage": "Client-side tester. Open https://aifinhub.io/pair-trading-tester/ and paste a two-asset price CSV. Engle-Granger + ADF + OU half-life + z-score all in-browser."
    },
    {
      "slug": "position-sizing-edge-variance",
      "url": "https://aifinhub.io/engines/position-sizing-edge-variance.js",
      "types": "https://aifinhub.io/engines/position-sizing-edge-variance.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "edge_mean": {
            "type": "number"
          },
          "edge_stddev": {
            "type": "number"
          },
          "outcome_variance": {
            "type": "number"
          },
          "kelly_fraction": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "edge_mean",
          "edge_stddev",
          "outcome_variance",
          "kelly_fraction"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "deterministic_kelly": {
            "type": "number"
          },
          "bayesian_kelly": {
            "type": "number"
          },
          "conservative_kelly": {
            "type": "number"
          },
          "cvar_5": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "position-sizing-edge-variance",
        "edge_mean": 0.04,
        "edge_stddev": 0.02,
        "outcome_variance": 0.04,
        "kelly_fraction": 0.25
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/position-sizing-edge-variance/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "price-blind-auditor",
      "url": "https://aifinhub.io/engines/price-blind-auditor.js",
      "types": "https://aifinhub.io/engines/price-blind-auditor.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "text"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "line_count": {
            "type": "integer"
          },
          "leakage_score": {
            "type": "number"
          },
          "verdict": {
            "type": "string"
          },
          "hits": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "rule_id": {
                  "type": "string"
                },
                "severity": {
                  "type": "string"
                },
                "line": {
                  "type": "integer"
                },
                "match": {
                  "type": "string"
                },
                "why": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "price-blind-auditor",
        "text": ""
      },
      "usage": "Client-side auditor. Open https://aifinhub.io/price-blind-auditor/ and paste a research prompt bundle. Every line is scanned for price/direction/position-state leakage; findings render in-browser."
    },
    {
      "slug": "prompt-injection-tester",
      "url": "https://aifinhub.io/engines/prompt-injection-tester.js",
      "types": "https://aifinhub.io/engines/prompt-injection-tester.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "attack_id": {
            "type": "string"
          },
          "output": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "attack_id",
          "output"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "total_attacks": {
            "type": "integer"
          },
          "robustness_percent": {
            "type": "number"
          },
          "success_count": {
            "type": "integer"
          },
          "partial_count": {
            "type": "integer"
          },
          "refused_count": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "attack_id": {
                  "type": "string"
                },
                "category": {
                  "type": "string"
                },
                "outcome": {
                  "type": "string",
                  "enum": [
                    "success",
                    "partial",
                    "refused"
                  ]
                },
                "latency_ms": {
                  "type": "integer"
                },
                "output": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "example": {
        "tool": "prompt-injection-tester",
        "attack_id": "",
        "output": ""
      },
      "usage": "BYO-key playground. Open https://aifinhub.io/prompt-injection-tester/, pick provider + model, paste target system prompt + API key. Runs 24 documented injection attacks client-side and classifies each outcome."
    },
    {
      "slug": "prompt-regression-tester",
      "url": "https://aifinhub.io/engines/prompt-regression-tester.js",
      "types": "https://aifinhub.io/engines/prompt-regression-tester.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "baseline": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "output": {
            "type": "string"
          },
          "n": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "baseline",
          "label",
          "output",
          "n"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "per_model": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "model": {
                  "type": "string"
                },
                "outputs": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "drift_score": {
                  "type": "number"
                },
                "mean_length": {
                  "type": "number"
                }
              }
            }
          },
          "pairwise_agreement": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "prompt-regression-tester",
        "baseline": "",
        "label": "",
        "output": "",
        "n": 3
      },
      "usage": "Client-side playground. Open https://aifinhub.io/prompt-regression-tester/ to run one prompt across Claude/GPT/Gemini using your own keys. Keys stay in the browser."
    },
    {
      "slug": "quant-interview-question-generator",
      "url": "https://aifinhub.io/engines/quant-interview-question-generator.js",
      "types": "https://aifinhub.io/engines/quant-interview-question-generator.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "difficulty": {
            "type": "string"
          },
          "n": {
            "type": "number"
          },
          "seed": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "difficulty",
          "n",
          "seed"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "questions": {
            "type": "array"
          },
          "count": {
            "type": "integer"
          }
        }
      },
      "example": {
        "tool": "quant-interview-question-generator",
        "difficulty": "medium",
        "n": 5,
        "seed": 7
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/quant-interview-question-generator/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "returns-distribution-analyzer",
      "url": "https://aifinhub.io/engines/returns-distribution-analyzer.js",
      "types": "https://aifinhub.io/engines/returns-distribution-analyzer.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "bins": {
            "type": "number"
          },
          "returns": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "bins",
          "returns"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "mean": {
            "type": "number"
          },
          "stdev": {
            "type": "number"
          },
          "median": {
            "type": "number"
          },
          "skewness": {
            "type": "number"
          },
          "excess_kurtosis": {
            "type": "number"
          },
          "jarque_bera_stat": {
            "type": "number"
          },
          "jarque_bera_p_value": {
            "type": "number"
          },
          "negative_tail_mass": {
            "type": "number"
          },
          "positive_tail_mass": {
            "type": "number"
          },
          "tail_excess_ratio": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "returns-distribution-analyzer",
        "bins": 30,
        "returns": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ]
      },
      "usage": "Client-side analyzer. Open https://aifinhub.io/returns-distribution-analyzer/ and paste a returns CSV. Histogram, normal QQ plot, Jarque-Bera, and 3-sigma tail-mass diagnostics render in-browser."
    },
    {
      "slug": "risk-adjusted-returns",
      "url": "https://aifinhub.io/engines/risk-adjusted-returns.js",
      "types": "https://aifinhub.io/engines/risk-adjusted-returns.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "risk_free_annual": {
            "type": "number"
          },
          "returns": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "benchmark": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "risk_free_annual",
          "returns",
          "benchmark"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "sharpe_ratio": {
            "type": "number"
          },
          "sortino_ratio": {
            "type": "number"
          },
          "calmar_ratio": {
            "type": "number"
          },
          "omega_ratio": {
            "type": "number"
          },
          "max_drawdown": {
            "type": "number"
          },
          "alpha_annual": {
            "type": "number"
          },
          "beta": {
            "type": "number"
          },
          "information_ratio": {
            "type": "number"
          },
          "tracking_error_annual": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "risk-adjusted-returns",
        "risk_free_annual": 0,
        "returns": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "benchmark": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/risk-adjusted-returns/ and paste a returns CSV. Sharpe/Sortino/Calmar/Omega/alpha/beta/IR are computed in-browser."
    },
    {
      "slug": "sec-filing-chunk-optimizer",
      "url": "https://aifinhub.io/engines/sec-filing-chunk-optimizer.js",
      "types": "https://aifinhub.io/engines/sec-filing-chunk-optimizer.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "archetype_id": {
            "type": "string"
          },
          "chunk_size": {
            "type": "number"
          },
          "overlap_pct": {
            "type": "number"
          },
          "strategy": {
            "type": "string"
          },
          "embedding_model_id": {
            "type": "string"
          },
          "query_reembed_count": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "archetype_id",
          "chunk_size",
          "overlap_pct",
          "strategy",
          "embedding_model_id",
          "query_reembed_count"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "archetype": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "approxTokens": {
                "type": "integer"
              }
            }
          },
          "embedding": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "usdPerMToken": {
                "type": "number"
              }
            }
          },
          "strategy": {
            "type": "string",
            "enum": [
              "structural",
              "recursive",
              "semantic"
            ]
          },
          "chunkCount": {
            "type": "integer"
          },
          "avgTokens": {
            "type": "number"
          },
          "minTokens": {
            "type": "integer"
          },
          "maxTokens": {
            "type": "integer"
          },
          "tokensIngested": {
            "type": "integer"
          },
          "embeddingCostOnce": {
            "type": "number"
          },
          "embeddingCostPer100Queries": {
            "type": "number"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "strategyNotes": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "sec_filing_chunk_optimizer",
        "archetype_id": "10k-body",
        "chunk_size": 1024,
        "overlap_pct": 0.1,
        "strategy": "structural",
        "embedding_model_id": "openai-embed-3-small",
        "query_reembed_count": 100
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/sec-filing-chunk-optimizer/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/sec-filing-chunk-optimizer.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "sharpe-vs-sortino-calculator",
      "url": "https://aifinhub.io/engines/sharpe-vs-sortino-calculator.js",
      "types": "https://aifinhub.io/engines/sharpe-vs-sortino-calculator.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "rf_annual": {
            "type": "number"
          },
          "returns": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "rf_annual",
          "returns"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "sharpe": {
            "type": "number"
          },
          "sortino": {
            "type": "number"
          },
          "calmar": {
            "type": "number"
          },
          "omega": {
            "type": "number"
          },
          "max_drawdown": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "sharpe-vs-sortino-calculator",
        "rf_annual": 0.04,
        "returns": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/sharpe-vs-sortino-calculator/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "statistical-arbitrage-capacity",
      "url": "https://aifinhub.io/engines/statistical-arbitrage-capacity.js",
      "types": "https://aifinhub.io/engines/statistical-arbitrage-capacity.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "signal_half_life_days": {
            "type": "number"
          },
          "daily_volume_usd": {
            "type": "number"
          },
          "slippage_bps": {
            "type": "number"
          },
          "fee_bps": {
            "type": "number"
          },
          "target_sharpe": {
            "type": "number"
          },
          "alpha_per_trade_bps": {
            "type": "number"
          },
          "impact_k": {
            "type": "number"
          },
          "trading_days": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "signal_half_life_days",
          "daily_volume_usd",
          "slippage_bps",
          "fee_bps",
          "target_sharpe",
          "alpha_per_trade_bps",
          "impact_k",
          "trading_days"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "max_aum": {
            "type": "number"
          },
          "practical_aum": {
            "type": "number"
          },
          "trades_per_year": {
            "type": "number"
          },
          "capacity_curve": {
            "type": "array"
          }
        }
      },
      "example": {
        "tool": "statistical-arbitrage-capacity",
        "signal_half_life_days": 5,
        "daily_volume_usd": 50000000,
        "slippage_bps": 3,
        "fee_bps": 1,
        "target_sharpe": 2,
        "alpha_per_trade_bps": 12,
        "impact_k": 0.2,
        "trading_days": 252
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/statistical-arbitrage-capacity/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "structured-schema-validator-finance",
      "url": "https://aifinhub.io/engines/structured-schema-validator-finance.js",
      "types": "https://aifinhub.io/engines/structured-schema-validator-finance.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "schema_id": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "schema_id"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "pass": {
            "type": "boolean"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "ok",
                    "missing",
                    "type_mismatch",
                    "enum_mismatch",
                    "out_of_range",
                    "too_short"
                  ]
                },
                "message": {
                  "type": "string"
                }
              }
            }
          },
          "sanityFlags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "parseError": {
            "type": "string"
          }
        }
      },
      "example": {
        "tool": "structured_schema_validator_finance",
        "schema_id": "trade_decision",
        "json": {
          "ticker": "AAPL",
          "side": "long",
          "size_shares": 250,
          "rationale": "Earnings beat confirmed the margin-expansion thesis; sized for 1% portfolio risk against the declared stop.",
          "stop_loss": 178.5,
          "take_profit": 212
        }
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/structured-schema-validator-finance/ and fill in the inputs; results render in-browser. Also importable as ES module from https://aifinhub.io/engines/structured-schema-validator-finance.js — call compute(input) with the JSON shape below."
    },
    {
      "slug": "synthetic-market-data-generator",
      "url": "https://aifinhub.io/engines/synthetic-market-data-generator.js",
      "types": "https://aifinhub.io/engines/synthetic-market-data-generator.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "seed": {
            "type": "number"
          },
          "s0": {
            "type": "number"
          },
          "drift": {
            "type": "number"
          },
          "vol": {
            "type": "number"
          },
          "days": {
            "type": "number"
          },
          "trading_days_per_year": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "seed",
          "s0",
          "drift",
          "vol",
          "days",
          "trading_days_per_year"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "gbm",
              "garch",
              "regime",
              "pair"
            ]
          },
          "prices": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Single-series result (gbm / garch / regime)."
          },
          "stats": {
            "type": "object",
            "properties": {
              "annReturn": {
                "type": "number"
              },
              "annVol": {
                "type": "number"
              },
              "sharpe": {
                "type": "number"
              },
              "maxDrawdown": {
                "type": "number"
              }
            }
          },
          "pricesA": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Pair result, leg A."
          },
          "pricesB": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Pair result, leg B."
          },
          "statsA": {
            "type": "object"
          },
          "statsB": {
            "type": "object"
          }
        }
      },
      "example": {
        "tool": "synthetic-market-data-generator",
        "seed": 42,
        "s0": 100,
        "drift": 8,
        "vol": 20,
        "days": 252,
        "trading_days_per_year": 252
      },
      "usage": "Client-side synthetic price series generator. Open https://aifinhub.io/synthetic-market-data-generator/ and select a model (GBM, GARCH(1,1), regime-switching, or Gaussian-copula pairs). Set parameters + optional seed, download CSV or JSON."
    },
    {
      "slug": "token-cost-optimizer",
      "url": "https://aifinhub.io/engines/token-cost-optimizer.js",
      "types": "https://aifinhub.io/engines/token-cost-optimizer.d.ts",
      "exports": [
        "compute"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "input_tokens_per_call": {
            "type": "number"
          },
          "output_tokens_per_call": {
            "type": "number"
          },
          "calls_per_idea": {
            "type": "number"
          },
          "retry_rate": {
            "type": "number"
          },
          "ideas_per_day": {
            "type": "number"
          },
          "validation_rate": {
            "type": "number"
          },
          "cache_hit_rate": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "input_tokens_per_call",
          "output_tokens_per_call",
          "calls_per_idea",
          "retry_rate",
          "ideas_per_day",
          "validation_rate",
          "cache_hit_rate"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "cost_per_idea_usd": {
            "type": "number"
          },
          "monthly_cost_usd": {
            "type": "number"
          },
          "cost_per_validated_trade_usd": {
            "type": "number"
          },
          "optimization_hints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "example": {
        "tool": "token-cost-optimizer",
        "input_tokens_per_call": 6000,
        "output_tokens_per_call": 1200,
        "calls_per_idea": 4,
        "retry_rate": 0.15,
        "ideas_per_day": 20,
        "validation_rate": 0.2,
        "cache_hit_rate": 0.5
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/token-cost-optimizer/ to estimate cost-per-idea across LLM providers for a trading research loop."
    },
    {
      "slug": "trading-system-blueprinter",
      "url": "https://aifinhub.io/engines/trading-system-blueprinter.js",
      "types": "https://aifinhub.io/engines/trading-system-blueprinter.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "data_source": {
            "type": "string"
          },
          "llm_provider": {
            "type": "string"
          },
          "broker": {
            "type": "string"
          },
          "storage": {
            "type": "string"
          },
          "risk_engine": {
            "type": "string"
          },
          "logger": {
            "type": "string"
          }
        },
        "required": [
          "tool",
          "data_source",
          "llm_provider",
          "broker",
          "storage",
          "risk_engine",
          "logger"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "mermaid_diagram": {
            "type": "string"
          },
          "repo_zip_base64": {
            "type": "string"
          },
          "integrations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "example": {
        "tool": "trading_system_blueprinter",
        "data_source": "databento",
        "llm_provider": "anthropic",
        "broker": "alpaca",
        "storage": "duckdb",
        "risk_engine": "fractional_kelly",
        "logger": "jsonl_file"
      },
      "usage": "Client-side generator. Open https://aifinhub.io/trading-system-blueprinter/ to pick components and download a Mermaid diagram + starter repo scaffold (ZIP)."
    },
    {
      "slug": "var-backtest-kupiec-christoffersen",
      "url": "https://aifinhub.io/engines/var-backtest-kupiec-christoffersen.js",
      "types": "https://aifinhub.io/engines/var-backtest-kupiec-christoffersen.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "confidence_level": {
            "type": "number"
          },
          "pnl": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "var_series": {
            "type": "array",
            "items": {
              "type": "number"
            }
          }
        },
        "required": [
          "tool",
          "confidence_level",
          "pnl",
          "var_series"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "exceptions": {
            "type": "integer"
          },
          "kupiec_p_value": {
            "type": "number"
          },
          "christoffersen_p_value": {
            "type": "number"
          },
          "joint_p_value": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "var-backtest-kupiec-christoffersen",
        "confidence_level": 0.95,
        "pnl": [
          -22727.98,
          -31722.79,
          -39252.11,
          -2545.31,
          -25908.73,
          8117.41,
          22054.31,
          2684.17,
          -10043.49,
          -9248.59,
          -5033.9,
          7915.21,
          -16028.18,
          -6642.27,
          -10882.29,
          6545.26,
          -20207.63,
          13863.39,
          1277.27,
          25174.3,
          1272.43,
          11381.25,
          23129.64,
          679.8,
          -23705.84,
          11288.09,
          4912.8,
          17981.04,
          -9317.42,
          -18807.42,
          724.51,
          3117.39,
          -10308.82,
          -2439.71,
          -10294.99,
          -13841.85,
          7537.28,
          -24667.29,
          -7972.95,
          18369.52,
          1916.03,
          -2807.87,
          2101.23,
          297.47,
          7216.89,
          -18172.68,
          18404.85,
          -5246.56,
          -9030.1,
          -96.43,
          19052.25,
          -5840.97,
          18667.75,
          -15739.09,
          -4300.5,
          761.11,
          10001.56,
          -11291.4,
          5030.78,
          12577.04,
          21829.4,
          -18573.94,
          190.96,
          -6542.46,
          3285.48,
          27574.68,
          942.26,
          -10018.91,
          12018.48,
          11924.86,
          -15078.72,
          8876.8,
          10257.32,
          7049.62,
          7643.52,
          -3587.1,
          2001.67,
          14051.82,
          25721.07,
          -9717.35,
          6890.51,
          13470.78,
          -4013.68,
          -4591.9,
          17414.99,
          5779.38,
          24056.94,
          915.43,
          -8484.14,
          -11923.81,
          -16493.06,
          -6173.74,
          -7546.58,
          -6648.91,
          -23079.08,
          -17590.9,
          -10144.84,
          8909.34,
          -12612.92,
          -15354.25,
          5950.48,
          13256.57,
          -11324.47,
          -14644.14,
          -2679.5,
          17205.72,
          -220.79,
          16104.88,
          -5538.37,
          10864.91,
          9808.42,
          8910.86,
          -10681.77,
          -6217.45,
          15599.1,
          -9110.72,
          4793.89,
          3646.07,
          3538.42,
          -5308.52,
          -37673.83,
          23443.8,
          -19850.68,
          -2343.33,
          880.74,
          17232.97,
          -2373.88,
          -17652.71,
          9096.75,
          22927.44,
          2876.1,
          14482.86,
          -19772.37,
          2401.25,
          -1111.12,
          -5424.17,
          1033.22,
          21288.24,
          3276.67,
          -16237.62,
          11934.91,
          -12295.3,
          5606.06,
          4654.85,
          -5561.2,
          3537.28,
          -8580,
          -1651.55,
          7615.67,
          16961.96,
          -16372.53,
          -18141.53,
          3191.49,
          -18603.96,
          18255.16,
          -8319.52,
          -6036.63,
          3905.77,
          16364.8,
          -6484.19,
          -3477.11,
          7354.16,
          -9870.37,
          -5027.01,
          -5134.82,
          19240.39,
          -620.12,
          -5715.93,
          14878.55,
          -13436.73,
          15259.59,
          -8823.06,
          3086.04,
          -2560.28,
          -13141.61,
          6242.12,
          7114.17,
          -6036.64,
          -3043.44,
          2884.93,
          4362.76,
          13523.14,
          -14388.31,
          4565.93,
          -15402.55,
          15547.33,
          -2545.48,
          19091.53,
          9466.2,
          2962.47,
          22014.84,
          -7394.33,
          14645.28,
          1306.47,
          11196.48,
          -5656.97,
          -18357.66,
          -27892.88,
          1592.63,
          3282.69,
          10660.31,
          6351.9,
          -3554.99,
          -20177.02,
          -4198.46,
          -4872.7,
          -15237.81,
          535.12,
          -8141.47,
          -19354.18,
          -15637.06,
          -2636.86,
          4606.17,
          -7642.48,
          -1242.9,
          -29819.41,
          17459.7,
          -15659.75,
          -4110.96,
          -10476.92,
          -1111.13,
          4427.31,
          -12655.08,
          16507.19,
          9936.93,
          -1889.58,
          -2617.89,
          -2015.86,
          -5098.18,
          5653.96,
          8443.86,
          -908.29,
          2344.76,
          -13263.44,
          21269.34,
          -14292.3,
          -911.47,
          -5444.77,
          -17776.27,
          -12637.83,
          17474.71,
          7886.99,
          32493.2,
          27140.31,
          -15228.79,
          171.75,
          -6098.38,
          12540,
          1171.76,
          66.66
        ],
        "var_series": [
          18500,
          18579.98,
          18659.83,
          18739.42,
          18818.64,
          18897.34,
          18975.41,
          19052.71,
          19129.13,
          19204.55,
          19278.84,
          19351.88,
          19423.56,
          19493.76,
          19562.37,
          19629.28,
          19694.39,
          19757.59,
          19818.77,
          19877.84,
          19934.71,
          19989.29,
          20041.48,
          20091.2,
          20138.38,
          20182.94,
          20224.81,
          20263.92,
          20300.2,
          20333.61,
          20364.08,
          20391.57,
          20416.03,
          20437.43,
          20455.73,
          20470.9,
          20482.92,
          20491.76,
          20497.42,
          20499.88,
          20499.15,
          20495.21,
          20488.09,
          20477.78,
          20464.31,
          20447.7,
          20427.97,
          20405.15,
          20379.29,
          20350.42,
          20318.59,
          20283.86,
          20246.27,
          20205.88,
          20162.77,
          20116.99,
          20068.63,
          20017.76,
          19964.46,
          19908.82,
          19850.93,
          19790.87,
          19728.75,
          19664.66,
          19598.71,
          19531,
          19461.65,
          19390.75,
          19318.43,
          19244.8,
          19169.98,
          19094.08,
          19017.24,
          18939.57,
          18861.19,
          18782.24,
          18702.84,
          18623.11,
          18543.18,
          18463.19,
          18383.25,
          18303.5,
          18224.07,
          18145.08,
          18066.65,
          17988.92,
          17912,
          17836.03,
          17761.12,
          17687.39,
          17614.96,
          17543.95,
          17474.46,
          17406.62,
          17340.52,
          17276.28,
          17214,
          17153.78,
          17095.71,
          17039.88,
          16986.4,
          16935.33,
          16886.76,
          16840.78,
          16797.45,
          16756.85,
          16719.03,
          16684.07,
          16652,
          16622.9,
          16596.8,
          16573.74,
          16553.76,
          16536.9,
          16523.18,
          16512.62,
          16505.24,
          16501.05,
          16500.06,
          16502.27,
          16507.67,
          16516.26,
          16528.03,
          16542.95,
          16561,
          16582.15,
          16606.37,
          16633.62,
          16663.86,
          16697.03,
          16733.09,
          16771.98,
          16813.62,
          16857.97,
          16904.95,
          16954.47,
          17006.47,
          17060.86,
          17117.55,
          17176.45,
          17237.47,
          17300.51,
          17365.46,
          17432.24,
          17500.72,
          17570.8,
          17642.36,
          17715.3,
          17789.49,
          17864.82,
          17941.17,
          18018.41,
          18096.42,
          18175.08,
          18254.25,
          18333.82,
          18413.66,
          18493.63,
          18573.61,
          18653.48,
          18733.1,
          18812.35,
          18891.09,
          18969.21,
          19046.59,
          19123.08,
          19198.58,
          19272.97,
          19346.11,
          19417.9,
          19488.23,
          19556.97,
          19624.02,
          19689.27,
          19752.63,
          19813.97,
          19873.22,
          19930.27,
          19985.03,
          20037.41,
          20087.34,
          20134.72,
          20179.49,
          20221.57,
          20260.9,
          20297.42,
          20331.05,
          20361.76,
          20389.49,
          20414.2,
          20435.84,
          20454.39,
          20469.81,
          20482.08,
          20491.17,
          20497.09,
          20499.8,
          20499.32,
          20495.64,
          20488.77,
          20478.72,
          20465.5,
          20449.13,
          20429.65,
          20407.08,
          20381.46,
          20352.83,
          20321.24,
          20286.73,
          20249.36,
          20209.2,
          20166.3,
          20120.73,
          20072.58,
          20021.9,
          19968.79,
          19913.34,
          19855.62,
          19795.73,
          19733.77,
          19669.83,
          19604.03,
          19536.46,
          19467.23,
          19396.45,
          19324.24,
          19250.71,
          19175.98,
          19100.16,
          19023.39,
          18945.78,
          18867.46,
          18788.55,
          18709.17,
          18629.47,
          18549.55,
          18469.56,
          18389.61,
          18309.84,
          18230.38,
          18151.35,
          18072.87,
          17995.08,
          17918.1,
          17842.04,
          17767.04,
          17693.21,
          17620.68,
          17549.55,
          17479.94
        ]
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/var-backtest-kupiec-christoffersen/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "walk-forward-validation-visualizer",
      "url": "https://aifinhub.io/engines/walk-forward-validation-visualizer.js",
      "types": "https://aifinhub.io/engines/walk-forward-validation-visualizer.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "num_windows": {
            "type": "number"
          },
          "train_pct": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "num_windows",
          "train_pct"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "mean_is_sharpe": {
            "type": "number"
          },
          "mean_oos_sharpe": {
            "type": "number"
          },
          "drop_pct": {
            "type": "number"
          },
          "windows": {
            "type": "array"
          }
        }
      },
      "example": {
        "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"
      },
      "usage": "Client-side calculator. Open https://aifinhub.io/walk-forward-validation-visualizer/ and fill in the inputs; results render in-browser."
    },
    {
      "slug": "walk-forward-validator",
      "url": "https://aifinhub.io/engines/walk-forward-validator.js",
      "types": "https://aifinhub.io/engines/walk-forward-validator.d.ts",
      "exports": [
        "compute",
        "computeBody"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string"
          },
          "returns": {
            "type": "array",
            "items": {
              "type": "number"
            }
          },
          "is_len": {
            "type": "number"
          },
          "oos_len": {
            "type": "number"
          },
          "step": {
            "type": "number"
          }
        },
        "required": [
          "tool",
          "returns",
          "is_len",
          "oos_len",
          "step"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "windows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "start_date": {
                  "type": "string"
                },
                "end_date": {
                  "type": "string"
                },
                "is_sharpe": {
                  "type": "number"
                },
                "oos_sharpe": {
                  "type": "number"
                }
              }
            }
          },
          "walk_forward_efficiency": {
            "type": "number"
          },
          "concatenated_oos_sharpe": {
            "type": "number"
          }
        }
      },
      "example": {
        "tool": "walk-forward-validator",
        "returns": [
          -0.001963,
          -0.012479,
          0.001678,
          0.005818,
          0.002904,
          0.016199,
          -0.010215,
          -0.011291,
          -0.00885,
          0.011087,
          0.010352,
          -0.018134,
          -0.000351,
          -0.027556,
          0.013853,
          0.002829,
          0.01201,
          -0.005335,
          0.002408,
          -0.000679,
          -0.007028,
          -0.000491,
          0.008923,
          0.01677,
          -0.004295,
          -0.003625,
          0.01502,
          -0.008017,
          -0.014938,
          0.010538,
          -0.000181,
          -0.007533,
          0.000998,
          0.001664,
          0.020646,
          -0.010313,
          0.007983,
          0.000161,
          0.021717,
          -0.003661,
          0.004743,
          -0.016916,
          -0.00144,
          -0.002367,
          -0.00147,
          -0.008733,
          0.001381,
          0.001706,
          0.010257,
          -0.005394,
          0.011349,
          -0.00457,
          0.018437,
          0.006194,
          -0.014261,
          -0.010064,
          -0.000592,
          0.002704,
          -0.00545,
          -0.020481,
          0.000865,
          -0.015018,
          -0.000369,
          0.004206,
          0.020835,
          0.008116,
          -0.004725,
          -0.013077,
          0.002622,
          0.007969,
          0.006208,
          -0.002521,
          -0.003776,
          -0.003893,
          -0.014943,
          -0.002636,
          0.00064,
          -0.025395,
          0.000012,
          -0.004952,
          0.008274,
          0.004452,
          -0.012216,
          -0.002064,
          0.007842,
          0.014103,
          -0.008355,
          -0.015776,
          0.001045,
          0.020947,
          0.009039,
          -0.001656,
          0.000899,
          0.001202,
          0.00042,
          0.012725,
          0.011733,
          0.004129,
          0.003595,
          -0.001224,
          0.016571,
          -0.009856,
          0.014524,
          -0.002465,
          0.012585,
          -0.022801,
          0.001213,
          -0.008061,
          -0.000258,
          -0.003008,
          0.000886,
          0.010896,
          -0.00097,
          -0.01486,
          0.014959,
          0.006791,
          -0.004182,
          -0.012974,
          0.00402,
          -0.001335,
          0.000572,
          0.00246,
          0.00089,
          0.001763,
          -0.010631,
          -0.000107,
          -0.025486,
          0.018308,
          -0.004904,
          -0.004578,
          -0.000555,
          0.00095,
          0.010346,
          0.023064,
          0.001872,
          0.005515,
          -0.003406,
          -0.002496,
          -0.018304,
          -0.007502,
          0.00874,
          0.000996,
          0.00124,
          0.014657,
          0.009317,
          -0.00018,
          -0.001824,
          0.013271,
          -0.008061,
          0.002583,
          -0.012792,
          -0.004015,
          -0.008025,
          0.007647,
          0.004245,
          -0.010974,
          0.002517,
          0.005698,
          -0.002801,
          -0.003722,
          0.015448,
          -0.000347,
          -0.004969,
          0.007854,
          0.009593,
          0.008483,
          -0.006378,
          0.006256,
          -0.005028,
          0.002652,
          0.027214,
          0.003921,
          -0.015909,
          -0.002812,
          -0.0178,
          0.005756,
          -0.001616,
          -0.005424,
          -0.004348,
          0.016863,
          -0.00286,
          0.009739,
          -0.004282,
          0.006231,
          0.018314,
          0.007417,
          0.019838,
          0.010201,
          0.010844,
          0.010215,
          0.021008,
          0.002428,
          0.007751,
          0.011907,
          -0.008095,
          0.026528,
          0.003778,
          -0.008891,
          0.013017,
          -0.008592,
          0.008911,
          0.004709,
          0.012014,
          0.011634,
          -0.006732,
          -0.020783,
          0.000184,
          -0.00912,
          -0.008424,
          0.001358,
          -0.01852,
          -0.022151,
          0.00869,
          0.005651,
          0.00504,
          -0.011843,
          0.009225,
          -0.007563,
          0.007073,
          0.018178,
          -0.002588,
          -0.02005,
          -0.003395,
          -0.010913,
          0.018344,
          -0.016453,
          0.002408,
          0.020756,
          -0.005477,
          0.006213,
          0.00265,
          -0.011139,
          -0.013776,
          -0.002056,
          -0.000221,
          -0.017122,
          -0.015053,
          0.005493,
          0.015325,
          0.014373,
          0.000144,
          -0.00285,
          0.005115,
          0.026171,
          -0.005289,
          -0.015803,
          0.00196,
          0.000421,
          0.000596,
          -0.010572,
          0.001909,
          0.0117,
          0.007828,
          -0.001836,
          0.013003,
          0.001742,
          -0.007949,
          -0.016554,
          -0.00236,
          0.000244,
          0.021866,
          -0.005071,
          -0.005584,
          -0.016252,
          0.012277,
          0.006241,
          -0.004893,
          -0.007244,
          0.001554,
          0.012722,
          -0.001346,
          -0.008163,
          -0.013011,
          -0.011898,
          -0.006021,
          0.010052,
          0.023784,
          0.002652,
          -0.006692,
          -0.015492,
          0.004846,
          -0.007853,
          0.008334,
          0.010547,
          -0.000355,
          0.013627,
          -0.017681,
          0.008238,
          0.006914,
          -0.009842,
          0.008807,
          -0.008494,
          -0.00458,
          -0.018812,
          0.010621,
          -0.002476,
          0.000113,
          0.011247,
          -0.005866,
          0.000106,
          0.004621,
          0.001003,
          0.010875,
          -0.019995,
          0.00679,
          0.002305,
          -0.002696,
          -0.008726,
          0.006733,
          -0.001433,
          0.002676,
          0.020325,
          -0.012187,
          -0.00255,
          0.002901,
          -0.008843,
          -0.002478,
          -0.002239,
          -0.011717,
          -0.004133,
          -0.009637,
          0.005595,
          -0.009859,
          0.003201,
          0.003989,
          -0.013604,
          -0.003335,
          0,
          0.004707,
          -0.003641,
          0.008311,
          -0.009983,
          -0.0033,
          0.013249,
          0.005493,
          -0.005222,
          -0.000089,
          -0.001464,
          -0.007478,
          0.008983,
          -0.015762,
          0.006781,
          -0.0015,
          -0.003109,
          -0.003681,
          -0.001463,
          0.014056,
          -0.007641,
          -0.009482,
          -0.000922,
          0.003782,
          0.00393,
          0.000465,
          0.008987,
          0.006819,
          -0.020218,
          -0.01141,
          0.011072,
          0.006203,
          -0.000737,
          0.009408,
          0.001834,
          0.006954,
          0.007475,
          0.014111,
          0.004754,
          -0.003789,
          0.003102,
          0.007121,
          0.00311,
          0.008445,
          -0.014787,
          -0.015603,
          0.01063,
          -0.000421,
          -0.000965,
          0.01096,
          -0.009481,
          0.01617,
          0.021536,
          0.013751,
          -0.001799,
          0.007637,
          0.002021,
          0.015693,
          -0.010612,
          0.002416,
          -0.004587,
          -0.003785,
          -0.009463,
          -0.022902,
          -0.006746,
          0.00795,
          0.001794,
          -0.012557,
          -0.022758,
          0.002901,
          -0.007373,
          0.008675,
          0.01275,
          -0.010448,
          0.023442,
          0.00614,
          -0.001848,
          0.004913,
          -0.009453,
          -0.003378,
          0.000054,
          -0.003948,
          -0.01194,
          0.003708,
          0.0007,
          -0.006101,
          0.000456,
          -0.00847,
          0.025746,
          -0.003852,
          -0.036062,
          0.00377,
          -0.008647,
          0.004019,
          -0.001825,
          0.008475,
          0.008483,
          -0.019366,
          0.0007,
          -0.002969,
          -0.007622,
          -0.022445,
          -0.01142,
          0.008933,
          -0.00202,
          -0.011522,
          0.002611,
          0.015917,
          -0.003327,
          -0.008393,
          -0.009948,
          0.005769,
          0.009727,
          -0.021601,
          -0.000128,
          0.010065,
          -0.004138,
          0.003234,
          0.003487,
          0.012028,
          0.008942,
          0.016704,
          -0.019694,
          -0.020774,
          0.002391,
          -0.004847,
          0.020564,
          0.003117,
          0.01344,
          -0.005059,
          0.016582,
          -0.005442,
          0.020337,
          0.011846,
          -0.005612,
          0.005714,
          -0.017366,
          -0.000424,
          0.010079,
          -0.010446,
          -0.002289,
          0.004748,
          -0.005261,
          0.001651,
          0.004862,
          0.009383,
          0.003789,
          0.001858,
          0.004966,
          -0.012115,
          0.006609,
          -0.001566,
          -0.019978,
          0.001681,
          0.002556,
          0.003041,
          -0.00071,
          0.023267,
          0.010219,
          0.022246,
          -0.002453,
          -0.006633,
          -0.003383,
          -0.01549,
          0.000828,
          0.008374,
          -0.005278,
          0.002477,
          -0.005417,
          0.001817,
          0.006532,
          -0.002944,
          -0.011195,
          -0.005382,
          0.001508,
          0.012814,
          -0.014852
        ],
        "is_len": 252,
        "oos_len": 63,
        "step": 63,
        "mode": "rolling"
      },
      "usage": "Client-side validator. Open https://aifinhub.io/walk-forward-validator/ and paste a returns CSV. Rolling/expanding IS+OOS windows, per-window Sharpe, concatenated OOS equity."
    }
  ]
}
