Stress-test a contract
cashflow_run_sensitivityStress-test a contract against volume, price, cost, and escalation scenarios, then compare each scenario's IRR, NPV, and payback to the base case.
Instructions
Re-evaluate a contract under a set of scenarios and report each one against the base case.
Five scenarios run by default: volume -20%, volume -10%, volume +20%, no price indexation, and operating cost +10%. Pass your own scenarios to override them.
Volume is listed first on purpose: a volume forecast taken from a customer's own estimate is a negotiating position, not a measurement, and it is the assumption that breaks most often.
Args:
model (object): The contract, same shape as cashflow_evaluate_contract.
scenarios (array, optional): Custom scenarios. Each has id, label, and any of volumeFactor, priceFactor, costFactor, revenueEscalation, costEscalation.
response_format ('markdown' | 'json'): Default 'markdown'.
Returns: base (the unmodified case) and scenarios[], each with irrAnnual, npv, paybackMonth, irrDeltaPoints (percentage points against base, null when either side has no IRR) and npvDelta.
Examples:
Use when: "What happens to this deal if volume comes in 20% under plan?"
Use when: "How fragile is the return to the inflation clause?"
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | ||
| scenarios | No | Custom scenarios. Omit to use the five defaults. | |
| response_format | No | 'markdown' for a readable report, 'json' for the full structured result. Structured data is returned either way in structuredContent. | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | ||
| scenarios | Yes |