Skip to main content

phacker

Measure how likely it is that your best backtest is overfit.

If you try many strategy configurations and keep the one with the best in-sample Sharpe ratio, part of that Sharpe is selection luck. phacker estimates the Probability of Backtest Overfitting (PBO): the probability that the configuration you picked as best in-sample ranks below the median out-of-sample. It implements combinatorially symmetric cross-validation (CSCV) from

Bailey, D., Borwein, J., López de Prado, M., & Zhu, Q. J. (2016). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69. doi:10.21314/JCF.2016.322

CSCV is deterministic: there is no Monte Carlo, and the same input always gives the same answer. The core is a C++ kernel (OpenMP, SIMD) with a pure-NumPy fallback.

Install

pip install phacker

Wheels are built for CPython 3.11–3.13 on Linux (x86_64, aarch64), macOS (Intel, Apple Silicon) and Windows (x64). On other platforms pip builds from source, and if no C++ compiler is available you get the NumPy implementation alone. Both give the same results; only the speed differs.

import phacker
phacker.backend()   # "cpp" if the compiled kernel is available, else "numpy"

Quick start

You need a T × N matrix of P&L: one column per configuration you tried, one row per period, with all columns on the same time index.

import numpy as np
from phacker.cscv import cscv

pnl = np.random.default_rng(0).standard_normal((2000, 500))   # 500 pure-noise strategies
pbo, logits = cscv(pnl, S=16)

pbo            # 0.317; noise averages 0.5, but one family can land well away from it
logits.shape   # (12870,) = C(16, 8)

Include every configuration you tried, including the ones that did badly. Leaving out failed trials biases PBO downward.

Reading the result

  • PBO = 0.5 means selection carried no information. The in-sample winner is equally likely to land above or below the out-of-sample median. This is what pure noise gives, not 0.
  • PBO near 0 means the in-sample winner reliably stays above the median out-of-sample.
  • PBO above 0.5 means the selection is worse than random. The in-sample winners tend to underperform out-of-sample (mean reversion between halves, for example).

logits holds one value per train/test split, λ = ln(ω / (1 − ω)), where ω is the in-sample winner's relative out-of-sample rank. PBO is the fraction with λ ≤ 0. With no skill, ω is uniform and λ follows the standard logistic distribution exactly.

Building a trial matrix from prices

phacker includes a grid backtester for threshold rules on technical indicators.

import pandas as pd
from phacker.indicators import indicators
from phacker.grid import Grid, backtest, linspace
from phacker.cscv import cscv

# a DataFrame with Adj_Close, High, Low, Volume columns on a DatetimeIndex
prices = pd.read_csv("NQ.csv", index_col=0, parse_dates=True)
prices = indicators(prices, ["RSI14", "Z20", "BOLL_B20"])

grid = Grid(
    indicators=["RSI14", "Z20", "BOLL_B20"],
    entry=linspace(-2, 2, 17),     # z-score levels
    band=[0.25, 0.5, 1.0, 2.0],    # half-width around each level
    hold=[1, 5, 10, 20],           # bars to hold after a trigger
    side="both",                   # "long", "short" or "both"
    cost_bps=0.5,                  # per unit of position change
)
M = backtest(prices, grid, price_col="Adj_Close", min_periods=60)   # TrialMatrix, 1,632 columns

pbo, logits = cscv(M, S=16)
M.names[0]     # 'RSI14:entry=-2:band=0.25:hold=1:long'

For each configuration (indicator, entry, band, hold, side) the rule goes long or short whenever the indicator's z-score is within band of entry, and holds for hold bars. Positions are lagged one bar, so there is no lookahead. Indicators are standardized with an expanding-window z-score, so θ means the same thing for every indicator and no future data leaks into the past. min_periods is the warm-up before the z-score is defined.

Available indicators: SMA5, SMA20, EMA5, EMA20, RSI14, ATR14, OBV, BOLL_B20, ADX14, VOL20, Z20.

To bring your own P&L with labels, wrap it in TrialMatrix(pnl, names=[...]).

Diagnostics

from phacker.stats import n_eff, logit_fit, sharpe_se

n_eff(M)            # effective number of independent trials
logit_fit(logits)   # (KS distance from the logistic null, mean logit)
sharpe_se(returns)  # delta-method standard error of each column's Sharpe ratio
  • n_eff: the participation ratio of the centred trial matrix's singular values. A grid of 1,632 configurations that mostly trade the same signal can have an n_eff near 1. High PBO on a family with a small n_eff may say more about redundancy than about overfitting.
  • logit_fit compares the logits to the exact logistic null. It's descriptive only: the C(S, S/2) splits share blocks, so the logits are dependent and a classical KS p-value would be wrong. None is reported.
  • sharpe_se is √((1 − γ₃·SR + (γ₄ − 1)/4·SR²) / (T − 1)), with skewness γ₃ and non-excess kurtosis γ₄. Use it to check that Sharpe estimates on T/2 rows are reliable enough for your choice of S.

