Stock & Mutual Fund Analysis Report

{{ report_date }}

Metrics Legend: RSIi SMAi EMAi MACDi Bollingeri P/Ei P/Bi P/Si PEGi CAGRi Drawdowni Volatilityi Supporti Resistancei YTMi Durationi Convexityi Current Yieldi Accruedi Dirty/Cleani Spreadi

Market Indices Analysis

{% if analysis.index_results %} {% for index in analysis.index_results %} {% set index_name = { '^NSEI': 'NIFTY 50', '^CNXBL': 'NIFTY LargeMidcap 250', '^CRSMID': 'NIFTY Midcap 150', '^CRSSML': 'NIFTY Smallcap 250' }.get(index.symbol, index.name) %} {% endfor %}
Symbol Index Name Close SMA 20 SMA 50 200D MA 1W 1M Trend (SMA20/50) 1D Change RSI (14)
{{ index.symbol }} {{ index_name }} {% if index.technical_indicators.close is number %}{{ index.technical_indicators.close|round(2) }}{% else %}N/A{% endif %} {% if index.technical_indicators.sma_20 is number %}{{ index.technical_indicators.sma_20|round(2) }}{% else %}N/A{% endif %} {% if index.technical_indicators.sma_50 is number %}{{ index.technical_indicators.sma_50|round(2) }}{% else %}N/A{% endif %} {% if index.technical_indicators.sma_200 is number %}{{ index.technical_indicators.sma_200|round(2) }}{% else %}N/A{% endif %} {% if index.technical_indicators.weekly_return is number %}{{ index.technical_indicators.weekly_return|round(2) }}%{% else %}N/A{% endif %} {% if index.technical_indicators.monthly_return is number %}{{ index.technical_indicators.monthly_return|round(2) }}%{% else %}N/A{% endif %} {% set cross = index.technical_indicators.sma_20_50_crossover %} {% if cross %} {% set chip_class = 'chip-neutral' %} {% if cross == 'bullish' %}{% set chip_class = 'chip-bullish' %}{% elif cross == 'bearish' %}{% set chip_class = 'chip-bearish' %}{% endif %} {% if cross == 'bullish' %}Bullish 20>50{% elif cross == 'bearish' %}Bearish 20<50{% else %}Neutral{% endif %} {% else %} N/A {% endif %} {% set dr = index.technical_indicators.daily_return %} {% if dr is number %} {% set chip_class = 'chip-neutral' %} {% if dr > 0 %}{% set chip_class = 'chip-bullish' %}{% elif dr < 0 %}{% set chip_class = 'chip-bearish' %}{% endif %} {% if dr > 0 %}▲{% elif dr < 0 %}▼{% else %}•{% endif %} {{ dr|round(2) }}% {% else %} N/A {% endif %} {% if index.technical_indicators.rsi is number %}{{ index.technical_indicators.rsi|round(2) }}{% else %}N/A{% endif %}
{% else %}

No index data available.

{% endif %}

Stock Analysis Summary

