---
title: "CECL Expected Credit Loss & Allowance Calculator"
method: POST
path: "/v1/tools/calculate_cecl_ecl_allowance"
tags: ["TODO_TAGS_REVIEW", "TODO_AP2_EXPORT_REVIEW"]
---

# CECL Expected Credit Loss & Allowance Calculator

`POST /v1/tools/calculate_cecl_ecl_allowance`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/calculate_cecl_ecl_allowance`
- Auth: none declared

Computes a deterministic CECL (Current Expected Credit Loss, ASC 326) allowance given caller-supplied PD/LGD/EAD curves, segment exposures, and forecast scenario weights, and reconciles the result against the prior period's allowance balance. Supports WARM (Weighted-Average Remaining Maturity -- an annualized historical loss rate x remaining life practical-expedient approach), DCF (full contractual cash-flow projection, discounted at the effective interest rate, with period expected shortfall = contractual payment x PD x LGD), and straight loss-rate (a lifetime historical loss rate applied directly to exposure, no discounting) methods. BOUNDARY: PD/LGD/EAD curves and forecast scenario weights are policy inputs supplied by the caller -- human or model judgment -- and this kernel performs only the arithmetic combination into per-segment ECL and the allowance rollforward (beginning balance + provision expense - charge-offs + recoveries = ending allowance, checked against the newly computed required allowance). It does not estimate, calibrate, back-test, or validate any PD/LGD/EAD model. Distinct from IFRS9's 3-stage staging regime (see tools 196/198/204, a different accounting standard) -- CECL recognizes lifetime expected credit losses from origination with no staging transfer logic.

**Tool URL:** https://ainumbers.co/chaingraph/art-426-cecl-ecl-calculator.html

## Request body

- object
  - `charge_offs_usd` number: Amount in US dollars
  - `constants_version` unknown, required
  - `forecast_weights` unknown[], required
    - unknown
  - `method` unknown, required
  - `prior_allowance_balance_usd` number: Amount in US dollars
  - `recoveries_usd` number: Amount in US dollars
  - `segments` unknown[], required
    - unknown

## Response `200`

Successful tool execution result

- object
  - `boundary_note` string
  - `charge_offs_usd` integer
  - `constants_version` string
  - `delta_vs_required_usd` integer
  - `disambiguation` string
  - `forecast_weights` object[]
    - `scenario` string
    - `weight` number
  - `method` string
  - `prior_allowance_balance_usd` integer
  - `provision_expense_usd` integer
  - `reconciled_ending_allowance_usd` integer
  - `reconciliation_balanced` boolean
  - `recoveries_usd` integer
  - `segment_count` integer
  - `segments` object[]
    - `ead_usd` integer
    - `exposure_balance_usd` integer
    - `lgd_pct` integer
    - `remaining_life_years` integer
    - `scenario_count` integer
    - `scenarios` object[]
      - `scenario` string
      - `scenario_ecl_usd` integer
      - `weight` number
    - `segment_ecl_usd` integer
    - `segment_id` string
  - `total_required_allowance_usd` integer

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
