Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 2.03 KB

File metadata and controls

48 lines (39 loc) · 2.03 KB

ADR-0001: Day-step simulation with paired random draws

Status: Accepted Date: 2026-07

Context

Comparing workqueue strategies needs a simulation, and simulations invite two failure modes: modeling precision the process does not have, and comparing strategies across different random outcomes so the "winner" is partly luck.

Decision

A day-step model (not continuous discrete-event simulation) with common random numbers: each (account, touch_number) pair maps to a seeded RNG stream, so every strategy sees the identical draw for the identical touch.

Rationale

  1. AR follow-up is genuinely daily-batched: analysts work a queue that refreshed overnight, and capacity is expressed in touches per analyst-day. An event-calendar simulator would add machinery to model intra-day timing nobody staffs against.
  2. Common random numbers are the standard variance-reduction technique for paired comparisons, and here they carry the whole argument: with independent draws, a strategy could "win" because its accounts happened to roll well. Keying draws by (account, touch) makes outcome differences attributable to ordering alone, and the determinism tests pin this property.
  3. The write-off mechanic (timely filing deadlines) is what makes the question non-trivial. Without deadlines every strategy collects everything eventually and the comparison is vacuous; with them, ordering decides which dollars die.

Consequences

  • Recovery decay (1.5% per day of age, floored) and the 7-day payer response cycle are stylized parameters, stated in one place, and the right way to use this tool is sensitivity analysis around them, not belief in any single run.
  • Results are point estimates from one seeded corpus per run; the experiment accepts a seed precisely so multi-seed replication is a shell loop, which the README demonstrates.
  • The accounting identity (collected + written off + still open equals corpus total) must hold for every strategy and is asserted in CI as a conservation check on the simulator itself.