Releases: PNX89/QUACKZ
Releases · PNX89/QUACKZ
Release list
v0.1.0
Added
quackz.returns: the position and cost conventions the whole library is built on. The
position at bar t is decided at that bar's close and earns bar t+1's return; costs are
charged on|pos[t-1] - pos[t-2]|, including the trade into the first position and the
trade out of the last.quackz.metrics: Sharpe, Sortino, Calmar, maximum drawdown, ulcer index, CVaR,
annualized return and volatility, method-of-moments skewness and non-excess kurtosis,
the probabilistic Sharpe ratio, the expected maximum Sharpe of a search, the deflated
Sharpe ratio, minimum track record length, a Newey-West t-statistic and the lag-1
autocorrelation. Normal cdf and inverse cdf come from the standard library, so scipy is
not a runtime dependency.quackz.checks: reconciliation against a claimed return stream, latency sensitivity
graded on the level at zero delay and on how much of that level survives one bar of
delay against what the holding period implies, a cost sweep with a closed-form
break-even, a stationary bootstrap with a null-imposed p-value and a studentized
interval, the noise floor of a declared search, subperiod stability with a noise-aware
verdict, and profit concentration.quackz.splits:WalkForwardandEmbargoedKFold, both following the scikit-learn
splitter protocol without importing scikit-learn.quackz.evaluate.evaluate: one call that runs every check against a single price and
position series and returns a frozenEvaluation, including the deflated Sharpe as a
function of the number of trials and the break-even trial count.quackz.report:text_report,markdown_reportandjson_report, all built from one
set of verdict sentences so the three formats cannot disagree.quackz.cli:quackz report DATA.csv, with additive--jsonand--mdoutput and
exit codes 0 for pass or warn, 1 for a failing verdict, 2 for anything the command could
not run at all, including a file it could not open or decode. The dispersion of the
search is reachable from the command line as well as from Python:--trial-sharpes PATH
reads the annualized Sharpe of every configuration the search touched, and
--var-trial-sharpestakes that spread already summarised.- Configurable grading: every cut-off is a named constant with its reasoning beside it,
gathered intoThresholdsand overridable throughevaluate(thresholds=...). - Examples:
examples/overfit_demo.pyandexamples/momentum_demo.py, both seeded,
offline and deterministic.