Skip to content
View theshaswat's full-sized avatar

Block or report theshaswat

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
theshaswat/README.md

Shaswat Sharma — finance, valuation, M&A, capital markets, strategy, operations, business analysis, economics

Email LinkedIn

Toolkit — Excel, Python, pandas, NumPy, SciPy, statsmodels, R, Stata, scikit-learn, XGBoost, SHAP, PyTorch, SQL, Power BI, Tableau, LaTeX, VBA, PowerPoint

Selected work

Zepto — $3.8bn base case against a $7.0bn private mark · Sun Pharma/Organon — pass on the spread · PayPal — $60.50 below the floor of all three methods · ACC — a 20% profit miss moved the stock more than a 68% miss did · Situational Awareness — put-linked exposure fell from 62% of gross to 0.03% the quarter before the collapse · Private banks — every disclosed margin narrowed and all four grew profit anyway · EPC — two of four earned profit on negative operating cash · Olist — 55% of won sellers never sold a single item

$3.8bn base case against a $7.0bn private mark. Built before the roadshow range was consulted; the resulting $2.7–5.5bn range brackets what institutions actually indicated ($3.0–3.5bn domestic, $4.5bn foreign).

Zepto, Blinkit and Instamart disclose on three incompatible bases — 1P inventory against 3P commission — making headline revenue comparisons wrong by roughly 4.3x. Restated onto net order value, the binding constraint was never store density: Zepto runs the highest orders per store per day of the three (1,618) and the weakest basket (₹388, against ₹518 and ₹508). About 4 percentage points of the headline cut is rupee depreciation rather than fundamentals.

relative valuation unit economics scenario & sensitivity fx decomposition Excel Python pandas

Pass on the spread. Standalone DCF puts Organon at $6.90 against a $14.00 offer — $1.86bn of synergy management never disclosed, requiring 3.87% revenue growth against an actual −0.38% two-year CAGR.

The spread implies 93.9% completion probability. A seeded 100,000-path Monte Carlo returns a mean annualised 0.07% against a 4.62% risk-free rate: the position is not paid for the risk it carries. Sun Pharma's own announcement CAR was +9.6% and statistically significant, which is the evidence that cuts hardest against the standalone valuation.

DCF & reverse-DCF event study GARCH(1,1) Granger causality Monte Carlo Black-Scholes statsmodels

$60.50 sits below the floor of all three methods. DCF bear case $73.85, trading comps $76.69, precedent-transaction floor $64.88. Making the base case agree with the offer requires a 13.4% discount rate against a calculated 9.67% WACC.

A reverse DCF makes the same point from the other side: the $47.37 unaffected close implies ~17%, or five straight years of −11.6% revenue decline — neither consistent with reported results or guidance. That reads the pre-news price as a sentiment floor, not an intrinsic-value anchor.

DCF trading comps precedent transactions sources & uses football field Excel Python

A 68% profit miss moved the stock less than a 20% miss did the year before. Same Rs 7.50 dividend, bundled with results both times — the reaction tracked the surprise, not the size of the miss.

FY25's decline arrived with no precedent and produced a significant, lasting −5.7% three-day CAR (market model), −5.8% under Fama-French three-factor. FY26's much larger decline had been signalled for months; its −3.0% initial reaction had fully reverted to +0.2% within two weeks — consistent with the cost pressure being priced in ahead of the print.

event study market model Fama-French 3-factor Brown-Warner t-test Python statsmodels

Put-linked exposure fell from 62% of gross to 0.03% in the quarter before the fund lost 67%. The published accounts of the July 2026 collapse attribute it to 4x leverage. Seven quarters of 13F filings show the fund also entered July with no disclosed downside protection, having held $8.46bn of puts three months earlier; two positions, Micron and TSMC, flipped from a put to a larger long on the same issuer between filings.

