Skip to main content

pyfinance

PyPI version License: MIT Python versions

pyfinance is a Python package for investment management and analysis of security returns. It complements existing quantitative-finance packages such as pandas-datareader with a focused, batteries-included statistical toolkit.

Status

  • Latest release: 2.0.2
  • Python: 3.10, 3.11, 3.12, 3.13, 3.14
  • License: MIT

Installation

uv add pyfinance

Or with pip:

pip install pyfinance

Modules

Module Description
pyfinance.returns Statistical analysis of financial time series via the CAPM framework. TSeries / TFrame are Pandas subclasses that add performance statistics: annualized return/vol, Sharpe, Sortino, drawdown, capture ratios, alpha/beta, Information Ratio, and so on.
pyfinance.ols Ordinary least-squares regression. OLS, RollingOLS (NumPy-backed), and PandasRollingOLS (Pandas-indexed wrapper).
pyfinance.options Vectorized Black-Scholes-Merton valuation, Greeks, and implied volatility via BSM. Option strategies (Straddle, BullSpread, Butterfly, Condor, variants).
pyfinance.general General-purpose computations: active share, amortization schedules, best-fit distribution, PCA on returns, portfolio simulation, tracking-error optimization, VIF.
pyfinance.datasets A small set of dataset loaders: load_13f (SEC EDGAR), load_industries (Ken French), load_rates (FRED H.15), load_rf (3-month T-bill total-return series).
pyfinance.utils Frequency conversion, rolling-window construction, one-hot encoding, random ticker/weights generation, availability reporting.

Quick tutorial

TSeries — performance statistics

import numpy as np
import pandas as pd
from pyfinance import TSeries

rng = np.random.default_rng(444)
s = rng.standard_normal(400) / 100 + 0.0008
idx = pd.date_range(start="2016-01-01", periods=len(s))
ts = TSeries(s, index=idx)

ts.anlzd_ret()       # annualized geometric return
ts.anlzd_stdev("D")  # annualized stdev of returns
ts.max_drawdown()    # worst peak-to-trough decline
ts.sharpe_ratio()    # Sharpe, annualized

BSM — Black-Scholes-Merton options pricing

from pyfinance.options import BSM

op = BSM(S0=100, K=100, T=1, r=0.04, sigma=0.20)
op.value()          # European call value
op.delta()          # Greeks
op.implied_vol(10)  # implied vol at a target price

# Vectorized across arrays of strikes.
import numpy as np
ops = BSM(S0=100, K=np.arange(100, 110), T=1, r=0.04, sigma=0.20)
ops.value()

OLS — regression

from pyfinance.ols import OLS

# y: 1-d array; x: 2-d array of explanatory variables.
model = OLS(y=y, x=x)
model.beta, model.alpha
model.rsq_adj, model.fstat, model.std_err

datasets.load_13f — SEC EDGAR 13F parser

SEC EDGAR requires a descriptive User-Agent (policy). Supply one:

from pyfinance import datasets

url = (
    "https://www.sec.gov/Archives/edgar/data/1040273/"
    "000108514617001787/form13fInfoTable.xml"
)
df = datasets.load_13f(url, user_agent="Jane Doe (jane@example.com)")

Development

This repo is managed with uv:

git clone https://github.com/bsolomon1124/pyfinance
cd pyfinance
uv sync               # install pinned runtime + dev deps
uv run pytest         # run tests
uv run ruff check     # lint
uv run ruff format    # format
uv build              # build sdist + wheel

Type checking uses ty:

uv run ty check

CI runs these across Python 3.10–3.14 on every push; see .github/workflows/ci.yml.

Changelog

See CHANGELOG.md. Notably, pyfinance 2.0 dropped load_factors, load_shiller, and load_retaildata because their upstream sources had drifted past reasonable repair. See the 2.0 release notes for details and migration guidance.

License

MIT — see LICENSE.txt.

Metadata

Release files for pyfinance 2.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyfinance 2.0.2
File Size Uploaded
pyfinance-2.0.2.tar.gz 78.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyfinance 2.0.2
File Interpreter ABI Platform
pyfinance-2.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 130.7 kB

Release files / pyfinance-2.0.2.tar.gz

Download URL pyfinance-2.0.2.tar.gz
Size 78.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9406bd910e938058d3f3345e386fa0accdfcd93b7ac093b2f2178ff7daaa4995
BLAKE2b-256 checksum
How to use checksums
834fccfcadab2d37536bf1178ad8bc8f53d9f97c377b2b475f82fb2dd3c37539
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / pyfinance-2.0.2-py3-none-any.whl

Download URL pyfinance-2.0.2-py3-none-any.whl
Size 52.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dfae0b7295fa27da805ef9aa0d026f852c75b80a6a5ed76872b795a966983877
BLAKE2b-256 checksum
How to use checksums
db7ac3dbfc4646906e0331d99f835642a2098b088022b14ddc15de902ea1ef83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.2 This release

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.3.0

2 release files

1.2.7

2 release files

1.2.6

2 release files

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.5

1 release file

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page