Capital gains — FIFO STCG / LTCG
Indian residents are taxed on US-equity gains. This report gives them the per-transaction detail they need at year-end.
Why the ledger produces this
- Indian tax code taxes capital gains from foreign / unlisted equity as STCG (short-term, held < 24 months) or LTCG (long-term, ≥ 24 months).
- At year-end the customer needs a statement of every disposal (sell), the cost basis of what they sold (FIFO), and the classification.
- The ledger has every buy and every sell — enough to compute this automatically.
The algorithm
FIFO — first in, first out. For each customer + instrument:
- Buys open lots in date order.
- Sells consume lots in the same order.
- Each disposal slice records: quantity sold, proceeds, cost basis, gain, holding period, STCG or LTCG.
Design decision — sub-ledger, not new GL accounts
Under Valura's omnibus custody model, a sale already balances with the gain flowing to the customer's cash wallet. So capital-gains tracking is a reporting layer on top of the balanced ledger — not new debit / credit lines. The trial balance is unchanged.
What the report shows
Per customer, per FY:
- Realized gain — total, plus STCG / LTCG split
- Per-disposal detail — every sell with the matched buy, cost basis, proceeds, gain, holding days, term
- Open lots — unsold buys still on the books, with holding-period ticker (STCG → LTCG on day 730)
Firm-wide roll-up on top.
The forward-only caveat
Trade ingest is forward-only from the day sync started (ViewTrade doesn't have a historical-orders endpoint). A customer who bought before ingest and sells now will show an "oversell" warning — the ledger doesn't fabricate a zero-cost basis; it flags the gap so it can be filled by hand when a historical backfill lands.
INR conversion — best-effort caveat
Indian capital gains tax computes cost + proceeds in INR at the SBI TT buying rate on the acquisition and sale dates. USD figures are exact; INR figures need a daily TT rate table that's not yet wired. Follow-up.
The LTCG threshold
24 months (CAPITAL_GAINS_LTCG_DAYS = 730) — foreign / unlisted equity
under Indian tax code. Configurable pending tax-counsel confirmation.
Where to see it
- Frontend:
/capital-gains(India book). Per-customer table, per- disposal detail, open lots, FY filter. - API:
GET /v1/india/capital-gains?customer=&fy=. - Related: Schedule FA reuses this data for the foreign-asset statement.