Choosing S

S is the number of blocks the rows are split into. It must be even and at most 32. CSCV evaluates C(S, S/2) splits, each with T/2 rows on each side:

S splits
8 70
12 924
16 12,870
20 184,756

The paper uses S = 16. A larger S gives more splits but shorter blocks. If T isn't a multiple of S, the last T % S rows are dropped.

Custom metrics

cscv accepts any performance function that maps a (rows, N) array to N scores. Rows arrive in their original time order, so path-dependent metrics such as drawdown work too:

pbo, logits = cscv(M, S=16, metric=lambda x: x.mean(axis=0))

The C++ kernel computes the Sharpe ratio only. Any other metric runs the NumPy implementation (also available directly as phacker.cscv.cscv_reference), which is much slower at large N.

Performance

With the Sharpe metric, the kernel sums each block once and then reuses those sums. Neighbouring splits are visited in revolving-door (Gray code) order, so each split needs one block added and one removed, and the out-of-sample sums are the totals minus the in-sample ones. Splits are processed in parallel with OpenMP.

N = 1,000 strategies, T = 2,000 rows, S = 16, Intel i7-1365U (10 cores), Windows:

backend time
NumPy reference ~250 s
C++ kernel, 1 thread ~0.3 s
C++ kernel, OpenMP ~0.05–0.07 s

macOS wheels are built without OpenMP and run single-threaded.

Behaviour details

  • Flat columns. A configuration with no nonzero returns in a half (it never traded there) gets a Sharpe of 0 in that half rather than NaN.
  • Ties. The out-of-sample rank is 1 + the number of strategies strictly worse, so ties rank low.
  • First winner. If several strategies share the best in-sample score, the first column wins.
  • Both backends follow these rules and agree to within 1e-12 on the logits.

Limitations

  1. PBO measures the selection process, not a strategy. A family where every configuration is genuinely good and roughly equal also gives a high PBO (paper §5.2). n_eff helps tell these cases apart but doesn't settle it.
  2. The answer is only as honest as the trial list. Omitting configurations you tried biases PBO down, and so does padding the family with configurations designed to fail.
  3. Never optimize for low PBO. Using CSCV as an objective function overfits PBO itself.
  4. The splits are dependent, so there's no calibrated goodness-of-fit p-value on the logits.
  5. Regimes outside the sample are invisible. PBO can't account for structural breaks it never saw.
  6. Order-dependent metrics (max drawdown, Calmar) have no additive block statistics, so they run on the slow NumPy path only.

Development

git clone https://github.com/ryousuf569/phacker.git
cd phacker
pip install -e ".[test]"   # builds the C++ kernel; needs a C++20 compiler
pytest

pytest without installing runs against the source tree on the NumPy backend, and the C++ parity tests are skipped. On Windows with MinGW on PATH, set CMAKE_GENERATOR="Visual Studio 17 2022" so the build uses MSVC.

License

MIT. See LICENSE.

Metadata

Release files for phacker 0.1.0

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

Source distribution (sdist)

Source distribution for phacker 0.1.0
File Size Uploaded Provenance
phacker-0.1.0.tar.gz 25.3 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for phacker 0.1.0
File
phacker-0.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
phacker-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
phacker-0.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
phacker-0.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
phacker-0.1.0-cp313-cp313-macosx_10_15_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.15+ x86-64 Details
phacker-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
phacker-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
phacker-0.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
phacker-0.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
phacker-0.1.0-cp312-cp312-macosx_10_15_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.15+ x86-64 Details
phacker-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
phacker-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
phacker-0.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
phacker-0.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
phacker-0.1.0-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details

Total release size: 2.7 MB

Release files / phacker-0.1.0.tar.gz

Download URL phacker-0.1.0.tar.gz
Size 25.3 kB
Tags Source
SHA-256 checksum
How to use checksums
39593eae7e8f8234b459cd3dc44d9ee14b239346649cd01260396075d0b01d03
BLAKE2b-256 checksum
How to use checksums
cf0c179c3ea3c93a1d5d4f447c34d7a86809b02fa0119d71170a061984e05a52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp313-cp313-win_amd64.whl

Download URL phacker-0.1.0-cp313-cp313-win_amd64.whl
Size 384.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
963effe241dc3b57ed49efcec3381a1cf62efcbbe37bd3745777d93ff04d4f0c
BLAKE2b-256 checksum
How to use checksums
0e93235f4b18e10d3f71347312333f902720f1cb741a30fb8eb41d994ee8d956
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL phacker-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 190.9 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
62b630c787a9265363f33658aedb6a1418de35308ef8a2590dc1091e86d60970
BLAKE2b-256 checksum
How to use checksums
b45821b705d292674b9b5153267c887f0891fde5cabb512b3c3426bc21fd8688
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL phacker-0.1.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 182.2 kB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
37c52be9a8e6f730dca023aa4b051166c4fcad82bad58908d45bb968ef87ae3b
BLAKE2b-256 checksum
How to use checksums
8a6cdf78694a069e553c0318eec1459743776ae5bc1c08dc9d6f738d5edf3e65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL phacker-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 66.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9bb87dca988481f855d468086a7fa7707c5aa31a49425e7bbd2a7efa11a75976
BLAKE2b-256 checksum
How to use checksums
1077e853b96c30ba3a8bc8ce032b9303bde1f3f94746605e672ae48910bc19f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp313-cp313-macosx_10_15_x86_64.whl

