| import yfinance as yf |
| import pandas as pd |
|
|
|
|
| def get_nifty_trend(): |
|
|
| df = yf.download("^NSEI", period="3mo", interval="1d", progress=False) |
|
|
| close = df["Close"].squeeze() |
|
|
| ma20 = close.rolling(20).mean().iloc[-1] |
| price = close.iloc[-1] |
|
|
| if price > ma20: |
| return "Bullish" |
| else: |
| return "Bearish" |
|
|
|
|
| def compute_sector_strength(data): |
|
|
| sector_map = { |
| "BANKING": ["HDFCBANK.NS","ICICIBANK.NS","SBIN.NS","AXISBANK.NS","KOTAKBANK.NS"], |
| "IT": ["TCS.NS","INFY.NS","WIPRO.NS"], |
| "FMCG": ["ITC.NS","HINDUNILVR.NS","NESTLEIND.NS"], |
| "AUTO": ["MARUTI.NS","TATAMOTORS.NS"], |
| "PHARMA": ["SUNPHARMA.NS","DRREDDY.NS"], |
| "INFRA": ["LT.NS","ULTRACEMCO.NS"] |
| } |
|
|
| sector_scores = {} |
|
|
| for sector, stocks in sector_map.items(): |
|
|
| returns = [] |
|
|
| for ticker in stocks: |
|
|
| if ticker not in data: |
| continue |
|
|
| df = data[ticker] |
|
|
| close = df["Close"].squeeze() |
|
|
| if len(close) < 10: |
| continue |
|
|
| ret = close.pct_change().iloc[-5:].mean() |
|
|
| returns.append(ret) |
|
|
| if len(returns) == 0: |
| sector_scores[sector] = 0 |
| else: |
| sector_scores[sector] = round(sum(returns) / len(returns) * 100,2) |
|
|
| return sector_scores |