स्टॉक डेटा को निकालना और विश्लेषण करना वित्तीय परिदृश्य में निर्णय लेने की सूचना देने के लिए महत्वपूर्ण है। यह ट्यूटोरियल पायथन में एक एकीकृत वित्तीय विश्लेषण और रिपोर्टिंग उपकरण बनाने के लिए एक व्यापक मार्गदर्शिका प्रदान करता है। हम याहू फाइनेंस से ऐतिहासिक बाजार के आंकड़ों को खींचना और सरल मूविंग एवरेज, बोलिंगर बैंड, एमएसीडी और आरएसआई जैसे आवश्यक तकनीकी संकेतकों की गणना करना सीखेंगे। गाइड आपको व्यावहारिक विज़ुअलाइज़ेशन उत्पन्न करने और उन्हें कस्टम मल्टी-पेज पीडीएफ रिपोर्टों में संकलित करने के माध्यम से चलता है। चाहे आप एक डेटा उत्साही हों, वित्तीय विश्लेषक, या पायथन डेवलपर अपने टूलकिट का विस्तार करने के लिए देख रहे हों, यह ट्यूटोरियल आपको ऐसे कौशल से लैस करेगा जो कच्चे बाजार डेटा को कार्रवाई योग्य अंतर्दृष्टि में बदलने में मदद करते हैं।
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
हम वित्तीय डेटा विश्लेषण और दृश्य के लिए आवश्यक पायथन पुस्तकालयों का आयात करते हैं। यहां, Yfinance का उपयोग स्टॉक मार्केट डेटा, डेटा हेरफेर के लिए पांडा, मैटप्लोटलिब और संख्यात्मक भूखंडों को बनाने और संभालने के लिए numpy के लिए किया जाता है, और एक एकल पीडीएफ रिपोर्ट में कई भूखंडों को संकलित करने के लिए PDFPages।
def compute_indicators(df):
"""
Computes technical indicators for the DataFrame:
- 20-day and 50-day Simple Moving Averages (SMA)
- Bollinger Bands (using 20-day SMA ±2 standard deviations)
- MACD (12-day EMA minus 26-day EMA) and its 9-day Signal Line
- RSI (Relative Strength Index) over a 14-day lookback period
"""
df('SMA20') = df('Close').rolling(window=20).mean()
df('SMA50') = df('Close').rolling(window=50).mean()
df('STD20') = df('Close').rolling(window=20).std()
df('UpperBand') = df('SMA20') + 2 * df('STD20')
df('LowerBand') = df('SMA20') - 2 * df('STD20')
df('EMA12') = df('Close').ewm(span=12, adjust=False).mean()
df('EMA26') = df('Close').ewm(span=26, adjust=False).mean()
df('MACD') = df('EMA12') - df('EMA26')
df('Signal') = df('MACD').ewm(span=9, adjust=False).mean()
delta = df('Close').diff()
gain = delta.copy()
loss = delta.copy()
gain(gain < 0) = 0
loss(loss > 0) = 0
loss = loss.abs()
avg_gain = gain.rolling(window=14).mean()
avg_loss = loss.rolling(window=14).mean()
rs = avg_gain / avg_loss
df('RSI') = 100 - (100 / (1 + rs))
return df
यह फ़ंक्शन प्रमुख तकनीकी संकेतकों की गणना करता है- इनपुट डेटाफ्रेम में निहित स्टॉक मूल्य डेटा के लिए SMAS, BOLLINGER BANDS, MACD, और RSI सहित। यह ऐतिहासिक स्टॉक प्रदर्शन के गहन तकनीकी विश्लेषण को सक्षम करते हुए, प्रत्येक संकेतक के लिए अतिरिक्त कॉलम के साथ डेटाफ्रेम को अपडेट करता है।
def create_cover_page(pdf):
"""
Creates and saves a cover page into the PDF report.
"""
fig = plt.figure(figsize=(11.69, 8.27))
plt.axis('off')
plt.text(0.5, 0.7, "Financial Analysis Report", fontsize=24, ha="center")
plt.text(0.5, 0.62, "Analysis of 5 Stocks from Yahoo Finance", fontsize=16, ha="center")
plt.text(0.5, 0.5, "Includes Technical Indicators: SMA, Bollinger Bands, MACD, RSI", fontsize=12, ha="center")
plt.text(0.5, 0.4, "Generated with Python and matplotlib", fontsize=10, ha="center")
pdf.savefig(fig)
plt.close(fig)
यह फ़ंक्शन Matplotlib का उपयोग करके एक नेत्रहीन आकर्षक कवर पृष्ठ बनाता है और इसे PDFPages ऑब्जेक्ट के माध्यम से PDF रिपोर्ट के पहले पृष्ठ के रूप में जोड़ता है। यह फिर संसाधनों को मुक्त करने के लिए आंकड़ा बंद कर देता है।
def plot_price_chart(ticker, df):
"""
Generates a price chart with SMA and Bollinger Bands for a given ticker.
"""
fig, ax = plt.subplots(figsize=(14, 7))
ax.plot(df.index, df('Close'), label="Close Price", linewidth=1.5)
ax.plot(df.index, df('SMA20'), label="SMA (20)", linewidth=1.2)
ax.plot(df.index, df('SMA50'), label="SMA (50)", linewidth=1.2)
ax.plot(df.index, df('UpperBand'), label="Upper Bollinger Band", linestyle="--")
ax.plot(df.index, df('LowerBand'), label="Lower Bollinger Band", linestyle="--")
ax.fill_between(df.index, df('LowerBand'), df('UpperBand'), color="lightgray", alpha=0.3)
ax.set_title(f'{ticker}: Price & Moving Averages with Bollinger Bands')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.legend()
ax.grid(True)
return fig
यह फ़ंक्शन किसी दिए गए टिकर के लिए एक व्यापक स्टॉक मूल्य चार्ट उत्पन्न करता है जिसमें नज़दीकी कीमत, 20-दिन और 50-दिवसीय एसएमए और बोलिंगर बैंड शामिल हैं। यह एक Matplotlib आंकड़ा लौटाता है जिसे सहेजा जा सकता है या आगे एक PDF रिपोर्ट में संसाधित किया जा सकता है।
def plot_macd_chart(ticker, df):
"""
Generates a MACD plot for the given ticker.
"""
fig, ax = plt.subplots(figsize=(14, 5))
ax.plot(df.index, df('MACD'), label="MACD", linewidth=1.5)
ax.plot(df.index, df('Signal'), label="Signal Line", linewidth=1.5)
ax.set_title(f'{ticker}: MACD')
ax.set_xlabel('Date')
ax.set_ylabel('MACD')
ax.legend()
ax.grid(True)
return fig
यह फ़ंक्शन समय के साथ MACD और इसकी सिग्नल लाइन की साजिश रचकर एक निर्दिष्ट टिकर के लिए एक MACD चार्ट उत्पन्न करता है। यह एक Matplotlib आंकड़ा लौटाता है जिसे एक बड़ी PDF रिपोर्ट में शामिल किया जा सकता है या स्वतंत्र रूप से प्रदर्शित किया जा सकता है।
def plot_rsi_chart(ticker, df):
"""
Generates an RSI plot for the given ticker.
"""
fig, ax = plt.subplots(figsize=(14, 5))
ax.plot(df.index, df('RSI'), label="RSI", linewidth=1.5)
ax.axhline(70, color="red", linestyle="--", linewidth=1, label="Overbought (70)")
ax.axhline(30, color="green", linestyle="--", linewidth=1, label="Oversold (30)")
ax.set_title(f'{ticker}: RSI')
ax.set_xlabel('Date')
ax.set_ylabel('RSI')
ax.legend()
ax.grid(True)
return fig
यह फ़ंक्शन किसी दिए गए स्टॉक टिकर के लिए एक आरएसआई चार्ट उत्पन्न करता है, जो आरएसआई मूल्यों को ओवरबॉट (70) और ओवरसोल्ड (30) स्तरों पर क्षैतिज संदर्भ लाइनों के साथ प्लॉट करता है। यह एक Matplotlib आंकड़ा लौटाता है जिसे अंतिम वित्तीय विश्लेषण रिपोर्ट में शामिल किया जा सकता है।
def main():
tickers = ()
for i in range(5):
ticker = input(f"Enter ticker #{i+1}: ").upper().strip()
tickers.append(ticker)
pdf_filename = "financial_report.pdf"
with PdfPages(pdf_filename) as pdf:
create_cover_page(pdf)
for ticker in tickers:
print(f"Downloading data for {ticker} from Yahoo Finance...")
df = yf.download(ticker, period='1y')
if df.empty:
print(f"No data found for {ticker}. Skipping to the next ticker.")
continue
df = compute_indicators(df)
fig_price = plot_price_chart(ticker, df)
pdf.savefig(fig_price)
plt.close(fig_price)
fig_macd = plot_macd_chart(ticker, df)
pdf.savefig(fig_macd)
plt.close(fig_macd)
fig_rsi = plot_rsi_chart(ticker, df)
pdf.savefig(fig_rsi)
plt.close(fig_rsi)
print(f"PDF report generated and saved as '{pdf_filename}'.")
यहां, यह मुख्य फ़ंक्शन उपयोगकर्ता को पांच स्टॉक टिकर इनपुट करने के लिए प्रेरित करता है, याहू फाइनेंस से प्रत्येक के लिए डेटा का एक वर्ष डाउनलोड करता है, प्रमुख तकनीकी संकेतकों की गणना करता है, और इसी मूल्य, एमएसीडी और आरएसआई चार्ट उत्पन्न करता है। यह तब सभी चार्टों को एक मल्टी report पेज पीडीएफ रिपोर्ट में “Financial_Report.pdf” नाम से संकलित करता है और रिपोर्ट सहेजने के बाद एक पुष्टिकरण संदेश प्रिंट करता है।
if __name__ == "__main__":
main()
अंत में, यह ब्लॉक जांचता है कि क्या स्क्रिप्ट को मॉड्यूल के रूप में आयात करने के बजाय सीधे निष्पादित किया जाता है। यदि हां, तो यह मुख्य () फ़ंक्शन कहता है।
अंत में, हमने पायथन का उपयोग करके वित्तीय विश्लेषण को स्वचालित करने के लिए एक विधि का प्रदर्शन किया है। आपने सीखा है कि मूल्यवान डेटा कैसे निकालें, प्रमुख तकनीकी संकेतकों की गणना करें, और बहु-पृष्ठ पीडीएफ प्रारूप में व्यापक दृश्य रिपोर्ट उत्पन्न करें। यह एकीकृत दृष्टिकोण विश्लेषण प्रक्रिया को सुव्यवस्थित करता है और बाजार के रुझानों की कल्पना करने और स्टॉक प्रदर्शन की निगरानी करने के लिए एक शक्तिशाली तरीका प्रदान करता है। जैसा कि आप इस ढांचे पर आगे अनुकूलित और विस्तार करते हैं, आप अपनी विश्लेषणात्मक क्षमताओं को बढ़ाना जारी रख सकते हैं और अधिक सूचित वित्तीय निर्णय ले सकते हैं।
यह रहा कोलैब नोटबुक। इसके अलावा, हमें फॉलो करना न भूलें ट्विटर और हमारे साथ जुड़ें तार -चैनल और लिंक्डइन जीआरओयूपी। हमारे साथ जुड़ने के लिए मत भूलना 85K+ एमएल सबरेडिट।
🔥 ।

आईआईटी मद्रास में मार्कटेकपोस्ट में एक परामर्श इंटर्न और दोहरे डिग्री के छात्र सना हसन, वास्तविक दुनिया की चुनौतियों का समाधान करने के लिए प्रौद्योगिकी और एआई को लागू करने के बारे में भावुक हैं। व्यावहारिक समस्याओं को हल करने में गहरी रुचि के साथ, वह एआई और वास्तविक जीवन के समाधानों के चौराहे के लिए एक नया दृष्टिकोण लाता है।