Download URL phacker-0.1.0-cp313-cp313-macosx_10_15_x86_64.whl
Size 68.4 kB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
6e6de566c4a99eeb7c7536b5650d63a9a2ee512382d6703b75ca6337638d268e
BLAKE2b-256 checksum
How to use checksums
4422f920875d607bf8362472c99d5cc47f107a39e31086e44e3981d9f159a314
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp312-cp312-win_amd64.whl

Download URL phacker-0.1.0-cp312-cp312-win_amd64.whl
Size 384.5 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9c12a5721ea11a112d310e5c3789d89873d05c73eed2f7f92541c5c27e5833bd
BLAKE2b-256 checksum
How to use checksums
f99d6300d65ce8af5f12fd4ba4c13bb3a473b22b08c5b4d84e7153a779665a0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL phacker-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 191.0 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e7ceffe8683bfd6dcdec3cc6d0d2739efe05e0bd8ca8741d9ede902b7bb23554
BLAKE2b-256 checksum
How to use checksums
0d44d710fd7f12924bf5e61ae8247254aef487034c450b3e3ef7576245566309
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL phacker-0.1.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 182.2 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c93b18e65752647936a9aa593053b36c41e5bdb33884d53bddee25f1479d7fba
BLAKE2b-256 checksum
How to use checksums
8009d881895d39571b223e4a789bfc9da9fe5fdbbf5a029d9fdda8b06a483371
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL phacker-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 66.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
00bfe8cd5d0681a0fd8ac7411c1de5ffc57b4f407b1b50ed28d2f74e46aabbf9
BLAKE2b-256 checksum
How to use checksums
4ab0415ff11c700d6b140743e1b132a81f67e0b3b1161e82dc7f1047b4c7b08f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp312-cp312-macosx_10_15_x86_64.whl

Download URL phacker-0.1.0-cp312-cp312-macosx_10_15_x86_64.whl
Size 68.4 kB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
bc1c7287649c8eb5dfa07f720f7a43be471cdfa79859cac74f8368de4d4b9e53
BLAKE2b-256 checksum
How to use checksums
aab86d419006d87965b7fa8944ef05efb00af5d9662a157d87fad7c98d62ad51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp311-cp311-win_amd64.whl

Download URL phacker-0.1.0-cp311-cp311-win_amd64.whl
Size 384.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8c37eeaa118a657d66c6f09f9330affc6a93cf3582c77093a1c0effa60851171
BLAKE2b-256 checksum
How to use checksums
1a79e9de932892a8ddc16ba3e8ae4b531d48bab742a2716c95178b1d140f286a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL phacker-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 191.2 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7d462eb7e2ea87200baf36e52419bc6280570c6f57bdb50a035bd51a1f3a358e
BLAKE2b-256 checksum
How to use checksums
d4d1ee3c3a29beb840cd6cbb7ed9423bcad19a9cff377bf493d0a58cec8b59a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL phacker-0.1.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 183.1 kB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b7061abaf4fbb6ceeacd1010594a7f4f69b0e06244fbb330d003b92ca08f205e
BLAKE2b-256 checksum
How to use checksums
04f7dc4b2fed342ae45fb38fe28ba207298ace4f4047265f087cffd6189bc92a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL phacker-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 66.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9fdb83598a75fb0e2d15c3d5ba80745f4b01454cdecab64f325ce0e46a8b6f8a
BLAKE2b-256 checksum
How to use checksums
7796087058126440b3fc973d1329b42b472dc5920b0dfe3b8294bc608c897681
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Release files / phacker-0.1.0-cp311-cp311-macosx_10_15_x86_64.whl

Download URL phacker-0.1.0-cp311-cp311-macosx_10_15_x86_64.whl
Size 68.9 kB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
d65e99f4a99c4eac3e396536de6e90fe19a44de56f75649887ceb89c729aed68
BLAKE2b-256 checksum
How to use checksums
f870ca50351840c411cac72e00df1926c472f9a0937446b7cc0181cd8f805d89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Oct 25, 2026.

Transparency log

Security for phacker 0.1.0

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.

Full provenance

All 16 files in this release have been uploaded with provenance metadata.

Select from 16 files

Attestation for phacker-0.1.0.tar.gz

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 Oct 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

16 release files Full provenance

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