Skip to content

Commit 7d5aa11

Browse files
authored
Merge pull request #6 from RiskLabAI/book-library-readiness
Add validated Python methods
2 parents fa585fa + e7b96fc commit 7d5aa11

46 files changed

Lines changed: 5838 additions & 187 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
working-directory: ${{ runner.temp }}
5959
env:
6060
RISKLABAI_REPOSITORY_ROOT: ${{ github.workspace }}
61-
run: python -B -c "import os; from pathlib import Path; import RiskLabAI; origin = Path(RiskLabAI.__file__).resolve(); repository = Path(os.environ['RISKLABAI_REPOSITORY_ROOT']).resolve(); assert not origin.is_relative_to(repository), (origin, repository); assert RiskLabAI.__version__ == '3.1.0'; print(origin)"
61+
run: python -B -c "import os; from pathlib import Path; import RiskLabAI; origin = Path(RiskLabAI.__file__).resolve(); repository = Path(os.environ['RISKLABAI_REPOSITORY_ROOT']).resolve(); assert not origin.is_relative_to(repository), (origin, repository); assert RiskLabAI.__version__ == '3.2.0'; print(origin)"
6262
- name: Run the installed base package tests
6363
working-directory: ${{ runner.temp }}
6464
run: python -B -m pytest -q -p no:cacheprovider -c "$GITHUB_WORKSPACE/pyproject.toml" "$GITHUB_WORKSPACE/test"
@@ -91,7 +91,7 @@ jobs:
9191
working-directory: ${{ runner.temp }}
9292
env:
9393
RISKLABAI_REPOSITORY_ROOT: ${{ github.workspace }}
94-
run: python -B -c "import os; from pathlib import Path; import RiskLabAI; origin = Path(RiskLabAI.__file__).resolve(); repository = Path(os.environ['RISKLABAI_REPOSITORY_ROOT']).resolve(); assert not origin.is_relative_to(repository), (origin, repository); assert RiskLabAI.__version__ == '3.1.0'; print(origin)"
94+
run: python -B -c "import os; from pathlib import Path; import RiskLabAI; origin = Path(RiskLabAI.__file__).resolve(); repository = Path(os.environ['RISKLABAI_REPOSITORY_ROOT']).resolve(); assert not origin.is_relative_to(repository), (origin, repository); assert RiskLabAI.__version__ == '3.2.0'; print(origin)"
9595
- name: Run the installed optional-feature tests
9696
working-directory: ${{ runner.temp }}
9797
run: python -B -m pytest -q -p no:cacheprovider -c "$GITHUB_WORKSPACE/pyproject.toml" "$GITHUB_WORKSPACE/test"

‎CHANGELOG.md‎

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,38 @@
33
All notable changes to RiskLabAI.py are documented here.
44
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versioning: [SemVer](https://semver.org/).
55

6-
## [3.1.0] - Unreleased
6+
## [3.2.0] - Unreleased
7+
8+
### Added
9+
10+
- Sequential bootstrap sampling, majorization-based optimization, financial
11+
network clearing, and optimal execution utilities.
12+
- Ambiguity calculations for supplied priors, order-flow features, regime and
13+
drift adaptation, and tail-risk estimation and backtesting.
14+
- Constrained and robust portfolio optimization and decision-focused losses.
15+
- Causal bounds, finite-stratum transport, design-based interference, and
16+
inverse-probability and doubly robust policy evaluation.
17+
- PyTorch implementations of TimeGAN, deep hedging, and finite-grid neural SDEs.
18+
- Analytical examples, independent numerical checks, boundary validation, and
19+
regression tests for the new methods.
20+
21+
### Fixed
22+
23+
- Sample-concurrency counting for events that begin before the selected window.
24+
25+
### Scope and dependencies
26+
27+
- The neural-SDE implementation uses an explicitly corrected fixed-coordinate
28+
diffusion operator rather than the literal published nearest-frame
29+
construction. Its guarantees are bounded to the implemented finite grid;
30+
general dynamic no-arbitrage and empirical market performance are not claimed.
31+
- Required dependencies and supported Python versions are unchanged. PyTorch
32+
is available through the existing `pde` extra. Selected new methods require
33+
separately installed CVXPY, River, or PySensemakr; these remain optional.
34+
- The additions are Python implementations. Corresponding Julia additions and
35+
book notebooks are deferred.
36+
37+
## [3.1.0] - Historical preparation notes
738

839
### Added
940

‎INSTALLATION.md‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Supported environments
44

5-
RiskLabAI 3.1.0 supports:
5+
RiskLabAI 3.2.0 supports:
66

77
- CPython 3.12, 3.13, and 3.14
88
- NumPy `>=2.2,<3`
@@ -73,7 +73,7 @@ The groups provide:
7373
| Extra | Capability |
7474
|---|---|
7575
| `speed` | Numba acceleration |
76-
| `pde` | Deep-BSDE PDE solver using PyTorch |
76+
| `pde` | PyTorch support for Deep-BSDE, neural SDEs, TimeGAN, and deep hedging |
7777
| `synth` | synthetic-control utilities using QuantEcon |
7878
| `hpo` | hyperparameter tuning using Optuna |
7979
| `plot` | Matplotlib, Seaborn, and Plotly helpers |
@@ -100,6 +100,18 @@ Notes:
100100
- PyWavelets is part of the base installation because its absence changes
101101
analytical behavior rather than only disabling acceleration.
102102

103+
## Additional method dependencies
104+
105+
Selected methods added in 3.2.0 use CVXPY (constrained or robust optimization),
106+
River (ADWIN drift adaptation), or PySensemakr (sensitivity analysis).
107+
These packages are installed separately when needed; they are not base
108+
dependencies or named extras. Local Python 3.13 validation used CVXPY 1.9.3,
109+
River 0.26.1, and PySensemakr 0.0.8. This does not establish compatibility with
110+
every version of those packages or every supported interpreter.
111+
112+
The 3.2.0 version is a release candidate until published. An unpinned PyPI
113+
installation retrieves the latest published version.
114+
103115
## Development installation
104116

105117
Clone the repository, switch to a supported Python version, and run the

0 commit comments

Comments
 (0)