Monday, 19 May 2025
  • My Feed
  • My Interests
  • My Saves
  • History
  • Blog
Subscribe
Capernaum
  • Finance
    • Cryptocurrency
    • Stock Market
    • Real Estate
  • Lifestyle
    • Travel
    • Fashion
    • Cook
  • Technology
    • AI
    • Data Science
    • Machine Learning
  • Health
    HealthShow More
    Eating to Keep Ulcerative Colitis in Remission 
    Eating to Keep Ulcerative Colitis in Remission 

    Plant-based diets can be 98 percent effective in keeping ulcerative colitis patients…

    By capernaum
    Foods That Disrupt Our Microbiome
    Foods That Disrupt Our Microbiome

    Eating a diet filled with animal products can disrupt our microbiome faster…

    By capernaum
    Skincare as You Age Infographic
    Skincare as You Age Infographic

    When I dove into the scientific research for my book How Not…

    By capernaum
    Treating Fatty Liver Disease with Diet 
    Treating Fatty Liver Disease with Diet 

    What are the three sources of liver fat in fatty liver disease,…

    By capernaum
    Bird Flu: Emergence, Dangers, and Preventive Measures

    In the United States in January 2025 alone, approximately 20 million commercially-raised…

    By capernaum
  • Sport
  • 🔥
  • Cryptocurrency
  • Travel
  • Data Science
  • Real Estate
  • AI
  • Technology
  • Machine Learning
  • Stock Market
  • Finance
  • Fashion
Font ResizerAa
CapernaumCapernaum
  • My Saves
  • My Interests
  • My Feed
  • History
  • Travel
  • Health
  • Technology
Search
  • Pages
    • Home
    • Blog Index
    • Contact Us
    • Search Page
    • 404 Page
  • Personalized
    • My Feed
    • My Saves
    • My Interests
    • History
  • Categories
    • Technology
    • Travel
    • Health
Have an existing account? Sign In
Follow US
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Home » Blog » A Coding Guide to Build a Finance Analytics Tool for Extracting Yahoo Finance Data, Computing Financial Analysis, and Creating Custom PDF Reports
AI

A Coding Guide to Build a Finance Analytics Tool for Extracting Yahoo Finance Data, Computing Financial Analysis, and Creating Custom PDF Reports

capernaum
Last updated: 2025-04-15 08:27
capernaum
Share
A Coding Guide to Build a Finance Analytics Tool for Extracting Yahoo Finance Data, Computing Financial Analysis, and Creating Custom PDF Reports
SHARE

Extracting and analyzing stock data is key to informed decision-making in the financial landscape. This tutorial offers a comprehensive guide to building an integrated financial analysis and reporting tool in Python. We will learn to pull historical market data from Yahoo Finance and compute essential technical indicators such as Simple Moving Averages, Bollinger Bands, MACD, and RSI. The guide walks you through generating insightful visualizations and compiling them into custom multi-page PDF reports. Whether you are a data enthusiast, financial analyst, or Python developer looking to expand your toolkit, this tutorial will equip you with skills that help turn raw market data into actionable insights.

Copy CodeCopiedUse a different Browser
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages

We import essential Python libraries for financial data analysis and visualization. Here, yfinance is used for fetching stock market data, pandas for data manipulation, matplotlib and numpy for creating and handling numerical plots, and PdfPages for compiling multiple plots into a single PDF report.

Copy CodeCopiedUse a different Browser
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

This function computes key technical indicators—including SMAs, Bollinger Bands, MACD, and RSI—for stock price data contained in the input DataFrame. It updates the DataFrame with additional columns for each indicator, enabling in-depth technical analysis of historical stock performance.

Copy CodeCopiedUse a different Browser
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)

This function creates a visually appealing cover page using matplotlib and adds it as the first page of the PDF report via the provided PdfPages object. It then closes the figure to free up resources.

Copy CodeCopiedUse a different Browser
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

This function generates a comprehensive stock price chart for a given ticker that includes the close price, 20-day and 50-day SMAs, and the Bollinger Bands. It returns a matplotlib figure that can be saved or further processed in a PDF report.

Copy CodeCopiedUse a different Browser
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

This function generates a MACD chart for a specified ticker by plotting the MACD and its Signal Line over time. It returns a matplotlib figure that can be incorporated into a larger PDF report or displayed independently.

