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.2.0.tar.gz (113.6 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.2.0-py3-none-any.whl (108.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: finkritq-0.2.0.tar.gz
  • Upload date:
  • Size: 113.6 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.2.0.tar.gz
Algorithm Hash digest
SHA256 c444a870f9903878d0e3d222e1b0778276869e8d2364c61a7e64a6a08a1b0d16
MD5 1717e82c521d5afa0c665645195dd78a
BLAKE2b-256 e2109a89338fb54945923a76b2f16285ef75fd5b6856e687a8eb48fe5478dcfd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: finkritq-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 108.0 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9804ec7f3624364c6edad8cd49f04b70973ea46b9e0e939a582636aaa510cd87
MD5 39bf97caf98ee0b849ba9ee93fa1a80c
BLAKE2b-256 a3087222ea2058f1c9cfd7fa912e3e59a6c3ade127cb32d66d7c255dbc4d74c5

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