Work / Chitragupt / Wiki / Concepts
capital-gains-booking
Conceptcanonicalverified 2026-07-10
CONCEPT.CAPITAL-GAINS-BOOKINGCapital-gains booking
Summary
Capital gains are computed from parsed broker / MF / statement lots — never from user-entered trades. When cost basis is ambiguous (bonus issues, corporate actions, missing prior lots), the CG-booked variant on Portfolio surfaces a lot-classification workflow that resolves parser ambiguity. Classification never initiates a trade; the resulting CG position flows deterministically into Tax Review.
Why it matters
CG is the one place Portfolio meets Tax with a live money number. If the wiki lets an LLM invent a BOOK PROFIT or HARVEST GAINS CTA, we cross SEBI's advisory line (2026-06-26-portfolio-sebi-strip); if we let it forget that lot classification is parser disambiguation, users will read the workflow as "select a lot to sell" — which we do not do. Everything downstream (§112A headroom callouts, Tax refund waterfall) trusts that CG is computed from parsed statements + user-resolved ambiguity, not from user-declared intent.
Implications
- Statements are the sole source of truth. No manual entry of trades, no broker API, no live prices. Corollary of upload-only and no-manual-entry.
- Lot classification is disambiguation, not action. Verbatim invariant from
portfolio-review-cg-booked.html:"Classification corrects parser ambiguity · it does not initiate any trade. Tax position flows into Tax Review."Buttons:FIFO · LTCG/Specific lot · STCG/ bonus-issue split rule / Manual cost / Zero cost. - Only triggered when the parser can't decide. CG-booked variant surfaces a banner like
"₹2.3L LTCG already booked this AY · tax ₹13k · 2 trades need lot classification before tax compute is final."If the parser has unambiguous lots, no workflow appears — the CG number is final. - Rates and §112A headroom are canonical. STCG @ 20%. LTCG @ 12.5% over ₹1.25L (§112A annual exemption). Personal headroom = ₹1.25L per AY. Family headroom stacks:
N × ₹1.25Lcross-PAN on Pro Family (3 members = ₹3.75L). Chitragupt surfaces the sequencing across PANs — each member executes via their own broker. - Unused headroom is a call-to-review, not a call-to-sell. Callout copy:
"₹1.25L of long-term capital gains exemption unused this AY (the annual §112A limit)"— descriptive. NoHARVEST GAINSbutton. The next step is CA consultation (what-you-missedon Tax) or a personal decision on the user's own broker. - CG flows into Tax deterministically. Once lot ambiguity is resolved, the CG total is a number the Tax waterfall consumes without user intervention. No re-entry, no reconciliation UI.
- Family workspace amplifies the lens. Household combined view shows cross-PAN §112A staging (
"3× ₹1.25L §112A cross-PAN headroom · ₹3.75L available this AY"), plus senior-parent §80D super-top-up hints when a senior member has room. Filings still stay per-PAN. - View-only family members can't classify. Lot-classification is admin-only in Family; view-only members see the workflow read-only.
- Chitragupt never executes trades. Verbatim from
portfolio-view-only.html:"Chitragupt never executes trades for anyone."This applies universally, not only in view-only mode. - Observation-only framing. No
HOLD, noSELL, noBUY. SEBI disclaimer strip mandatory (2026-06-26-portfolio-sebi-strip).
Related
- portfolio-pillar — where CG booking lives
- pillar-portfolio — entity: canonical CG keys (rates, headrooms, lot workflow)
- read-only-review — parent invariant (observation-only, never advisory)
- upload-only · no-manual-entry — lots come from parsed statements only
- pillar-tax — CG position flows here deterministically
- tax-pillar — Tax review consumes CG via the salary-to-refund waterfall
- portfolio-goal-taxonomy — goals a lot can be earmarked to (goal choice can inform, never mutate, CG)
- family-workspace — cross-PAN §112A staging on Pro Family
- 2026-06-26-portfolio-sebi-strip — mandatory SEBI footer
- copy-strings — CG banner + unused-exemption callout
Sources
- .context/designs/web/portfolio/cg-booked.html
- .context/designs/web/portfolio/portfolio.html
- .context/designs/web/portfolio/family.html
- .context/designs/web/portfolio/view-only.html
Every project of mine is written down like this.
Read the résumé