Skip to main content

A comprehensive financial ratios calculator for Yahoo Finance data

Project description

RatioCalc

A Python-based financial ratios calculator that fetches stock data from Yahoo Finance and computes key financial ratios for analysis.

Features

  • Fetch historical stock data and fundamentals (balance sheet, income statement, cash flow) from Yahoo Finance
  • Calculate comprehensive CFA Level 1 financial ratios:
    • Liquidity Ratios: Current Ratio, Quick Ratio, Cash Ratio, Defensive Interval Ratio
    • Solvency Ratios: Debt-to-Assets Ratio, Financial Leverage Ratio, Interest Coverage Ratio
    • Profitability Ratios: Return on Assets (ROA), Return on Equity (ROE), Return on Total Capital, Return on Common Equity
    • Activity Ratios: Inventory Turnover, Days of Inventory on Hand, Receivables Turnover, Days of Sales Outstanding, Payables Turnover, Number of Days of Payables, Working Capital Turnover, Fixed Asset Turnover, Total Asset Turnover
    • DuPont Analysis: Breakdown of ROE into Net Profit Margin × Asset Turnover × Financial Leverage
  • Multi-period analysis with trend tracking across fiscal years
  • Clean DataFrame output for programmatic analysis and visualization
  • Configurable data cleaning (drop problematic periods)
  • Save fetched data to CSV and JSON files for further analysis
  • Both command-line and programmatic interfaces

Installation

From PyPI (Recommended)

pip install ratio-calc

From Source

  1. Clone the repository:

    git clone https://github.com/srinidhim3/RatioCalc.git
    cd RatioCalc
    
  2. Install the package:

    pip install .
    

    Or for development:

    pip install -e .
    

Usage

Command Line Usage

After installation, use the command-line interface:

ratio-calc ITC.NS

Or with options:

ratio-calc AAPL --start-date 2023-01-01 --end-date 2023-12-31 --drop-periods 2021-03-31

Programmatic Usage

Import and use the FinancialRatioCalculator class:

from ratio_calc import FinancialRatioCalculator

# Initialize calculator
calculator = FinancialRatioCalculator(
    ticker="ITC.NS",
    start_date="2023-01-01",
    end_date="2023-12-31",
    drop_periods=["2021-03-31"]  # Optional: drop problematic periods
)

# Run analysis and get DataFrame
df_ratios = calculator.run(save_csv=True, verbose=True)

# Access specific ratios
current_ratio_trend = df_ratios.loc['Current Ratio']
roe_comparison = df_ratios.loc[['Return on Equity (ROE)', 'DuPont ROE']]

# Find ratios with highest variation
ratio_variation = df_ratios.std(axis=1).sort_values(ascending=False)
print(f"Most volatile ratios: {ratio_variation.head()}")

Advanced Usage Examples

See example_usage.py for comprehensive examples including:

  • Basic usage patterns
  • Programmatic data analysis
  • Custom ratio comparisons
  • Statistical analysis of ratio trends
python example_usage.py

Output

The calculator returns a pandas DataFrame with:

  • Rows: Ratio names (24+ financial ratios)
  • Columns: Fiscal periods (e.g., '2025-03-31', '2024-03-31', etc.)

Example DataFrame structure:

                                2025-03-31  2024-03-31  2023-03-31  2022-03-31
Current Ratio                     3.062156    2.999587    2.887379    2.814310
Quick Ratio                       1.726978    1.747135    1.807195    1.574858
Return on Equity (ROE)            0.280273    0.265700    0.275985    0.242633
DuPont ROE                        0.280273    0.265700    0.275985    0.242633
...

Data Files

The following files are automatically saved:

  • {ticker}_info.json: Company information and pre-calculated ratios
  • {ticker}_balance_sheet.csv: Balance sheet data
  • {ticker}_income_statement.csv: Income statement data
  • {ticker}_cash_flow.csv: Cash flow statement data
  • {ticker}_multi_period_ratios.csv: Calculated ratios DataFrame

Requirements

  • Python 3.7+
  • Dependencies listed in requirements.txt

Project Structure

ratio_calc/
├── __init__.py                 # Package initialization and exports
├── calculator.py               # FinancialRatioCalculator class - main entry point
├── yahoo_finance_fetcher.py    # Yahoo Finance data fetching
├── liquidity_ratios.py         # Liquidity ratio calculations
├── solvency_ratios.py          # Solvency ratio calculations
├── profitability_ratios.py     # Profitability ratios and DuPont Analysis
├── activity_ratios.py          # Activity (efficiency) ratio calculations
└── market_ratios.py           # Market ratio calculations (future use)

example_usage.py                # Comprehensive usage examples
docs/                          # Documentation for specific ratios
assets/                        # Sample data files

API Reference

FinancialRatioCalculator Class

Constructor

from ratio_calc import FinancialRatioCalculator

FinancialRatioCalculator(
    ticker: str,
    start_date: Optional[str] = None,
    end_date: Optional[str] = None,
    drop_periods: Optional[List[str]] = None
)

Methods

  • fetch_data(save_files=True): Fetch and optionally save raw data
  • calculate_ratios(): Calculate all ratios and return DataFrame
  • run(save_csv=True, verbose=True): Complete analysis pipeline

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is open source. Please check the repository for license details.

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

ratio_calc-1.0.0.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

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

ratio_calc-1.0.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file ratio_calc-1.0.0.tar.gz.

File metadata

  • Download URL: ratio_calc-1.0.0.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.4

File hashes

Hashes for ratio_calc-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3d221286b0c6dc4fdb4086f889a9333f02caa198de7321a20dab049ad98c6f43
MD5 b2ceebccec25cc79668dcf210cd277a0
BLAKE2b-256 686a8e0087aaa879827050a74fed4b44e094261fe79b2b6b5316142f4f5520d9

See more details on using hashes here.

File details

Details for the file ratio_calc-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ratio_calc-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.4

File hashes

Hashes for ratio_calc-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b883c349c75f9e8367f5a61ef4a528b77d558c7132bd01dda35dc903354fb461
MD5 691161292ebd7d98db50c60de14d1a71
BLAKE2b-256 3f1efd9df0d15030d3f21cd18a476ab22fdb24691dc8214da93b99d7fa70ac12

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