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 datapandas- Data manipulationnumpy- Numerical operationsplotly- Interactive visualizationsrequests- 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
- GitHub: @lorenzo1285
- LinkedIn: lorenzocardenas
Contributing
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2609bd971f226cd2bd868d180f863052de4f0fd533d950b31f65c111d164be6f
|
|
| MD5 |
2c7b8d941263eb9760c1f821ccc2b221
|
|
| BLAKE2b-256 |
fc7cd8de4375789d6b16201c4e916563afd05c2f256b000aed66eaf505d2dca3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a321d6a7976fcdeb9dbf51b3b86a1d062bb3141edce7347b892ba4211cb9566
|
|
| MD5 |
011622cc863adf26d3d2a264c464c738
|
|
| BLAKE2b-256 |
0748a6159e94e30fdaae58ca0eada8dc3595bc3d6e17ec85db695f7435c5dd9f
|