# Linked retail applications and funded accounts

`examples/retail_application_journey.py` and the native R example demonstrate six separate application products: unsecured installment, auto loan, operating auto lease, education loan, BNPL and microcredit. `run()` / `run_retail_application_journey()` executes the public methods and returns compact business results. Set `return_artifacts=True` (R: `TRUE`) for every original model, calibrator, source contract, policy, validator input and replay checkpoint. Raw fitted parameters are never rounded. The compact report displays probabilities to eight decimal places and currency amounts to two; it is not a model serialization format.

Each product has its own actual prior training and calibration cohort, with distinct conditional default frequencies. Training observations are from 2018 and calibration observations from 2020; both precede the December 2024 application cohort. A separate prior account panel supplies the behavioral intercept model. The example verifies each application model against the independent binomial cell-frequency MLE. These very small synthetic cohorts illustrate contracts and arithmetic, not empirical predictive quality or bank approval criteria. The separate `retail_development` example demonstrates the broader development and selection-bias methods; its installment model is not transported to the other products.

Bank-owned inputs can replace the JSON argument and the two local CSV paths. The JSON supplies schema, independent control totals, dated training and calibration rows, applications, actual decisions and bookings, actual defaults/exits, household evidence and contractual terms. CSV application identities must reconcile with the control ledger. The historical join selects releases available at each application's cutoff and excludes a deliberately included later revision. Source hashes identify content, not the source author's authenticity. `verify_reference=False` disables the packaged reference-world assertions; input-contract and chronology checks remain active.

Within each product, the same application/customer identity leads to its actual booked facility. Five cases retain separate selection states: funded survivor, funded first default followed by closure, declined application, approved application with no take-up, and funded but immature performance window. Rejected, unaccepted and immature own-contract outcomes stay missing. The joint application explicitly contains two customers in one household; membership does not imply automatic default contagion. A no-hit bureau file and a stale bureau file remain visible and do not overwrite independently verified documentary risk features.

The economic inputs differ by product. Installments amortize principal; the auto loan retains its final balloon; operating rent excludes a lessor's residual value from the customer's liability; education has a grace interval; BNPL combines overlapping payments; microcredit retains its weekly cash pattern. Full-schedule residual income and debt-service ratios are checked separately from the monthly stress projection. That projection treats one externally supplied contractual payment as a cash expense. It does not infer rate resets, refinancing or payment behavior. The first actual cash obligation, its receipt or nonreceipt, and subsequent default are distinct evidence. Education's zero grace payment is not delinquency. Realized economic loss comes from the separately supplied complete principal/interest cash ledger, not from multiplying a default label by an assumed LGD.

The frozen policy requires affordability and applies a predeclared PD threshold. Its offer evaluation explicitly supplies conditional uptake and loss assumptions. Hypothetical policy utility is separate from observed funded-only performance and cannot identify causal price or limit effects. The model target starts at first draw. The policy validator's five-field target carries the same 30-day physical default horizon; actual funding dates separately anchor its observed outcome window. Behavioral targets instead cover one calendar month from the actual funded month-end. These horizons are not interchangeable.

All five journey validators execute on the linked records: source lineage, retail cohorts, affordability stress, historical policy and replay consistency. Monitoring includes two mature funded observations and visibly excludes the immature one; its status remains `INSUFFICIENT_INFORMATION`. Event replay independently reruns the public dependency-event handler and frozen registry scoring, including an identical duplicate delivery. Original decisions are retained. Frozen cross-language replay helpers additionally evaluate both Python-origin and R-origin model/calibrator/registry artifacts in both runtimes.

Each product also fits its own retail risk pools from the prior funded observations and assigns the actual new applications. The microcredit budget explicitly uses a repeated four-week cycle within its 40-week repayment contract. The comprehensive product-variant economic examples remain separate supporting evidence. This journey does not relabel their older accounts as these applicants, nor claim that its short 30-day evidence covers every lifetime EAD/LGD scenario. Product contracts and applicable methods determine routing; no single borrower is indiscriminately passed through every library method.

Default package tests retain small fitted and independently calculated cases. The full installed example runs all six products; `CREDITRATINGSYSTEM_EXTENDED_TESTS=true` enables additional native complete-chain mutation checks.
