|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project are documented here, one PR per entry, |
| 4 | +newest first, dated by merge to `main`. Backfilled from git history. |
| 5 | + |
| 6 | +## 2026-04-22 — PR #TBD |
| 7 | + |
| 8 | +Add `CHANGELOG.md`, backfilled from `git log --merges --first-parent origin/main`. |
| 9 | +One entry per merged PR, newest first, `## YYYY-MM-DD — PR #N` headers. |
| 10 | +No source/config changes. |
| 11 | + |
| 12 | +## 2026-04-21 — PR #34 |
| 13 | + |
| 14 | +**Breaking — minimum Python bumped from `>=3.10` to `>=3.11`.** Required by |
| 15 | +`cuml-cu13==26.4`. Also updates `target-version` in the black config and |
| 16 | +`CONTRIBUTING.md`. |
| 17 | + |
| 18 | +## 2026-04-20 — PR #33 |
| 19 | + |
| 20 | +Switch `cvar_basic.ipynb` to render the architecture diagram via PNG to |
| 21 | +avoid SVG rendering issues in `nbconvert` output. |
| 22 | + |
| 23 | +## 2026-04-20 — PR #32 |
| 24 | + |
| 25 | +Large bundled change: |
| 26 | + |
| 27 | +- **Added** — Mean-Variance (Markowitz) optimizer with CVXPY and cuOpt |
| 28 | + backends; `notebooks/mean_variance_basic.ipynb`. |
| 29 | +- **Added** — `BaseOptimizer` / `BaseParameters` classes and Pydantic |
| 30 | + settings models (`ReturnsComputeSettings`, `ScenarioGenerationSettings`, |
| 31 | + `KDESettings`, `ApiSettings`) under `cufolio.settings`. |
| 32 | +- **Added** — SP100, DOW30, and Global Titans dataset download support in |
| 33 | + `utils.download_data`. |
| 34 | +- **Added** — `compute_absolute_returns` (simple-diff semantics) as a |
| 35 | + distinct function. |
| 36 | +- **Breaking — API rename** — `compute_abs_returns` → `compute_linear_returns` |
| 37 | + (pct-change). Previous `diff` semantics now live in `compute_absolute_returns`. |
| 38 | +- **Breaking — settings API** — `calculate_returns`, `generate_cvar_data`, |
| 39 | + and optimizer constructors now take Pydantic settings models instead of |
| 40 | + plain dicts. |
| 41 | +- **Breaking — dependency pins** — `cuml-cu{12,13}` and `cuopt-cu{12,13}` |
| 42 | + bumped from `25.12.*` to `26.4.*` / `26.04.*`; `pydantic>=2.12.5` added. |
| 43 | +- **Changed** — `optimize_market_regimes()` unified to support both CVaR |
| 44 | + and mean-variance. |
| 45 | +- **Fixed** — cuML KDE sampler returns numpy arrays via `using_output_type`. |
| 46 | +- **Fixed** — `quad_form` numerical issues resolved via `psd_wrap` on the |
| 47 | + covariance matrix. |
| 48 | +- Notebooks rewritten against the new API; outputs regenerated. |
| 49 | + |
| 50 | +## 2025-12-17 — PR from fork (phuo-nv) |
| 51 | + |
| 52 | +- **Changed** — cuOpt model construction switched to `LinearExpression` to |
| 53 | + avoid recursion depth errors on large problems. |
| 54 | +- **Changed** — refactored returns-calculation methods; made exception |
| 55 | + handling explicit. |
| 56 | +- **Added** — KDE timing instrumentation in the CVaR pipeline. |
| 57 | +- **Fixed** — lazy imports in `cvar_optimizer` to avoid eager GPU-module |
| 58 | + load at import time. |
| 59 | + |
| 60 | +## 2025-12-02 — PR #28 |
| 61 | + |
| 62 | +Small touch-up of `notebooks/launchable.ipynb` (1 file, +161/-30). |
| 63 | + |
| 64 | +## 2025-12-02 — PR #27 |
| 65 | + |
| 66 | +Minor launchable-notebook fix (4 files, +33/-10). |
| 67 | + |
| 68 | +## 2025-12-02 — PR #26 |
| 69 | + |
| 70 | +Major launchable-notebook iteration: GPU checks, setup steps, regenerated |
| 71 | +outputs (7 files, +3095/-173). |
| 72 | + |
| 73 | +## 2025-12-01 — PR #25 |
| 74 | + |
| 75 | +Rename / replace the architecture diagram asset (`docs/arch_diagram.png`). |
| 76 | + |
| 77 | +## 2025-12-01 — PR #24 |
| 78 | + |
| 79 | +Refresh notebook outputs to match latest src behavior (4 files, +213/-171). |
| 80 | + |
| 81 | +## 2025-11-26 — PR #23 |
| 82 | + |
| 83 | +Final pass on the stock-data directory setup (4 files, +1596/-1813) — |
| 84 | +regenerated dataset artifacts and README polish. |
| 85 | + |
| 86 | +## 2025-11-25 — PR #22 |
| 87 | + |
| 88 | +Add a bundled dataset file (1 file, +432/-12). |
| 89 | + |
| 90 | +## 2025-11-25 — PR #21 |
| 91 | + |
| 92 | +Polish on the stock-data directory layout (3 files, +15/-2). |
| 93 | + |
| 94 | +## 2025-11-25 — PR #20 |
| 95 | + |
| 96 | +Initial `data/stock_data/` scaffolding (5 files, +51/-68). |
| 97 | + |
| 98 | +## 2025-11-25 — PR #19 |
| 99 | + |
| 100 | +Small source touch-up (1 file, +7/-6). |
| 101 | + |
| 102 | +## 2025-11-25 — PR #18 |
| 103 | + |
| 104 | +Launchable-notebook refinements (7 files, +1187/-1326). |
| 105 | + |
| 106 | +## 2025-11-24 — PR #17 |
| 107 | + |
| 108 | +Add Brev-deployable `notebooks/launchable.ipynb` (9 files, +4855/-747). |
| 109 | + |
| 110 | +## 2025-11-24 — PR #16 |
| 111 | + |
| 112 | +Finalize `uv.lock` migration and sequence diagram (5 files, +1377/-1091). |
| 113 | + |
| 114 | +## 2025-11-23 — PR #15 |
| 115 | + |
| 116 | +Refine `uv.lock` sequence diagram docs (6 files, +67/-49). |
| 117 | + |
| 118 | +## 2025-11-21 — PR #14 |
| 119 | + |
| 120 | +Commit `uv.lock` and migrate project to `uv` as the dependency manager; |
| 121 | +add a sequence diagram documenting the dependency-management flow |
| 122 | +(5 files, +2928/-6). |
| 123 | + |
| 124 | +## 2025-11-21 — PR #13 |
| 125 | + |
| 126 | +Add `release-2512.yml` workflow, `docs/arch_diagram.png`, large notebook |
| 127 | +regeneration, and `src/` cleanup (11 files, +1505/-2082). |
| 128 | + |
| 129 | +## 2025-11-20 — PR #12 |
| 130 | + |
| 131 | +Small notebook fixes in `cvar_basic` and `rebalancing_strategies` |
| 132 | +(2 files, +4/-4). |
| 133 | + |
| 134 | +## 2025-11-19 — PR #11 |
| 135 | + |
| 136 | +Notebook regeneration and src cleanup in backtest / rebalance / utils |
| 137 | +(5 files, +703/-912). |
| 138 | + |
| 139 | +## 2025-11-19 — PR #10 |
| 140 | + |
| 141 | +Notebook and src refinements across cvar_basic, backtest, cvar_utils, |
| 142 | +portfolio, rebalance, utils (7 files, +304/-141). |
| 143 | + |
| 144 | +## 2025-11-17 — PR #9 |
| 145 | + |
| 146 | +README additions (+36 lines). |
| 147 | + |
| 148 | +## 2025-11-13 — PR #8 |
| 149 | + |
| 150 | +`src/readme.md` fix (1 file, +2/-2). |
| 151 | + |
| 152 | +## 2025-11-12 — PR #7 |
| 153 | + |
| 154 | +Remove `deploy/1_Deploy_Template.ipynb`; major `cvar_basic.ipynb` update; |
| 155 | +add `notebooks/readme.md`; minor `src/cvar_utils.py` and `src/utils.py` |
| 156 | +tweaks (7 files, +1358/-1235). |
| 157 | + |
| 158 | +## 2025-11-12 — PR #6 |
| 159 | + |
| 160 | +README polish (1 file, +18/-12). |
| 161 | + |
| 162 | +## 2025-11-12 — PR #5 |
| 163 | + |
| 164 | +Remove legacy scaffolding: `Maintainers/`, old `CHANGELOG.md`, |
| 165 | +`README_ARCHIVED.md`, empty `customize/` and `evaluate/` readmes; README |
| 166 | +polish (10 files, +74/-409). |
| 167 | + |
| 168 | +## 2025-11-07 — PR #4 |
| 169 | + |
| 170 | +`LICENSE-3rd-party.txt` edits, remove a `pyproject.toml` entry |
| 171 | +(2 files, +5/-7). |
| 172 | + |
| 173 | +## 2025-11-06 — PR #3 |
| 174 | + |
| 175 | +Add `LICENSE-3rd-party.txt`; README touch-up (2 files, +119/-2). |
| 176 | + |
| 177 | +## 2025-11-06 — PR #2 |
| 178 | + |
| 179 | +README polish (1 file, +2). |
| 180 | + |
| 181 | +## 2025-11-06 — PR #1 |
| 182 | + |
| 183 | +**Initial code drop.** Core `cufolio` package: CVaR optimizer |
| 184 | +(`cufolio.cvar_optimizer.CVaR`), portfolio backtester |
| 185 | +(`cufolio.backtest.portfolio_backtester`), utils, scenario generation |
| 186 | +(KDE / Gaussian / historical). Example notebooks: `cvar_basic.ipynb`, |
| 187 | +`efficient_frontier.ipynb`, `rebalancing_strategies.ipynb`. `pyproject.toml` |
| 188 | +with `cuda12` / `cuda13` extras pinning `cuml-cu{12,13}` and |
| 189 | +`cuopt-cu{12,13}`. `README.md`, `CONTRIBUTING.md`, `CODEOWNERS`, |
| 190 | +NVIDIA-AI-Blueprints branding and issue templates (22 files, +10885/-25). |
0 commit comments