{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 买低卖空\n", "\n", "## 获取GOOG股票数据" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "High Low ... Volume Adj Close\n", "Date ... \n", "2013-12-31 558.406982 551.064453 ... 2725900.0 558.262512\n", "2014-01-02 556.788025 552.060730 ... 3656400.0 554.481689\n", "2014-01-03 556.379578 550.401978 ... 3345800.0 550.436829\n", "2014-01-06 557.340942 551.154114 ... 3551800.0 556.573853\n", "2014-01-07 567.717041 558.486633 ... 5124300.0 567.303589\n", "... ... ... ... ... ...\n", "2017-12-22 1064.199951 1059.439941 ... 755100.0 1060.119995\n", "2017-12-26 1060.119995 1050.199951 ... 760600.0 1056.739990\n", "2017-12-27 1058.369995 1048.050049 ... 1271900.0 1049.369995\n", "2017-12-28 1054.750000 1044.770020 ... 837100.0 1048.140015\n", "2017-12-29 1049.699951 1044.900024 ... 887500.0 1046.400024\n", "\n", "[1008 rows x 6 columns]\n" ] } ], "source": [ "import pandas as pd\n", "from pandas_datareader import data\n", "\n", "start_date = '2014-01-01'\n", "end_date = '2018-01-01'\n", "goog_data = data.DataReader('GOOG', 'yahoo', start_date, end_date)\n", "print(goog_data)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "DatetimeIndex: 1008 entries, 2013-12-31 to 2017-12-29\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 High 1008 non-null float64\n", " 1 Low 1008 non-null float64\n", " 2 Open 1008 non-null float64\n", " 3 Close 1008 non-null float64\n", " 4 Volume 1008 non-null float64\n", " 5 Adj Close 1008 non-null float64\n", "dtypes: float64(6)\n", "memory usage: 55.1 KB\n" ] } ], "source": [ "goog_data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Google 数据结构如上所见,我们要用 Adj Close 来产生交易信号\n", "\n", "## 准备交易信号" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "DatetimeIndex: 1008 entries, 2013-12-31 to 2017-12-29\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 price 1008 non-null float64\n", " 1 daily_difference 1007 non-null float64\n", "dtypes: float64(2)\n", "memory usage: 23.6 KB\n" ] } ], "source": [ "# 准备新的数据集,包括时间、价格、每日价差、交易信号\n", "goog_data_signal = pd.DataFrame(index=goog_data.index)\n", "goog_data_signal['price'] = goog_data['Adj Close']\n", "goog_data_signal['daily_difference'] = goog_data_signal['price'].diff()\n", "goog_data_signal.info()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pricedaily_differencesignalpositions
Date
2013-12-31558.262512NaN0.0NaN
2014-01-02554.481689-3.7808230.00.0
2014-01-03550.436829-4.0448610.00.0
2014-01-06556.5738536.1370241.01.0
2014-01-07567.30358910.7297361.00.0
\n", "
" ], "text/plain": [ " price daily_difference signal positions\n", "Date \n", "2013-12-31 558.262512 NaN 0.0 NaN\n", "2014-01-02 554.481689 -3.780823 0.0 0.0\n", "2014-01-03 550.436829 -4.044861 0.0 0.0\n", "2014-01-06 556.573853 6.137024 1.0 1.0\n", "2014-01-07 567.303589 10.729736 1.0 0.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 将每日价差转换为交易信号(挂单)\n", "import numpy as np\n", "goog_data_signal['signal'] = 0.0\n", "goog_data_signal['signal'] = np.where(goog_data_signal['daily_difference'] > 0, 1.0, 0.0)\n", "goog_data_signal.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "0 为 买入, 1 为 卖出\n", "\n", "在资金有限情况下,我们不能在市场持续上升、下降的时候不停地卖出、买入。因此要限制仓位数量\n", "\n", "为了简化,我们保证算法不会持续买卖(连续两天内不会连续购买)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pricedaily_differencesignalpositions
Date
2013-12-31558.262512NaN0.0NaN
2014-01-02554.481689-3.7808230.00.0
2014-01-03550.436829-4.0448610.00.0
2014-01-06556.5738536.1370241.01.0
2014-01-07567.30358910.7297361.00.0
\n", "
" ], "text/plain": [ " price daily_difference signal positions\n", "Date \n", "2013-12-31 558.262512 NaN 0.0 NaN\n", "2014-01-02 554.481689 -3.780823 0.0 0.0\n", "2014-01-03 550.436829 -4.044861 0.0 0.0\n", "2014-01-06 556.573853 6.137024 1.0 1.0\n", "2014-01-07 567.303589 10.729736 1.0 0.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "goog_data_signal['positions'] = goog_data_signal['signal'].diff()\n", "goog_data_signal.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 图表化" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig = plt.figure()\n", "ax1 = fig.add_subplot(111, ylabel='Google price in $')\n", "\n", "goog_data_signal['price'].plot(ax=ax1, color='r', lw=2.)\n", "ax1.plot(goog_data_signal.loc[goog_data_signal.positions == 1.0].index, goog_data_signal.price[goog_data_signal.positions == 1.0], '^', markersize=5, color='m')\n", "ax1.plot(goog_data_signal.loc[goog_data_signal.positions == -1.0].index, goog_data_signal.price[goog_data_signal.positions == -1.0], 'v', markersize=5, color='k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "加入向上的箭头来表示买入, 加入向下箭头表示卖出加入向下箭头表示卖出\n", "\n", "## 回测" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "DatetimeIndex: 1008 entries, 2013-12-31 to 2017-12-29\n", "Empty DataFrame\n", "DatetimeIndex: 1008 entries, 2013-12-31 to 2017-12-29\n", "Empty DataFrame" ] } ], "source": [ "initial_capital = float(1000)\n", "\n", "positions = pd.DataFrame(index=goog_data_signal.index).fillna(0.0)\n", "portfolio = pd.DataFrame(index=goog_data_signal.index).fillna(0.0)\n", "positions.info()\n", "portfolio.info()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GOOG
Date
2013-12-310.0
2014-01-020.0
2014-01-030.0
2014-01-061.0
2014-01-071.0
\n", "
" ], "text/plain": [ " GOOG\n", "Date \n", "2013-12-31 0.0\n", "2014-01-02 0.0\n", "2014-01-03 0.0\n", "2014-01-06 1.0\n", "2014-01-07 1.0" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "positions['GOOG'] = goog_data_signal['signal']\n", "positions.head()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
positions
Date
2013-12-310.000000
2014-01-020.000000
2014-01-030.000000
2014-01-06556.573853
2014-01-07567.303589
\n", "
" ], "text/plain": [ " positions\n", "Date \n", "2013-12-31 0.000000\n", "2014-01-02 0.000000\n", "2014-01-03 0.000000\n", "2014-01-06 556.573853\n", "2014-01-07 567.303589" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "portfolio['positions'] = positions.multiply(goog_data_signal['price'], axis=0)\n", "portfolio.head()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
positionscash
Date
2013-12-310.000000NaN
2014-01-020.0000001000.000000
2014-01-030.0000001000.000000
2014-01-06556.573853443.426147
2014-01-07567.303589443.426147
\n", "
" ], "text/plain": [ " positions cash\n", "Date \n", "2013-12-31 0.000000 NaN\n", "2014-01-02 0.000000 1000.000000\n", "2014-01-03 0.000000 1000.000000\n", "2014-01-06 556.573853 443.426147\n", "2014-01-07 567.303589 443.426147" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 计算cash\n", "portfolio['cash'] = initial_capital - (positions.diff().multiply(goog_data_signal['price'], axis=0)).cumsum()\n", "portfolio.head()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "portfolio['total'] = portfolio['positions'] + portfolio['cash']" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "image/svg+xml": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(portfolio['total'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.3" } }, "nbformat": 4, "nbformat_minor": 2 }