Every drifting sphere is a policyholder with a hidden accident probability — green spheres are naturally low-risk, red ones are naturally high-risk, and only the individual (not the insurer) knows which colour they are. Each period the insurer sets a premium and every policyholder compares it with their own expected loss; those who find it a bad deal drift to the grey "self-insured" platform instead of the blue "insured pool". When information is asymmetric, the insurer can only charge one community-rated premium based on the *pool's* average risk — so if too many low-risk types leave, the pool's average risk climbs, the next premium climbs with it, and more low-risk types leave: Akerlof's "market for lemons" playing out as a slow death spiral. Sliding information toward "risk-based" lets the insurer price each policyholder near their true risk instead, which keeps both types buying because nobody is asked to subsidise someone else's risk.
premium(agent) = loading · [ info·trueRisk(agent) + (1−info)·meanRisk(insured pool) ]
buys ⇔ premium(agent) ≤ K·riskAversion(agent)·trueRisk(agent)
effectiveRisk(agent) = trueRisk(agent) · (1 + moralHazard·1.2) if insured
- Population — how many policyholders are simulated at once (roughly half low-risk, half high-risk).
- Insurer's information — 0 means the insurer can only see the pool average (classic asymmetric information); 1 means the insurer observes each policyholder's true risk and prices individually, which is what shuts the adverse-selection spiral down.
- Moral hazard — once a policyholder is covered, how much less carefully they behave; it raises their *actual* accident rate above the risk the premium was priced on, draining the insurer's balance even when adverse selection is under control.
- Premium loading — the markup the insurer charges over the pool's expected losses (covering overhead and profit); a higher loading pushes marginal low-risk policyholders out sooner.
Watch the insurer's balance and the adverse-selection gap together: a healthy market keeps the gap near zero and the balance stable, while a spiralling one shows the insured pool's average risk pulling further above the whole population's average risk as the balance sinks.