- {
- “cells”: [
- {
“cell_type”: “markdown”, “metadata”: {}, “source”: [
“# Budget Risk Parityn”, “n”, “This notebook demonstrates custom risk budgets vs. equal risk contribution (ERC).n”, “The risk_budgets parameter on relaxed_risk_parity_portfolio allows specifyingn”, “per-asset risk contribution targets that sum to 1.”
]
}, {
“cell_type”: “code”, “execution_count”: 1, “metadata”: {
- “execution”: {
“iopub.execute_input”: “2026-03-30T19:38:14.304988Z”, “iopub.status.busy”: “2026-03-30T19:38:14.304713Z”, “iopub.status.idle”: “2026-03-30T19:38:14.904379Z”, “shell.execute_reply”: “2026-03-30T19:38:14.904116Z”
}
}, “outputs”: [], “source”: [
“import numpy as npn”, “import pandas as pdn”, “from pyvallocation import PortfolioWrappern”, “n”, “assets = ["Tech", "Health", "Value", "Bonds"]n”, “mu = pd.Series([0.08, 0.06, 0.05, 0.03], index=assets)n”, “cov = pd.DataFrame(n”, “ [[0.090, 0.040, 0.025, 0.010],n”, “ [0.040, 0.070, 0.020, 0.015],n”, “ [0.025, 0.020, 0.060, 0.018],n”, “ [0.010, 0.015, 0.018, 0.045]],n”, “ index=assets, columns=assets,n”, “)n”, “wrapper = PortfolioWrapper.from_moments(mu, cov)”
]
}, {
“cell_type”: “code”, “execution_count”: 2, “metadata”: {
- “execution”: {
“iopub.execute_input”: “2026-03-30T19:38:14.905628Z”, “iopub.status.busy”: “2026-03-30T19:38:14.905527Z”, “iopub.status.idle”: “2026-03-30T19:38:14.943696Z”, “shell.execute_reply”: “2026-03-30T19:38:14.943479Z”
}
}, “outputs”: [
- {
“name”: “stdout”, “output_type”: “stream”, “text”: [
“ERC weights:n”, “Tech 0.2065n”, “Health 0.2261n”, “Value 0.2513n”, “Bonds 0.3162n”, “Name: Relaxed Risk Parity, dtype: float64n”, “n”, “Risk contributions (%): [25. 25. 25. 25.]n”
]
}
], “source”: [
“# Equal Risk Contribution (default)n”, “w_erc, _, _, diag_erc = wrapper.relaxed_risk_parity_portfolio_with_diagnostics(n”, “ lambda_reg=0.0, target_multiplier=Nonen”, “)n”, “print("ERC weights:")n”, “print(w_erc.round(4))n”, “print("\nRisk contributions (%):", diag_erc["risk_contributions_pct"].round(1))”
]
}, {
“cell_type”: “code”, “execution_count”: 3, “metadata”: {
- “execution”: {
“iopub.execute_input”: “2026-03-30T19:38:14.958104Z”, “iopub.status.busy”: “2026-03-30T19:38:14.957972Z”, “iopub.status.idle”: “2026-03-30T19:38:14.992407Z”, “shell.execute_reply”: “2026-03-30T19:38:14.992175Z”
}
}, “outputs”: [
- {
“name”: “stdout”, “output_type”: “stream”, “text”: [
“Budget RP weights:n”, “Tech 0.3725n”, “Health 0.2013n”, “Value 0.2376n”, “Bonds 0.1887n”, “Name: Relaxed Risk Parity, dtype: float64n”, “n”, “Risk contributions (%): [50. 20. 20. 10.]n”
]
}
], “source”: [
“# Custom budgets: 50% risk from Tech, 20% Health, 20% Value, 10% Bondsn”, “budgets = np.array([0.50, 0.20, 0.20, 0.10])n”, “w_rb, _, _, diag_rb = wrapper.relaxed_risk_parity_portfolio_with_diagnostics(n”, “ lambda_reg=0.0, target_multiplier=None, risk_budgets=budgetsn”, “)n”, “print("Budget RP weights:")n”, “print(w_rb.round(4))n”, “print("\nRisk contributions (%):", diag_rb["risk_contributions_pct"].round(1))”
]
}, {
“cell_type”: “code”, “execution_count”: 4, “metadata”: {
- “execution”: {
“iopub.execute_input”: “2026-03-30T19:38:14.993490Z”, “iopub.status.busy”: “2026-03-30T19:38:14.993433Z”, “iopub.status.idle”: “2026-03-30T19:38:15.243562Z”, “shell.execute_reply”: “2026-03-30T19:38:15.243345Z”
}
}, “outputs”: [
- {
- “data”: {
“image/png”: “iVBORw0KGgoAAAANSUhEUgAAA94AAAGGCAYAAACNL1mYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAASuxJREFUeJzt3QecVNX5//Fn6QjsIqg0aSoCFlCxgBURRSyBQCyIEZHYgiigfw2xIFhAE8GKFcGOscWgETVosKEo2LCAoAkYBFQCCyhFmP/re/K7w527s7uzy969c3c+79drlJ2ZnTl778x5znPuKXmJRCJhAAAAAAAgFNXCeVkAAAAAACAk3gAAAAAAhIjEGwAAAACAEJF4AwAAAAAQIhJvAAAAAABCROINAAAAAECISLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3kAFatOmjZ199tll+h09v379+pZL8vLy7Nprr03+rH/rvh9++CFrz1NlO+GEE+zcc8+tsNc7/fTT7dRTT62w1wOwjeoT1Su57ve//70de+yxURcDJdi8ebO1bNnSJk2aFMrre/G8LP75z3+633n66actV+uMf/3rX+4Y/PnPf66U9y/Peapsf/nLX6xRo0a2bt26Cnm9GTNmuPb2999/b1Eh8UZWmDp1qqsAiru9++67yecGH8vPz7ejjjrKXnzxxbSvvWLFCrvsssusQ4cOtsMOO1i9evWsS5cudv3119vq1aszqpi8W82aNV1FefHFF5f6u5Xpo48+sjPPPNMF09q1a7uKqmfPnjZlyhTbsmVLaO/7zjvvuGOUTcciDmUrzdtvv22vvPKKXXHFFcn79HcMHDjQdtxxR9ttt91s8uTJRX7vgw8+cJ/xb775pshjeq1nnnnGPv7449DLD2RjTNlll13s6KOPtpdeesni6PPPP3d1mhromShr/NJjweN1xBFH2HPPPZfR+6neeeCBB+yPf/xjyv3FxfXx48cXeY3//Oc/roOwYcOGLrb36dPHvv7662Lfs3///q6TUmbOnGnnnHOO7bnnnq4eVD35u9/9zr777rtiY8Thhx/untu0aVN3XIpr4G/dutV23nlnu/nmm92/9fn61a9+5WKu2hT77LOPa1Ns2LAh7e+rvu7YsaPVqVPH2rVrZ3fccUexf9Onn37qjs+cOXPcz08++aSL7/o93d+9e/dif3fjxo2urm/evLnVrVvXDjnkEHv11VdTnqPPwciRI+2GG24otrx+XkLo3apVq+baGL1797bZs2dbtigsLLQxY8ZY586dXXKlv1/nRcdj2bJlob3vTz/95L5r6jzINtlcttKo7Tp69GgbNmxYysWpe++919q2bes+g7/97W/deffT93P//fe3G2+8schrHn/88bbHHnvYuHHjLDIJIAtMmTIloY/j2LFjE4888kiR2/fff598rp537LHHuvsffvjhxHXXXZdo3rx5Ii8vLzFjxoyU150zZ05ip512StSpUyfxu9/9LnH33Xe725AhQxL16tVzr1OS0aNHu/fT7+j97rnnnsQpp5zi7jvssMOKPH/Dhg2JTZs2lelvHzRokCtLed1///2J6tWru2NwxRVXJB544IHExIkTEyeddJI7JjfccEMiLH/605/csfjmm2/K9Hs///xzYvPmzUWOs/88h1m28pynytSnT5/Ecccdl3KfPrM6x7fddlti2LBh7ty+/fbbyce3bt2a6NatW2LUqFHFvu7BBx+c+O1vfxtq2YFsjCmKFaoT9t57b3f/9OnTK/T9VI+3bt06EaannnrKlf3111/P6PlljV8q/3777ZeMuzfddFNit912S75GaS655JLEnnvuWeR+f8z23+bPn5/yvLVr1ybatWuX2GWXXdx7T5gwIdGyZcvErrvumvjhhx+KvK7q8AYNGiTuvPNO93OXLl0Sbdu2TVx++eUuLqou1ONNmjRJfPfddym/++GHH7p2wf777+/+tiuvvDJRu3btxPHHH5/2b5s9e7b7O1RmlVP/7tq1a+L6669P3HfffYnBgwcnqlWrlujevburi/103PX8/v37u+eqDtbP48ePT/te48aNc8fAe52jjjoqUb9+/cTRRx+d2HHHHd3PxTn99NMTNWrUSFx22WWJe++918UE/fzmm2+mPO+///1volatWonJkycnSqMYqvIOGDDAnbepU6cm/vjHPyYaNmzojtknn3yS8nzFdsX4stBnWu+hz3h5LF682J17tYV0DPSZ0LG+6KKLEo0bN3afq7Co3aKy6/tWFvr8qi0SPM6qpyqjbOU5T5Xpueeec+2cb7/9NnmfPse6T3WN2kJNmzZNnHfeeUW+b/os+I+t36RJkxI77LBDorCwMBEFEm9kVSPp/fffL/W5et7QoUNT7vv888/d/b17904JLC1atHBB94svvijyOsuXL3dJe0mKSwhPO+00d/97772X2F7bk3irMaBAc/jhh6etRHQ8dWyzIfHesmVLsZV8ZSfe2WzFihWuoaQOFD99jh966KHkz2p8/eEPf0j+rAaREnM1Covz5z//2X3WSnoOUJVjyqpVqxI1a9ZMnHHGGTmTeGcav1T+E088MeU+JayqM9Il1MEkQp3cV111VUYxOx0l23quOsw9it2Kcek6FGfOnJlSx8+aNcvFGT/dp+cosfZTW6FZs2aJNWvWJO9Tsq7nvvzyy0Xe6+qrr06e340bN6Z0enrGjBnjfv/VV19N3vfTTz+5xC94XAcOHOiOqz6PQUcccYT7PHmWLFmS/LvUcVRc4q3zGUzcFHN33313l4AHqXNe71Wa4hLCl156yd1/4YUXJrbX9iTeSiA7d+7skqlgB4PoHKujIFsS73Xr1qW9v7IT72z3q1/9yrVt/XRxSR1Q/npeybe/3a966JlnnimxjaU6JZNOpzAw1BxVgoZw7bTTTrZ48eKU4SgatjZhwgQ3zDyoSZMmdtVVV5Xr/TT8Tvzvl27usOZSaeiThohpiFnjxo3d0Lbg0K90Q8c1rE1Dykqa26LX1tCvxx57zBo0aFDk8QMPPDClPOvXr7dLL700OSS9ffv2bj7R/9pG2+g1L7roIvvrX//qhmrpuXvvvbebH+PR8KX/9//+n/u3hv14w9C8YZDea6hs+l29hvf7wTneHs3x1jBDDTHUsbrkkktShsJ5Q940zC/I/5qllS3dHG8NZzzllFPc8CUNPezatWuR6QvePDTNO9IwvV133dWd12OOOcYWLVqU8tyvvvrKDYPUEEY9R8/VPOs1a9ZYSfSev/zyi5sq4Pfzzz+7YeYelVPDyLzz+oc//MENnyppvQDNvdRzS/v8AVWVhjBrCGqNGjWKfK+DwzGLq2+8elHfa/2/uKHYP/74oxsKqfpM7zto0CA31SPda3755Zf2m9/8xn2v9bqqu//2t78lH9fzVT+Jhst7dVp5hpAWF7/SUf2l+Jpu+orfW2+95ervYL0VrMNKGtqs+b0HHXSQu3kUu1W/qs5NV1futddeyXmyRx55pBsG7af7dEy/+OKL5H0amqo6UMO3dW48Z511lqs/i3uvE0880f27Vq1aduihhxZ5zq9//Wv3f/97vf766+5zoLnvfkOHDnV1cTDGaAqAhsB77yWK18G/q7jjV716dTvvvPOS9+mzNGTIEDckfOnSpUXigc7bqlWrrDyK+xylmzus4622j74HOsZqewSnJKQbNn/SSSdZQUGBOybF8aZQXXnlle49gnSOFa/9nnrqKTflUHWB2o76LKi9mG79Hd3ft29f92+1yzR10ZvCpzpC9/nbY/62iPcaOkaaEqF2mqaMlbYuxMSJE61169aufJpKOX/+/JTH1TZMN+XA/5qllS3deVLb47rrrrPdd9/dtdn0WjpPOhd+ul/nRp+fgw8+2H3ONLXj4YcfTnleedvAGzZscO3FsrSDvL9p3333tX79+hX72ppC06lTJ3v++ectCtsiD5AFlJQEF9hSxaAva2m/99///tdVFh41WlRpqTFT0bwEzl8BpKNKQMmQ5pmpclLA1zzcefPmFbsAzfvvv2+9evVyDS9VDPob0lFlozltali0atWq1DIrudacNDUEFIj3228/e/nll12CqsCiit5PFeqzzz7rGgwKFrfffrtLJJcsWeLOhyq2hQsX2hNPPOF+V8FLvIpeXnvtNdeIUQKux0tbfEhJt56jY6Z5/XpPnddgZV6aTMoWXAdADSkdU83z09/30EMPueOlxozXoPJobqIaQgrA+uxp3p+C6Xvvvece37RpkzuHClaan6TGq47xCy+84BpWakgURw0Mvb+Crp8ao14nkjoJFJTuv/9+95jmMrVo0cI18kuiRqo+T5pDHvybgKocU1T/rVy50s2tVWemGtrlobUXVA/qu6R6SknV4MGDXcdacJ7hySef7ObpXnjhhe57q/pcyXfQZ599Zocddpj7DqsDTXOGVW+qsa+kQt9V1fOqm1QnqiGsZFi8/4cRv7yGsxK20mKw6i3Fas2tTEcdB1rMS+dBZVan9xlnnJFyvD755BM3RztIsVPHfe3atSkdzH//+99d478kOte6eTHAm0OtBEMx1k8JteLihx9+mHL/8uXL3X1jx44t8b30PPG/l/dawfdS0qcYosf9n0XFZB3H4447zspKr6X57f7OBO/4eR36SuL9ZdD50Lkr7Thuz+dIn2+9vpIdHUMldOqoVhwqjhIsze9Xe+kf//hHSmdMkNdBVVr8838W9Z3Va+o7rPh/2223ufLoGKpzwKMEW7Fcc+V1kUJlueWWW1xbU99rtSnuvvtu9299T72ET3+r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peTjGzZssKFDh1rjxo2tfv361r9/f1uxYsX2FBkAgJxDvAYAIEaJ97p161J+VgCfM2eOu3344Yf21FNP2ZVXXpnx6+266642fvx4mzt3rn3wwQfWo0cP69Onj3322Wfu8REjRtj06dPd686aNcuWLVtm/fr1K0uRAQDIOcRrAABinHh36dLFnn/++eTPNWrUsJUrVyZ/Vu92rVq1Mn69k08+2U444QRr166d7bnnnnbDDTe4nvJ3333X1qxZY5MnT7YJEya4AK/3Vu/8O++84x4HAADpEa8BAIjxHO+XX37ZDSWbOnWq3XXXXXbbbbfZaaed5uaL/fLLL1atWjX3WHnoNdRTvn79ejeETb3qmzdvtp49eyaf06FDB2vVqpXNnj3bunbtmvZ1Nm7c6G6ewsLCcpUHAIC4Il4DABDjxLtNmzb24osv2hNPPGFHHXWUXXzxxbZo0SJ3UyBWoK1Tp06ZCvDpp5+6wK35Yeo9f+6552yvvfayjz76yPXGN2zYMOX5TZo0seXLlxf7euPGjXND6gAAyFXEawAAqsDiagMGDLD333/fPv74Y+vevbtt3brV9ttvvzIHcWnfvr0L2lpp9cILL7RBgwbZ559/buU1atQoN+zNuy1durTcrwUAQJwRrwEAiOl2Yn//+9/tiy++sM6dO9sDDzzgFlEZOHCg9e7d28aOHWt169Yt0+upl1wrrYrmhamB4A2J27Rpk61evTqlF13z0po2bVrs69WuXdvdAADIZcRrAABiesX70ksvtcGDB7tge/7559t1113nhrDNmzfP9Z7vv//+KduLlId64zXnS0G9Zs2aNnPmzORjCxYssCVLlrihbgAAID3iNQAA2SUvkUgkMn2y9ud85ZVXXJBdtWqVWzBl4cKFycc15EwB/s0338x4mJl63rUAy9q1a+3xxx+3m266yS0Kc+yxx7qhbOqx1wIw2jd02LBh7ve0UmqmtFhLQUGBG8am1wAAINttb+wiXmfgljyrki7NuFkHANhOZYldZRpqXq9ePfvmm29cINdcrOAcMS2ykmkQF21tctZZZ9l3333nCtypU6dkEJeJEye6lVf79+/vetV79eplkyZNKkuRAQDIOcRrAABifMX7scces3PPPdfN4frpp5/soYcesj59+lg244o3ACButjd2Ea8zwBVvAEC2XvHWoizHH3+8ff3119auXbsiW4cAAIDoEa8BAIj5quaaN6YbAADIXsRrAABivo83AAAAAADIDIk3AAAAAAAhIvEGAAAAACBEJN4AAAAAAISIxBsAAAAAgBCReAMAAAAAECISbwAAAAAAQkTiDQAAAABAiEi8AQAAAAAIEYk3AAAAAAAhIvEGAAAAACBEJN4AAAAAAISIxBsAAAAAgBCReAMAAAAAECISbwAAAAAAQkTiDQAAAABAiGqE+eK5qNd1L1pV9PLVJ1pVw7mKF85XvHC+AAAAtuGKNwAAAAAAISLxBgAAAAAgRCTeAAAAAACEiMQbAAAAAIAQkXgDAAAAABAiEm8AAAAAAEJE4g0AAAAAQIhIvAEAAAAACBGJNwAAAAAAISLxBgAAAAAgRCTeAAAAAACEiMQbAAAAAIAQkXgDAAAAABAiEm8AAAAAAEJE4g0AAAAAQIhIvAEAAAAACBGJNwAAAAAAISLxBgAAAAAgRCTeAAAAAABU1cR73LhxdtBBB1mDBg1sl112sb59+9qCBQtSnrNhwwYbOnSoNW7c2OrXr2/9+/e3FStWRFZmAAByDfEaAIAYJ96zZs1yQfrdd9+1V1991TZv3mzHHXecrV+/PvmcESNG2PTp0+2pp55yz1+2bJn169cvymIDAJBTiNcAAGyfGhahGTNmpPw8depU15M+d+5cO/LII23NmjU2efJke/zxx61Hjx7uOVOmTLGOHTu64N+1a9eISg4AQO4gXgMAUIXmeCtwS6NGjdz/FdDVq96zZ8/kczp06GCtWrWy2bNnp32NjRs3WmFhYcoNAABUHOI1AAAxuuLtt3XrVhs+fLgddthhts8++7j7li9fbrVq1bKGDRumPLdJkybuseLmoY0ZM6ZSygwAQK4hXiMSt+RZlXRpwqqkqni+quq5Qu5d8dbcsfnz59u0adO263VGjRrleuK929KlSyusjAAA5DriNQAAMb3ifdFFF9kLL7xgb7zxhu26667J+5s2bWqbNm2y1atXp/Sia5VUPZZO7dq13Q0AAFQs4jUAADG84p1IJFwQf+655+y1116ztm3bpjzepUsXq1mzps2cOTN5n7YvWbJkiXXr1i2CEgMAkHuI1wAAxPiKt4araQXU559/3u0N6s0DKygosLp167r/DxkyxEaOHOkWcMnPz7dhw4a5IM4KqQAAVA7iNQAAMU687777bvf/7t27p9yvLUjOPvts9++JEydatWrVrH///m4F1F69etmkSZMiKS8AALmIeA0AQIwTbw1dK02dOnXsrrvucjcAAFD5iNcAAFSRVc0BAAAAAKiKSLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3gAAAAAAhIjEGwAAAACAEJF4AwAAAAAQIhJvAAAAAABCROINAAAAAECISLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3gAAAAAAhIjEGwAAAACAEJF4AwAAAAAQIhJvAAAAAABCROINAAAAAECISLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3gAAAAAAhIjEGwAAAACAEJF4AwAAAAAQIhJvAAAAAABCROINAAAAAECISLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3gAAAAAAhIjEGwAAAACAEJF4AwAAAAAQIhJvAAAAAABCROINAAAAAECISLwBAAAAAAgRiTcAAAAAACEi8QYAAAAAIEQk3gAAAAAAVNXE+4033rCTTz7Zmjdvbnl5efbXv/415fFEImHXXHONNWvWzOrWrWs9e/a0r776KrLyAgCQq4jZAADENPFev369de7c2e666660j9988812++232z333GPvvfee1atXz3r16mUbNmyo9LICAJDLiNkAAJRfjSjfvHfv3u6WjnrOb731VrvqqqusT58+7r6HH37YmjRp4nrZTz/99EouLQAAuYuYDQBAFZzj/c0339jy5cvdUDVPQUGBHXLIITZ79uxIywYAALYhZgMAkMVXvEuiAC7qLffTz95j6WzcuNHdPIWFhSGWEgAAlCdmE68BALkkaxPv8ho3bpyNGTMm6mIAAIASEK8BIAvckmdV0qUJyzZZO9S8adOm7v8rVqxIuV8/e4+lM2rUKFuzZk3ytnTp0tDLCgBALitPzCZeAwBySdYm3m3btnXBeubMmSnD0LRSardu3Yr9vdq1a1t+fn7KDQAAZFfMJl4DAHJJpEPN161bZ4sWLUpZnOWjjz6yRo0aWatWrWz48OF2/fXXW7t27VxQv/rqq93+oX379o2y2AAA5BxiNgAAMU28P/jgAzv66KOTP48cOdL9f9CgQTZ16lS7/PLL3b6h5513nq1evdoOP/xwmzFjhtWpUyfCUgMAkHuI2QAAxDTx7t69u9v7szh5eXk2duxYdwMAANEhZgMA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”, “text/plain”: [
“<Figure size 1000x400 with 2 Axes>”
]
}, “metadata”: {}, “output_type”: “display_data”
}
], “source”: [
“import matplotlib.pyplot as pltn”, “n”, “fig, axes = plt.subplots(1, 2, figsize=(10, 4))n”, “pd.Series(diag_erc["risk_contributions_pct"], index=assets).plot.bar(n”, “ ax=axes[0], color="steelblue", title="ERC Risk Contributions (%)"n”, “)n”, “pd.Series(diag_rb["risk_contributions_pct"], index=assets).plot.bar(n”, “ ax=axes[1], color="darkorange", title="Budget RP (50/20/20/10) Risk Contributions (%)"n”, “)n”, “for ax in axes:n”, “ ax.set_ylabel("%")n”, “ ax.set_ylim(0, 60)n”, “fig.tight_layout()n”, “plt.show()”
]
}
], “metadata”: {
- “kernelspec”: {
“display_name”: “Python 3”, “language”: “python”, “name”: “python3”
}, “language_info”: {
- “codemirror_mode”: {
“name”: “ipython”, “version”: 3
}, “file_extension”: “.py”, “mimetype”: “text/x-python”, “name”: “python”, “nbconvert_exporter”: “python”, “pygments_lexer”: “ipython3”, “version”: “3.12.9”
}
}, “nbformat”: 4, “nbformat_minor”: 4
}