A working demonstration build of the longevity thesis in HDFC MF .pdf (M37 Labs × HDFC
Asset Management, 2026), implemented on a synthetic SIP book.
The deck argues one thing: HDFC MF has won the operational AI race, and the value now leaks somewhere operational AI does not reach — duration. SIPs do not redeem loudly, they just stop, and each stop kills ten to fifteen years of trail. This build turns that argument into something you can click on: a scored book, an intervention queue, a per-folio explanation, a distributor brief, and the arithmetic that converts duration into rupees.
No build step, no dependencies, no network calls.
cd sanchay-demo
python3 -m http.server 8787
# open http://localhost:8787Opening index.html directly from the filesystem also works in most browsers. A local server
is preferred only so the web fonts and relative paths behave identically everywhere.
| Screen | What it does | |
|---|---|---|
| 01 | index.html — Longevity cockpit |
The book's AUM-years, the live drawdown, the survival ribbon, cohort survival by channel, and the published problem |
| 02 | book.html — Book at risk |
The intervention queue: every folio scored, ranked by money at risk, with the tells firing and the tiered response |
| 03 | investor.html — Lifecycle twin |
One folio: every term in its score, its behavioural history, its forward curve, the note that goes out, and the next best rupee |
| 04 | mfd.html — MFD copilot |
The same model sliced by distributor book: churn radar, volatile-week script, opportunity list, practice intelligence |
| 05 | integrity.html — Distribution integrity |
False signups, KYC forgery and certification fraud — a scored case queue, an ARN/NISM register check, and one case worked end to end |
| 06 | impact.html — AUM-years → ₹ |
Live scenario model. Every input is a control; the deck's 156 index is solved into a hazard reduction and priced at 46 bps |
| 07 | method.html — Method & sources |
Every published figure with its source, the full coefficient table, the calibration, and every stated assumption |
Deep links work: investor.html?id=F-2021-106930.
sanchay-demo/
├── index.html book.html investor.html mfd.html
├── integrity.html impact.html method.html
└── assets/
├── css/sanchay.css design system — tokens, components, the validated chart palette
└── js/
├── data.js published figures with sources + the seeded synthetic ledger
├── model.js scorecard, calibration, survival, projection, interventions
├── integrity.js identity layer, planted fraud rings, detection engine
├── core.js formatting, shell, tooltip, toast, boot sequence
├── charts.js SVG chart primitives — line, columns, bars, contributions,
│ histogram, survival ribbon, sparkline
└── pages/*.js one controller per screen
Nothing in this build blurs them, and the interface labels every one:
- Published — carried from the deck with the source line it printed. Marked
src. Reproduced, never adjusted. - Fitted — two parameters (a base intercept and a channel spread) solved numerically so the
model reproduces two published anchors. The solver output is printed on
method.html. - Assumed — the synthetic ledger, the return path, the tier cut-points, the caps. Marked
sim, listed in full onmethod.html, and the two that matter are live controls onimpact.html.
integrity.html reads the same ledger for a different question: is this folio real, and is
the person who sold it allowed to? Three families, seventeen named rules, each with a printed
weight and its evidence:
- False signups — registration bursts against the ARN's own baseline, placeholder dates of birth, contact and bank-account reuse across unrelated names, one device across many journeys, stops timed to the commission clawback window.
- KYC forgery — byte-identical documents submitted for different people, near-duplicate photographs matched on a perceptual hash, signatures too similar to have been signed twice, and a declared B30 address onboarded from a T30 device — the canonical Indian distribution arbitrage.
- Certification & ARN — lapsed ARNs still receiving business, NISM certificates that fail a registry check, EUIN left blank at scale, EUINs transacting off the declared roster.
Two things make it more than a rules list. Exculpatory rules subtract: a shared bank account inside one family is not fraud, and a system that cannot say so is one nobody will act on. And the fraud is planted, so precision and recall are computed rather than claimed — both land short of 100% on purpose. One ring was only half-forged and part of it is invisible; one employer-run workplace SIP drive trips every attribute the detector keys on and has to be dismissed by a person.
The end-to-end case file walks one ring from the alert that opened it, through the evidence grid — each signal beside the innocent explanation it had to rule out — the nine-day investigation, the disposition of the money and the ARN, and the onboarding control that would have stopped it at the fifth folio instead of the forty-second.
Regulatory references there name a category of obligation (KYC/KRA, PMLA reporting, ARN and EUIN, NISM certification). They carry no circular numbers and no dates: getting those wrong in a demo is worse than omitting them.
Each of these is argued on method.html, not buried.
The 7.7% / 21.2% figures anchor a ratio, not a level. AMFI–CRISIL's "share of AUM held five years or more" describes the age composition of a book that added 16 million SIP accounts in a year — most assets are young because the book is young. Read as a survival rate it badly overstates churn. So it sets the 2.75× spread between channels; AMFI's holding-period data ("61% of retail stays two years or more") sets the level.
The deck's 156 index is a cohort statement, so it is solved as one. Multiply a 78%-retention folio by 1.56 and you get 122% retention. Instead a single hazard multiplier λ is solved so the treated cohort's retained value — measured in AUM-years, the deck's own objective function — reproduces the index. At the deck's values λ ≈ 0.60, i.e. a 40% cut in monthly stop hazard.
Correlated tells are capped, visibly. A folio that misses installments also bounces its mandate and stops logging in. An uncapped additive stack counts one event three times, so the combined behavioural contribution is held to +2.40 and the forward monthly hazard to 30% — both applied as visible terms, never by quietly shrinking the bars.
Every folio, name, folio number, distributor, ARN, EUIN, PAN and certificate number is generated from fixed seeds (mulberry32 — 37013701 for the ledger, 84213377 for the identity and integrity layer) and is identical on every load. No HDFC AMC customer data was used, referenced, or approximated. HDFC Mutual Fund scheme names are real public product names, used to make the demo legible.
Not for distribution to investors. Nothing here is investment advice or a representation of any scheme's performance.