Skip to main content

ppar

Portfolio performance attribution, contribution, and ex-post risk analytics.

ppar compares a portfolio with a benchmark, explains active return by classification, and produces reviewable HTML tables and PNG charts. It runs locally and supports both Axys/APX exports and a small vendor-neutral CSV format.

Start here

ppar requires Python 3.11.9 or newer.

python -m pip install ppar

# Axys/APX demonstration workspace (the default)
ppar setup ./my_ppar
ppar run ./my_ppar

# Vendor-neutral demonstration workspace
ppar setup ./my_generic_ppar --generic
ppar run ./my_generic_ppar

Both setup commands create a complete runnable workspace:

my_ppar/
  README.md
  ppar.yaml
  input/
  output/

Edit ppar.yaml and replace the demonstration files under input/ with your data. Every run writes the complete result atomically to output/; a failed run leaves the previous successful output intact.

What it produces

The standard quarterly workspace writes security and classification attribution tables, attribution and contribution charts, cumulative return charts, heatmaps, and an ex-post risk-statistics table.

Overall attribution by economic sector chart Overall contribution by economic sector chart Sub-period attribution effects chart Sub-period portfolio and benchmark returns Active contributions heatmap Total attribution effects heatmap Cumulative attribution effects Cumulative portfolio and benchmark returns Cumulative attribution table Overall attribution table by economic sector Overall attribution table by security Ex-post risk statistics table

Python

from ppar import Analytics
from ppar.attribution import View

analytics = Analytics("portfolio.csv", "benchmark.csv")
overall = analytics.attribution().to_polars(View.OVERALL_ATTRIBUTION)
print(overall)

Public tabular results are Polars DataFrames. HTML, PNG, and CSV output is available from the owning attribution or risk object.

Documentation

License

Downloading, installing, accessing, copying, or using ppar constitutes acceptance of the license. The public package grants a time-limited internal evaluation license; production and other commercial use require a separate written agreement.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

ppar-0.2.0-py3-none-any.whl (744.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ppar-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 744.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ppar-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f05fe12ba853cb3e5b4cdb2fa901a54776e72d1066137cec51093bcb41289b84
MD5 04adfdd0b49965200c696161b3409aea
BLAKE2b-256 456fe2a85a68579ca5c747a0c344b04bb22563265e056f1a1bd743d37310f844

See more details on using hashes here.

Provenance

The following attestation bundles were made for ppar-0.2.0-py3-none-any.whl:

Publisher: publish.yml on JohnDReynolds/ppar

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

1 file

0.3.1

1 file

0.3.0

1 file

0.2.1

1 file

This release

0.2.0 This release

1 file

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 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