{
  "tool_id": "forecast_scoring_sandbox",
  "slug": "forecast-scoring-sandbox",
  "path": "/forecast-scoring-sandbox/",
  "mode": "client_side",
  "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 \u2014 call compute(input) with the JSON shape below.",
  "methodology": "https://aifinhub.io/methodology/forecast-scoring-sandbox/",
  "sample_input": {
    "tool": "forecast_scoring_sandbox",
    "n_bins": 10,
    "forecasts": [
      {
        "prob": 0.6116,
        "outcome": 1
      },
      {
        "prob": 0.2413,
        "outcome": 0
      },
      {
        "prob": 0.5151,
        "outcome": 1
      },
      {
        "prob": 0.7806,
        "outcome": 1
      },
      {
        "prob": 0.7085,
        "outcome": 1
      },
      {
        "prob": 0.9285,
        "outcome": 1
      },
      {
        "prob": 0.4567,
        "outcome": 0
      },
      {
        "prob": 0.5556,
        "outcome": 1
      },
      {
        "prob": 0.0636,
        "outcome": 0
      },
      {
        "prob": 0.2901,
        "outcome": 0
      },
      {
        "prob": 0.3226,
        "outcome": 0
      },
      {
        "prob": 0.3229,
        "outcome": 1
      },
      {
        "prob": 0.5248,
        "outcome": 1
      },
      {
        "prob": 0.8689,
        "outcome": 1
      },
      {
        "prob": 0.1544,
        "outcome": 1
      },
      {
        "prob": 0.531,
        "outcome": 1
      },
      {
        "prob": 0.6319,
        "outcome": 1
      },
      {
        "prob": 0.7363,
        "outcome": 1
      },
      {
        "prob": 0.0861,
        "outcome": 0
      },
      {
        "prob": 0.3397,
        "outcome": 1
      },
      {
        "prob": 0.4632,
        "outcome": 0
      },
      {
        "prob": 0.7156,
        "outcome": 0
      },
      {
        "prob": 0.6064,
        "outcome": 1
      },
      {
        "prob": 0.4834,
        "outcome": 1
      },
      {
        "prob": 0.4628,
        "outcome": 0
      },
      {
        "prob": 0.6358,
        "outcome": 0
      },
      {
        "prob": 0.4015,
        "outcome": 0
      },
      {
        "prob": 0.5665,
        "outcome": 1
      },
      {
        "prob": 0.5495,
        "outcome": 0
      },
      {
        "prob": 0.8171,
        "outcome": 1
      },
      {
        "prob": 0.7797,
        "outcome": 1
      },
      {
        "prob": 0.6885,
        "outcome": 0
      },
      {
        "prob": 0.4069,
        "outcome": 1
      },
      {
        "prob": 0.6873,
        "outcome": 1
      },
      {
        "prob": 0.477,
        "outcome": 0
      },
      {
        "prob": 0.202,
        "outcome": 0
      },
      {
        "prob": 0.0545,
        "outcome": 0
      },
      {
        "prob": 0.83,
        "outcome": 1
      },
      {
        "prob": 0.644,
        "outcome": 1
      },
      {
        "prob": 0.8006,
        "outcome": 1
      },
      {
        "prob": 0.7005,
        "outcome": 1
      },
      {
        "prob": 0.3634,
        "outcome": 1
      },
      {
        "prob": 0.2142,
        "outcome": 0
      },
      {
        "prob": 0.439,
        "outcome": 1
      },
      {
        "prob": 0.4753,
        "outcome": 1
      },
      {
        "prob": 0.4507,
        "outcome": 0
      },
      {
        "prob": 0.5532,
        "outcome": 0
      },
      {
        "prob": 0.5839,
        "outcome": 1
      },
      {
        "prob": 0.3468,
        "outcome": 0
      },
      {
        "prob": 0.4419,
        "outcome": 1
      },
      {
        "prob": 0.4895,
        "outcome": 0
      },
      {
        "prob": 0.6959,
        "outcome": 1
      },
      {
        "prob": 0.4164,
        "outcome": 0
      },
      {
        "prob": 0.1464,
        "outcome": 0
      },
      {
        "prob": 0.6264,
        "outcome": 0
      },
      {
        "prob": 0.6437,
        "outcome": 0
      },
      {
        "prob": 0.097,
        "outcome": 0
      },
      {
        "prob": 0.1371,
        "outcome": 0
      },
      {
        "prob": 0.7351,
        "outcome": 1
      },
      {
        "prob": 0.2478,
        "outcome": 0
      },
      {
        "prob": 0.3712,
        "outcome": 1
      },
      {
        "prob": 0.086,
        "outcome": 0
      },
      {
        "prob": 0.1293,
        "outcome": 0
      },
      {
        "prob": 0.4576,
        "outcome": 0
      },
      {
        "prob": 0.9319,
        "outcome": 1
      },
      {
        "prob": 0.5308,
        "outcome": 1
      },
      {
        "prob": 0.1206,
        "outcome": 0
      },
      {
        "prob": 0.7578,
        "outcome": 1
      },
      {
        "prob": 0.3031,
        "outcome": 0
      },
      {
        "prob": 0.8722,
        "outcome": 1
      },
      {
        "prob": 0.4556,
        "outcome": 0
      },
      {
        "prob": 0.907,
        "outcome": 0
      },
      {
        "prob": 0.7428,
        "outcome": 0
      },
      {
        "prob": 0.8038,
        "outcome": 0
      },
      {
        "prob": 0.534,
        "outcome": 0
      },
      {
        "prob": 0.708,
        "outcome": 1
      },
      {
        "prob": 0.8266,
        "outcome": 1
      },
      {
        "prob": 0.6718,
        "outcome": 1
      },
      {
        "prob": 0.9079,
        "outcome": 1
      },
      {
        "prob": 0.5081,
        "outcome": 1
      },
      {
        "prob": 0.913,
        "outcome": 1
      },
      {
        "prob": 0.7671,
        "outcome": 1
      },
      {
        "prob": 0.5628,
        "outcome": 1
      },
      {
        "prob": 0.6314,
        "outcome": 0
      },
      {
        "prob": 0.7891,
        "outcome": 1
      },
      {
        "prob": 0.4478,
        "outcome": 0
      },
      {
        "prob": 0.7792,
        "outcome": 0
      },
      {
        "prob": 0.6429,
        "outcome": 1
      },
      {
        "prob": 0.2988,
        "outcome": 0
      },
      {
        "prob": 0.6932,
        "outcome": 0
      },
      {
        "prob": 0.2757,
        "outcome": 0
      },
      {
        "prob": 0.2425,
        "outcome": 0
      },
      {
        "prob": 0.2513,
        "outcome": 0
      },
      {
        "prob": 0.1898,
        "outcome": 1
      },
      {
        "prob": 0.534,
        "outcome": 1
      },
      {
        "prob": 0.8913,
        "outcome": 1
      },
      {
        "prob": 0.9111,
        "outcome": 0
      },
      {
        "prob": 0.2472,
        "outcome": 1
      },
      {
        "prob": 0.6036,
        "outcome": 1
      },
      {
        "prob": 0.0688,
        "outcome": 0
      },
      {
        "prob": 0.7694,
        "outcome": 1
      },
      {
        "prob": 0.5462,
        "outcome": 1
      },
      {
        "prob": 0.2897,
        "outcome": 1
      },
      {
        "prob": 0.6614,
        "outcome": 0
      },
      {
        "prob": 0.0963,
        "outcome": 0
      },
      {
        "prob": 0.118,
        "outcome": 0
      },
      {
        "prob": 0.9207,
        "outcome": 1
      },
      {
        "prob": 0.382,
        "outcome": 1
      },
      {
        "prob": 0.2754,
        "outcome": 0
      },
      {
        "prob": 0.8545,
        "outcome": 1
      },
      {
        "prob": 0.0979,
        "outcome": 0
      },
      {
        "prob": 0.8213,
        "outcome": 1
      },
      {
        "prob": 0.7177,
        "outcome": 1
      },
      {
        "prob": 0.9499,
        "outcome": 1
      },
      {
        "prob": 0.2261,
        "outcome": 0
      },
      {
        "prob": 0.1295,
        "outcome": 0
      },
      {
        "prob": 0.5591,
        "outcome": 1
      },
      {
        "prob": 0.7734,
        "outcome": 0
      },
      {
        "prob": 0.2254,
        "outcome": 1
      },
      {
        "prob": 0.8302,
        "outcome": 1
      },
      {
        "prob": 0.6368,
        "outcome": 1
      },
      {
        "prob": 0.4734,
        "outcome": 0
      },
      {
        "prob": 0.1246,
        "outcome": 0
      },
      {
        "prob": 0.3651,
        "outcome": 0
      },
      {
        "prob": 0.349,
        "outcome": 0
      },
      {
        "prob": 0.1132,
        "outcome": 0
      },
      {
        "prob": 0.5355,
        "outcome": 0
      },
      {
        "prob": 0.3697,
        "outcome": 0
      },
      {
        "prob": 0.1944,
        "outcome": 0
      },
      {
        "prob": 0.537,
        "outcome": 1
      },
      {
        "prob": 0.6084,
        "outcome": 0
      },
      {
        "prob": 0.4809,
        "outcome": 1
      },
      {
        "prob": 0.0937,
        "outcome": 1
      },
      {
        "prob": 0.468,
        "outcome": 0
      },
      {
        "prob": 0.7695,
        "outcome": 1
      },
      {
        "prob": 0.075,
        "outcome": 0
      },
      {
        "prob": 0.6921,
        "outcome": 0
      },
      {
        "prob": 0.6378,
        "outcome": 0
      },
      {
        "prob": 0.3382,
        "outcome": 0
      },
      {
        "prob": 0.738,
        "outcome": 0
      },
      {
        "prob": 0.443,
        "outcome": 0
      },
      {
        "prob": 0.5461,
        "outcome": 0
      },
      {
        "prob": 0.8276,
        "outcome": 0
      },
      {
        "prob": 0.4662,
        "outcome": 1
      },
      {
        "prob": 0.1732,
        "outcome": 0
      },
      {
        "prob": 0.4532,
        "outcome": 0
      },
      {
        "prob": 0.5243,
        "outcome": 0
      },
      {
        "prob": 0.2983,
        "outcome": 0
      },
      {
        "prob": 0.7292,
        "outcome": 0
      },
      {
        "prob": 0.5018,
        "outcome": 1
      },
      {
        "prob": 0.1507,
        "outcome": 1
      },
      {
        "prob": 0.8793,
        "outcome": 1
      },
      {
        "prob": 0.9044,
        "outcome": 0
      },
      {
        "prob": 0.572,
        "outcome": 1
      },
      {
        "prob": 0.7079,
        "outcome": 0
      },
      {
        "prob": 0.655,
        "outcome": 1
      },
      {
        "prob": 0.1483,
        "outcome": 0
      },
      {
        "prob": 0.8662,
        "outcome": 1
      },
      {
        "prob": 0.7007,
        "outcome": 0
      },
      {
        "prob": 0.198,
        "outcome": 0
      },
      {
        "prob": 0.6565,
        "outcome": 1
      },
      {
        "prob": 0.5257,
        "outcome": 0
      },
      {
        "prob": 0.8426,
        "outcome": 1
      },
      {
        "prob": 0.0648,
        "outcome": 0
      },
      {
        "prob": 0.7416,
        "outcome": 1
      },
      {
        "prob": 0.5789,
        "outcome": 1
      },
      {
        "prob": 0.943,
        "outcome": 1
      },
      {
        "prob": 0.2844,
        "outcome": 0
      },
      {
        "prob": 0.1861,
        "outcome": 0
      },
      {
        "prob": 0.4199,
        "outcome": 1
      },
      {
        "prob": 0.6753,
        "outcome": 1
      },
      {
        "prob": 0.5781,
        "outcome": 0
      },
      {
        "prob": 0.4762,
        "outcome": 1
      },
      {
        "prob": 0.4191,
        "outcome": 1
      },
      {
        "prob": 0.6264,
        "outcome": 0
      },
      {
        "prob": 0.4104,
        "outcome": 0
      },
      {
        "prob": 0.8167,
        "outcome": 1
      },
      {
        "prob": 0.765,
        "outcome": 0
      },
      {
        "prob": 0.9276,
        "outcome": 1
      },
      {
        "prob": 0.6712,
        "outcome": 1
      },
      {
        "prob": 0.7273,
        "outcome": 0
      },
      {
        "prob": 0.1366,
        "outcome": 0
      },
      {
        "prob": 0.1657,
        "outcome": 0
      },
      {
        "prob": 0.6893,
        "outcome": 0
      },
      {
        "prob": 0.22,
        "outcome": 1
      },
      {
        "prob": 0.5081,
        "outcome": 1
      },
      {
        "prob": 0.8771,
        "outcome": 1
      },
      {
        "prob": 0.477,
        "outcome": 1
      },
      {
        "prob": 0.2583,
        "outcome": 1
      },
      {
        "prob": 0.0835,
        "outcome": 0
      },
      {
        "prob": 0.9217,
        "outcome": 1
      },
      {
        "prob": 0.1064,
        "outcome": 0
      },
      {
        "prob": 0.797,
        "outcome": 1
      },
      {
        "prob": 0.4639,
        "outcome": 0
      },
      {
        "prob": 0.4387,
        "outcome": 0
      },
      {
        "prob": 0.7163,
        "outcome": 1
      },
      {
        "prob": 0.9031,
        "outcome": 1
      },
      {
        "prob": 0.1449,
        "outcome": 0
      },
      {
        "prob": 0.0834,
        "outcome": 0
      },
      {
        "prob": 0.8509,
        "outcome": 1
      }
    ]
  },
  "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"
            }
          }
        }
      }
    }
  }
}
