Skip to main content
This section documents the valuation and profitability ratios used to assess stock pricing relative to fundamentals and operational efficiency.

Market Capitalization & Price

Market Cap(Cr.)
number
Market capitalization of the company.Unit: Crores (Cr.)Example: 1745230.50Source: Screener.in consolidated quarterly APIExtraction:
mcap_cr = get_float(cq.get("Market Cap", 0))
Stock Price(₹)
number
Current Last Traded Price (LTP) of the stock.Unit: Rupees (₹)Example: 2650.75Source: Dhan API technical snapshot (tech.get("Ltp"))Extraction:
ltp = get_float(tech.get("Ltp", 0))
stock_analysis["Stock Price(₹)"] = ltp
Location: bulk_market_analyzer.py:258, 332

Price-to-Earnings Ratios

P/E
number
Price-to-Earnings ratio (trailing twelve months).Calculation: Current Price / Trailing EPSExample: 23.50Source: Screener.in consolidated quarterly APIExtraction:
pe = get_float(cq.get("Price to Earning", 0))
Location: bulk_market_analyzer.py:246Interpretation:
  • Higher P/E: Market expects higher future growth or stock is overvalued
  • Lower P/E: Stock may be undervalued or market expects lower growth
  • Compare against sector/industry average for context
Forward P/E
number
Forward Price-to-Earnings ratio based on projected earnings.Calculation: Current Price / Estimated Future EPSExample: 19.80Source: Calculated from Screener.in warehouse dataExtraction:
forward_pe = 0.0
if "Forecasted PE" in warehouse and warehouse["Forecasted PE"]:
    forward_pe = get_float(warehouse["Forecasted PE"][0])
Location: bulk_market_analyzer.py:252Precision: Rounded to 2 decimal placesNote: May be 0.0 if forecasted earnings data is unavailable
Historical P/E 5
number
Average P/E ratio over the past 5 years.Example: 21.30Status: Currently set to 0.0 (placeholder for future implementation)Location: bulk_market_analyzer.py:253Note: Field reserved for 5-year historical P/E average calculation

Growth & Profitability Metrics

PEG
number
Price/Earnings to Growth ratio.Calculation: P/E Ratio / Earnings Growth RateExample: 1.85Source: Calculated from P/E and earnings growth dataExtraction:
peg = 0.0
# Calculation logic based on earnings growth rate
Location: bulk_market_analyzer.py:251Precision: Rounded to 2 decimal placesInterpretation:
  • PEG < 1: Stock may be undervalued relative to growth
  • PEG = 1: Stock is fairly valued
  • PEG > 1: Stock may be overvalued or premium growth expected
ROE(%)
number
Return on Equity - measures profitability relative to shareholder equity.Unit: Percentage (%)Example: 18.50Source: Screener.in consolidated quarterly APIExtraction:
roe = get_float(cq.get("ROE", 0))
Location: bulk_market_analyzer.py:242Interpretation:
  • Higher ROE: More efficient use of equity capital
  • Compare against industry benchmarks
  • Sustainable ROE > 15% is generally considered good
ROCE(%)
number
Return on Capital Employed - measures profitability relative to total capital.Unit: Percentage (%)Example: 22.30Source: Screener.in consolidated quarterly APIExtraction:
roce = get_float(cq.get("ROCE", 0))
Location: bulk_market_analyzer.py:243Interpretation:
  • ROCE > Cost of Capital: Company creates value
  • Higher ROCE: More efficient capital utilization
  • More comprehensive than ROE as it includes debt

Leverage

D/E
number
Debt-to-Equity ratio - measures financial leverage.Calculation: Total Debt / Shareholder EquityExample: 0.45Source: Screener.in warehouse dataExtraction:
de_ratio = 0.0
if "Debtor Days" in warehouse and warehouse["Debtor Days"]:
    de_ratio = get_float(warehouse["Debtor Days"][0])
Location: bulk_market_analyzer.py:244Precision: Rounded to 2 decimal placesInterpretation:
  • D/E < 0.5: Conservative capital structure
  • D/E = 1.0: Equal debt and equity
  • D/E > 2.0: High leverage, higher financial risk
  • Industry-specific benchmarks apply (e.g., infrastructure typically has higher D/E)

Ownership & Float

FII % change QoQ
number
Quarter-over-Quarter change in Foreign Institutional Investor holdings.Unit: Percentage pointsExample: 1.25 (FII increased holdings by 1.25%)Source: Screener.in shareholding pattern dataCalculation:
fii_change_qoq = 0.0
# Calculated from latest vs previous quarter FII holding %
Location: bulk_market_analyzer.py:247Precision: Rounded to 2 decimal placesInterpretation:
  • Positive value: Increasing FII interest
  • Negative value: FII reducing exposure
DII % change QoQ
number
Quarter-over-Quarter change in Domestic Institutional Investor holdings.Unit: Percentage pointsExample: -0.80 (DII decreased holdings by 0.8%)Source: Screener.in shareholding pattern dataCalculation:
dii_change_qoq = 0.0
# Calculated from latest vs previous quarter DII holding %
Location: bulk_market_analyzer.py:248Precision: Rounded to 2 decimal places
Free Float(%)
number
Percentage of shares available for public trading (not held by promoters/strategic investors).Unit: Percentage (%)Example: 65.30Source: Calculated from shareholding patternCalculation:
free_float_pct = 0.0
# 100 - Promoter holding %
Location: bulk_market_analyzer.py:249Precision: Rounded to 2 decimal placesInterpretation:
  • Higher free float: Better liquidity, less promoter control
  • Lower free float: May have higher volatility, stronger promoter control
Float Shares(Cr.)
number
Absolute number of shares in free float.Unit: Crores (Cr.)Example: 425.60Source: Calculated from total shares and free float percentageCalculation:
float_shares_cr = 0.0
# (Total Shares * Free Float %) / 10000000
Location: bulk_market_analyzer.py:250Precision: Rounded to 2 decimal places

Data Sources

  1. Screener.in Consolidated Quarterly API (cq): P/E, ROE, ROCE, Market Cap
  2. Screener.in Annual Warehouse API (warehouse): Forward P/E, D/E, Shareholding patterns
  3. Dhan API Technical Snapshot (tech): Current stock price (LTP)

Source Code Reference

  • Field extraction: bulk_market_analyzer.py:242-254
  • Helper function: get_float() for safe type conversion
  • Output schema: all_stocks_fundamental_analysis.json

Build docs developers (and LLMs) love