{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Riskfolio-Lib Tutorial: \n",
"
\n",
"
\n",
"
\n",
"\n",
"\n",
"
\n",
"
\n",
"
\n",
"
__[Financionerioncios](https://financioneroncios.wordpress.com)__\n",
"
__[Orenji](https://www.linkedin.com/company/orenj-i)__\n",
"
__[Riskfolio-Lib](https://riskfolio-lib.readthedocs.io/en/latest/)__\n",
"
__[Dany Cajas](https://www.linkedin.com/in/dany-cajas/)__\n",
"## Tutorial 37: OWA Portfolio Optimization\n",
"\n",
"## 1. Downloading the data:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[*********************100%%**********************] 25 of 25 completed\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import yfinance as yf\n",
"import warnings\n",
"\n",
"warnings.filterwarnings(\"ignore\")\n",
"pd.options.display.float_format = '{:.4%}'.format\n",
"\n",
"# Date range\n",
"start = '2016-01-01'\n",
"end = '2019-12-30'\n",
"\n",
"# Tickers of assets\n",
"assets = ['JCI', 'TGT', 'CMCSA', 'CPB', 'MO', 'APA', 'MMC', 'JPM',\n",
" 'ZION', 'PSA', 'BAX', 'BMY', 'LUV', 'PCAR', 'TXT', 'TMO',\n",
" 'DE', 'MSFT', 'HPQ', 'SEE', 'VZ', 'CNP', 'NI', 'T', 'BA']\n",
"assets.sort()\n",
"\n",
"# Downloading data\n",
"data = yf.download(assets, start = start, end = end, auto_adjust=False)\n",
"data = data.loc[:,('Adj Close', slice(None))]\n",
"data.columns = assets"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
| \n", " | APA | \n", "BA | \n", "BAX | \n", "BMY | \n", "CMCSA | \n", "CNP | \n", "CPB | \n", "DE | \n", "HPQ | \n", "JCI | \n", "... | \n", "NI | \n", "PCAR | \n", "PSA | \n", "SEE | \n", "T | \n", "TGT | \n", "TMO | \n", "TXT | \n", "VZ | \n", "ZION | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| 2018-10-19 | \n", "0.0475% | \n", "-0.8599% | \n", "-1.4332% | \n", "-3.0011% | \n", "0.1113% | \n", "1.2968% | \n", "3.4361% | \n", "-0.8764% | \n", "0.2944% | \n", "-0.7834% | \n", "... | \n", "0.6339% | \n", "-0.1823% | \n", "0.9186% | \n", "-0.7728% | \n", "1.1385% | \n", "-1.6075% | \n", "-1.1144% | \n", "-1.2872% | \n", "0.4575% | \n", "-0.8025% | \n", "
| 2018-10-22 | \n", "-1.9240% | \n", "-0.0786% | \n", "-0.6335% | \n", "-6.2983% | \n", "-0.6393% | \n", "-1.1024% | \n", "0.0527% | \n", "-0.3221% | \n", "1.1326% | \n", "-0.8199% | \n", "... | \n", "-0.8662% | \n", "0.4483% | \n", "-1.6953% | \n", "-2.8972% | \n", "-0.6085% | \n", "1.4752% | \n", "-0.6075% | \n", "-0.8635% | \n", "0.1457% | \n", "-3.4490% | \n", "
| 2018-10-23 | \n", "-3.6571% | \n", "-1.6658% | \n", "-0.4202% | \n", "-0.4520% | \n", "-0.2797% | \n", "-0.5034% | \n", "0.1844% | \n", "-3.9948% | \n", "-0.7051% | \n", "-0.2449% | \n", "... | \n", "0.4766% | \n", "-5.1240% | \n", "0.5342% | \n", "-0.0321% | \n", "1.0713% | \n", "-0.6728% | \n", "-1.0808% | \n", "-1.8308% | \n", "4.0560% | \n", "4.0353% | \n", "
| 2018-10-24 | \n", "-4.5500% | \n", "1.3141% | \n", "-1.8042% | \n", "-3.5933% | \n", "-4.2917% | \n", "0.8674% | \n", "0.9995% | \n", "-4.1108% | \n", "-3.6758% | \n", "-3.7139% | \n", "... | \n", "3.5178% | \n", "-4.2683% | \n", "1.5636% | \n", "-1.3479% | \n", "-8.0557% | \n", "-0.4838% | \n", "-1.2403% | \n", "-4.2187% | \n", "0.3671% | \n", "-3.3065% | \n", "
| 2018-10-25 | \n", "0.4741% | \n", "2.5715% | \n", "0.5186% | \n", "0.7782% | \n", "5.0410% | \n", "-0.5733% | \n", "-1.1719% | \n", "2.1585% | \n", "3.1657% | \n", "2.3270% | \n", "... | \n", "-1.0309% | \n", "0.4914% | \n", "0.5082% | \n", "0.9109% | \n", "-1.2516% | \n", "1.8962% | \n", "4.3662% | \n", "1.3800% | \n", "-1.7241% | \n", "3.3538% | \n", "
5 rows × 25 columns
\n", "| \n", " | Classic MinRisk CVaR | \n", "OWA MinRisk CVaR | \n", "diff MinRisk CVaR | \n", "Classic Sharpe CVaR | \n", "OWA Sharpe CVaR | \n", "diff Sharpe CVaR | \n", "Classic MinRisk WR | \n", "OWA MinRisk WR | \n", "diff MinRisk WR | \n", "Classic Sharpe WR | \n", "OWA Sharpe WR | \n", "diff Sharpe WR | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| APA | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| BA | \n", "3.79% | \n", "3.79% | \n", "-0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| BAX | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| BMY | \n", "9.47% | \n", "9.47% | \n", "0.00% | \n", "1.84% | \n", "1.79% | \n", "0.05% | \n", "12.88% | \n", "12.88% | \n", "-0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "
| CMCSA | \n", "0.87% | \n", "0.87% | \n", "-0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| CNP | \n", "9.42% | \n", "9.42% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| CPB | \n", "6.94% | \n", "6.94% | \n", "0.00% | \n", "28.53% | \n", "28.52% | \n", "0.01% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "33.71% | \n", "33.71% | \n", "-0.00% | \n", "
| DE | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| HPQ | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| JCI | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| JPM | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| LUV | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| MMC | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "24.42% | \n", "24.40% | \n", "0.02% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| MO | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "21.61% | \n", "21.61% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| MSFT | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| NI | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| PCAR | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "11.95% | \n", "12.00% | \n", "-0.05% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "13.79% | \n", "13.79% | \n", "0.00% | \n", "
| PSA | \n", "25.41% | \n", "25.41% | \n", "-0.00% | \n", "10.27% | \n", "10.22% | \n", "0.06% | \n", "40.27% | \n", "40.27% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| SEE | \n", "2.27% | \n", "2.27% | \n", "-0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "8.76% | \n", "8.76% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| T | \n", "4.52% | \n", "4.52% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| TGT | \n", "4.85% | \n", "4.85% | \n", "0.00% | \n", "22.28% | \n", "22.31% | \n", "-0.03% | \n", "16.48% | \n", "16.48% | \n", "-0.00% | \n", "40.40% | \n", "40.40% | \n", "-0.00% | \n", "
| TMO | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.70% | \n", "0.76% | \n", "-0.06% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "12.09% | \n", "12.09% | \n", "0.00% | \n", "
| TXT | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| VZ | \n", "32.46% | \n", "32.46% | \n", "-0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "
| ZION | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "0.00% | \n", "-0.00% | \n", "