Skip to content

Releases

v0.13.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 10:57

Portfolio Construction. Nothing is removed or renamed: every subpath published
in 0.13.1 resolves unchanged, and no entry point changed its name, signature
or behaviour.

0.13.1 0.13.2
Topics 697 717
Domains 18 19
Topics with a validated api contract 697 / 697 717 / 717
Topics with an executed worked example 697 717
Topics whose arithmetic is asserted on every build 623 623

New

  • Portfolio Construction — 20 topics, the first domain here that turns a
    covariance matrix into a set of weights. Mean-risk optimization (Markowitz
    against a return target, global minimum variance, maximum Sharpe, mean-CVaR,
    mean-MAD), risk allocation (inverse volatility, equal risk contribution, risk
    budgeting, hierarchical risk parity and its equal-risk-contribution variant),
    Bayesian and robust allocation (Black-Litterman, resampled frontier, robust
    and distributionally robust mean-variance, Kelly), and the practical
    constraints that decide whether any of it survives contact with a real book —
    turnover, transaction costs, cardinality, gross/net exposure, and tax-aware
    lot selection.

    Each takes its inputs positionally and by name rather than through a topic id,
    and each validates before it solves: an asymmetric covariance matrix, an
    infeasible return floor or a budget that does not sum to one is refused rather
    than quietly worked around.

Known gap

These 20 ship at contract tier — their signature is checked on every build,
but nothing here replays their arithmetic. The expected numbers exist; they sit
in each topic's tests/ directory in a shape the conformance harness does not
yet read, so this is a wiring gap and not an absence of evidence. It brings the
unasserted count to 94 of 717.

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 10 Sep 14:28

Volatility and Covariance, and the diagrams that had been quietly going missing.
Nothing is removed or renamed: every subpath published in 0.13.0 resolves
unchanged, and no entry point changed its name or signature.

0.13.0 0.13.1
Topics 675 697
Domains 17 18
Topics whose arithmetic is asserted on every build 601 623
Topics with a validated api contract 675 / 675 697 / 697
Topics carrying their diagram source 301 692

New

  • Volatility and Covariance — 22 topics. Historical estimators
    (close-to-close through Yang-Zhang), realized measures (realized variance and
    covariance, bipower variation, the jump-variation detector, the realized
    kernel), conditional volatility (ARCH, GARCH, EGARCH, GJR-GARCH, FIGARCH,
    HAR-RV) and covariance estimation (sample and EWMA, Ledoit-Wolf and oracle
    approximating shrinkage, factor-model and graphical-lasso). Each ships its own
    module, and all 22 have their numbers asserted here rather than taken on trust.

Fixed

  • 369 topics were publishing no diagram source. Their Mermaid is written on
    Windows and therefore CRLF, and the fence that lifts it out matched a bare
    newline — so the extraction quietly returned nothing and the page rendered
    without the diagram it was written to have. Catalog Markdown is now read with
    its line endings normalised.

Internal

  • The metadata reader learned two forms of YAML it had been refusing: a block
    sequence sitting at its parent key's own indent, and a plain scalar wrapped
    across lines. Both are valid, both are what the newer generators emit, and
    between them they were dropping everything below the first wrapped summary.
  • A sixth fixture convention: a named case list, where each case pins a whole
    reference output, a subset of fields, or the error code a bad input must
    raise. It is the first shape that asserts the refusals as well as the numbers.

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 11:24

The catalog and the package finally hold the same set. 675 topics across 17
domains, with nothing skipped and nothing held back — the first release where
every algorithm that exists is also one you can install. Nothing is removed:
every subpath published in 0.12.0 still resolves.

0.12.0 0.13.0
Topics 324 675
Domains 13 17
Topics whose arithmetic is asserted on every build 158 601
Topics with a validated api contract 324 / 324 675 / 675
Topics with an executed worked example 324 675

Technical Indicators is the headline for most people: it shipped 37 of its 137
topics in 0.12.0 and now ships all 137. ALMA, T3, VIDYA, FRAMA, TRIX, Klinger,
the Hilbert and Ehlers cycle tools and the rest are installable for the first
time.

One thing that can break you

matching-engines-and-venue-logic/continuous-matching/hybrid-pro-rata-time-matching
was publishing its family's calculate(topicId, inputs) dispatcher as its entry
point, because its slug carries a trailing word its function does not. It now
publishes hybridProRataTime(incoming, price, lot, fraction, resting).

calculate is still exported from that subpath, so an import of it keeps
working. What changed is run, which now aliases the topic's own function.
If you called run("D12-F01-A04", inputs) there, call calculate instead — or
better, the named function.