{% for result in analysis.stock_results %} {% endfor %}
Stock Current Price 1D Change 1Y CAGR 3Y CAGR 5Y CAGR RSI (14) 50D MA 200D MA P/E P/B P/S PEG Recommendation
{{ result.symbol }} {% if result.technical_indicators.close is number %}{{ result.technical_indicators.close|round(2) }}{% else %}N/A{% endif %} {% set dr = result.technical_indicators.daily_return %} {% if dr is number %} {% set chip_class = 'chip-neutral' %} {% if dr > 0 %}{% set chip_class = 'chip-bullish' %}{% elif dr < 0 %}{% set chip_class = 'chip-bearish' %}{% endif %} {% if dr > 0 %}▲{% elif dr < 0 %}▼{% else %}•{% endif %} {{ dr|round(2) }}% {% else %} N/A {% endif %} {% if result.technical_indicators.cagr_1y is number %}{{ result.technical_indicators.cagr_1y|round(2) }}%{% else %}N/A{% endif %} {% if result.technical_indicators.cagr_3y is number %}{{ result.technical_indicators.cagr_3y|round(2) }}%{% else %}N/A{% endif %} {% if result.technical_indicators.cagr_5y is number %}{{ result.technical_indicators.cagr_5y|round(2) }}%{% else %}N/A{% endif %} {% if result.technical_indicators.rsi is number %}{{ result.technical_indicators.rsi|round(2) }}{% else %}N/A{% endif %} {% if result.technical_indicators.sma_50 is number %}{{ result.technical_indicators.sma_50|round(2) }}{% else %}N/A{% endif %} {% if result.technical_indicators.sma_200 is number %}{{ result.technical_indicators.sma_200|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.pe_ratio is number %}{{ result.fundamental_metrics.pe_ratio|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.pb_ratio is number %}{{ result.fundamental_metrics.pb_ratio|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.price_to_sales is number %}{{ result.fundamental_metrics.price_to_sales|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.peg_ratio is number %}{{ result.fundamental_metrics.peg_ratio|round(2) }}{% else %}N/A{% endif %} {{ result.recommendation.action if result.recommendation else 'N/A' }}
{% if analysis.stock_results and analysis.stock_results|length > 0 %} {% set sorted_by_change = analysis.stock_results|sort(attribute='technical_indicators.daily_return', reverse=true) %} {% set top_gainers = sorted_by_change[:5] %} {% set sorted_by_change_asc = analysis.stock_results|sort(attribute='technical_indicators.daily_return') %} {% set top_losers = sorted_by_change_asc[:5] %}

Top 5 Gainers & Losers (1D)

{% for i in range(0, 5) %} {% endfor %}
Top 5 Gainers Top 5 Losers
Stock1D ChangePrice Stock1D ChangePrice
{% if top_gainers|length > i %}{{ top_gainers[i].symbol }}{% else %}-{% endif %} {% if top_gainers|length > i and top_gainers[i].technical_indicators.daily_return is number %}{{ top_gainers[i].technical_indicators.daily_return|round(2) }}%{% else %}-{% endif %} {% if top_gainers|length > i and top_gainers[i].technical_indicators.close is number %}{{ top_gainers[i].technical_indicators.close|round(2) }}{% else %}-{% endif %} {% if top_losers|length > i %}{{ top_losers[i].symbol }}{% else %}-{% endif %} {% if top_losers|length > i and top_losers[i].technical_indicators.daily_return is number %}{{ top_losers[i].technical_indicators.daily_return|round(2) }}%{% else %}-{% endif %} {% if top_losers|length > i and top_losers[i].technical_indicators.close is number %}{{ top_losers[i].technical_indicators.close|round(2) }}{% else %}-{% endif %}
{% endif %}

Detailed Stock Analysis

{% for result in analysis.stock_results %}
{{ result.symbol }} - {{ result.metadata['info']['longName'] }}

Summary

Current Price 1D Change RSI (14) 50D MA 200D MA P/E P/B P/S PEG
{% if result.technical_indicators.close is number %}{{ result.technical_indicators.close|round(2) }}{% else %}N/A{% endif %} {% set dr = result.technical_indicators.daily_return %} {% if dr is number %} {% set chip_class = 'chip-neutral' %} {% if dr > 0 %}{% set chip_class = 'chip-bullish' %}{% elif dr < 0 %}{% set chip_class = 'chip-bearish' %}{% endif %} {% if dr > 0 %}▲{% elif dr < 0 %}▼{% else %}•{% endif %} {{ dr|round(2) }}% {% else %} N/A {% endif %} {% if result.technical_indicators.rsi is number %}{{ result.technical_indicators.rsi|round(2) }}{% else %}N/A{% endif %} {% if result.technical_indicators.sma_50 is number %}{{ result.technical_indicators.sma_50|round(2) }}{% else %}N/A{% endif %} {% if result.technical_indicators.sma_200 is number %}{{ result.technical_indicators.sma_200|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.pe_ratio is number %}{{ result.fundamental_metrics.pe_ratio|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.pb_ratio is number %}{{ result.fundamental_metrics.pb_ratio|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.price_to_sales is number %}{{ result.fundamental_metrics.price_to_sales|round(2) }}{% else %}N/A{% endif %} {% if result.fundamental_metrics.peg_ratio is number %}{{ result.fundamental_metrics.peg_ratio|round(2) }}{% else %}N/A{% endif %}

Detailed Analysis

MetricValueMetricValue
Close{% if result.technical_indicators.close is number %}{{ result.technical_indicators.close|round(2) }}{% else %}N/A{% endif %}Daily Return{% if result.technical_indicators.daily_return is number %}{{ result.technical_indicators.daily_return|round(2) }}%{% else %}N/A{% endif %}
SMA 20 {% if result.technical_indicators.sma_20 is number %}{{ result.technical_indicators.sma_20|round(2) }}{% else %}N/A{% endif %}SMA 50 {% if result.technical_indicators.sma_50 is number %}{{ result.technical_indicators.sma_50|round(2) }}{% else %}N/A{% endif %}
SMA 200 {% if result.technical_indicators.sma_200 is number %}{{ result.technical_indicators.sma_200|round(2) }}{% else %}N/A{% endif %}EMA 20 {% if result.technical_indicators.ema_20 is number %}{{ result.technical_indicators.ema_20|round(2) }}{% else %}N/A{% endif %}
EMA 50 {% if result.technical_indicators.ema_50 is number %}{{ result.technical_indicators.ema_50|round(2) }}{% else %}N/A{% endif %}RSI {% if result.technical_indicators.rsi is number %}{{ result.technical_indicators.rsi|round(2) }}{% else %}N/A{% endif %}
MACD {% if result.technical_indicators.macd is number %}{{ result.technical_indicators.macd|round(2) }}{% else %}N/A{% endif %}MACD Signal {% if result.technical_indicators.macd_signal is number %}{{ result.technical_indicators.macd_signal|round(2) }}{% else %}N/A{% endif %}
Bollinger Middle {% if result.technical_indicators.bollinger.middle is number %}{{ result.technical_indicators.bollinger.middle|round(2) }}{% else %}N/A{% endif %}Bollinger Upper {% if result.technical_indicators.bollinger.upper is number %}{{ result.technical_indicators.bollinger.upper|round(2) }}{% else %}N/A{% endif %}
Bollinger Lower {% if result.technical_indicators.bollinger.lower is number %}{{ result.technical_indicators.bollinger.lower|round(2) }}{% else %}N/A{% endif %}Volume{{ '{:,.0f}'.format(result.technical_indicators.volume) if result.technical_indicators.volume is not none else 'N/A' }}
P/E{% if result.fundamental_metrics.pe_ratio is number %}{{ result.fundamental_metrics.pe_ratio|round(2) }}{% else %}N/A{% endif %}P/B{% if result.fundamental_metrics.pb_ratio is number %}{{ result.fundamental_metrics.pb_ratio|round(2) }}{% else %}N/A{% endif %}
P/S{% if result.fundamental_metrics.price_to_sales is number %}{{ result.fundamental_metrics.price_to_sales|round(2) }}{% else %}N/A{% endif %}PEG{% if result.fundamental_metrics.peg_ratio is number %}{{ result.fundamental_metrics.peg_ratio|round(2) }}{% else %}N/A{% endif %}
Market Cap{{ '{:,.0f}'.format(result.fundamental_metrics.market_cap) if result.fundamental_metrics.market_cap is not none else 'N/A' }}Enterprise Value{{ '{:,.0f}'.format(result.fundamental_metrics.enterprise_value) if result.fundamental_metrics.enterprise_value is not none else 'N/A' }}
Price to Sales{% if result.fundamental_metrics.price_to_sales is number %}{{ result.fundamental_metrics.price_to_sales|round(2) }}{% else %}N/A{% endif %}Profit Margins{% if result.fundamental_metrics.profit_margins is number %}{{ result.fundamental_metrics.profit_margins|round(2) }}{% else %}N/A{% endif %}
Revenue Growth{% if result.fundamental_metrics.revenue_growth is number %}{{ result.fundamental_metrics.revenue_growth|round(2) }}{% else %}N/A{% endif %}Earnings Growth{% if result.fundamental_metrics.earnings_growth is number %}{{ result.fundamental_metrics.earnings_growth|round(2) }}%{% else %}N/A{% endif %}
Debt to Equity{% if result.fundamental_metrics.debt_to_equity is number %}{{ result.fundamental_metrics.debt_to_equity|round(2) }}{% else %}N/A{% endif %}Total Debt{{ '{:,.0f}'.format(result.fundamental_metrics.total_debt) if result.fundamental_metrics.total_debt is not none else 'N/A' }}
Payout Ratio{% if result.fundamental_metrics.payout_ratio is number %}{{ result.fundamental_metrics.payout_ratio|round(2) }}{% else %}N/A{% endif %}
{% else %}

No stock data available.

{% endfor %}

Mutual Fund Summary

{% if analysis.mutual_fund_summaries %} {% for summary in analysis.mutual_fund_summaries %} {% endfor %}
Fund RSI (14) 1Y CAGR 3Y CAGR 5Y CAGR Volatility
{{ summary.name }} {% if summary.rsi is number %}{{ summary.rsi|round(2) }}{% else %}N/A{% endif %} {% if summary.cagr_1y is number %}{{ summary.cagr_1y|round(2) }}%{% else %}N/A{% endif %} {% if summary.cagr_3y is number %}{{ summary.cagr_3y|round(2) }}%{% else %}N/A{% endif %} {% if summary.cagr_5y is number %}{{ summary.cagr_5y|round(2) }}%{% else %}N/A{% endif %} {% if summary.annual_volatility is number %}{{ summary.annual_volatility|round(2) }}%{% else %}N/A{% endif %}
{% else %}

No mutual fund data available.

{% endif %}

Mutual Fund Analysis

{% for summary in analysis.mutual_fund_summaries %}
{{ summary.name }}

Performance Metrics

PeriodCAGR
1 Year{% if summary.cagr_1y is number %}{{ summary.cagr_1y|round(2) }}%{% else %}N/A{% endif %}
3 Years{% if summary.cagr_3y is number %}{{ summary.cagr_3y|round(2) }}%{% else %}N/A{% endif %}
5 Years{% if summary.cagr_5y is number %}{{ summary.cagr_5y|round(2) }}%{% else %}N/A{% endif %}

Indicators

IndicatorValue
RSI (14){% if summary.rsi is number %}{{ summary.rsi|round(2) }}{% else %}N/A{% endif %}
20-Day MA{% if summary.ma_20 is number %}{{ summary.ma_20|round(2) }}{% else %}N/A{% endif %}
20-Day Std Dev{% if summary['20d_std'] is number %}{{ summary['20d_std']|round(2) }}{% else %}N/A{% endif %}
Support{% if summary.support is number %}{{ summary.support|round(2) }}{% else %}N/A{% endif %}
Resistance{% if summary.resistance is number %}{{ summary.resistance|round(2) }}{% else %}N/A{% endif %}
Bollinger Upper{% if summary.upper_band is number %}{{ summary.upper_band|round(2) }}{% else %}N/A{% endif %}
Bollinger Lower{% if summary.lower_band is number %}{{ summary.lower_band|round(2) }}{% else %}N/A{% endif %}

Risk Analysis

MetricValue
Max Drawdown{% if summary.max_drawdown is number %}{{ summary.max_drawdown|round(2) }}%{% else %}N/A{% endif %}
Standard Deviation{% if summary.annual_volatility is number %}{{ summary.annual_volatility|round(2) }}%{% else %}N/A{% endif %}
{% else %}

No mutual fund data available.

{% endfor %} {% if analysis.bond_results and analysis.bond_results|length > 0 %}

Corporate Bonds Summary

{% for b in analysis.bond_results %} {% endfor %}
ISIN Issuer Coupon % Maturity Clean Price Dirty Price Accrued YTM % YTC % YTW % Current Yield % Mod Duration Convexity Spread (bps) Qty Market Value Next Call
{{ b.isin }} {{ b.issuer }} {% if b.coupon is number %}{{ b.coupon|round(2) }}{% else %}N/A{% endif %} {{ b.maturity_date }} {% if b.clean_price is number %}{{ b.clean_price|round(2) }}{% else %}N/A{% endif %} {% if b.dirty_price is number %}{{ b.dirty_price|round(2) }}{% else %}N/A{% endif %} {% if b.accrued_interest is number %}{{ b.accrued_interest|round(2) }}{% else %}N/A{% endif %} {% if b.ytm is number %}{{ b.ytm|round(2) }}{% else %}N/A{% endif %} {% if b.ytc is number %}{{ b.ytc|round(2) }}{% else %}N/A{% endif %} {% if b.ytw is number %}{{ b.ytw|round(2) }}{% else %}N/A{% endif %} {% if b.current_yield is number %}{{ b.current_yield|round(2) }}{% else %}N/A{% endif %} {% if b.modified_duration is number %}{{ b.modified_duration|round(3) }}{% else %}N/A{% endif %} {% if b.convexity is number %}{{ b.convexity|round(3) }}{% else %}N/A{% endif %} {% if b.spread is number %}{{ (b.spread * 100)|round(1) }}{% else %}N/A{% endif %} {{ b.quantity or 0 }} {% if b.market_value is number %}{{ b.market_value|round(2) }}{% else %}N/A{% endif %} {{ b.next_call_date or 'N/A' }}
{% if analysis.bond_portfolio %}

Corporate Bond Portfolio Summary

Total Bonds Total Market Value Weighted Mod Duration Weighted Convexity
{{ analysis.bond_portfolio.count }} {% if analysis.bond_portfolio.total_market_value is number %}{{ analysis.bond_portfolio.total_market_value|round(2) }}{% else %}N/A{% endif %} {% if analysis.bond_portfolio.weighted_modified_duration is number %}{{ analysis.bond_portfolio.weighted_modified_duration|round(3) }}{% else %}N/A{% endif %} {% if analysis.bond_portfolio.weighted_convexity is number %}{{ analysis.bond_portfolio.weighted_convexity|round(3) }}{% else %}N/A{% endif %}
{% endif %}

Corporate Bonds - Details

{% for b in analysis.bond_results %}
{{ b.issuer }} ({{ b.isin }})
FieldValueFieldValue
ISIN{{ b.isin }}Issuer{{ b.issuer }}
Coupon %{% if b.coupon is number %}{{ b.coupon|round(2) }}{% else %}N/A{% endif %}Frequency{{ b.frequency }}
Maturity{{ b.maturity_date }}Face Value{% if b.face_value is number %}{{ b.face_value|round(2) }}{% else %}N/A{% endif %}
Day Count{{ b.day_count }}Rating{{ b.rating or 'N/A' }}
Settlement{{ b.settlement_date or 'N/A' }}Clean Price{% if b.clean_price is number %}{{ b.clean_price|round(2) }}{% else %}N/A{% endif %}
Accrued{% if b.accrued_interest is number %}{{ b.accrued_interest|round(2) }}{% else %}N/A{% endif %}Dirty Price{% if b.dirty_price is number %}{{ b.dirty_price|round(2) }}{% else %}N/A{% endif %}
YTM %{% if b.ytm is number %}{{ b.ytm|round(2) }}{% else %}N/A{% endif %}YTC %{% if b.ytc is number %}{{ b.ytc|round(2) }}{% else %}N/A{% endif %}
YTW %{% if b.ytw is number %}{{ b.ytw|round(2) }}{% else %}N/A{% endif %}Current Yield %{% if b.current_yield is number %}{{ b.current_yield|round(2) }}{% else %}N/A{% endif %}
Macaulay Duration{% if b.macaulay_duration is number %}{{ b.macaulay_duration|round(3) }}{% else %}N/A{% endif %}Modified Duration{% if b.modified_duration is number %}{{ b.modified_duration|round(3) }}{% else %}N/A{% endif %}
Convexity{% if b.convexity is number %}{{ b.convexity|round(3) }}{% else %}N/A{% endif %}Spread (bps){% if b.spread is number %}{{ (b.spread * 100)|round(1) }}{% else %}N/A{% endif %}
{% endfor %} {% endif %}

Metrics Glossary

P/E (Price-to-Earnings)
Price per share divided by earnings per share.
Back to Top ↑
P/B (Price-to-Book)
Market price divided by book value per share.
Back to Top ↑
P/S (Price-to-Sales)
Stock price divided by sales per share.
Back to Top ↑
PEG (Price/Earnings-to-Growth)
PEG = (P/E) / (EPS growth). Lower values can indicate better value for the growth rate.
Back to Top ↑
RSI (Relative Strength Index)
Momentum oscillator; values above 70 may indicate overbought, below 30 oversold.
Back to Top ↑
SMA (Simple Moving Average)
Average of prices over a set window (e.g., 50D, 200D) indicating trend.
Back to Top ↑
EMA (Exponential Moving Average)
Moving average that weights recent prices more heavily.
Back to Top ↑
MACD
Difference between two EMAs with a signal line; used to identify momentum shifts.
Back to Top ↑
Bollinger Bands
Bands at ±2 standard deviations from a moving average, indicating volatility.
Back to Top ↑
CAGR (Compound Annual Growth Rate)
Mean annual growth rate of an investment over a specified time period.
Back to Top ↑
Max Drawdown
Largest observed loss from a peak to a trough before a new peak is attained.
Back to Top ↑
Volatility (Std Dev)
Annualized standard deviation of returns; higher values imply higher risk.
Back to Top ↑
Support
A price level where a downtrend can be expected to pause due to demand.
Back to Top ↑
Resistance
A price level where an uptrend can be expected to pause due to supply.
Back to Top ↑
YTM (Yield to Maturity)
Annualized return assuming the bond is held to maturity and coupons are reinvested at the same rate.
Back to Top ↑
Duration
Price sensitivity to yield changes. Modified duration approximates % price change for a 1% yield move.
Back to Top ↑
Convexity
Measures the curvature of the price-yield relationship; improves duration estimate for larger moves.
Back to Top ↑
Current Yield
Annual coupon divided by current clean price.
Back to Top ↑
Accrued Interest
Interest earned since the last coupon date, payable by the buyer to the seller.
Back to Top ↑
Dirty vs Clean Price
Clean price excludes accrued interest; dirty price includes it (dirty = clean + accrued).
Back to Top ↑
Spread
Difference between bond YTM and benchmark yield (e.g., government bond), often quoted in basis points.
Back to Top ↑
YTC (Yield-to-Call)
Annualized yield assuming the bond is called at the next call date at the call price.
Back to Top ↑
YTW (Yield-to-Worst)
The lowest yield among YTM, YTC, and yield-to-put (if applicable) across relevant dates.
Back to Top ↑
Market Value
Position value = Dirty Price/100 × Face Value × Quantity.
Back to Top ↑