You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
uv run jupyter lab --no-browser --NotebookApp.token=''
108
112
```
109
113
110
-
**Note:** If you use a different container image than the suggested one above, during uv sync, please use the `--extra cuda12` or `--extra cuda13`flag to install the GPU packages (cuOpt, cuML) matching your container's CUDA version. The `uv sync` command automatically creates a virtual environment and installs all dependencies from `uv.lock`.
114
+
**Note:** If you use a different container image than the suggested one above, during uv sync, use `--extra cuda12`for the full cuOpt/cuML 26.06 CUDA 12 stack or `--extra cuda13`for the current full CUDA 13 cuOpt/cuML stack. As of the cuOpt 26.06 release, `cuml-cu13` 26.06 is not published, so CUDA 13 SOCP testing with cuOpt 26.06 uses `--extra cuda13-socp`; that extra is cuOpt-only and is intended for direct SOCP preview/Mean-Variance variance-cap solves, not GPU KDE/CVaR rebalancing. The `uv sync` command automatically creates a virtual environment and installs all dependencies from `uv.lock`.
111
115
112
116
**Tip:** To check your CUDA version, run `nvidia-smi` and look for "CUDA Version" in the output.
113
117
114
118
**Important Notes:**
115
119
- If you encounter "No space left on device" errors, set `UV_CACHE_DIR` to an alternate cache location: `export UV_CACHE_DIR=/path/to/cache/directory`
116
-
- The `cuda12`and `cuda13` extras are mutually exclusive - install only one based on your system's CUDA version
120
+
- The `cuda12`, `cuda13`, and `cuda13-socp` extras are mutually exclusive - install only one based on your system's CUDA version and workflow
117
121
- If you plan to run the Streamlit demo from this container, include `-p 8501:8501` when starting Docker. Docker port mappings cannot be added to an already-running container; restart the container with the port published if it was omitted.
Copy file name to clipboardExpand all lines: demo/README_streamlit.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,7 @@ Open `http://localhost:8501` for local runs. On a remote GPU instance, forward o
45
45
- Python 3.11+
46
46
- Streamlit, Plotly, and Squarify from `demo/requirements.txt`
47
47
- CVXPY and cuFOLIO core dependencies from `pyproject.toml`
48
-
- Optional: NVIDIA GPU + CUDA with the matching `cuda12`or `cuda13` extra for cuOpt acceleration
48
+
- Optional: NVIDIA GPU + CUDA with `cuda12` for the full cuOpt/cuML 26.06 stack, `cuda13` for the current full CUDA 13 stack, or `cuda13-socp`for CUDA 13 SOCP-only cuOpt 26.06 preview
49
49
50
50
## Troubleshooting
51
51
@@ -57,4 +57,4 @@ Open `http://localhost:8501` for local runs. On a remote GPU instance, forward o
57
57
uv run python -c 'from cufolio.utils import download_data; download_data("data/stock_data", datasets=["sp500"])'
58
58
```
59
59
60
-
**GPU Solver Unavailable**: The UI can still boot without a GPU, but the full GTC comparison and SOCP preview need cuOpt. Install the matching CUDA extra and run on an NVIDIA GPU instance.
60
+
**GPU Solver Unavailable**: The UI can still boot without a GPU, but the full GTC comparison and SOCP preview need cuOpt. Use `--extra cuda12` for full cuOpt/cuML 26.06 validation, `--extra cuda13` for the current full CUDA 13 stack, or `--extra cuda13-socp` for CUDA 13 SOCP-only preview with cuOpt 26.06.
Copy file name to clipboardExpand all lines: skills/cufolio/SKILL.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,8 +44,8 @@ Do not use it for generic finance summaries, price forecasting, neural-network t
44
44
## Prerequisites
45
45
46
46
- Python environment with the installed `cufolio` package.
47
-
- NVIDIA GPU runtime with cuOpt and cuML installed. Mean-Variance SOCP workflows require a cuOpt build with QCQP/SOCP support, such as the 26.08 line or newer.
48
-
- CUDA extra matching the host, such as`uv sync --extra cuda12` or `uv sync --extra cuda13`.
47
+
- NVIDIA GPU runtime with cuOpt and cuML installed. Mean-Variance SOCP workflows require a cuOpt build with QCQP/SOCP support, such as the 26.06 line or newer.
48
+
- CUDA extra matching the host and workflow:`uv sync --extra cuda12`for full cuOpt/cuML 26.06 on CUDA 12, `uv sync --extra cuda13` for the current full CUDA 13 stack, or `uv sync --extra cuda13-socp` for CUDA 13 SOCP-only validation with cuOpt 26.06.
49
49
-`cvxpy` exposing `cp.CUOPT`.
50
50
- Network access on first run if the default price CSV must be downloaded.
51
51
@@ -243,7 +243,8 @@ Use the package APIs instead of reimplementing portfolio math or simulation loop
243
243
## Limitations
244
244
245
245
- Requires an NVIDIA GPU with cuOpt and cuML; CPU solvers are intentionally disallowed.
246
-
- Mean-Variance SOCP variance caps require cuOpt QCQP/SOCP support. Use the 26.08 line or newer when installing CUDA extras.
246
+
- Mean-Variance SOCP variance caps require cuOpt QCQP/SOCP support. Use the 26.06 line or newer when installing CUDA extras.
247
+
-`cuda13-socp` intentionally installs cuOpt without cuML because `cuml-cu13` 26.06 is not published yet; use it for direct SOCP/QCQP validation, not GPU KDE CVaR workflows.
247
248
- Cardinality plus SOCP is treated as unsupported unless cuFOLIO exposes explicit mixed-integer conic support.
248
249
- CPU-only eval containers can still validate routing, data handling, and reporting behavior, but they cannot produce a valid cuOpt solve. In that case, report the missing GPU/cuOpt runtime explicitly.
249
250
- Default price data is a historical snapshot and may omit current constituents.
@@ -253,8 +254,8 @@ Use the package APIs instead of reimplementing portfolio math or simulation loop
253
254
254
255
- Missing default CSV or `FileNotFoundError`: explain that cuFOLIO will fetch public market data with `download_data("data/stock_data", datasets=["sp500"])`; run it only after user confirmation.
255
256
-`SolverError` or missing `cp.CUOPT`: install the CUDA extra matching the host and verify with `python -c "import cvxpy as cp; print(hasattr(cp, 'CUOPT'), cp.installed_solvers())"`.
256
-
-`ImportError` for `cuml` or GPU KDE failures: confirm cuML is present with `python -c "import cuml"` and keep `KDESettings(device="GPU")`.
257
-
- SOCP setup fails before solving: verify the installed `cuopt` package is on the 26.08 line or newer and that `MeanVarianceParameters.var_limit` is positive.
257
+
-`ImportError` for `cuml` or GPU KDE failures: confirm cuML is present with `python -c "import cuml"` and keep `KDESettings(device="GPU")`. If using `cuda13-socp`, this is expected for CVaR/KDE; switch to `cuda12` or `cuda13` for cuML workflows.
258
+
- SOCP setup fails before solving: verify the installed `cuopt` package is on the 26.06 line or newer and that `MeanVarianceParameters.var_limit` is positive.
258
259
- Ordinary optimization returns all cash: set `c_max=0.0` in `CvarParameters`.
259
260
- Solver reports infeasible or no solution: check for contradictory bounds, too few tickers for the requested caps/cardinality, or a date filter that leaves too little data; report the smallest constraint change that would make the request feasible.
260
261
- Requested tickers are absent from the default CSV: report them and proceed with the remaining requested tickers.
0 commit comments