A Python library for quantitative finance and financial modeling
Project description
IdleFinance
IdleFinance reimagines quantitative finance in Python by embedding portfolio theory, risk modeling, and asset pricing tools directly into the pandas ecosystem.
Rather than acting as a standalone optimizer, IdleFinance extends financial data structures with institutional-grade analytical capabilities through a seamless .finance accessor — transforming raw market data into a research-ready quantitative framework.
🚀 Key Pillars
IdleFinance is built on four core modules:
-
Portfolio Optimization:
- Black-Litterman: Full J. Walters & T. Idzorek models with constraint handling.
- Efficient Frontier: Min-Variance, Max-Sharpe (Tangency), Target-Return portfolios.
- Automated market-implied risk aversion and prior equilibrium returns.
-
Risk Metrics:
- Covariance Estimation: Sample, EMA/EWMA, and Denoised (Marchenko-Pastur eigenvalue clipping).
- Risk Decomposition: Marginal Contribution to Risk (MCTR), Component VaR.
-
Fixed Income:
- Unified Bond Pricing: Automatic detection of zero-coupon vs. coupon-bearing bonds.
- Risk Metrics: Macaulay/Modified Duration, Convexity, and Effective Duration/Convexity (for bonds with embedded options).
- Yield Analysis: Brent-method optimized YTM, Yield to Call (YTC), and current yield.
- Arbitrary Cashflows: Duration and NPV analysis for any stream of payments.
-
Core Utilities:
- Standard financial math: NPV, IRR, Payback Period, Loan Payments (PMT), and more.
- Seamless conversion between price data and return series.
📦 Installation
pip install IdleFinance
🛠️ Quick Start
1. Pandas Objects accessor
IdleFinance extends pandas DataFrames and Series with the .finance accessor.
import pandas as pd
import IdleFinance as idf
prices = pd.Series([100, 102, 101, 105, 107])
print(f"Annualized Return: {prices.finance.annualized_return():.2%}")
print(f"Sharpe Ratio: {prices.finance.sharpe_ratio():.2f}")
print(f"Max Drawdown: {prices.finance.max_drawdown():.2%}")
2. Portfolio Optimization with Views
Combine market priors with investor views using the Black-Litterman model.
df_prices = pd.read_csv("portfolio_prices.csv", index_col=0)
post_ret, post_cov, weights = df_prices.finance.black_litterman(
views={'AAPL': 0.12, 'MSFT': 0.08},
view_confidences=[0.8, 0.6],
bounds=(0, 0.30)
)
3. Risk Decomposition
prices = pd.Series([100, 102, 101, 105, 107])
print(f"Annualized Return: {prices.finance.annualized_return():.2%}")
print(f"Sharpe Ratio: {prices.finance.sharpe_ratio():.2f}")
print(f"Max Drawdown: {prices.finance.max_drawdown():.2%}")
4. Comprehensive Asset Valuation
ytm = idf.fixed_income.bond_ytm(price=925.61, face_value=1000, coupon_rate=0.05, years_to_maturity=10)
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 idlefinance-0.2.0.tar.gz.
File metadata
- Download URL: idlefinance-0.2.0.tar.gz
- Upload date:
- Size: 51.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8122509e47511682ecc54c2dcb65d0c0a32db19ae871f78cf99c624569bcc3b
|
|
| MD5 |
0eec6e0088dfdf5a4674d5132cada13f
|
|
| BLAKE2b-256 |
2779ed875c71467233fbcb32095d3d72886085bdcdde1d97da6d4d97e9d9c2c5
|
File details
Details for the file idlefinance-0.2.0-py3-none-any.whl.
File metadata
- Download URL: idlefinance-0.2.0-py3-none-any.whl
- Upload date:
- Size: 52.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd75ba818f18890c1b958cde7cc603ec0639064922bfb0c46fa37f9d23478f52
|
|
| MD5 |
9f45249877c47e630b7dc693f68107df
|
|
| BLAKE2b-256 |
4c4b84d2eb9e575fb86b9e8c61b6958bfcf75c6587f6a242ab36a4150b902523
|