Repository navigation
Releases: blechturm/ledgr
Release list
v0.2.1.0 Equity Corporate Actions and Strategy Workflow
ledgr 0.2.1.0 models equity corporate actions from sealed point-in-time facts, gives strategies one helper pipeline that behaves the same in dense and availability-aware runs, prints results on one screen, and reads CSV files through one path.
Highlights
- Corporate-action facts (dividends, acquisitions, spin-offs) are sealed into the snapshot with their dates, completeness and provenance. Gross cash distributions post as
CASHFLOWevents, and positions ended by a corporate action close through a newDISPOSITIONevent. A declared policy (ledgr_corporate_actions()) governs the treatment, andledgr_corporate_action_summary()reports what was modeled. - Snapshots declare their price basis (
"split_adjusted"or"distribution_adjusted"), which is part of experiment identity. - The strategy helper pipeline (signal, selection, target) scores the full universe and carries eligibility explicitly. Trusted strategy recovery (
ledgr_run_strategy(trust = TRUE)) can rerun strategies that use ledgr's helpers. print(bt)fits on one screen, with the corporate-action and price-basis lines;summary(bt)shows the metrics first.ledgr_run_completion()reports whether a run completed and, if not, why.ledgr_snapshot_from_csv()is the single CSV path, read by DuckDB.
Upgrading
- Requires R 4.6.0 or later and duckdb 1.5.6 or later.
- Breaking renames and removals:
ctx$vec$positionsbecomesctx$vec$position;ledgr_select_argmax()/argmin()becomeledgr_rule_argmax()/argmin();ledgr_pulse_snapshot(initial_cash = )becomescash; the CSV importers are replaced byledgr_snapshot_from_csv(). New experiments record a corporate-action policy, so config hashes differ from 0.2.0.1. See NEWS.md for the full list.
Not claimed
Corporate actions are not complete in this release. It does not claim corporate-action completeness, broker-exact settlement, net cash, tax correctness or exact recipient exposure. Exact quantity settlement, such as new shares from a split or a spin-off, is not modeled, and bars declared distribution-adjusted are refused as execution bars.
Windows and Ubuntu checks, coverage and pkgdown passed on the release branch, on main and on the release tag. Full details are in NEWS.md.
v0.2.0.1 Availability Performance
This release productionizes the availability-performance work: a prepared point-in-time provider, typed diagnostic blocks, linear event buffers, prepared fold-time valuation, linear seal validators, and atomic resumed-run equity finalization. It also corrects the peer-benchmark boundary so memory-backed rows use public sweep workflows. Compatibility: ledgr now requires collapse 2.1.8 or later; there is no 2.1.7 fallback. No public API, schema, hash, run-identity, accounting-policy, or availability-policy contract changes. On the accepted full fixture, the availability path measured 119.11 seconds cold and a 17.55-second warm median; the corrected public canonical and compiled memory sweeps measured 30.96 and 16.63 seconds, while durable ledgr measured 58.23 seconds. These are fixture-specific records, not universal speed claims. Windows and Ubuntu checks, pkgdown, and coverage passed on the release branch, main, and the release tag. Full details are in NEWS.md and the v0.2.0.1 release closeout.
v0.2.0.0 Point-in-Time Asset Availability
This release adds ledgr's first point-in-time asset-availability workflow: dated membership and status facts, complete session clocks, dynamic member-plus-held universes, strict gap handling, stale-mark valuation, controlled incomplete outcomes, and an executable survivorship-bias article. It also hardens the core API with eager fill reads, corrected reversal-fee allocation, durable run locators, restored sweep-review lineage, and a mechanically split run coordinator. Compatibility: corrected availability timing and new schema and identity versions mean affected runs may have different pulses, fills, and hashes; rerun them before equivalence comparisons. Legacy retained artifacts remain inspectable under their recorded conventions. Windows and Ubuntu package checks, pkgdown, and the 85.9 percent coverage gate passed. Full details are in NEWS.md and the v0.2.0.0 release closeout.
v0.1.9.7 Selection Integrity and Eligibility
ledgr v0.1.9.7 turns selection-integrity diagnostics into explicit, inspectable eligibility evidence without allowing filtering to become ranking, selection, or promotion.
Highlights:
- Adds
ledgr_return_panel()as a source-neutral input for PBO/CSCV, MinTRL, DSR, and effective-trial diagnostics, with a deterministic evidence-onlypanel_hash. - Adds opt-in retained closed-trade evidence through
ledgr_sweep_trades(). - Adds classed, serializable, hashable business objectives and seven eligibility criteria, plus
ledgr_sweep_filter(), whose default output retains every evaluated candidate and criterion result. - Adds native K-Ratio and a warning-only guard when intraday observations are paired with daily annualization assumptions.
- Rebuilds the Selection Integrity article around visible inputs, executed cautionary examples, interpretation, and limits.
Compatibility:
- The pre-release diagnostic names were simplified with no aliases:
ledgr_sweep_pbo()->ledgr_pbo(),ledgr_sweep_min_track_record()->ledgr_min_track_record(),ledgr_sweep_dsr()->ledgr_dsr(), andledgr_sweep_cluster()->ledgr_effective_trials(). - Diagnostics accept a
ledgr_return_panelor retained sweep; raw matrices are rejected. Construct a panel explicitly withledgr_return_panel().
Eligibility remains evidence only. This release does not add automatic winner selection, promotion, objective-filtered walk-forward identity, or a future-profitability guarantee.
v0.1.9.6 Validation Substrate And Selection Integrity
v0.1.9.6 ships the validation substrate and evidence-only selection-integrity diagnostics: canonical single-run returns, retained-return panels/projections, native PBO/CSCV after the spike, MinTRL, DSR/effective-trial clustering, and the Selection Integrity article. It also records the intraday-readiness audit and current-surface peer benchmark redo. Business-objective filtering, purging/embargo/CPCV, intraday runtime, public benchmark claims, and compiled spot-FIFO default changes remain deferred.
v0.1.9.5 Naming and teaching consolidation
v0.1.9.5 consolidates the public API naming surface after the cost, sweep persistence, target-risk, and walk-forward feature arc. It adds the ledgr_candidate() extraction generic, sweep/store review helpers, refreshed teaching articles, maintainer manual traces, and scheduled hardening from the v0.1.9.4 audits. Validation-toolkit statistics, paper/live trading, OMS behavior, and default compiled execution remain future work.
v0.1.9.4 Walk-forward Evaluation
v0.1.9.4 ships the first walk-forward evaluation surface: calendar-time fold definitions, train-window scalar selection, selected-candidate test runs, walk-forward session identity, compact persistence, inspection helpers, degradation table output, and promotion-ready candidate extraction. Cost identity from v0.1.9.1, sweep retention from v0.1.9.2, and risk-chain identity from v0.1.9.3 are now wired into the walk-forward spine. Selection-integrity diagnostics, PBO/CSCV/CPCV, benchmark-relative metrics, all-candidate test retention, OMS/paper/live behavior, and ML-first tooling remain deliberately deferred.
v0.1.9.3
v0.1.9.3 ships the first target-risk layer for ledgr.\n\nHighlights:\n- Adds classed target-risk constructors: ledgr_risk_none(), ledgr_risk_chain(), ledgr_risk_long_only(), and ledgr_risk_max_weight().\n- Threads risk identity through config hashes, committed runs, sweeps, saved sweeps, promotion context, and reopened candidates via risk_chain_hash and risk_plan_json.\n- Inserts the bounded risk slot between strategy target validation and fill timing while preserving one shared fold core.\n- Adds documentation, examples, NEWS, pkgdown reference indexing, and the v0.1.9.3 release closeout.\n\nNon-scope remains explicit: no affordability enforcement, liquidity/capacity policy, OMS behavior, broker-grade margin/shorting, arbitrary risk callbacks, walk-forward implementation, or compiled-core architecture changes.\n\nVerification: local release gate passed; branch CI, PR CI, main CI, pkgdown deploy, and tag CI are green.
v0.1.9.2
v0.1.9.2 ships sweep artifact persistence.
Highlights:
- Durable saved-sweep artifacts via ledgr_sweep_save(), ledgr_sweep_open(), ledgr_sweep_list(), and ledgr_sweep_info().
- Optional retained net equity/return series for completed sweep candidates via ledgr_sweep_retention(), ledgr_sweep_returns(), and ledgr_sweep_returns_wide().
- Reopened-sweep candidate compatibility and promotion by re-execution from the reproduction key.
- Public sweep row identity now uses candidate_id and candidate_row.
- Documentation, NEWS, pkgdown reference indexing, release closeout, and v0.1.9.2 planning records are updated.
Non-scope remains explicit: no automatic ranking, benchmark-relative diagnostics, signal decay, gross-vs-net attribution, schema migration machinery, or walk-forward integration in this packet.
Release validation:
- Local full testthat, README cold-start, R CMD build/check, coverage, pkgdown, WSL schema/persistence smoke, and stale-claim scans passed.
- Branch CI, PR CI, main CI, main pkgdown, and tag CI are green.
v0.1.9.1 Cost API
ledgr v0.1.9.1 ships the first public transaction-cost model API.
Highlights:
- Added classed
ledgr_cost_*()constructors, orderedledgr_cost_chain()composition, cost inspection helpers, explicitledgr_timing_next_open(), and deterministic cost identity throughcost_model_hashpluscost_plan_json. - Breaking pre-CRAN compatibility change: legacy
fill_modelinputs are replaced by explicittiming_modelplus requiredcost_model; zero-cost runs now useledgr_cost_zero()intentionally. - Fixed bounded identity issues from the v0.1.8.11 auditr review: config hashes no longer depend on DuckDB store path, and alias-map identity is separated from concrete feature-set identity.
- Refreshed cost/timing documentation, runnable examples, condition-class docs, disclaimer resolution, and sweep docs that keep cost models fixed at the experiment level for v1.
Release-gate note: Ubuntu coverage initially exposed covr trace-shard instability around mirai-backed parallel sweep tests. Normal CI still runs those tests; coverage instrumentation now skips only those worker-backed cases. Branch, main, and tag CI are green for the final tag commit.