Skip to main content

A comprehensive toolkit for stock market analysis and reporting

Project description

Stock Analysis Toolkit

PyPI version Python Version License: MIT

A comprehensive Python toolkit for analyzing stocks using technical and fundamental analysis. This package provides tools to fetch stock data, perform in-depth analysis, generate visualizations, and create detailed reports.

✨ Features

  • Multi-source Data Collection

    • BSE stocks (e.g., 500325.BO for RELIANCE)
    • NSE stocks (e.g., RELIANCE.NS or NSE:RELIANCE)
    • Market indices (e.g., ^NSEI for NIFTY 50)
    • Mutual funds (by name or code)
  • Technical Analysis

    • RSI, MACD, Bollinger Bands
    • Moving Averages (SMA, EMA)
    • Volume indicators
    • Custom technical indicators
  • Fundamental Analysis

    • P/E, P/B, P/S ratios
    • ROE, ROA, and other profitability metrics
    • Debt/Equity and other leverage ratios
    • Dividend yield and history
  • Reporting & Visualization

    • Interactive charts with Plotly
    • Detailed HTML reports
    • Email notifications with reports
    • Custom report templates

🚀 Installation

Basic Installation

pip install stock-analysis-toolkit

With Optional Dependencies

pip install "stock-analysis-toolkit[full]"

For Development

git clone https://github.com/pranav87/stock_analysis.git
cd stock_analysis
pip install -e ".[dev]"

TA-Lib Installation (Required for Technical Analysis)

  • macOS: brew install ta-lib
  • Linux: sudo apt-get install -y python3-ta-lib
  • Windows: Download the appropriate wheel from here

📝 Configuration

Create a .env file in your project root with the following variables:

# Required for Alpha Vantage API
ALPHA_VANTAGE_API_KEY=your_api_key_here

# Optional: Email settings
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SENDER_EMAIL=your_email@gmail.com
SENDER_PASSWORD=your_app_specific_password

SENDER_EMAIL=your_email@gmail.com SENDER_PASSWORD=your_app_specific_password


## Usage

### Basic Usage

Analyze the top 10 BSE stocks:
```bash
python src/main.py

Command Line Options

usage: main.py [-h] [--stocks [STOCKS ...]] [--days DAYS] [--email EMAIL]
              [--report-dir REPORT_DIR] [--top TOP] [--all]

Stock Analysis Tool

optional arguments:
  -h, --help            show this help message and exit
  --stocks [STOCKS ...] List of stock symbols to analyze (e.g., RELIANCE.BO TCS.BO)
  --days DAYS           Number of days of historical data to fetch (default: 365)
  --email EMAIL         Email address to send the report to
  --report-dir REPORT_DIR
                        Directory to save the report (default: reports)
  --top TOP             Analyze top N BSE stocks by market cap
  --all                 Analyze all top BSE stocks

Examples

  1. Analyze specific stocks:

    python3 src/main.py --stocks RELIANCE.BO TCS.BO HDFCBANK.BO
    
  2. Analyze top 5 BSE stocks and email the report:

    python3 src/main.py --top 5 --email your-email@example.com
    
  3. Analyze all top BSE stocks with 2 years of data:

    python3 src/main.py --all --days 730
    
  4. Analyze NIFTY50 index:

    python3 src/main.py --stocks ^NSEI --days 365
    python3 src/main.py --stocks ^NSEI --days 365 --email your-email@example.com
    
  5. Analyze top 10 BSE stocks and email the report:

    python3 src/main.py --top 10 --email your-email@example.com
    
  6. Analyze top 10 BSE stocks and email the report:

    cd HOME_PATH/stock_analysis && PYTHONPATH=HOME_PATH/stock_analysis python3 -m src.main --email your-email@example.com
    
  7. Analyze specific mutual funds:

    python3 src/main.py --stocks RELIANCE.NS --mutual_funds "ICICI Prudential Equity & Debt Fund - Monthly IDCW" --email your-email@anywhere.com
    

Project Structure

stock-analysis/
├── config/                 # Configuration files
│   └── config.py           # Application configuration
├── data/                   # Data storage
│   └── cache/              # Cached stock data
├── logs/                   # Log files
├── reports/                # Generated reports
│   └── charts/             # Chart visualizations
├── src/                    # Source code
│   ├── data_fetcher.py     # Data collection from APIs
│   ├── technical_analysis.py # Technical indicators and analysis
│   ├── visualization.py    # Data visualization
│   └── main.py             # Main application and CLI
├── .env.example            # Example environment variables
├── requirements.txt        # Python dependencies
└── README.md               # This file

Supported Stock Exchanges

  • BSE (Bombay Stock Exchange): Use .BO suffix (e.g., RELIANCE.BO)
  • NSE (National Stock Exchange): Use .NS suffix (e.g., RELIANCE.NS)

Data Sources

  • Primary: Google Finance
  • Fallback: Yahoo Finance
  • Additional: Alpha Vantage (for fundamental data, requires API key)

Email Configuration

To enable email notifications:

  1. Enable "Less secure app access" in your Gmail account settings or generate an App Password
  2. Set the following environment variables in your .env file:
    SENDER_EMAIL=your_email@gmail.com
    SENDER_PASSWORD=your_app_specific_password
    

Limitations

  • Free API tiers may have rate limits
  • Some fundamental data may not be available for all stocks
  • Analysis should be used for informational purposes only

License

This project is licensed under the MIT License - see the LICENSE file for details.

Disclaimer

This tool is for educational and informational purposes only. It does not constitute financial advice. Always do your own research and consult with a licensed financial advisor before making investment decisions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stock_analysis_toolkit-1.0.4.tar.gz (88.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stock_analysis_toolkit-1.0.4-py3-none-any.whl (100.7 kB view details)

Uploaded Python 3

File details

Details for the file stock_analysis_toolkit-1.0.4.tar.gz.

File metadata

  • Download URL: stock_analysis_toolkit-1.0.4.tar.gz
  • Upload date:
  • Size: 88.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.14

File hashes

Hashes for stock_analysis_toolkit-1.0.4.tar.gz
Algorithm Hash digest
SHA256 bb0b351e443c88b130d670519e0489005e70b734b6f6a3686480fffc61127472
MD5 95ce7a9769aa2d56cc9bd0071c2d6af1
BLAKE2b-256 c5339452779ad10130cbe1dd1fe3a84ba4ab7f3e5332546a53ad307c388525b4

See more details on using hashes here.

File details

Details for the file stock_analysis_toolkit-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for stock_analysis_toolkit-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3c0f0ede8929389adb593ea1e6839e36c3dc5f50feafa03776dbebdb2038041e
MD5 fa14c2b3e854f75284f0056279595b1b
BLAKE2b-256 79f159f68b8d75a74e1c46739d21cfbc0d62e7eeb9109b5ea73850c0b2700869

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page