Days-to-liquidate built from position size against trailing volume put the book at 1.55 days, which reads as liquid. The single name it flagged, Core Scientific at 9.25 days, is the one a Schedule 13D/A shows still being sold by block trade five days after the main unwind, 12.2% below its mid-July prints. Tested out-of-sample the screen initially failed: Berkshire's concentration exceeds Melvin Capital's before GameStop, because Melvin's risk sat in swaps a 13F cannot see. That result is why the live screen scores concentration trend alongside level rather than level alone.

13F reconstruction liquidity & days-to-liquidate return attribution out-of-sample validation SEC EDGAR Python

Every margin that is disclosed narrowed, and all four banks grew profit anyway. Provisions are the line that reconciles those two facts — three of the four publish a net interest margin and all three fell in the June 2026 quarter. But the four did not get there the same way: decomposing each bank's change in profit across net interest income, other income, operating expenses, provisions and tax puts provisions first at Axis and HDFC, and net interest income first at Kotak and ICICI.

HDFC is the clearest case and the one most likely to be misread: provisions fell ₹11,380 Cr, worth 62.7 points of profit growth against a headline of 5.0, while other income fell ₹8,910 Cr because the prior-year quarter carried a one-time gain on the HDB Financial Services divestment. Four reconciliation checks run before any comparison is computed and the bridge is not written unless all four pass — an NII tie-out, computed growth against the growth each bank printed itself, a five-line P&L walk to reported PAT, and the attribution closing on the change in profit. Tolerances come from each bank's own reporting precision rather than being chosen, and the P&L figures were extracted twice, independently, with the second pass locating each table by content rather than by the page number the first pass recorded.

P&L attribution reconciliation PDF table extraction Python pandas pdfplumber

Two of four reported FY26 profit while operating cash flow was negative. NCC booked ₹724 Cr of profit against −₹459 Cr of operating cash, KEC ₹606 Cr against −₹414 Cr. Ranked on Sloan (1996) total accruals — profit less operating cash, over average total assets — those two sit at the low-quality end at +5.03% and +4.31%, and PSP Projects at the other, with operating cash 5.8x its profit.

L&T's ratio is +0.53%, but only once group profit is used rather than the attributable figure. The attributable line excludes ₹2,870 Cr of profit belonging to non-controlling interests while the cash flow and the asset base it is measured against are both consolidated, and mixing the two bases flips the sign of the result — an earlier revision of this screen had it the wrong way round and called L&T the cleanest of the four.

Sloan accruals earnings quality balance-sheet reconciliation Python pandas pdfplumber

55% of won sellers never sold a single item. 842 of 8,000 marketing-qualified leads became signed sellers; only 379 of those ever listed anything. A channel-ROI conversation that stops at win rate is measuring the wrong step — paid search brings in roughly a third fewer leads than organic search (1,586 against 2,296) and still scores higher (0.71 against 0.63) once activation and realised GMV are counted.

The same gap runs through the buyer side. 97% of customers buy exactly once, so cohort margin per customer moves from R$111.41 at first purchase to R$123.45 twelve months later — a 10.8% lift produced entirely by the 3% who return, which makes retention the lever rather than lifetime-value expansion. What separates a profitable segment from an unprofitable one is freight, not price: electronics runs 31.5% margin because freight consumes 68.6% of item price, against 83.0% on watches_gifts at comparable volume, and the Amazon-region states fall to ~40% on distance alone. No dollar CAC is reported, because Olist discloses no marketing spend by channel and no outside benchmark was substituted for it.

cohort LTV acquisition funnel contribution margin logistic propensity out-of-time validation scikit-learn Plotly

The bank with the lower headline LCR has the more retail-anchored funding base. HDFC Bank and IndusInd Bank both clear RBI's 100% minimum every quarter — reconstructing five quarters of both banks' own Pillar 3 disclosures line by line shows IndusInd's higher ratio (126.66% vs. 115.00%, latest quarter) sits on 40.9% wholesale funding against HDFC's 33.1%, and less-stable deposits at 95.3% of its retail base against 77.6%.

Basel III LCR PDF table extraction regulatory reconciliation funding-mix analysis Python pandas pdfplumber