New

  • Financial Mathematics, Statistics, and Data Foundations — 120 topics, from
    means and percentiles through distributions, inference, regression, and risk
    and performance statistics. This is the base layer the rest of the library is
    meant to build on, so it lives at the short subpath foundations/…. It is
    deliberately absent from the README's algorithm index, which catalogues the
    market-facing topics; it ships, it is documented, and it is in the agent skill.
  • Fundamental Analysis and Valuation — 52 topics. Discounted cash flow,
    dividend discount and Gordon growth, residual income, economic value added,
    relative valuation, and the distress and earnings-quality models: Altman Z,
    Piotroski F, Beneish M, Ohlson O, Dechow-Dichev, modified Jones. Plus
    integrated and sector-specific equity scoring.
  • Model Validation and Backtesting — 10 topics. ROC and PR curves, Brier
    score, log loss, calibration and expected calibration error, gains and lift,
    cost-sensitive thresholds, score migration, slice validation, rare-event bounds.
  • Credit Risk and Default — 7 topics. Logistic and probit PD models,
    through-the-cycle and point-in-time PD, Merton and Bharath-Shumway distance to
    default, Campbell-Hilscher-Szilagyi distress probability.
  • Geometric chart patterns gains its continuation structures and pattern
    matching families — triangles, flags, pennants, wedges, DTW and matrix profile.
  • 152 topics that could not ship now do. They carried an adapter rather than
    an implementation: a file that started a Python process, piped its input across
    as JSON and returned the answer. Correct, and unusable in a package that
    promises zero dependencies and has to run in a browser. The shared runtime
    behind them is now native TypeScript, and parity was measured rather than
    assumed — 298 full-series cases and three exact EPS cases compared against the
    Python reference observation by observation, 42,435 values, worst relative
    error 1.31e-15. This is what completes Technical Indicators, and it also brings
    the Hilbert and Ehlers cycle analytics, the pivot and market-structure
    families, and the last three EPS topics.

Verification

The count nearly triples, and the description of it changes with it. These
expected values are computed in the catalog by a Python implementation written
alongside the TypeScript rather than derived from it, which makes the check
cross-language parity, not an independent third-party figure. It catches
transcription and generation errors — the failure mode that has actually
occurred here — and it would not catch both implementations sharing a misreading
of the source. The README and the agent skill now say so in those words.

Most of the jump comes from reading two fixture shapes the generator did not
recognise. 102 topics already carried a separate input and expected-output pair
on disk while nothing asserted their numbers, and the 152 ported topics carry a
richer contract again: the warm-up index, every value in the final observation,
and a causality property — that running over a prefix of the bars reproduces
exactly the prefix of the full series, which is what catches an implementation
that has quietly looked ahead. No expected value was authored to close either gap.

Contributing

src/ is still generated and still overwritten on every sync, but there are now
two routes for work that used to have none.

  • optimised/ — a topic can ship a hand-written implementation from the
    repository instead of the catalog's. The catalog version is emitted beside it
    and a differential test asserts the two return identical values and throw
    identical errors, so an optimisation is reviewable by machine. npm run bench
    reports the ratio and CI fails if a recorded one regresses. The first is a
    3.5x rewrite of calculateSma.
  • A proposal route for new algorithms. Assigning a topic its id stays with
    the maintainer; everything after that is a normal pull request, and it can ship
    before the article exists.

See CONTRIBUTING.md.

Fixed

  • Ninety foundations topics would have published truncated subpaths —
    count-sum-minimu, look-ahead-leaka — because their folder names were capped
    at 28 characters and no slug was declared.
  • Optional parameters were being dropped from the middle of published
    signatures, so a caller reading match(query, candidate, normalize) and
    passing three arguments was setting radius. Seven topics were affected.
  • Arrow-form entry points recorded no parameters at all, publishing ten topics as
    zero-argument functions.
  • engines.node is now >=22.12. The require condition resolves to an ES
    module and require(esm) is only unflagged from 22.12, so anyone on 22.0–22.11
    was inside the declared range and getting a hard failure.
  • The bundled lookup CLI reads the docs.json beside it before reaching for the
    network, instead of answering from a different version of the library.

Internal

  • A purity gate refuses any implementation that reaches a node: builtin,
    directly or through a shared module, and it now checks the whole import graph
    rather than one level. It is what caught the 152 adapter-backed topics before
    they could ship; they were ported rather than exempted, and the gate stays.
  • gen-docs.mjs counts registry entries independently of the regex that parses
    them. Three times a topic had failed to match on one malformed field and
    vanished from the payload with no symptom.
  • Relative imports that climb out of a topic directory are vendored into
    src/_shared/ generically, replacing a hardcoded case per engine.