Run a tornado sensitivity analysis
oat_sensitivityRuns a one-at-a-time tornado sensitivity analysis: sweeps each root node over a set of quantiles (others held at baseline) and measures how the target node responds, ranked by impact. Use this when you need to know which uncertain input most drives an outcome, so you know what to de-risk or estimate more carefully first. Debits one credit for authenticated callers. Example: {"graph":{"root_nodes":[{"id":"root","distribution_type":"normal","distribution_params":{"mean":100,"std":15}}],"calc_nodes":[{"id":"out","formula":"{e1}"}],"edges":[{"id":"e1","source":"root","target":"out"}],"run_params":{"trials":1000,"time_periods":12}}}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Optional RNG seed for reproducible perturbed runs. | |
| graph | Yes | The full simulation graph to analyse (same shape as run_simulation). | |
| api_key | No | Your API key from POST /api/v1/accounts. Debits credits per analysis. Omit to run anonymously (free). | |
| quantiles | No | Explicit quantiles to sweep each input over (0..1). Mutually exclusive with num_quantiles. Default: [0.05, 0.5, 0.95] (tornado). | |
| time_period | No | 0-based time period to analyse. Defaults to the last period (time_periods - 1). | |
| num_quantiles | No | Even count (2-10) of symmetrical quantiles around the 0.5 baseline. Mutually exclusive with quantiles. | |
| target_node_id | No | The output node to measure. Defaults to the graph's last calc node (the usual goal node). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| results | No | ||
| quantiles | Yes | ||
| time_period | Yes | ||
| runs_executed | Yes | Simulation runs the analysis cost (1 baseline + roots×quantiles). | |
| target_node_id | Yes | ||
| credits_debited | No | Credits charged to the account (0 for anonymous). |