w3resource

Stock Price Checker: Real-Time Stock Prices in Python


Stock Price Checker: Build a program that fetches and displays real-time stock prices.

Input values:
1. Ticker symbol of the stock (e.g., AAPL, GOOGL, MSFT).

Output value:

  • Real-time stock price of the given ticker symbol.
  • Additional information (optional):
    • Stock price change (amount and percentage) from the previous close.
    • Market capitalization.
    • Volume of shares traded.

Examples:

Example 1:

  • Input:
    • Ticker symbol: "AAPL"
  • Output:
    • Current price: $145.67
    • Price change: +$1.23 (+0.85%)
    • Market cap: $2.45T
    • Volume: 76.89M

Example 2:

  • Input:
    • Ticker symbol: "GOOGL"
  • Output:
    • Current price: $2734.56
    • Price change: -$15.78 (-0.57%)
    • Market cap: $1.82T
    • Volume: 1.23M

Solution 1: Using yfinance for Stock Price Checker

Download market data from Yahoo! Finance's API

Installation

pip install yfinance

This solution uses the yfinance library to fetch real-time stock data, including current stock price, price change, market capitalization, and volume.

Code:

# Importing necessary libraries
import yfinance as yf

# Solution 1: Fetch stock data using yfinance
def get_stock_data(ticker_symbol):
    # Download stock data for the given ticker symbol
    stock = yf.Ticker(ticker_symbol)

    # Get today's stock data
    stock_info = stock.history(period="1d")

    if len(stock_info) > 0:
        # Get current price
        current_price = stock_info['Close'].iloc[0]  # Get the first row

        # Check if there is a previous close available
        prev_close = stock.info.get('previousClose', current_price)  # Use previous close if available

        # Calculate price change and percentage change
        price_change = current_price - prev_close
        percentage_change = (price_change / prev_close) * 100 if prev_close != 0 else 0

        # Get market cap and volume
        market_cap = stock.info.get('marketCap', 'N/A')  # Handle cases where market cap may not be available
        volume = stock_info['Volume'].iloc[0]

        # Display stock information
        print(f"Current price: ${current_price:.2f}")
        print(f"Price change: ${price_change:.2f} ({percentage_change:.2f}%)")
        if market_cap != 'N/A':
            print(f"Market cap: ${market_cap/1e12:.2f}T")
        else:
            print("Market cap: N/A")
        print(f"Volume: {volume/1e6:.2f}M")
    else:
        print("No data available for this ticker.")

# Example usage:
ticker = input("Enter the stock ticker symbol (e.g., AAPL, GOOGL): ")
get_stock_data(ticker)

Output:

Enter the stock ticker symbol (e.g., AAPL, GOOGL): AAPL
Current price: $235.86
Price change: $-0.62 (-0.26%)
Market cap: $3.59T
Volume: 34.96M
Enter the stock ticker symbol (e.g., AAPL, GOOGL): GOOGL
Current price: $165.14
Price change: $1.07 (0.65%)
Market cap: $2.04T
Volume: 16.16M
Enter the stock ticker symbol (e.g., AAPL, GOOGL): NVDA
Current price: $143.59
Price change: $-0.12 (-0.08%)
Market cap: $3.52T
Volume: 223.04M

Explanation:

  • Import Libraries:
    • The yfinance library is imported to fetch stock data from Yahoo Finance.
  • Function Definition:
    • The function get_stock_data(ticker_symbol) is defined to take a stock ticker symbol (e.g., AAPL, GOOGL) as input.
  • Download Stock Data:
    • stock = yf.Ticker(ticker_symbol) initializes the stock object for the given ticker symbol.
    • stock_info = stock.history(period="1d") fetches the stock's historical data for the last day.
  • Check for Data:
    • The function checks if there is any data available using if len(stock_info) > 0:. If there is no data, it prints a message saying "No data available for this ticker."
  • Fetch Current Price:
    • current_price = stock_info['Close'].iloc[0] gets the closing price for the stock from today's data.
  • Fetch Previous Close:
    • prev_close = stock.info.get('previousClose', current_price) retrieves the previous close price. If it's unavailable, the function uses the current price as a fallback.
  • Calculate Price Change and Percentage Change:
    • price_change = current_price - prev_close calculates the difference between the current price and previous close.
    • percentage_change = (price_change / prev_close) * 100 calculates the percentage change from the previous close. If prev_close is zero, the percentage is set to zero.
  • Fetch Market Cap and Volume:
    • market_cap = stock.info.get('marketCap', 'N/A') retrieves the market capitalization. If it's unavailable, it returns 'N/A'.
    • volume = stock_info['Volume'].iloc[0] fetches today's trading volume.
  • Display Stock Information:
    • The function prints the current price, price change (both in dollars and percentage), market capitalization (in trillions, if available), and trading volume (in millions).
  • Input and Function Call:
    • The user is prompted to input a stock ticker symbol with ticker = input("Enter the stock ticker symbol (e.g., AAPL, GOOGL): ").
    • The function get_stock_data(ticker) is called with the user’s input to display the stock information.

Solution 2: Using requests and Alpha Vantage API

This solution uses the requests library to fetch stock data from Alpha Vantage API, which provides real-time stock prices and additional financial information.

Code:

 # Import necessary libraries
import requests

# Solution 2: Fetch stock data using Alpha Vantage API
def get_stock_data_alpha_vantage(ticker_symbol, api_key):
    # API URL to get stock data
    url = f"https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol={ticker_symbol}&interval=1min&apikey={api_key}"
    
    # Fetch stock data from Alpha Vantage
    response = requests.get(url)
    data = response.json()
    
    # Extract stock information
    time_series = data["Time Series (1min)"]
    latest_time = list(time_series.keys())[0]
    latest_data = time_series[latest_time]
    current_price = float(latest_data["4. close"])
    
    # Additional info (previous close and volume)
    previous_close = float(latest_data["1. open"])
    price_change = current_price - previous_close
    percentage_change = (price_change / previous_close) * 100
    volume = int(latest_data["5. volume"])
    
    # Display stock information
    print(f"Current price: ${current_price:.2f}")
    print(f"Price change: ${price_change:.2f} ({percentage_change:.2f}%)")
    print(f"Volume: {volume:,}")
    
# Example usage:
ticker = input("Enter the stock ticker symbol (e.g., AAPL, GOOGL): ")
api_key = "your_alpha_vantage_api_key"
get_stock_data_alpha_vantage(ticker, api_key)

Output:

Enter the stock ticker symbol (e.g., AAPL, GOOGL): MSFT
Current price: $426.80
Price change: $0.00 (0.00%)
Volume: 539
Enter the stock ticker symbol (e.g., AAPL, GOOGL): TSLA
Current price: $217.49
Price change: $-0.01 (-0.00%)
Volume: 3,181

Explanation:

  • Uses the requests library to fetch stock data from Alpha Vantage.
  • This requires an API key.
  • Extracts the latest stock price, price change, percentage change, and volume from the API response.


Follow us on Facebook and Twitter for latest update.