GPU-Accelerated portfolio optimization using cuOpt and cuML
Let's first verify that you have a working GPU, git, and Docker. Open up Terminal, then copy and paste in the below commands:
nvidia-smi
git --version
docker --version
nvidia-smi will output information about your GPU. If it doesn't, your GPU is not properly configured.git --version will print something like git version 2.43.0. If you get an error saying that git is not installed, please reinstall it.docker --version will print something like Docker version 28.3.3, build 980b856. If you get an error saying that Docker is not installed, please reinstall it.Open up Terminal, then copy and paste in the below commands:
git clone https://github.com/NVIDIA/dgx-spark-playbooks
cd dgx-spark-playbooks/nvidia/portfolio-optimization/assets
bash ./setup/start_playbook.sh
start_playbook.sh will:
setup_playbook.shPlease keep the Terminal window open while using the playbook.
You can access your Jupyterlab server in three ways
http://127.0.0.1:8888 if running locally on the DGX Spark.http://<SPARK_IP>:8888 if using your DGX Spark headless over your network.ssh -L 8888:localhost:8888 username@spark-IP in Terminal and the going to http://127.0.0.1:8888 in your browser on your host machineOnce in Jupyterlab, you'll be greeted with a directory containing cvar_basic.ipynb, and the folders cudf, cuml and cugraph.
cvar_basic.ipynb is the playbook notebook. You will want to open this by double clicking on the file.cudf, cuml, cugraph folders contain the standard RAPIDS library example notebooks to help you continue exploring.playbook contains the playbook files. The contents of this folder are read-only inside of a rootless Docker Container.If you want to install any of the playbook notebooks on your own system, check out the readmes within the folder that accompanies the notebook
Once in jupyterlab, you have to do is run the cvar_basic.ipynb.
Before your start running the cells in the notebook, please change the kernel to "Portfolio Optimization" as per the instructions in the notebook. Failure to do so will cause errors by the second code cell. If you started already, you will have to set it to the correct kernel, then restart the kernel, and try again.
You can use Shift + Enter to manually run each cell at your own pace, or Run > Run All to run all the cells.
Once you're done with exploring the cvar_basic notebook, you can explore other RAPIDS notebooks by going into the folders, selecting other notebooks, and doing the same thing.
Since the docker container is not priviledged and cannot write back to the host system, you can use Jupyterlab to download any files you may want to keep once the docker container is shut down.
Simply right click the file you want, in the browser, and click Download in the drop down.
Once you have downloaded all your work, Go back to the Terminal window where you started running the playbook.
In the Terminal window:
Ctrl + Cy and then hit Enter at the prompt or hit Ctrl + C againWARNING
This will delete ALL data that wasn't already downloaded from the Docker container. The browser window may still show cached files if it is still open.
Once you're comfortable with this foundational workflow, please explore these advanced portfolio optimization topics in any order at the NVIDIA AI Blueprints:
efficient_frontier.ipynb - Efficient Frontier Analysis
This notebook demonstrates how to:
rebalancing_strategies.ipynb - Dynamic Portfolio Rebalancing
This notebook introduces dynamic portfolio management techniques:
If you'd further learn how to formulate portfolio optimization problems using similar risk–return frameworks, check out the DLI course: Accelerating Portfolio Optimization
For questions or issues, please visit: