Skip to main content

Deterministic portfolio quant core: risk, performance, optimization, and tax.

Project description

finkritq

Deterministic portfolio quant core: risk, performance, optimization, and tax analytics over holdings you supply. Pure numpy and scipy, no agent or web dependency. This is the open core of the finkrit stack, published on its own for use as a standalone library.

Install

pip install finkritq              # core: numpy + scipy
pip install "finkritq[data]"      # adds the live yfinance market data provider

What it does

  • Risk: volatility, variance, semivariance, downside deviation, drawdown and maximum drawdown, value at risk and conditional value at risk, beta, marginal and component contribution to risk, forward return range.
  • Performance: total and annualized return, Sharpe, Sortino, Calmar, information ratio, Jensen's alpha, contribution to return, net of fees, time and money weighted return, Brinson attribution.
  • Optimization: mean variance weights (minimum variance, maximum Sharpe, target return), long only and box constrained, Ledoit-Wolf shrinkage, rebalancing to a target or a policy.
  • Tax: tax lots, tax-loss harvest candidates, tax-aware rebalancing.

Quickstart

from datetime import date
from decimal import Decimal

from finkritq.asset import Stock
from finkritq.datatype import Currency, Exchange
from finkritq.portfolio import Portfolio, Position, TaxLot
from finkritq.anal.risk import portfolio_volatility

stock = Stock(ticker="AAPL", currency=Currency.USD, exchange=Exchange.NASDAQ, company_name="Apple Inc")
lot = TaxLot(id="lot-1", quantity=Decimal("100"), cost_per_share=Decimal("150"), acquired=date(2022, 1, 3))
portfolio = Portfolio(id="p1", name="Demo", positions=[Position(id="pos-1", asset=stock, lots=(lot,))])

Feed it your own price history, or install the data extra to pull live daily closes through the bundled provider.

Runnable demo

python -m finkritq              # seeded, offline synthetic market
python -m finkritq real NVDA KO PG --benchmark SPY --years 3    # needs [data]

License

Apache-2.0. See LICENSE.

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

finkritq-0.1.1.tar.gz (109.5 kB view details)

Uploaded Source

Built Distribution

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

finkritq-0.1.1-py3-none-any.whl (104.5 kB view details)

Uploaded Python 3

File details

Details for the file finkritq-0.1.1.tar.gz.

File metadata

  • Download URL: finkritq-0.1.1.tar.gz
  • Upload date:
  • Size: 109.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finkritq-0.1.1.tar.gz
Algorithm Hash digest
SHA256 76ba860f1ccd6857fe3a88daff754bfd5185a05bbce3551f7d6237d9d41f33fb
MD5 5459386b9a953aef49cbc30b5259442b
BLAKE2b-256 c078991835572bd5ac0378fcc4bed33c2a82c2a8769ea2465bee04b726414b66

See more details on using hashes here.

File details

Details for the file finkritq-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: finkritq-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 104.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finkritq-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 317e8c2b2e60eb5f6c1ead438e0cf354d392d9a3d39be67f30c4045b9110bc76
MD5 f8128117e0547e0ea27543d43816804e
BLAKE2b-256 0f02b9ade1636d76f759555ec0d1299dbe92288a95b8778a8a92506a8934e6e7

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