Skip to main content

Quantitative Finance Ratio Analysis

Project description

FinRatioAnalysis (Package Under maintenance)

A comprehensive Python package for financial ratio analysis and fundamental analysis of publicly traded companies using real-time data from Yahoo Finance.

Features

Profitability & Return Metrics:

  • Return on Equity (ROE)
  • Return on Assets (ROA)
  • Return on Capital Employed (ROCE)
  • Gross Margin, Operating Margin, Net Profit Margin

Leverage & Solvency:

  • Debt-to-Equity Ratio
  • Equity Ratio, Debt Ratio
  • Interest Coverage Ratios

Efficiency Ratios:

  • Asset Turnover
  • Receivables Turnover
  • Inventory Turnover
  • Fixed Asset Turnover

Liquidity Analysis:

  • Current Ratio, Quick Ratio, Cash Ratio
  • Days Inventory Ratio (DIR)
  • Operating Cash Flow Ratios

Advanced Metrics:

  • Cash Conversion Cycle (CCC)
  • Altman Z-Score (bankruptcy prediction)
  • Capital Asset Pricing Model (CAPM)
  • Sharpe Ratio
  • Weighted Average Cost of Capital (WACC)

Special Features:

  • ✅ Supports both tech companies and financial institutions (banks)
  • ✅ Automatic fallback logic for missing financial data
  • ✅ Quarterly and yearly data frequency
  • ✅ Interactive Z-Score visualization with Plotly
  • ✅ 108 comprehensive unit and integration tests

Installation

pip install FinRatioAnalysis

Dependencies (automatically installed):

  • yfinance - Real-time financial data
  • pandas - Data manipulation
  • numpy - Numerical operations
  • plotly - Interactive visualizations
  • requests - API calls

Quick Start

from FinRatioAnalysis import FinRatioAnalysis

# Create analyzer instance
apple = FinRatioAnalysis('AAPL', freq='yearly')  # freq: 'yearly' or 'quarterly'

# Calculate profitability ratios
returns = apple.return_ratios()
print(returns)  # ROE, ROA, ROCE, Gross Margin, Operating Margin, Net Profit

# Calculate leverage ratios
leverage = apple.leverage_ratios()
print(leverage)  # Debt-to-Equity, Equity Ratio, Debt Ratio

# Calculate efficiency ratios
efficiency = apple.efficiency_ratios()
print(efficiency)  # Asset Turnover, Receivables Turnover, etc.

# Calculate liquidity ratios
liquidity = apple.liquidity_ratios()
print(liquidity)  # Current Ratio, Quick Ratio, Cash Ratio, etc.

# Cash Conversion Cycle
ccc = apple.ccc()
print(ccc)  # DIO, DSO, DPO, CCC

# Altman Z-Score (bankruptcy risk)
z_score = apple.z_score()
print(z_score)  # Z-Score value and classification

# Visualize Z-Score
apple.z_score_plot()  # Interactive Plotly chart

# CAPM and Sharpe Ratio
capm = apple.capm(market_ticker='^GSPC')  # S&P 500 as market
print(capm)  # Beta, Expected Return, Sharpe Ratio

# Weighted Average Cost of Capital
wacc = apple.wacc(market_ticker='^GSPC')
print(wacc)  # WACC percentage

Example: Analyzing Multiple Companies

from FinRatioAnalysis import FinRatioAnalysis
import pandas as pd

tickers = ['AAPL', 'MSFT', 'GOOGL', 'JPM']  # Tech + Bank
results = {}

for ticker in tickers:
    analyzer = FinRatioAnalysis(ticker, freq='yearly')
    results[ticker] = {
        'ROE': analyzer.return_ratios()['ROE'].iloc[0],
        'Debt/Equity': analyzer.leverage_ratios()['DebtEquityRatio'].iloc[0],
        'Z-Score': analyzer.z_score()['Z-score'].iloc[0],
        'WACC': analyzer.wacc()['WACC'].iloc[0]
    }

df = pd.DataFrame(results).T
print(df)

Supported Company Types

The package intelligently handles different types of companies:

Tech/Manufacturing Companies: Full metrics including ROCE, Gross Margin, Operating Margin

Financial Institutions (Banks): Automatically adapts metrics - uses alternative calculations when standard fields (like GrossProfit, CurrentLiabilities) are unavailable

Documentation

For detailed financial ratio formulas and interpretations:

Testing

The package includes 108 comprehensive tests:

# Run all tests
pytest

# Run specific test categories
pytest tests/test_return_ratios.py
pytest tests/test_integration_real_data.py
pytest -m integration  # Real data tests only

License

MIT License - See LICENCE file

Author

Lorenzo Cárdenas Cárdenas

Contributing

<<<<<<< Updated upstream linkedin

Installation

Install FinanceAnalysis, yahoo finance, pandas-datareader and plotly with pip

  pip install yfinance
  pip install FinRatioAnalysis
  pip install pandas-datareader
  pip install plotly

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

Stashed changes

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

finratioanalysis-0.1.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

finratioanalysis-0.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file finratioanalysis-0.1.0.tar.gz.

File metadata

  • Download URL: finratioanalysis-0.1.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finratioanalysis-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2609bd971f226cd2bd868d180f863052de4f0fd533d950b31f65c111d164be6f
MD5 2c7b8d941263eb9760c1f821ccc2b221
BLAKE2b-256 fc7cd8de4375789d6b16201c4e916563afd05c2f256b000aed66eaf505d2dca3

See more details on using hashes here.

File details

Details for the file finratioanalysis-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: finratioanalysis-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finratioanalysis-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a321d6a7976fcdeb9dbf51b3b86a1d062bb3141edce7347b892ba4211cb9566
MD5 011622cc863adf26d3d2a264c464c738
BLAKE2b-256 0748a6159e94e30fdaae58ca0eada8dc3595bc3d6e17ec85db695f7435c5dd9f

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