Repository navigation
Releases
v0.13.2
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
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
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 subpathfoundations/…. 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 ofcalculateSma.- 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 readingmatch(query, candidate, normalize)and
passing three arguments was settingradius. Seven topics were affected. - Arrow-form entry points recorded no parameters at all, publishing ten topics as
zero-argument functions. engines.nodeis now>=22.12. Therequirecondition resolves to an ES
module andrequire(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.jsonbeside 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.mjscounts 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.