Skip to main content

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:

  1. 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.
  2. Risk Metrics:

    • Covariance Estimation: Sample, EMA/EWMA, and Denoised (Marchenko-Pastur eigenvalue clipping).
    • Risk Decomposition: Marginal Contribution to Risk (MCTR), Component VaR.
  3. 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.
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idlefinance-0.2.0.tar.gz (51.6 kB view details)

Uploaded Source

Built Distribution

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

idlefinance-0.2.0-py3-none-any.whl (52.5 kB view details)

Uploaded Python 3

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

Hashes for idlefinance-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a8122509e47511682ecc54c2dcb65d0c0a32db19ae871f78cf99c624569bcc3b
MD5 0eec6e0088dfdf5a4674d5132cada13f
BLAKE2b-256 2779ed875c71467233fbcb32095d3d72886085bdcdde1d97da6d4d97e9d9c2c5

See more details on using hashes here.

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

Hashes for idlefinance-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bd75ba818f18890c1b958cde7cc603ec0639064922bfb0c46fa37f9d23478f52
MD5 9f45249877c47e630b7dc693f68107df
BLAKE2b-256 4c4b84d2eb9e575fb86b9e8c61b6958bfcf75c6587f6a242ab36a4150b902523

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