Equity Research Like Me — Master Orchestrator
Philosophy
The same fundamentals-first discipline that powers mf-etf-research, now for single companies. A company's intrinsic value is the present value of future free cash flows. Everything else — price, sentiment, momentum — is noise around that signal.
Hierarchy of evidence (strongest → weakest):
- Business model quality & moat durability
- Capital allocation track record (ROIC vs WACC over 5+ years)
- Earnings quality (cash-backed vs accrual-heavy profits)
- Forward growth trajectory (TAM × share × pricing power)
- Valuation (only meaningful if 1–4 are answered)
- Macro / sector tailwinds and headwinds
- Technical signals (entry timing only, never thesis-determining)
Quick Dispatch Table
| User Intent | Pipeline | Key Modules |
|---|---|---|
| Full company deep dive | fetch → clean → fundamentals → valuation → macro → report | fetch_company.py → business_quality_scorer.py → dcf_engine.py → macro_linkage_analyzer.py |
| Sector analysis | sector_map → peer_fetch → sector_drivers → compare | sector_classifier.py → peer_comparator.py → sector_driver_scorer.py |
| Macro impact on company | macro_fetch → linkage → sensitivity → scenario | macro_fetcher.py → macro_linkage_analyzer.py → scenario_simulator.py |
| Bull / Bear thesis | fundamentals → catalyst_tracker → risk_matrix | thesis_builder.py → catalyst_tracker.py → risk_matrix.py |
| Earnings quality check | fetch financials → accruals → beneish → cfo_ni | earnings_quality_analyzer.py |
| DCF / Valuation | financials → dcf → sensitivity → comps | dcf_engine.py → comparable_comps.py → sum_of_parts.py |
| Commodity / FX exposure | revenue_geography → fx_sensitivity → commodity_linkage | fx_exposure_analyzer.py → commodity_linkage.py |
| ESG screening | esg_fetcher → controversy_monitor → sfdr | esg_scorer.py → controversy_monitor.py |
| Competitor comparison | fetch peers → normalize → rank → radar | peer_comparator.py → competitive_positioning.py |
| Write equity note / PDF | full pipeline → nlp → report_builder | report_builder.py → equity_note_writer.py |
| Screen for ideas | screen → rank → shortlist | equity_screener.py → idea_ranker.py |
Universe Parameters
Resolve before every analysis:
exchange : NSE | BSE | NYSE | NASDAQ | LSE | SGX | HKEX
ticker : exchange:symbol (e.g. NSE:RELIANCE, NYSE:AAPL)
sector : FMCG | IT | BANKING | PHARMA | AUTO | ENERGY | INFRA | ...
country : IN | US | EU | GB | SG | CN | ...
base_currency : INR | USD | EUR | GBP | SGD
analysis_mode : COMPANY | SECTOR | MACRO | COMPARISON
report_style : BRIEF | STANDARD | DEEP_DIVE | INSTITUTIONAL
Script Directory Map
Data Pipeline (data/)
ingestion/
fetch_company.py ← Multi-source company data (Screener.in / Yahoo Finance / EDGAR / Bloomberg)
fetch_financials.py ← P&L, Balance Sheet, Cash Flow (quarterly + annual, 10Y)
fetch_prices.py ← Daily OHLCV, corporate actions, dividend history
fetch_sector_data.py ← Sector-level aggregates, peer lists, industry KPIs
fetch_macro_data.py ← FRED, RBI, World Bank, NSE indices, commodity prices
fetch_global_factors.py ← DXY, oil, gold, US10Y, VIX, global PMI, FII/DII flows
fetch_concall.py ← Earnings call transcripts (public filings)
fetch_news.py ← RSS NLP: ET, Mint, MC, Bloomberg, Reuters
pipeline_orchestrator.sh ← Full DAG with dependency resolution + retry
processing/
financials_cleaner.py ← Normalise P&L/BS/CF across reporting standards
ratio_calculator.py ← 60+ financial ratios, all periods, TTM calculation
peer_normalizer.py ← Cross-company normalisation for apples-to-apples comp
data_validator.py ← Schema, range, consistency checks
storage/
cache_manager.py ← Redis (hot) / Parquet (warm) / SQLite (cold)
Analytics — Fundamentals (analytics/fundamentals/)
business_quality_scorer.py ← ROIC, FCF, gross margin, asset intensity, TAM (PORTED from MF skill)
moat_analyzer.py ← 5-dimension moat: pricing / switching / NE / cost / intangible
earnings_quality_analyzer.py← Beneish M-Score, accruals, CFO/NI (PORTED + extended)
management_quality_scorer.py← ROCE trend, buybacks, promoter pledge, guidance accuracy
growth_trajectory_analyzer.py← Forward EPS, PEG, estimate revisions, TAM penetration
capital_structure_analyzer.py← D/E, interest coverage, debt maturity profile, WACC
working_capital_analyzer.py ← CCC, receivables quality, inventory turns, payables
segment_analyzer.py ← Revenue/EBIT breakdown by segment, cross-subsidisation
concall_analyzer.py ← NLP on earnings call: tone, guidance credibility, key themes
Analytics — Valuation (analytics/valuation/)
dcf_engine.py ← Multi-stage DCF: explicit + fade + terminal, WACC tree
comparable_comps.py ← EV/EBITDA, P/E, P/B, EV/Sales vs peers, percentile ranks
sum_of_parts.py ← SOTP for diversified conglomerates
reverse_dcf.py ← "What growth is priced in?" — implied expectations model
dividend_discount_model.py ← DDM for dividend-paying businesses (banks, utilities)
price_target_aggregator.py ← Consensus PT, dispersion, bull/base/bear scenario PTs
Analytics — Sector (analytics/sector/)
sector_classifier.py ← GICS/NIC classification, peer group construction
sector_driver_scorer.py ← Key sector KPIs, industry-specific metrics
peer_comparator.py ← Side-by-side normalised comparison, rank within sector
competitive_positioning.py ← Market share, pricing power, supply chain position
sector_cycle_detector.py ← Where is this sector in its structural cycle?
sector_heatmap.py ← Relative valuation heatmap across the sector
porter_five_forces.py ← Systematic Porter's Five Forces scoring
Analytics — Macro & Country (analytics/macro/)
macro_fetcher.py ← FRED, RBI DBIE, NSE indices, PMI, CPI, rates (PORTED)
regime_detector.py ← Growth/inflation/rates regime classifier (PORTED)
macro_linkage_analyzer.py ← Company-specific macro sensitivity scoring
interest_rate_sensitivity.py← Duration, re-pricing risk, NIM sensitivity (banks/NBFCs)
fx_exposure_analyzer.py ← Revenue/cost geography → FX P&L impact
inflation_pass_through.py ← Input cost vs pricing power vs margin sensitivity
credit_cycle_analyzer.py ← Credit availability, spreads, banking system health
Analytics — Global Factors (analytics/global/)
commodity_linkage.py ← Oil, steel, aluminium, agri: input/output price linkage
global_rates_analyzer.py ← US Fed, ECB, BoE, BoJ: spillover to domestic markets
dxy_impact_analyzer.py ← Dollar index → EM currency → earnings translation
fii_dii_flow_analyzer.py ← Institutional flow patterns, sector rotation signals
supply_chain_risk_scorer.py ← Geographic concentration, single-source dependency
geopolitical_risk_scorer.py ← Tariff exposure, sanctions risk, regulatory risk
global_comp_benchmarker.py ← Indian company vs global peers on same sector
scenario_simulator.py ← Multi-factor macro shock scenarios (PORTED + extended)
Analytics — Risk (analytics/risk/)
risk_matrix.py ← Systematic risk matrix: probability × impact scoring
downside_scenario_builder.py← Bear case: what kills the thesis?
liquidity_risk_analyzer.py ← Bid-ask spread, float, days-to-liquidate
insider_activity_monitor.py ← SAST disclosures, block deals, bulk deals
fraud_risk_scorer.py ← Beneish + Benford's Law + related-party analysis
regulatory_risk_tracker.py ← Sector-specific regulatory change monitoring
Analytics — ESG (analytics/esg/)
esg_scorer.py ← E/S/G pillar scoring, BRSR compliance (India)
controversy_monitor.py ← News NLP: ESG controversies, legal/regula