A Python package for quantitative finance
Project description
SquareQuant
A professional-grade Python package for financial risk analysis, advanced portfolio metrics, and investment visualization with a focus on performance and usability.
Features
Data Management
- Seamless download and integration with Yahoo Finance data
- Flexible data filtering and preprocessing utilities
- Configurable date ranges and interval selection
Risk Metrics
- Standard Metrics:
- Sharpe & Sortino Ratios
- Volatility & Semi-Deviation
- Maximum Drawdown (MDD) & Average Drawdown
- Value at Risk (VaR) & Conditional Value at Risk (CVaR)
- Advanced Metrics:
- Mean Absolute Deviation (MAD)
- Ulcer Index
- Entropic Risk Measure (ERM)
- Entropic Value at Risk (EVaR)
- Conditional Drawdown at Risk (CDaR)
- Entropic Drawdown at Risk (EDaR)
Visualization
- Interactive risk metrics dashboards
- Correlation matrix heatmaps
- Drawdown analysis charts
- Return distribution visualization
- Risk contribution analysis
- Portfolio weight allocation diagrams
Implementation Advantages
- Memory-efficient vectorized calculations
- Dual API approaches: functional & object-oriented
- Configurable window sizes for all metrics
- Minimal external dependencies
Installation
pip install squarequant
Quick Start Guide
import squarequant as sq
import matplotlib.pyplot as plt
# Download stock data
tickers = ["AAPL", "MSFT", "GOOGL"]
config = sq.DownloadConfig(
start_date="2020-01-01",
end_date="2023-01-01",
interval="1d"
)
data = sq.download_tickers(tickers, config)
# Calculate risk metrics
assets = ["AAPL_Close", "MSFT_Close", "GOOGL_Close"]
# Sharpe ratio with a 1-year rolling window
sharpe_ratios = sq.sharpe(data, assets, window=252)
# Plot the results
plt.figure(figsize=(12, 8))
sharpe_ratios.plot()
plt.title("Rolling Sharpe Ratios")
plt.show()
Advanced Usage Examples
Multiple Risk Metrics Visualization
# Create a visualization of multiple risk metrics
sq.plot_rolling_metrics(
data=data,
assets=assets,
metrics=['sharpe', 'vol', 'mdd', 'var'],
windows={'vol': 20, 'mdd': 252}
)
plt.show()
Risk Comparison Dashboard
# Create a risk comparison dashboard
sq.plot_risk_comparison(
data=data,
assets=assets,
risk_metrics=['vol', 'mdd', 'var', 'cvar', 'semidev', 'ulcer'],
)
plt.show()
Performance Metrics Table
# Generate a performance metrics table
sq.plot_performance_metrics(
data=data,
assets=assets,
risk_free=0.02, # 2% risk-free rate
)
plt.show()
Object-Oriented Interface
SquareQuant provides an object-oriented interface for more advanced use cases:
from squarequant.core.metrics import EntropicValueAtRisk
# Create an EVaR calculator
calculator = EntropicValueAtRisk(
data=data,
assets=assets,
alpha=0.95, # 95% confidence level
window=252,
start="2021-01-01",
end="2022-01-01"
)
# Calculate EVaR
evar_values = calculator.calculate()
Configuration Options
Custom Risk-Free Rate
# Using a constant value
sharpe_ratios = sq.sharpe(data, assets, freerate_value=0.02)
# Using a column in your data
sharpe_ratios = sq.sharpe(data, assets, freerate="TREASURY_YIELD")
Custom Confidence Levels
# Calculate VaR with 99% confidence
var_values = sq.var(data, assets, confidence=0.99)
Documentation
For full documentation, visit https://squarequant.readthedocs.io
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Author
Gabriel Bosch
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
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 squarequant-0.1.0.tar.gz.
File metadata
- Download URL: squarequant-0.1.0.tar.gz
- Upload date:
- Size: 27.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a3948bf0a8855dbd2a2dda7997e928880d601dedec0337e42664a2f71667ce7
|
|
| MD5 |
df77c7f3090e98ae8ede5012efeb3fed
|
|
| BLAKE2b-256 |
ef962af11a3e863ce2d91ef0689eff7b7c9ec06cfbb2bf327d0992c98cc1731d
|
File details
Details for the file squarequant-0.1.0-py3-none-any.whl.
File metadata
- Download URL: squarequant-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36656bef74ec690f1dd68b6a5916b4b544be3a9f3a7bf7f4b9ede352c9afd823
|
|
| MD5 |
92b400b010a4fc9f2c3923ff44e73ea7
|
|
| BLAKE2b-256 |
7b2aa2301300511a3cc1fb0660c1fdbfb5d855b537b0dc71bcfa669804d20b11
|