Display campaigns don't clear break-even; Shopping/Sponsored campaigns clear it at ~₹22,800 of spend. Built from published 2026 India ad-tech benchmarks rather than invented assumptions — incremental ROAS of 0.94x for Display against 4.29x for Shopping, cross-validated between an independent Python model and a live-formula Excel workbook to the cent.

funnel modeling break-even & sensitivity analysis Excel Python openpyxl

A wrong or stale tax code on the vendor master is the most common root cause of an exception queue. A rules engine classifies synthetic AP invoice lines against 20 sourced rate rules across 11 jurisdictions (GST, India TDS, US state Sales & Use Tax, EU VAT), independently re-derives the correct code, and flags mismatches — a 33.3% exception rate matching the 1-in-3 error-injection rate exactly, once a data-generator bug was found and fixed.

GST VAT sales & use tax rules engine reconciliation Python

Two of three marketplaces disclose a number that's easy to mistake for ad revenue but is actually the opposite side of the transaction. Benchmarking ad-revenue-as-%-of-GOV for Swiggy, Nykaa and Eternal from public disclosures alone, only Swiggy discloses it cleanly (≥4% of Food Delivery GOV); Nykaa and Eternal disclose their own ad spend ("AdEx") instead, which this project records separately rather than substituting in.

retail media public-disclosure benchmarking Python

How it's built

One registry holds every externally-sourced figure, tagged by provenance tier; nothing else contains a typed-in number, so the memo, the notebooks, the deck and the model cannot drift apart. Every repository here carries its own verification suite and runs it in CI on each push, and each workflow says in its own header what it does and does not prove. The Zepto build rebuilds all nine notebooks, the deck, the PDFs and the workbook from source and re-audits the result; the PayPal build asserts every committed output still reproduces byte-for-byte; the unit-economics build re-derives the seller funnel from the raw CSVs and fails if the headline 8,000 to 842 to 379 ever stops holding. Primary sources are pinned by SHA-256 rather than redistributed, so a reader can prove they hold the same document the figures were read from without me republishing somebody else's annual report.

Limitations are written down rather than omitted, including corrections made mid-analysis where an earlier draft was wrong. Two of the three recorded in the Zepto memo are errors a reader working from secondary coverage would reproduce.

Next

Work in progress extends the same standard to a wider toolset: SQL-backed pipelines so the registry is queried rather than typed, econometric work carried in R and Stata alongside Python, and a reporting layer in Power BI. Each ships with the same verification suite and the same written limitations as the work above.

Activity

Contribution graph, redrawn daily

Independent research. Not investment advice.

Pinned Loading

  1. sunpharma-organon-merger-arbitrage sunpharma-organon-merger-arbitrage Public

    Standalone valuation, event study, and merger-arbitrage risk assessment of Sun Pharma's pending $11.75bn acquisition of Organon

    Python

  2. acc-dividend-event-study acc-dividend-event-study Public

    Event study of ACC Limited's two consecutive Rs 7.50 dividend disclosures — why a 68% profit miss moved the stock less than a 20% miss. Market model + Fama-French 3-factor, India FF factors, fully …

    Python

  3. bank-nim-credit-cost-bridge bank-nim-credit-cost-bridge Public

    Q1 FY27 vs Q1 FY26 profit attribution across four Indian private banks: NII, other income, opex, provisions and tax, gated on four reconciliation checks.

    Python

  4. epc-earnings-quality-screen epc-earnings-quality-screen Public

    FY26 earnings-quality screen across four listed Indian EPC companies using Sloan (1996) total accruals. Every figure page-cited and reconciled.

    Python

  5. paypal-stripe-advent-ma-valuation paypal-stripe-advent-ma-valuation Public

    Independent fairness valuation of PayPal against the reported $60.50/share Stripe/Advent bid — DCF, trading comps and precedent transactions put standalone value at $65–94.

    Python

  6. situational-awareness-unwind situational-awareness-unwind Public

    Forensic reconstruction of the July 2026 Situational Awareness LP collapse from SEC 13F/13D filings — attribution, a liquidity model validated against a documented forced sale, out-of-sample testin…

    Python