{
  "version": "1.0",
  "format": "es-module-import",
  "generated_at": "2026-05-10T21:48:54.402Z",
  "base": "https://aifinhub.io/engines/",
  "hub": "aifinhub",
  "total": 45,
  "usage": "Import https://aifinhub.io/engines/{slug}.js as an ES module and call compute(input). All engines are tree-shaken self-contained ES2020+, no external imports, safe in browser / Node / Deno. The compute() return shape matches the legacy /api/{slug}/ JSON response.",
  "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-5",
        "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
      },
      "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
        ]
      },
      "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,
        "steps": 60
      },
      "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
      },
      "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.28,
        "days_to_expiry": 45,
        "risk_free_rate": 0.045,
        "dividend_yield": 0.015,
        "grid_points": 121,
        "spot_range_pct": 0.4
      },
      "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
      },
      "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": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "b": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "lags": 1,
        "z_window": 60
      },
      "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": ""
      },
      "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": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "var_series": [
          0.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ]
      },
      "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": 8,
        "train_pct": 0.7
      },
      "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.01,
          0.02,
          -0.005,
          0.015,
          -0.01
        ],
        "is_len": 252,
        "oos_len": 63,
        "step": 63
      },
      "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."
    }
  ]
}
