Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
dc508e9
feat: integrate research workflows and a global derivative lifecycle …
VarunSingh022 Oct 26, 2026
6589095
feat(execution): a declared queue model for resting limit orders (FUT…
VarunSingh022 Oct 26, 2026
b553a4e
feat(strategy): a strategy configuration read back as its declared ty…
VarunSingh022 Oct 26, 2026
5aca127
chore(release): make 4.2.0 the development version
VarunSingh022 Oct 31, 2026
2b9ef14
feat(strategy): a strategy exercises its own options from its hooks (…
VarunSingh022 Oct 31, 2026
1c610c7
feat(instrument): baskets, cash in lieu, foreign and quanto considera…
VarunSingh022 Oct 31, 2026
6025f33
feat(portfolio): settlement-date accounting, unsettled cash out of bu…
VarunSingh022 Oct 31, 2026
1dcfe99
feat(risk): margin calls and forced liquidation on declared margin te…
VarunSingh022 Oct 31, 2026
1d07a88
feat(strategy): a strategy withdraws its own working orders; v4.2.0 g…
VarunSingh022 Oct 31, 2026
f531f4c
docs(audit): the v4.2.0 readiness report
VarunSingh022 Oct 31, 2026
71bb75e
feat(portfolio): financing, margin purchases and short borrow on decl…
VarunSingh022 Oct 31, 2026
6cca6ca
feat(risk): a declared portfolio margin model read by every margin ga…
VarunSingh022 Oct 31, 2026
c1a070b
feat(execution): venue price bands and trading halts as declared date…
VarunSingh022 Oct 31, 2026
ab6bea7
feat(portfolio): mergers, spin-offs and rights issues by declared ter…
VarunSingh022 Oct 31, 2026
362a1d1
test(integration): the v4.2.0 milestones together, and example 76
VarunSingh022 Oct 31, 2026
5014c79
feat(audit): the phase 2 global gap audit -- three fixes and FUT-022 …
VarunSingh022 Oct 31, 2026
350f3f7
docs(audit): the v4.2.0 readiness report after phase 2
VarunSingh022 Oct 31, 2026
30f5daa
feat(portfolio): a lender's recall and the buy-in after its deadline …
VarunSingh022 Oct 31, 2026
90b0152
fix(runtime): a results bound never trims a fill still unsettled (ACC…
VarunSingh022 Oct 31, 2026
06a76de
feat(portfolio): interest and borrow fees accrued day by day, posted …
VarunSingh022 Oct 31, 2026
6aa9c43
feat(portfolio): a corporate action's cash paid on its payment date (…
VarunSingh022 Oct 31, 2026
e4eaae1
feat(risk): options repriced from their underlying in margin scenario…
VarunSingh022 Oct 31, 2026
4a71ebd
feat(portfolio): holder elections and announcement instants (FUT-024)
VarunSingh022 Oct 31, 2026
0fc5772
feat(execution): price bands around a declared reference price (FUT-028)
VarunSingh022 Oct 31, 2026
1d4c873
feat(execution): a halt reopening by auction at the venue's print (FU…
VarunSingh022 Nov 1, 2026
5d4cb71
feat(strategy): a strategy amends its own working order in place (FUT…
VarunSingh022 Nov 1, 2026
35c9b46
fix(runtime): forced trades are never deferred or absorbed; unpayable…
VarunSingh022 Nov 1, 2026
d34c96e
test(integration): phase 3 capabilities together, and example 77
VarunSingh022 Nov 1, 2026
b600ba7
docs(audit): the phase 3 global gap audit and FUT-030 to FUT-036
VarunSingh022 Nov 1, 2026
bbc4085
docs(audit): the readiness report's phase 3 section
VarunSingh022 Nov 1, 2026
123f98b
feat(runtime): an amend is prepared and committed, never leaving the …
VarunSingh022 Nov 1, 2026
0a706ec
fix(allocation): an order reduced in place holds only what it still a…
VarunSingh022 Nov 1, 2026
601d5a3
feat(execution): a reopening auction computed from the venue's publis…
VarunSingh022 Nov 1, 2026
e91da11
feat(portfolio): a corporate action's payment amended by the issuer's…
VarunSingh022 Nov 1, 2026
454c029
feat(runtime): a buy-in's declared premium, and borrow located per st…
VarunSingh022 Nov 1, 2026
522047c
feat(backtesting): elections split between holders, part elections, p…
VarunSingh022 Nov 1, 2026
69b5b84
docs(audit): the phase 4 gap audit's FUT-037 to FUT-040
VarunSingh022 Nov 1, 2026
8a6b8b5
feat(instrument): options repriced from a dated volatility surface, o…
VarunSingh022 Nov 1, 2026
1e942a8
test(integration): phase 4 capabilities together, and example 78
VarunSingh022 Nov 1, 2026
03937ea
fix(lifecycle): a run's manifest can name the instrument registry it …
VarunSingh022 Nov 1, 2026
cde89f6
docs(audit): the readiness report's phase 4 section
VarunSingh022 Nov 1, 2026
ec18817
feat(portfolio): legs an exchange delivers after its effective instan…
VarunSingh022 Nov 1, 2026
fa7a713
feat(backtesting): an elective action's terms corrected after their a…
VarunSingh022 Nov 1, 2026
004a713
feat(risk): volatility surfaces arriving as data during a run (FUT-039)
VarunSingh022 Nov 1, 2026
a605289
fix(lifecycle): the engine integration audit's findings, and FUT-041 …
VarunSingh022 Nov 1, 2026
e1f878e
feat(instrument): a strategy's view of what a venue publishes of an a…
VarunSingh022 Nov 1, 2026
b2f2f6a
fix(backtesting): an elective action's late delivery amended by the i…
VarunSingh022 Nov 1, 2026
1542c4e
test(integration): phase 5 capabilities together, and example 79
VarunSingh022 Nov 1, 2026
c348e69
docs(audit): the readiness report's phase 5 section
VarunSingh022 Nov 1, 2026
eb4a384
feat(runtime): a resumed run's registry held to its terms, not its ty…
VarunSingh022 Nov 1, 2026
53dd414
docs(adr): the default manifest's registry, its options and the decis…
VarunSingh022 Nov 1, 2026
4715c72
feat(instrument): auction books and indications delivered during a ru…
VarunSingh022 Nov 1, 2026
462ec32
fix(lifecycle): the phase 6 integration audit's finding, and FUT-044 …
VarunSingh022 Nov 1, 2026
ae8526f
docs(audit): the readiness report's phase 6 section
VarunSingh022 Nov 1, 2026
6282ad8
docs(release): the v4.2.0 candidate's documents, made consistent with…
VarunSingh022 Nov 1, 2026
94d3301
docs(audit): the readiness report's candidate closure (section 14)
VarunSingh022 Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .github/workflows/preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@ name: Release Preflight
# CodeQL and benchmark gates, while there is still nothing to take back.
#
# Which commit it validates, and how it refuses to validate the wrong one:
# * A push to the v4.1.0 candidate branch, work/v4.1.0-release-hardening: the
# * A push to the v4.2.0 candidate branch, work/v4.2.0-release: the
# commit pushed, and only that -- the run's commit must be the pushed tip
# (github.event.after), the ref must be that branch, and a deletion is
# refused: when a branch is deleted GitHub reports the DEFAULT branch's
# commit for the run, which is how a push trigger could validate `main`.
# This route needs nothing on `main`. Retarget or remove it after v4.1.0.
# This route needs nothing on `main`. Retarget or remove it after v4.2.0.
# (v4.2.0's development branch is work/v4.1.1-future-readiness, named before
# the number was chosen; a candidate pushed for release goes to
# work/v4.2.0-release, or is validated by labelling its pull request.)
# * Run manually ("Run workflow"): the commit of the branch or tag chosen under
# "Use workflow from". The `candidate` input must repeat that name, so a run
# left on `main` by mistake fails in its first step instead of validating
Expand All @@ -34,13 +37,13 @@ on:
required: true
type: string
expected_version:
description: "The version this release will be, e.g. 4.1.0 (its tag is v<version>)"
description: "The version this release will be, e.g. 4.2.0 (its tag is v<version>)"
required: true
type: string
# The candidate branch alone; never main. The guard below names it again.
push:
branches:
- work/v4.1.0-release-hardening
- work/v4.2.0-release
pull_request:
branches:
- main
Expand Down Expand Up @@ -78,7 +81,7 @@ jobs:
REF_NAME: ${{ github.ref_name }}
RUN_SHA: ${{ github.sha }}
# The branch on.push.branches names; a test holds the two together.
PUSH_BRANCH: work/v4.1.0-release-hardening
PUSH_BRANCH: work/v4.2.0-release
PUSHED_SHA: ${{ github.event.after }}
PUSH_DELETED: ${{ github.event.deleted }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
Expand Down Expand Up @@ -138,7 +141,7 @@ jobs:
python-version: "3.12"

# The candidate must BE the release, not merely agree with itself: a tree
# whose every reference says 4.1.1 fails here. A manual run names the
# whose every reference says 4.2.1 fails here. A manual run names the
# release in expected_version; a push or a labelled pull request is the
# candidate branch's release, RELEASE_VERSION (a test holds it to the
# package's version and to the push branch's name).
Expand All @@ -147,7 +150,7 @@ jobs:
env:
EVENT: ${{ github.event_name }}
DISPATCHED_VERSION: ${{ inputs.expected_version }}
RELEASE_VERSION: "4.1.0"
RELEASE_VERSION: "4.2.0"
run: |
set -euo pipefail
if [ "${EVENT}" = "workflow_dispatch" ]; then
Expand Down
721 changes: 721 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
**Deterministic • Immutable • Fully typed • Zero runtime dependencies**

[![Python](https://img.shields.io/badge/Python-3.12+-3776AB?logo=python&logoColor=white)]()
[![Version](https://img.shields.io/badge/Version-4.1.0-blue)]()
[![Version](https://img.shields.io/badge/Version-4.2.0-blue)]()
[![License](https://img.shields.io/badge/License-MIT-green.svg)]()
[![Typing](https://img.shields.io/badge/MyPy-Strict-blue)]()
[![Style](https://img.shields.io/badge/Ruff-Clean-red)]()
Expand Down Expand Up @@ -45,16 +45,16 @@ It exists to answer the questions that decide whether a backtest means anything:

# Release Status

**Current Release:** **v4.1.0 — a replay that pauses and resumes durably to the identical result, CPython 3.12 to 3.14 on Linux and macOS, run identities that no longer depend on the host, and release verification fixed at its root -- additive on the v4.0 contract**
**Current Release:** **v4.2.0 (release candidate, not yet published; the published tag is v4.1.0) — every timed input on every driver, several datasets in one run, contracts declared and carried through exercise, assignment, expiry and delivery, execution algorithms and a queue model on the historical drivers, settlement, margin, financing and borrow on declared terms, venue controls and auctions, corporate actions and their corrections, volatility surfaces and auction information delivered during a run, typed strategy configuration -- additive on the v4.0 contract**

| Metric | Status |
|---------|--------|
| Python | CPython 3.12, 3.13, 3.14 (Linux, macOS) |
| Version | 4.1.0 |
| Version | 4.2.0 |
| Runtime dependencies | **None** (standard library only) |
| Tests | **9,672 passing, 0 skipped, 0 warnings** (each of CPython 3.12, 3.13, 3.14) |
| Tests | **10,841 passing, 0 skipped, 0 warnings** (each of CPython 3.12, 3.13, 3.14) |
| Static typing | **Strict mypy**, repository-wide |
| Examples | **71 / 71** |
| Examples | **79 / 79** |
| Release certificate | [11 / 11 checks](docs/audit/RELEASE_CERTIFICATION.md) |
| License | MIT |

Expand Down
Loading
Loading