Portfolio Optimization
GPU-Accelerated portfolio optimization using cuOpt and cuML
Verify your environment
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-smiwill output information about your GPU. If it doesn't, your GPU is not properly configured.git --versionwill print something likegit version 2.43.0. If you get an error saying that git is not installed, please reinstall it.docker --versionwill print something likeDocker version 28.3.3, build 980b856. If you get an error saying that Docker is not installed, please reinstall it.
Installation
Open up Terminal, then copy and paste in the below commands:
git clone https://github.com/NVIDIA/dgx-spark-playbooks/nvidia/portfolio-optimization
cd dgx-spark-playbooks/nvidia/portfolio-optimization/assets
bash ./setup/start_playbook.sh
start_playbook.sh will:
- pull the RAPIDS 25.10 Notebooks Docker container
- build all the environments needed for the playbook in the container using
setup_playbook.sh - start Jupyterlab
Please keep the Terminal window open while using the playbook.
You can access your Jupyterlab server in three ways
- at
http://127.0.0.1:8888if running locally on the DGX Spark. - at
http://<SPARK_IP>:8888if using your DGX Spark headless over your network. - by creating an SSH tunnel using
ssh -L 8888:localhost:8888 username@spark-IPin Terminal and the going tohttp://127.0.0.1:8888in your browser on your host machine
Once in Jupyterlab, you'll be greeted with a directory containing cvar_basic.ipynb, and the folders cudf, cuml and cugraph.
cvar_basic.ipynbis the playbook notebook. You will want to open this by double clicking on the file.cudf,cuml,cugraphfolders contain the standard RAPIDS library example notebooks to help you continue exploring.playbookcontains 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
Run 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.
Download your work
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.
Cleanup
Once you have downloaded all your work, Go back to the Terminal window where you started running the playbook.
In the Terminal window:
- Type
Ctrl + C - Quickly either enter
yand then hitEnterat the prompt or hitCtrl + Cagain - The Docker container will proceed to shut down
WARNING
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.
Next Steps
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 AnalysisThis notebook demonstrates how to:
- Generate the efficient frontier by solving multiple optimization problems
- Visualize the risk-return tradeoff across different portfolio configurations
- Compare portfolios along the efficient frontier
- Leverage GPU acceleration to quickly compute multiple optimal portfolios
-
rebalancing_strategies.ipynb- Dynamic Portfolio RebalancingThis notebook introduces dynamic portfolio management techniques:
- Time-series backtesting framework
- Testing various rebalancing strategies (periodic, threshold-based, etc.)
- Evaluating the impact of transaction costs on portfolio performance
- Analyzing strategy performance over different market conditions
- Comparing multiple rebalancing approaches
-
If you'd further learn how to formulate portfolio optimization problems using similar risk–return frameworks, check out the DLI course: Accelerating Portfolio Optimization
Further Support
For questions or issues, please visit: