python-pour-finance/09-Python-Finance-Fondamentaux/01-Répartition-Portefeuill...

1334 lines
158 KiB
Plaintext
Raw Normal View History

2023-08-21 15:12:19 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ratio de Sharpe et valeurs du portefeuille"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import quandl"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creéer un Portefeuille"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"start = pd.to_datetime('2012-01-01')\n",
"end = pd.to_datetime('2017-01-01')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"quandl.ApiConfig.api_key = \"GpVgeVazag5mR7JaB3Gn\"\n",
"# Nous avons pris un tas d'actions technologiques pour notre portefeuille\n",
"aapl = quandl.get('WIKI/AAPL.11',start_date=start,end_date=end)\n",
"cisco = quandl.get('WIKI/CSCO.11',start_date=start,end_date=end)\n",
"ibm = quandl.get('WIKI/IBM.11',start_date=start,end_date=end)\n",
"amzn = quandl.get('WIKI/AMZN.11',start_date=start,end_date=end)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# Alternatives\n",
"# aapl = pd.read_csv('AAPL_CLOSE',index_col='Date',parse_dates=True)\n",
"# cisco = pd.read_csv('CISCO_CLOSE',index_col='Date',parse_dates=True)\n",
"# ibm = pd.read_csv('IBM_CLOSE',index_col='Date',parse_dates=True)\n",
"# amzn = pd.read_csv('AMZN_CLOSE',index_col='Date',parse_dates=True)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"aapl.to_csv('AAPL_CLOSE')\n",
"cisco.to_csv('CISCO_CLOSE')\n",
"ibm.to_csv('IBM_CLOSE')\n",
"amzn.to_csv('AMZN_CLOSE')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normaliser les Prix\n",
"\n",
"C'est la même chose que les rendements quotidiens cumulatifs."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"52.848786580038"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Exemple\n",
"aapl.iloc[0]['Adj. Close']"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"for stock_df in (aapl,cisco,ibm,amzn):\n",
" stock_df['Normed Return'] = stock_df['Adj. Close']/stock_df.iloc[0]['Adj. Close']"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Adj. Close</th>\n",
" <th>Normed Return</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>52.848787</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-04</th>\n",
" <td>53.132802</td>\n",
" <td>1.005374</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-05</th>\n",
" <td>53.722681</td>\n",
" <td>1.016536</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-06</th>\n",
" <td>54.284287</td>\n",
" <td>1.027162</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-09</th>\n",
" <td>54.198183</td>\n",
" <td>1.025533</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Adj. Close Normed Return\n",
"Date \n",
"2012-01-03 52.848787 1.000000\n",
"2012-01-04 53.132802 1.005374\n",
"2012-01-05 53.722681 1.016536\n",
"2012-01-06 54.284287 1.027162\n",
"2012-01-09 54.198183 1.025533"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aapl.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Adj. Close</th>\n",
" <th>Normed Return</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2016-12-23</th>\n",
" <td>115.080808</td>\n",
" <td>2.177549</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-27</th>\n",
" <td>115.811668</td>\n",
" <td>2.191378</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-28</th>\n",
" <td>115.317843</td>\n",
" <td>2.182034</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-29</th>\n",
" <td>115.288214</td>\n",
" <td>2.181473</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-30</th>\n",
" <td>114.389454</td>\n",
" <td>2.164467</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Adj. Close Normed Return\n",
"Date \n",
"2016-12-23 115.080808 2.177549\n",
"2016-12-27 115.811668 2.191378\n",
"2016-12-28 115.317843 2.182034\n",
"2016-12-29 115.288214 2.181473\n",
"2016-12-30 114.389454 2.164467"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aapl.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Répartitions\n",
"\n",
"Imaginons que nous ayons les répartitions suivantes pour l'ensemble de notre portefeuille :\n",
"\n",
"* 30% d'Apple\n",
"* 20% de Cisco\n",
"* 40% d'Amazon\n",
"* 10% d'IBM\n",
"\n",
"Faisons en sorte que ces valeurs soient reflétées en multipliant notre Rendement Standard par notre répartition"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"for stock_df,allo in zip([aapl,cisco,amzn,ibm],[.3,.2,.4,.1]):\n",
" stock_df['Allocation'] = stock_df['Normed Return']*allo"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Adj. Close</th>\n",
" <th>Normed Return</th>\n",
" <th>Allocation</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>52.848787</td>\n",
" <td>1.000000</td>\n",
" <td>0.300000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-04</th>\n",
" <td>53.132802</td>\n",
" <td>1.005374</td>\n",
" <td>0.301612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-05</th>\n",
" <td>53.722681</td>\n",
" <td>1.016536</td>\n",
" <td>0.304961</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-06</th>\n",
" <td>54.284287</td>\n",
" <td>1.027162</td>\n",
" <td>0.308149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-09</th>\n",
" <td>54.198183</td>\n",
" <td>1.025533</td>\n",
" <td>0.307660</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Adj. Close Normed Return Allocation\n",
"Date \n",
"2012-01-03 52.848787 1.000000 0.300000\n",
"2012-01-04 53.132802 1.005374 0.301612\n",
"2012-01-05 53.722681 1.016536 0.304961\n",
"2012-01-06 54.284287 1.027162 0.308149\n",
"2012-01-09 54.198183 1.025533 0.307660"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"aapl.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Investissement\n",
"\n",
"Imaginons qu'on ait investi un million de dollars dans ce portefeuille"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"for stock_df in [aapl,cisco,ibm,amzn]:\n",
" stock_df['Position Values'] = stock_df['Allocation']*1000000"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Valeur totale du Portefeuille"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"portfolio_val = pd.concat([aapl['Position Values'],cisco['Position Values'],ibm['Position Values'],amzn['Position Values']],axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Position Values</th>\n",
" <th>Position Values</th>\n",
" <th>Position Values</th>\n",
" <th>Position Values</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>300000.000000</td>\n",
" <td>200000.000000</td>\n",
" <td>100000.000000</td>\n",
" <td>400000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-04</th>\n",
" <td>301612.236461</td>\n",
" <td>203864.734300</td>\n",
" <td>99592.055824</td>\n",
" <td>396603.921131</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-05</th>\n",
" <td>304960.727573</td>\n",
" <td>203113.258186</td>\n",
" <td>99119.699410</td>\n",
" <td>396827.347372</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-06</th>\n",
" <td>308148.724558</td>\n",
" <td>202361.782072</td>\n",
" <td>97981.749866</td>\n",
" <td>407998.659443</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-09</th>\n",
" <td>307659.946988</td>\n",
" <td>203650.026838</td>\n",
" <td>97471.819646</td>\n",
" <td>398949.896665</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Position Values Position Values Position Values Position Values\n",
"Date \n",
"2012-01-03 300000.000000 200000.000000 100000.000000 400000.000000\n",
"2012-01-04 301612.236461 203864.734300 99592.055824 396603.921131\n",
"2012-01-05 304960.727573 203113.258186 99119.699410 396827.347372\n",
"2012-01-06 308148.724558 202361.782072 97981.749866 407998.659443\n",
"2012-01-09 307659.946988 203650.026838 97471.819646 398949.896665"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val.head()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"portfolio_val.columns = ['AAPL Pos','CISCO Pos','IBM Pos','AMZN Pos']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AAPL Pos</th>\n",
" <th>CISCO Pos</th>\n",
" <th>IBM Pos</th>\n",
" <th>AMZN Pos</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>300000.000000</td>\n",
" <td>200000.000000</td>\n",
" <td>100000.000000</td>\n",
" <td>400000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-04</th>\n",
" <td>301612.236461</td>\n",
" <td>203864.734300</td>\n",
" <td>99592.055824</td>\n",
" <td>396603.921131</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-05</th>\n",
" <td>304960.727573</td>\n",
" <td>203113.258186</td>\n",
" <td>99119.699410</td>\n",
" <td>396827.347372</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-06</th>\n",
" <td>308148.724558</td>\n",
" <td>202361.782072</td>\n",
" <td>97981.749866</td>\n",
" <td>407998.659443</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-09</th>\n",
" <td>307659.946988</td>\n",
" <td>203650.026838</td>\n",
" <td>97471.819646</td>\n",
" <td>398949.896665</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" AAPL Pos CISCO Pos IBM Pos AMZN Pos\n",
"Date \n",
"2012-01-03 300000.000000 200000.000000 100000.000000 400000.000000\n",
"2012-01-04 301612.236461 203864.734300 99592.055824 396603.921131\n",
"2012-01-05 304960.727573 203113.258186 99119.699410 396827.347372\n",
"2012-01-06 308148.724558 202361.782072 97981.749866 407998.659443\n",
"2012-01-09 307659.946988 203650.026838 97471.819646 398949.896665"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val.head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"portfolio_val['Total Pos'] = portfolio_val.sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AAPL Pos</th>\n",
" <th>CISCO Pos</th>\n",
" <th>IBM Pos</th>\n",
" <th>AMZN Pos</th>\n",
" <th>Total Pos</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2012-01-03</th>\n",
" <td>300000.000000</td>\n",
" <td>200000.000000</td>\n",
" <td>100000.000000</td>\n",
" <td>400000.000000</td>\n",
" <td>1.000000e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-04</th>\n",
" <td>301612.236461</td>\n",
" <td>203864.734300</td>\n",
" <td>99592.055824</td>\n",
" <td>396603.921131</td>\n",
" <td>1.001673e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-05</th>\n",
" <td>304960.727573</td>\n",
" <td>203113.258186</td>\n",
" <td>99119.699410</td>\n",
" <td>396827.347372</td>\n",
" <td>1.004021e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-06</th>\n",
" <td>308148.724558</td>\n",
" <td>202361.782072</td>\n",
" <td>97981.749866</td>\n",
" <td>407998.659443</td>\n",
" <td>1.016491e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2012-01-09</th>\n",
" <td>307659.946988</td>\n",
" <td>203650.026838</td>\n",
" <td>97471.819646</td>\n",
" <td>398949.896665</td>\n",
" <td>1.007732e+06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" AAPL Pos CISCO Pos IBM Pos AMZN Pos \\\n",
"Date \n",
"2012-01-03 300000.000000 200000.000000 100000.000000 400000.000000 \n",
"2012-01-04 301612.236461 203864.734300 99592.055824 396603.921131 \n",
"2012-01-05 304960.727573 203113.258186 99119.699410 396827.347372 \n",
"2012-01-06 308148.724558 202361.782072 97981.749866 407998.659443 \n",
"2012-01-09 307659.946988 203650.026838 97471.819646 398949.896665 \n",
"\n",
" Total Pos \n",
"Date \n",
"2012-01-03 1.000000e+06 \n",
"2012-01-04 1.001673e+06 \n",
"2012-01-05 1.004021e+06 \n",
"2012-01-06 1.016491e+06 \n",
"2012-01-09 1.007732e+06 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val.head()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Total Portfolio Value')"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"portfolio_val['Total Pos'].plot(figsize=(10,8))\n",
"plt.title('Total Portfolio Value')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x120afb7d0>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEECAYAAAAGSGKZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydd3hURdfAf7MtlYQUEiCUQOg1QBD1pQkKiIpSpSigKNYXRUVBURHx/VRsYAELKLaAoChKE2wUAQlNOiQhQKgphPS2O98fe3ezm2wqgYQwv+fJk3vP1LuQPXfmnDlHSClRKBQKhaK86Kp6AgqFQqG4OlEKRKFQKBQVQikQhUKhUFQIpUAUCoVCUSGUAlEoFApFhTBU9QSuFIGBgTI0NLSqp6FQKBRXFTt27EiUUtZxVXbNKJDQ0FCioqKqehoKhUJxVSGEOF5cmdrCUigUCkWFUApEoVAoFBVCKRCFQqFQVIhrxgbiiry8POLj48nOzq7qqdQo3N3dadCgAUajsaqnolAoLiPXtAKJj4+nVq1ahIaGIoSo6unUCKSUJCUlER8fT5MmTap6OgqF4jJyTW9hZWdnExAQoJRHJSKEICAgQK3qFIprgGtagQBKeVwG1GeqUFQPLFlZZO3Zc9n6v+YViEKhUNRUEj/6iLi7R3Js6LDL0r9SINWA5cuXI4Tg0KFDRcreffdd3N3duXjxol32559/4uvrS6dOnWjdujWvvPKKXX777beXONb48eNp0qQJ4eHhdO7cmS1btlTuwygUimpBblwcSZ9+BkD2/v1YsrI4NmQoCR9+WGljKAVSDYiMjKR79+4sXrzYZVnXrl1Zvny5k7xHjx7s2rWLqKgovv76a3bs2FHm8WbPns3u3bt5/fXXeeihhy55/gqFovqRse0fp/ukzxaQfeAAie9/UGljKAVSxaSnp7N582YWLFhQRIHExMSQnp7OrFmziIyMdNney8uLLl26EBMTU+6xe/bsSXR0NAC7d+/m+uuvp0OHDgwePJgLFy4AMHfuXNq0aUOHDh0YOXJkucdQKBRVQ8bmzQDUmTwZgJTvv6/0Ma5pN15HXvl5PwdOp1Zqn23q+/DyHW1LrPPjjz8yYMAAWrRogb+/Pzt37qRz586AdfUxatQoevToweHDhzl//jxBQUFO7ZOSkti6dSsvvvgiCQkJ5Zrfzz//TPv27QEYO3Ys77//Pr169eKll17ilVde4b333uP111/n2LFjuLm5kZKSUq7+FQpF1WFOScHYqBGBD00k7bffyP7330ofQ61AqpjIyEj7m/3IkSOdVhqLFy9m5MiR6HQ6hgwZwtKlS+1lGzdupFOnTvTr14+pU6fStm3JisqRKVOmEB4ezieffMKCBQu4ePEiKSkp9OrVC4Bx48axYcMGADp06MCYMWP4+uuvMRjU+4ZCcbVgTk/DrWlTANzbtnEqs2RlVcoY6htBo7SVwuUgKSmJ33//nX379iGEwGw2I4TgzTffZO/evRw9epRbbrkFgNzcXJo2bcpjjz0GWG0gv/zyS4XGnT17NsOGFXhlOBroC7Ny5Uo2bNjAihUrePXVV9m/f79SJArFVYAlPQNdWC0AjMF1ncryk5IwNWhwyWOoFUgVsmzZMsaOHcvx48eJi4vj5MmTNGnShE2bNhEZGcmMGTOIi4sjLi6O06dPc+rUKY4fLzaycoXx9fXFz8+PjRs3AvDVV1/Rq1cvLBYLJ0+e5KabbuLNN98kJSWF9PT0Sh9foVBUPpa0NHTeXgDU6tfPqUzm5VXKGOpVsgqJjIxk6tSpTrKhQ4fy7bffsmbNGlavXu1UNnjwYBYvXky3bt2K7fO3336jgcObxdKlS7nhhhtKncuiRYt4+OGHyczMpGnTpnz++eeYzWbuueceLl68iJSSyZMnU7t27XI+pUKhuNJcWLwY84UL6L2tKxC3pk1oHPktF76NJPXnnyE/v1LGEVLKSumouhMRESELJ5Q6ePAgrVu3rqIZ1WzUZ6tQVB0HW1n/9nwGDiTknbft8tR16zj130k0Wf4D7mX8+xRC7JBSRrgqK3ULSwixUAhxXgixz0G2RAixW/uJE0Ls1uShQogsh7L5Dm26CCH2CiGihRBzhRbvQgjhL4RYJ4Q4qv320+RCqxcthPhXCNHZoa9xWv2jQohxZfoUFAqF4hrBUK8eALVuHeAkF5r9srK2sMpiA/kCcJqFlPJuKWW4lDIc+B74waE4xlYmpXzYQT4PmAg0135sfU4FfpNSNgd+0+4BbnWoO1FrjxDCH3gZ6AZcB7xsUzoKhUJxrWJOz8CcnqHdmPEdPBgfzQnHhjCaAMj6d2+ljFmqApFSbgCSXZVpq4gRgOtTbgX16gE+Usot0rpn9iVwl1Z8J7BIu15USP6ltLIVqK310x9YJ6VMllJeANZRSMEpFArFtUZ0nz4c7dkTaTaTn5SEodCZMShYgZybNYvD13Uj+9Ah8k6fJmv37gqNealeWD2Ac1LKow6yJkKIXUKIv4QQPTRZCBDvUCdekwEESynPAGi/gxzanHTRpji5QqFQXJNIsxlLaioyM5Pc48fBbMZQp06ResJY4DdlSU0ldeVKYu+8i7iRo7BkZJR73EtVIKNwXn2cARpJKTsBTwHfCiF8AFfxvUuz3hfXpsx9CSEmCiGihBBR5T2lrVAoFFcLuceO2a9jB94GgCG46ArEkpnpdK/z8cGSlgZA8ldfl3vcCisQIYQBGAIsscmklDlSyiTtegcQA7TAukpwPLXSADitXZ/TtqZsW13nNXk80NBFm+LkRZBSfiKljJBSRtRxoY0VCoXiaiTv/HnOv/UWlsxMpNlM8qIvi9Rxb968iMzUpKmzQILe3x+A7EOHsGRmcnzceI4NHUbW3r1ccBHg1ZFLWYHcDBySUtq3poQQdYQQeu26KVYDeKy2NZUmhLhes5uMBX7Smq0AbJ5U4wrJx2reWNcDF7V+1gL9hBB+mvG8nya7Kjl79iwjR44kLCyMNm3aMHDgQI4cOUJcXBzt2rUDIDMzkzFjxtC+fXvatWtH9+7d7Qf6imsPsH//fvr06UOLFi1o3rw5r776Kq7ctosLD69QKKoX+RcukPDhh8T/978kfbaAxHnzOTP9RVIcwhwB+N55J6bQ0CLtTQ1CCHnvXfu9OSkJc7LVxJ1z8CCHO3chc9s2svfvJ274CM7OKPm7oNSDhEKISKA3ECiEiAdellIuAEZS1HjeE5gphMgHzMDDUkqbAf4RrB5dHsBq7QfgdeA7IcQE4AQwXJOvAgYC0UAmcB+AlDJZCPEqsF2rN9NhjKsKKSWDBw9m3Lhx9ki8u3fv5ty5czRsWLDImjNnDsHBwezda/WcOHz4MEajsdT2gwYNYt68efTr14/MzEyGDh3KRx99ZA+H4ogtNEpGRgbh4eHcfvvtdOnS5Qp8CgqFoqycmTqN9L/+st8nffqp/br28GGkLF0GgHfvXsV34vASmRMbC4Bb82bkHI0u93xKVSBSylHFyMe7kH2P1a3XVf0ooJ0LeRLQ14VcAkW/6axlC4GFJc37auCPP/7AaDTy8MMF3s7h4eEAxMXF2WVnzpyhcePG9vuWLVsC8PvvvxfbfsGCBfznP/+hnxbCwNPTkw8++IDevXu7VCA2HMPDt23blkceeYSoqCgMBgPvvPMON910E/v37+e+++4jNzcXi8XC999/T3MXy2WFQlG5ZPxTkOMjePp0zs2aBYCpcWNq9etvVyCG4OBi+/Du08d+naOlc/DufdPlUSDXDKunwtnK8Y22U7c93Pp6scX79u0r01v+/fffT79+/Vi2bBl9+/Zl3LhxNG/evMT2+/fvL1IWFhZGeno6qamp+Pj4uGznGB7+Qy1z2d69ezl06BD9+vXjyJEjzJ8/nyeeeIIxY8aQm5uL2Wwu9RkUCkX5kXl5pCxbhu+QIQijEekQRbf24LvsCsTnjjvwuuF6Ah56CLewpnhoL5Ku0Lm52a/zz5wBIfC64Xr7asajSxeyduzAb8wYMjZtgsNFM6XaUArkKiA8PJzY2Fh+/fVX1q9fT9euXUtNRSu
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"portfolio_val.drop('Total Pos',axis=1).plot(kind='line')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AAPL Pos</th>\n",
" <th>CISCO Pos</th>\n",
" <th>IBM Pos</th>\n",
" <th>AMZN Pos</th>\n",
" <th>Total Pos</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2016-12-23</th>\n",
" <td>653264.617079</td>\n",
" <td>377469.015679</td>\n",
" <td>101839.988903</td>\n",
" <td>1.699358e+06</td>\n",
" <td>2.831931e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-27</th>\n",
" <td>657413.396830</td>\n",
" <td>379323.596496</td>\n",
" <td>102102.667778</td>\n",
" <td>1.723510e+06</td>\n",
" <td>2.862350e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-28</th>\n",
" <td>654610.167268</td>\n",
" <td>376108.989746</td>\n",
" <td>101522.330729</td>\n",
" <td>1.725141e+06</td>\n",
" <td>2.857383e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-29</th>\n",
" <td>654441.973495</td>\n",
" <td>376603.544631</td>\n",
" <td>101772.791982</td>\n",
" <td>1.709546e+06</td>\n",
" <td>2.842364e+06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2016-12-30</th>\n",
" <td>649340.095692</td>\n",
" <td>373636.215323</td>\n",
" <td>101400.154508</td>\n",
" <td>1.675406e+06</td>\n",
" <td>2.799783e+06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" AAPL Pos CISCO Pos IBM Pos AMZN Pos \\\n",
"Date \n",
"2016-12-23 653264.617079 377469.015679 101839.988903 1.699358e+06 \n",
"2016-12-27 657413.396830 379323.596496 102102.667778 1.723510e+06 \n",
"2016-12-28 654610.167268 376108.989746 101522.330729 1.725141e+06 \n",
"2016-12-29 654441.973495 376603.544631 101772.791982 1.709546e+06 \n",
"2016-12-30 649340.095692 373636.215323 101400.154508 1.675406e+06 \n",
"\n",
" Total Pos \n",
"Date \n",
"2016-12-23 2.831931e+06 \n",
"2016-12-27 2.862350e+06 \n",
"2016-12-28 2.857383e+06 \n",
"2016-12-29 2.842364e+06 \n",
"2016-12-30 2.799783e+06 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Statistiques du Portefeuille\n",
"### Rendements Quotidiens"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"portfolio_val['Daily Return'] = portfolio_val['Total Pos'].pct_change(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rendement Cumulatif"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Notre rendement était de 179.97828220000912 %!\n"
]
}
],
"source": [
"cum_ret = 100 * (portfolio_val['Total Pos'][-1]/portfolio_val['Total Pos'][0] -1 )\n",
"print('Notre rendement était de {} %!'.format(cum_ret))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rendement Quotidien Moyen"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0009023579071769599"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val['Daily Return'].mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Ecart-Type du Rendement Quotidien"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.012896893878458078"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val['Daily Return'].std()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x120d99750>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD4CAYAAADrRI2NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXRkZ3nn8e+j0r53S6Xeu9WbV7xgZAND4BgbgyGACXgIJBAPAzEzBGYyk8nBJJMEMsmM4QwwzOQk2GFzFrYAYxtCzDSOgZjFdht3e2/3arda3Vq6W7tUUlU980fdasuylpJUt26V6vc5p06Vbt2q+9wu6Vdvv/e97zV3R0REykdF1AWIiEhhKfhFRMqMgl9EpMwo+EVEyoyCX0SkzFRGXUAu2tvbvbOzM+oyRERKysMPPzzg7vHZy0si+Ds7O9m7d2/UZYiIlBQze3au5erqEREpMwp+EZEyo+AXESkzCn4RkTKj4BcRKTMKfhGRMqPgFxEpMwp+kWU6NTTJ5398mAOnRqIuRWRJFPwiyzA0Mc07b/s5t/7T09z4+Z/RNzwZdUkiOVPwiyzDbT8+zHNnxvnUjZcylkjypZ8ei7okkZwp+EWWaCqZ5qsPPscbX7Ked3Zt4doL13HnIyfQ1eykVCj4RZbovgN9DI5P884rtwBw3YXrODU8ydPq65cSoeAXWaK79/fQ3ljNq3e1A/Ca8zKTH/7s8OkoyxLJmYJfZAmSqTQ/eaafay7ooDKW+fNZ31LL+uZaHusejLg6kdwo+EWWYH/3ICOTyXOt/KxLNrfwaPdQRFWJLI2CX2QJfvLMABUGvxJ082S9ZGMLRwbGGJ9KRlSZSO4U/CJLsPfZM1y4oZnW+uoXLN/Z0QDA0YGxKMoSWRIFv0iOUmln//Ehrti65kXP7WhvBOBIv4Jfip+CXyRHh/pGGU0keenW1hc9t7090+JX8EspUPCL5OiR584CcPmWFwd/XXWMTa11HBkYLXRZIkum4BfJ0b7jg7TUVZ1r3c+2I96gFr+UhNCC38xqzexBM9tvZk+Y2SeC5V8xs6Nmti+4XR5WDSL5tO/4IJdvacXM5nx+e3sDx04r+KX4VYb43gngGncfNbMq4H4z+6fgud9392+FuG2RvJpOpTncP8prL+iYd51NrXWMTCYZnpymubaqgNWJLE1oLX7PyHZ4VgU3zWIlJenowBjTKef8dU3zrrOxtQ6AnsGJQpUlsiyh9vGbWczM9gF9wB53fyB46s/N7FEz+6yZ1czz2pvNbK+Z7e3v7w+zTJFFZS+2ct4Cwb9pjYJfSkOowe/uKXe/HNgMXGVmLwE+BlwAXAmsBT46z2tvd/cud++Kx+NzrSJSMAdOjRCrsHMnas1lU9DiPzGoi7JIcSvIqB53HwR+BFzv7ieDbqAE8GXgqkLUILISB3pH2N7eQE1lbN514o01VMVMLX4pemGO6ombWWvwuA54HfC0mW0IlhnwNuDxsGoQyZdnekcW7N8HqKgwNrTUceKsgl+KW5ijejYAd5hZjMwXzDfd/Xtm9s9mFgcM2Af8uxBrEFmxiakUz50Z5+0v3bzoupta6zihFr8UudCC390fBV46x/JrwtqmSBiePTOGe+YErcVsaKnlgaNnClCVyPLpzF2RRRwbGAegs23x4I8319A/ktD1d6WoKfhFFvFscDbu1rb6RdftaKplKpVmaGI67LJElk3BL7KIY6fHWdtQTUvd4mfjrmvOnJbSO5wIuyyRZVPwiyzi2dNjbMuhtQ+ZFj9A34jG8kvxUvCLLOLYwBjbc+jfB+hoUotfip+CX2QBk9MpeoYm2ZZr8AddPWrxSzFT8Iss4PiZYERPe25dPfXVlTTVVNKnFr8UMQW/yAKeC4J/y9rcgh8yQzrV4pdipuAXWUB23p3NwQRsuVjXVKs+filqCn6RBZwYnKQqZrQ3zjl7+Jw61OKXIqfgF1nAyaEJNrTUUVEx9+UW59LRVEPfsM7eleKl4BdZQM/gBBtba5f0mo6mWhLJNMMTyZCqElkZBb/IAnoGJ9nYknv/Pjw/pLN/VP38UpwU/CLzSKbSnBqePHct3VzFg+MB/SMKfilOCn6RefSNJEilfenB36QWvxQ3Bb/IPLJDOZfax38u+NXilyKl4BeZR/ZKWpuW2OJvqauiKmYKfilaYV5zt9bMHjSz/Wb2hJl9Ili+3cweMLODZvYNM6sOqwaRlegZzIzF37DE4Dcz4o01Cn4pWmG2+BPANe5+GXA5cL2ZvQL4JPBZd98NnAXeH2INIsvWMzhBS10VjTVLv0JpvKlGffxStEILfs8YDX6sCm4OXAN8K1h+B/C2sGoQWYnMGP6ltfaz4k019A3r7F0pTqH28ZtZzMz2AX3AHuAwMOju2TNbuoFN87z2ZjPba2Z7+/v7wyxTZE4nhybZ0LK0A7tZ8aYaBtTilyIVavC7e8rdLwc2A1cBF8612jyvvd3du9y9Kx6Ph1mmyJz6RhLnLqW4VPHGGk6PTZFMpfNclcjKFWRUj7sPAj8CXgG0mlm203Qz0FOIGkSWIplKc3osQbxp+S1+dzgzNpXnykRWLsxRPXEzaw0e1wGvA54C7gNuDFa7CbgrrBpElmtgdAr35y+luFTZsfx9GtkjRWjpwxVytwG4w8xiZL5gvunu3zOzJ4Gvm9mfAY8AXwyxBpFlyU6rvNLg18geKUahBb+7Pwq8dI7lR8j094sUreylEzual9nV05h5ncbySzHSmbsic8h20Sy3xd/elDkvUcEvxUjBLzKHbFfPUq68NVN9dSWNNZUKfilKCn6ROfSNJFjbUE115fL/RDp09q4UKQW/yBz6hhPL7ubJam/SfD1SnBT8InPoG5lc9oHdrHhTDQMKfilCCn6ROeSjxa8ZOqVYKfhFZkmnnYHRPAR/Uw0jiSQTU6k8VSaSHwp+kVnOjE+RTHtegh/QZG1SdBT8IrOs9OStLE3bIMVKwS8yy0qna8iKN+rau1KcFPwis2Rb6OtW2OLv0Hw9UqQU/CKzZFvo8RW2+Nc2VGOmFr8UHwW/yCx9w5M011ZSWxVb0ftUxipoa6hW8EvRUfCLzNI7nFjxgd2sdo3llyKk4BeZpW9kcsUHdrPimq9HipCCX2SWvpGVn7yVpWkbpBgp+EVmcPdM8OepqyceTNTm7nl5P5F8CPOau1vM7D4ze8rMnjCz/xgs/7iZnTCzfcHtTWHVILJUwxNJppLp/LX4G2uYSqUZnkjm5f1E8iHMa+4mgd9z91+aWRPwsJntCZ77rLv/zxC3LbIs507eymOLH6B/dJKW+qq8vKfISoXW4nf3k+7+y+DxCPAUsCms7Ynkw0ovuTibpm2QYlSQPn4z6yRz4fUHgkUfNrNHzexLZrZmntfcbGZ7zWxvf39/IcoUydt0DVnnzt5V8EsRCT34zawR+Dbwu+4+DPwVsBO4HDgJfHqu17n77e7e5e5d8Xg87DJFgMwYfshjV09j5n0U/FJMQg1+M6siE/p/7+7fAXD3XndPuXsa+GvgqjBrEFmKvuEE9dUxGmvyc/irua6S6liFxvJLUQlzVI8BXwSecvfPzFi+YcZqvwY8HlYNIkuVz5O3AMzs3JBOkWIR5qieVwHvBR4zs33Bsj8A3m1mlwMOHAM+GGINIkuSOXkrP908WbrouhSb0ILf3e8HbI6nvh/WNkVWqn8kwUUbm/P6nh1NNRw/M57X9xRZCZ25KzJD3/Ak6/Lc4o831ejyi1JUFPwigdFEkrGpFB3N+evjh8zZu6fHpphKpvP6viLLpeAXCfQN53cMf9am1jrcoTd4f5GoKfhFAs+ftZvfrp6NrXUAnBicyOv7iiyXgl8kcC7489zVs7E180XSo+CXIqHgFwmE1dWTbfEr+KVYKPhFAv0jCaorK2ipy+8smrVVMdoaqjkxqD5+KQ4KfpFA9spbmZPO82tja51a/FI0FPwigXxP1zDTptY6HdyVopFT8JvZt83sV81MXxSyavUO53+6hqxsi1+XYJRikGuQ/xXwG8BBM7vVzC4IsSaRSPQNT+Z9RE/WxtZaxqdSDE1Mh/L
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"portfolio_val['Daily Return'].plot(kind='kde')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ratio de Sharpe\n",
"\n",
"Le ratio de Sharpe est une mesure permettant de calculer le rendement ajusté en fonction du risque, et ce ratio est devenu la norme de l'industrie pour de tels calculs. \n",
"\n",
"Le ratio de Sharpe mesure la rentabilité excédentaire par rapport au taux de l'argent sans risque d'un portefeuille d'actifs divisé par l'écart type de cette rentabilité. C'est donc une mesure de la rentabilité marginale par unité de risque. Il permet de mesurer les performances de gérants pratiquant des politiques de risque différentes.\n",
"\n",
"Ratio de Sharpe = (Rendement moyen du portefeuille - Taux sans risque)/Écart type du rendement du portefeuille\n",
"\n",
"Le rapport de Sharpe original\n",
"\n",
"Ratio de Sharpe Annuel = K-value * SR\n",
"\n",
"K-values pour divers taux d'échantillonnage:\n",
"\n",
"* Daily = sqrt(252)\n",
"* Weekly = sqrt(52)\n",
"* Monthly = sqrt(12)\n",
"\n",
"Aux USA, on utilise un taux sans risque très bas (le taux que vous obtiendriez si vous placez votre argent dans une banque, il est actuellement très bas aux USA, disons juste son rendement de ~0%). Si vous êtes dans un pays différent avec des taux plus élevés pour votre devise de trading, vous pouvez utiliser cette astuce pour convertir un taux annuel avec un taux quotidien :\n",
"\n",
"daily_rate = ((1.0 + yearly_rate)**(1/252))-1\n",
"\n",
"D'autres valeurs que les gens utilisent sont des choses comme le bon du Trésor à 3 mois: [LIBOR](http://www.investopedia.com/terms/l/libor.asp) ou [WIkipédia LIBOR](https://fr.wikipedia.org/wiki/Libor)\n",
"\n",
"Plus de lectures sur le Sharpe Ratio (SR): https://educationfinance.ca/investissements/ratio-de-sharpe/"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"SR = portfolio_val['Daily Return'].mean()/portfolio_val['Daily Return'].std()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0699670723571809"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SR"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"ASR = (252**0.5)*SR"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.1106928405221748"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ASR"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.012896893878458078"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val['Daily Return'].std()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.0009023579071769599"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"portfolio_val['Daily Return'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a22c095d0>"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD4CAYAAADrRI2NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXRkZ3nn8e+j0r53S6Xeu9WbV7xgZAND4BgbgyGACXgIJBAPAzEzBGYyk8nBJJMEMsmM4QwwzOQk2GFzFrYAYxtCzDSOgZjFdht3e2/3arda3Vq6W7tUUlU980fdasuylpJUt26V6vc5p06Vbt2q+9wu6Vdvv/e97zV3R0REykdF1AWIiEhhKfhFRMqMgl9EpMwo+EVEyoyCX0SkzFRGXUAu2tvbvbOzM+oyRERKysMPPzzg7vHZy0si+Ds7O9m7d2/UZYiIlBQze3au5erqEREpMwp+EZEyo+AXESkzCn4RkTKj4BcRKTMKfhGRMqPgFxEpMwp+kWU6NTTJ5398mAOnRqIuRWRJFPwiyzA0Mc07b/s5t/7T09z4+Z/RNzwZdUkiOVPwiyzDbT8+zHNnxvnUjZcylkjypZ8ei7okkZwp+EWWaCqZ5qsPPscbX7Ked3Zt4doL13HnIyfQ1eykVCj4RZbovgN9DI5P884rtwBw3YXrODU8ydPq65cSoeAXWaK79/fQ3ljNq3e1A/Ca8zKTH/7s8OkoyxLJmYJfZAmSqTQ/eaafay7ooDKW+fNZ31LL+uZaHusejLg6kdwo+EWWYH/3ICOTyXOt/KxLNrfwaPdQRFWJLI2CX2QJfvLMABUGvxJ082S9ZGMLRwbGGJ9KRlSZSO4U/CJLsPfZM1y4oZnW+uoXLN/Z0QDA0YGxKMoSWRIFv0iOUmln//Ehrti65kXP7WhvBOBIv4Jfip+CXyRHh/pGGU0keenW1hc9t7090+JX8EspUPCL5OiR584CcPmWFwd/XXWMTa11HBkYLXRZIkum4BfJ0b7jg7TUVZ1r3c+2I96gFr+UhNCC38xqzexBM9tvZk+Y2SeC5V8xs6Nmti+4XR5WDSL5tO/4IJdvacXM5nx+e3sDx04r+KX4VYb43gngGncfNbMq4H4z+6fgud9392+FuG2RvJpOpTncP8prL+iYd51NrXWMTCYZnpymubaqgNWJLE1oLX7PyHZ4VgU3zWIlJenowBjTKef8dU3zrrOxtQ6AnsGJQpUlsiyh9vGbWczM9gF9wB53fyB46s/N7FEz+6yZ1czz2pvNbK+Z7e3v7w+zTJFFZS+2ct4Cwb9pjYJfSkOowe/uKXe/HNgMXGVmLwE+BlwAXAmsBT46z2tvd/cud++Kx+NzrSJSMAdOjRCrsHMnas1lU9DiPzGoi7JIcSvIqB53HwR+BFzv7ieDbqAE8GXgqkLUILISB3pH2N7eQE1lbN514o01VMVMLX4pemGO6ombWWvwuA54HfC0mW0IlhnwNuDxsGoQyZdnekcW7N8HqKgwNrTUceKsgl+KW5ijejYAd5hZjMwXzDfd/Xtm9s9mFgcM2Af8uxBrEFmxiakUz50Z5+0v3bzoupta6zihFr8UudCC390fBV46x/JrwtqmSBiePTOGe+YErcVsaKnlgaNnClCVyPLpzF2RRRwbGAegs23x4I8319A/ktD1d6WoKfhFFvFscDbu1rb6RdftaKplKpVmaGI67LJElk3BL7KIY6fHWdtQTUvd4mfjrmvOnJbSO5wIuyyRZVPwiyzi2dNjbMuhtQ+ZFj9A34jG8kvxUvCLLOLYwBjbc+jfB+hoUotfip+CX2QBk9MpeoYm2ZZr8AddPWrxSzFT8Iss4PiZYERPe25dPfXVlTTVVNKnFr8UMQW/yAKeC4J/y9rcgh8yQzrV4pdipuAXWUB23p3NwQRsuVjXVKs+filqCn6RBZwYnKQqZrQ3zjl7+Jw61OKXIqfgF1nAyaEJNrTUUVEx9+UW59LRVEPfsM7eleKl4BdZQM/gBBtba5f0mo6mWhLJNMMTyZCqElkZBb/IAnoGJ9nYknv/Pjw/pLN/VP38UpwU/CLzSKbSnBqePHct3VzFg+MB/SMKfilOCn6RefSNJEilfenB36QWvxQ3Bb/IPLJDOZfax38u+NXilyKl4BeZR/ZKWpuW2OJvqauiKmYKfilaYV5zt9bMHjSz/Wb2hJl9Ili+3cweMLODZvYNM6sOqwaRlegZzIzF37DE4Dcz4o01Cn4pWmG2+BPANe5+GXA5cL2ZvQL4JPBZd98NnAXeH2INIsvWMzhBS10VjTVLv0JpvKlGffxStEILfs8YDX6sCm4OXAN8K1h+B/C2sGoQWYnMGP6ltfaz4k019A3r7F0pTqH28ZtZzMz2AX3AHuAwMOju2TNbuoFN87z2ZjPba2Z7+/v7wyxTZE4nhybZ0LK0A7tZ8aYaBtTilyIVavC7e8rdLwc2A1cBF8612jyvvd3du9y9Kx6Ph1mmyJz6RhLnLqW4VPHGGk6PTZFMpfNclcjKFWRUj7sPAj8CXgG0mlm203Qz0FOIGkSWIplKc3osQbxp+S1+dzgzNpXnykRWLsxRPXEzaw0e1wGvA54C7gNuDFa7CbgrrBpElmtgdAr35y+luFTZsfx9GtkjRWjpwxVytwG4w8xiZL5gvunu3zOzJ4Gvm9mfAY8AXwyxBpFlyU6rvNLg18geKUahBb+7Pwq8dI7lR8j094sUreylEzual9nV05h5ncbySzHSmbsic8h20Sy3xd/elDkvUcEvxUjBLzKHbFfPUq68NVN9dSWNNZUKfilKCn6ROfSNJFjbUE115fL/RDp09q4UKQW/yBz6hhPL7ubJam/SfD1SnBT8InPoG5lc9oHdrHhTDQMKfilCCn6ROeSjxa8ZOqVYKfhFZkmnnYHRPAR/Uw0jiSQTU6k8VSaSHwp+kVnOjE+RTHtegh/QZG1SdBT8IrOs9OStLE3bIMVKwS8yy0qna8iKN+rau1KcFPwis2Rb6OtW2OLv0Hw9UqQU/CKzZFvo8RW2+Nc2VGOmFr8UHwW/yCx9w5M011ZSWxVb0ftUxipoa6hW8EvRUfCLzNI7nFjxgd2sdo3llyKk4BeZpW9kcsUHdrPimq9HipCCX2SWvpGVn7yVpWkbpBgp+EVmcPdM8OepqyceTNTm7nl5P5F8CPOau1vM7D4ze8rMnjCz/xgs/7iZnTCzfcHtTWHVILJUwxNJppLp/LX4G2uYSqUZnkjm5f1E8iHMa+4mgd9z91+aWRPwsJntCZ77rLv/zxC3LbIs507eymOLH6B/dJKW+qq8vKfISoXW4nf3k+7+y+DxCPAUsCms7Ynkw0ovuTibpm2QYlSQPn4z6yRz4fUHgkUfNrNHzexLZrZmntfcbGZ7zWxvf39/IcoUydt0DVnnzt5V8EsRCT34zawR+Dbwu+4+DPwVsBO4HDgJfHqu17n77e7e5e5d8Xg87DJFgMwYfshjV09j5n0U/FJMQg1+M6siE/p/7+7fAXD3XndPuXsa+GvgqjBrEFmKvuEE9dUxGmvyc/irua6S6liFxvJLUQlzVI8BXwSecvfPzFi+YcZqvwY8HlYNIkuVz5O3AMzs3JBOkWIR5qieVwHvBR4zs33Bsj8A3m1mlwMOHAM+GGINIkuSOXkrP908WbrouhSb0ILf3e8HbI6nvh/WNkVWqn8kwUUbm/P6nh1NNRw/M57X9xRZCZ25KzJD3/Ak6/Lc4o831ejyi1JUFPwigdFEkrGpFB3N+evjh8zZu6fHpphKpvP6viLLpeAXCfQN53cMf9am1jrcoTd4f5GoKfhFAs+ftZvfrp6NrXUAnBicyOv7iiyXgl8kcC7489zVs7E180XSo+CXIqHgFwmE1dWTbfEr+KVYKPhFAv0jCaorK2ipy+8smrVVMdoaqjkxqD5+KQ4KfpFA9spbmZPO82tja51a/FI0FPwigXxP1zDTptY6HdyVopFT8JvZt83sV81MXxSyavUO53+6hqxsi1+XYJRikGuQ/xXwG8BBM7vVzC4IsSaRSPQNT+Z9RE/WxtZaxqdSDE1Mh/L
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"portfolio_val['Daily Return'].plot(kind='kde')"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1a22cc2610>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"aapl['Adj. Close'].pct_change(1).plot(kind='kde')\n",
"ibm['Adj. Close'].pct_change(1).plot(kind='kde')\n",
"amzn['Adj. Close'].pct_change(1).plot(kind='kde')\n",
"cisco['Adj. Close'].pct_change(1).plot(kind='kde')"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12.699606293110037"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"np.sqrt(252)* (np.mean(.001-0.0002)/.001)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Bon Travail!"
]
}
],
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}