LatestAll news

Home / Worked examples / ABF tape hunter

DEMO-07 · D15 · SAMPLE DATA · as of 2026-09-30

ABF loan tape anomaly hunter

SAMPLE DATA · fictional. Every name and number on this page is synthetic, generated by a script in the site source. No real borrower, lender, fund or deal.

Before an ABF analyst computes delinquency or roll rates, someone has to check that the tape is clean. This demo runs ten deterministic checks over a 2,000-row synthetic consumer-instalment tape. The generator planted 33 breaks of known types. The hunter, a separate script, found 33 of them with 0 false positives. Companion to .

2,000SAMPLE loans on the tape
33rows flagged
33/33planted breaks caught
0false positives

Flags by rule

RuleRows
Days past due disagree with delinquency status4
60+ days late to current in one month (check for re-aging)4
Current balance above original amount4
Zero balance but still delinquent3
Maturity on or before origination3
Originated after the tape's as-of date3
Invalid state code3
APR outside 0–36%3
FICO outside 300–8503
Duplicate loan ID3

Every flag

LoanRuleDetail
S-00052Zero balance but still delinquentzero balance but 45 dpd
S-00137Days past due disagree with delinquency statusdpd 97 implies 90+, tape says current
S-00151Maturity on or before originationmaturity 2025-09-27 on/before origination 2026-04-15
S-00178Originated after the tape's as-of dateoriginated 2026-10-12 after as-of 2026-09-30
S-00204Originated after the tape's as-of dateoriginated 2026-10-12 after as-of 2026-09-30
S-00228Zero balance but still delinquentzero balance but 45 dpd
S-00260Invalid state codestate code ZZ
S-0045260+ days late to current in one month (check for re-aging)90+ → current in one month; check for re-age/modification
S-00475Current balance above original amountbalance 26,338 > original 22,320
S-0060060+ days late to current in one month (check for re-aging)90+ → current in one month; check for re-age/modification
S-00618Maturity on or before originationmaturity 2025-09-16 on/before origination 2026-04-04
S-00655Current balance above original amountbalance 24,674 > original 20,910
S-00692Current balance above original amountbalance 35,459 > original 30,050
S-00707Zero balance but still delinquentzero balance but 45 dpd
S-00712APR outside 0–36%APR 45.9% outside (0, 36%]
S-00724Maturity on or before originationmaturity 2025-05-31 on/before origination 2025-12-17
S-00746Days past due disagree with delinquency statusdpd 97 implies 90+, tape says current
S-00805FICO outside 300–850FICO 912 outside 300–850
S-00943Days past due disagree with delinquency statusdpd 97 implies 90+, tape says current
S-01170Current balance above original amountbalance 16,945 > original 14,360
S-01291FICO outside 300–850FICO 912 outside 300–850
S-01302APR outside 0–36%APR 45.9% outside (0, 36%]
S-01397APR outside 0–36%APR 45.9% outside (0, 36%]
S-01405Originated after the tape's as-of dateoriginated 2026-10-12 after as-of 2026-09-30
S-0150960+ days late to current in one month (check for re-aging)90+ → current in one month; check for re-age/modification
S-01513Invalid state codestate code ZZ
S-01581Invalid state codestate code ZZ
S-01795FICO outside 300–850FICO 912 outside 300–850
S-01916Days past due disagree with delinquency statusdpd 97 implies 90+, tape says current
S-0199460+ days late to current in one month (check for re-aging)90+ → current in one month; check for re-age/modification
S-00160Duplicate loan IDloan_id appears 2 times
S-00389Duplicate loan IDloan_id appears 2 times
S-00509Duplicate loan IDloan_id appears 2 times

Then the roll-rate matrix (clean rows only)

Loan counts, prior-month status (rows) to current status (columns), after removing flagged rows. A synthetic tape has no real performance, so read this as the format, not a finding.

Prior \ Nowcurrent1-2930-5960-8990+
current172121000
1-2907618180
30-590049130
60-890001021
90+000017

Limits

Scripts: data/abf/gen_tape.py (seed 20261016) and data/abf/hunt.py. Download the SAMPLE tape (CSV) or the results. Not investment advice.