Copy CodeCopiedUse a different Browser
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

This function generates an RSI chart for a given stock ticker, plotting the RSI values along with horizontal reference lines at the overbought (70) and oversold (30) levels. It returns a matplotlib figure that can be incorporated into the final financial analysis report.

Copy CodeCopiedUse a different Browser
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}'.")

Here, this main function prompts the user to input five stock tickers, downloads one year of data for each from Yahoo Finance, computes key technical indicators, and generates corresponding price, MACD, and RSI charts. It then compiles all the charts into a multi‐page PDF report named “financial_report.pdf” and prints a confirmation message once the report is saved.

Copy CodeCopiedUse a different Browser
if __name__ == "__main__":
    main()

Finally, this block checks whether the script is executed directly rather than imported as a module. If so, it calls the main() function.

In conclusion, we have demonstrated a method for automating financial analysis using Python. You have learned how to extract valuable data, calculate key technical indicators, and generate comprehensive visual reports in a multi-page PDF format. This integrated approach streamlines the analysis process and provides a powerful way to visualize market trends and monitor stock performance. As you further customize and expand upon this framework, you can continue to enhance your analytical capabilities and make more informed financial decisions.


Here is the Colab Notebook. Also, don’t forget to follow us on Twitter and join our Telegram Channel and LinkedIn Group. Don’t Forget to join our 85k+ ML SubReddit.

🔥 [Register Now] miniCON Virtual Conference on AGENTIC AI: FREE REGISTRATION + Certificate of Attendance + 4 Hour Short Event (May 21, 9 am- 1 pm PST) + Hands on Workshop

The post A Coding Guide to Build a Finance Analytics Tool for Extracting Yahoo Finance Data, Computing Financial Analysis, and Creating Custom PDF Reports appeared first on MarkTechPost.

Share This Article
Twitter Email Copy Link Print
Previous Article Reflection Begins in Pre-Training: Essential AI Researchers Demonstrate Early Emergence of Reflective Reasoning in LLMs Using Adversarial Datasets Reflection Begins in Pre-Training: Essential AI Researchers Demonstrate Early Emergence of Reflective Reasoning in LLMs Using Adversarial Datasets
Next Article Will XRP Price Add a Zero as Ripple vs. SEC Lawsuit Nears Conclusion? Will XRP Price Add a Zero as Ripple vs. SEC Lawsuit Nears Conclusion?
Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Your Trusted Source for Accurate and Timely Updates!

Our commitment to accuracy, impartiality, and delivering breaking news as it happens has earned us the trust of a vast audience. Using RSS feeds, we aggregate news from trusted sources to ensure real-time updates on the latest events and trends. Stay ahead with timely, curated information designed to keep you informed and engaged.
TwitterFollow
TelegramFollow
LinkedInFollow
- Advertisement -
Ad imageAd image

You Might Also Like

Critical Security Vulnerabilities in the Model Context Protocol (MCP): How Malicious Tools and Deceptive Contexts Exploit AI Agents
AI

Critical Security Vulnerabilities in the Model Context Protocol (MCP): How Malicious Tools and Deceptive Contexts Exploit AI Agents

By capernaum
Reinforcement Learning Makes LLMs Search-Savvy: Ant Group Researchers Introduce SEM to Optimize Tool Usage and Reasoning Efficiency
AIMachine LearningTechnology

Reinforcement Learning Makes LLMs Search-Savvy: Ant Group Researchers Introduce SEM to Optimize Tool Usage and Reasoning Efficiency

By capernaum

LLMs Struggle to Act on What They Know: Google DeepMind Researchers Use Reinforcement Learning Fine-Tuning to Bridge the Knowing-Doing Gap

By capernaum
Tether Unveils QVAC, a New Way to Run AI Without Cloud
AICryptocurrency

Tether Unveils QVAC, a New Way to Run AI Without Cloud

By capernaum
Capernaum
Facebook Twitter Youtube Rss Medium

Capernaum :  Your instant connection to breaking news & stories . Stay informed with real-time coverage across  AI ,Data Science , Finance, Fashion , Travel, Health. Your trusted source for 24/7 insights and updates.

© Capernaum 2024. All Rights Reserved.

CapernaumCapernaum
Welcome Back!

Sign in to your account

Lost your password?