#!/usr/bin/env python3
"""
intSignal Research - CCRR 2027
Derived calculations from FBI IC3 annual report figures (source facts keyed in
verbatim from the cited reports; see 02_SOURCE_REGISTER.csv).
"""
CA = {  # complaints, losses (USD)
    2022: (80766, None),            # losses "more than $2.0B" per IC3 2022 (exact figure not re-verified)
    2023: (77271, 2_160_000_000),   # $2.16B per IC3 2023 report
    2024: (96265, 2_539_041_635),
    2025: (116414, 3_674_716_305),
}
NAT_2025 = {"complaints": 1_008_597, "losses": 20_877_000_000, "avg": 20_699}
CA_60P_2025 = {"complaints": 22_157, "losses": 1_403_975_911}
CA_CRYPTO_2025 = {"complaints": 20_878, "losses": 2_099_014_715}
CA_PER100K_2025 = 9_337_282

pc, pl = CA[2024]; cc, cl = CA[2025]
print(f"C-002 CA complaints YoY 2024->2025: {100*(cc-pc)/pc:.1f}%  ({pc} -> {cc})")
print(f"C-002 CA losses YoY 2024->2025:     {100*(cl-pl)/pl:.1f}%  (${pl:,} -> ${cl:,})")
print(f"C-00x CA complaints 2023->2025: {100*(cc-CA[2023][0])/CA[2023][0]:.1f}%")
print(f"C-00x CA losses 2023->2025:     {100*(cl-CA[2023][1])/CA[2023][1]:.1f}%")
print(f"C-003 CA daily reported losses 2025: ${cl/365:,.0f}/day  ({cc/365:.0f} complaints/day)")
print(f"C-004 CA share of national 2025: complaints {100*cc/NAT_2025['complaints']:.2f}%  losses {100*cl/NAT_2025['losses']:.2f}%")
avg_ca = cl/cc
print(f"C-00x CA avg loss/complaint 2025: ${avg_ca:,.0f} vs national ${NAT_2025['avg']:,} -> {100*(avg_ca/NAT_2025['avg']-1):.1f}% higher")
print(f"C-005 CA per-capita loss 2025: ${CA_PER100K_2025/100000:.2f} per resident (${CA_PER100K_2025:,} per 100K)")
print(f"C-007 60+ share of CA 2025: losses {100*CA_60P_2025['losses']/cl:.1f}%  complaints {100*CA_60P_2025['complaints']/cc:.1f}%")
print(f"C-006 crypto share of CA 2025 losses: {100*CA_CRYPTO_2025['losses']/cl:.1f}%")
print(f"C-00x CA vs #2 Texas losses 2025: {cl/1_825_636_181:.2f}x")
