{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from trader_factory import build_active_trader_IB" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from IBridgePy.IbridgepyTools import symbol" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "t = build_active_trader_IB('DU1868499') # Build an active trader to get connected to Interactive Brokers" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "hist = t.request_historical_data(symbol('SPY'), '1 day', '1 Y') # Get historical data. Return is a pandas.DataFrame" ] }, { "cell_type": "code", "execution_count": 5, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolume
2019-12-17319.92320.25319.48319.57290316
2019-12-18320.01320.25319.53319.59276219
2019-12-19319.79320.98319.75320.90344693
2019-12-20320.46321.45320.37320.73521812
2019-12-23321.59321.65321.06321.22257147
..................
2020-12-09370.88371.05365.95366.85499276
2020-12-10365.37367.86364.43366.73344586
2020-12-11364.90366.58363.26366.30365387
2020-12-14368.62369.80364.47364.66437356
2020-12-15367.40369.59365.92369.59348842
\n", "

252 rows × 5 columns

\n", "
" ], "text/plain": [ " open high low close volume\n", "2019-12-17 319.92 320.25 319.48 319.57 290316\n", "2019-12-18 320.01 320.25 319.53 319.59 276219\n", "2019-12-19 319.79 320.98 319.75 320.90 344693\n", "2019-12-20 320.46 321.45 320.37 320.73 521812\n", "2019-12-23 321.59 321.65 321.06 321.22 257147\n", "... ... ... ... ... ...\n", "2020-12-09 370.88 371.05 365.95 366.85 499276\n", "2020-12-10 365.37 367.86 364.43 366.73 344586\n", "2020-12-11 364.90 366.58 363.26 366.30 365387\n", "2020-12-14 368.62 369.80 364.47 364.66 437356\n", "2020-12-15 367.40 369.59 365.92 369.59 348842\n", "\n", "[252 rows x 5 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist # print hist to show it" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['open', 'high', 'low', 'close', 'volume'], dtype='object')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.columns # print column names" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index([2019-12-17, 2019-12-18, 2019-12-19, 2019-12-20, 2019-12-23, 2019-12-24,\n", " 2019-12-26, 2019-12-27, 2019-12-30, 2019-12-31,\n", " ...\n", " 2020-12-02, 2020-12-03, 2020-12-04, 2020-12-07, 2020-12-08, 2020-12-09,\n", " 2020-12-10, 2020-12-11, 2020-12-14, 2020-12-15],\n", " dtype='object', length=252)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.index # print index" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2019-12-17 319.92\n", "2019-12-18 320.01\n", "2019-12-19 319.79\n", "2019-12-20 320.46\n", "2019-12-23 321.59\n", " ... \n", "2020-12-09 370.88\n", "2020-12-10 365.37\n", "2020-12-11 364.90\n", "2020-12-14 368.62\n", "2020-12-15 367.40\n", "Name: open, Length: 252, dtype: float64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist['open'] # print out a column" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "open 319.92\n", "high 320.25\n", "low 319.48\n", "close 319.57\n", "volume 290316.00\n", "Name: 2019-12-17, dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.iloc[0] # print out 1st row" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "open 367.40\n", "high 369.59\n", "low 365.92\n", "close 369.59\n", "volume 348842.00\n", "Name: 2020-12-15, dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.iloc[-1] # print out the last row" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "319.92" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.iloc[0]['open'] # print out open price of the 1st row" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "datetime.date" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(hist.index[-1]) # print out the data type of index" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "open 367.40\n", "high 369.59\n", "low 365.92\n", "close 369.59\n", "volume 348842.00\n", "Name: 2020-12-15, dtype: float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import datetime as dt\n", "hist.loc[dt.date(2020,12,15)] # print out the prices of Dec 15th 2020" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "hist['close_yesterday'] = hist['close'].shift(1) # add a new column, call it \"close_yesterday\"" ] }, { "cell_type": "code", "execution_count": 15, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolumeclose_yesterday
2019-12-17319.92320.25319.48319.57290316NaN
2019-12-18320.01320.25319.53319.59276219319.57
2019-12-19319.79320.98319.75320.90344693319.59
2019-12-20320.46321.45320.37320.73521812320.90
2019-12-23321.59321.65321.06321.22257147320.73
.....................
2020-12-09370.88371.05365.95366.85499276370.17
2020-12-10365.37367.86364.43366.73344586366.85
2020-12-11364.90366.58363.26366.30365387366.73
2020-12-14368.62369.80364.47364.66437356366.30
2020-12-15367.40369.59365.92369.59348842364.66
\n", "

252 rows × 6 columns

\n", "
" ], "text/plain": [ " open high low close volume close_yesterday\n", "2019-12-17 319.92 320.25 319.48 319.57 290316 NaN\n", "2019-12-18 320.01 320.25 319.53 319.59 276219 319.57\n", "2019-12-19 319.79 320.98 319.75 320.90 344693 319.59\n", "2019-12-20 320.46 321.45 320.37 320.73 521812 320.90\n", "2019-12-23 321.59 321.65 321.06 321.22 257147 320.73\n", "... ... ... ... ... ... ...\n", "2020-12-09 370.88 371.05 365.95 366.85 499276 370.17\n", "2020-12-10 365.37 367.86 364.43 366.73 344586 366.85\n", "2020-12-11 364.90 366.58 363.26 366.30 365387 366.73\n", "2020-12-14 368.62 369.80 364.47 364.66 437356 366.30\n", "2020-12-15 367.40 369.59 365.92 369.59 348842 364.66\n", "\n", "[252 rows x 6 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "hist['yield_yesterday'] = (hist['close'] - hist['close_yesterday']) / hist['close_yesterday']" ] }, { "cell_type": "code", "execution_count": 17, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolumeclose_yesterdayyield_yesterday
2019-12-17319.92320.25319.48319.57290316NaNNaN
2019-12-18320.01320.25319.53319.59276219319.570.000063
2019-12-19319.79320.98319.75320.90344693319.590.004099
2019-12-20320.46321.45320.37320.73521812320.90-0.000530
2019-12-23321.59321.65321.06321.22257147320.730.001528
........................
2020-12-09370.88371.05365.95366.85499276370.17-0.008969
2020-12-10365.37367.86364.43366.73344586366.85-0.000327
2020-12-11364.90366.58363.26366.30365387366.73-0.001173
2020-12-14368.62369.80364.47364.66437356366.30-0.004477
2020-12-15367.40369.59365.92369.59348842364.660.013519
\n", "

252 rows × 7 columns

\n", "
" ], "text/plain": [ " open high low close volume close_yesterday \\\n", "2019-12-17 319.92 320.25 319.48 319.57 290316 NaN \n", "2019-12-18 320.01 320.25 319.53 319.59 276219 319.57 \n", "2019-12-19 319.79 320.98 319.75 320.90 344693 319.59 \n", "2019-12-20 320.46 321.45 320.37 320.73 521812 320.90 \n", "2019-12-23 321.59 321.65 321.06 321.22 257147 320.73 \n", "... ... ... ... ... ... ... \n", "2020-12-09 370.88 371.05 365.95 366.85 499276 370.17 \n", "2020-12-10 365.37 367.86 364.43 366.73 344586 366.85 \n", "2020-12-11 364.90 366.58 363.26 366.30 365387 366.73 \n", "2020-12-14 368.62 369.80 364.47 364.66 437356 366.30 \n", "2020-12-15 367.40 369.59 365.92 369.59 348842 364.66 \n", "\n", " yield_yesterday \n", "2019-12-17 NaN \n", "2019-12-18 0.000063 \n", "2019-12-19 0.004099 \n", "2019-12-20 -0.000530 \n", "2019-12-23 0.001528 \n", "... ... \n", "2020-12-09 -0.008969 \n", "2020-12-10 -0.000327 \n", "2020-12-11 -0.001173 \n", "2020-12-14 -0.004477 \n", "2020-12-15 0.013519 \n", "\n", "[252 rows x 7 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "hist['yield_tomorrow'] = hist['yield_yesterday'].shift(-1)" ] }, { "cell_type": "code", "execution_count": 19, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolumeclose_yesterdayyield_yesterdayyield_tomorrow
2019-12-17319.92320.25319.48319.57290316NaNNaN0.000063
2019-12-18320.01320.25319.53319.59276219319.570.0000630.004099
2019-12-19319.79320.98319.75320.90344693319.590.004099-0.000530
2019-12-20320.46321.45320.37320.73521812320.90-0.0005300.001528
2019-12-23321.59321.65321.06321.22257147320.730.0015280.000031
...........................
2020-12-09370.88371.05365.95366.85499276370.17-0.008969-0.000327
2020-12-10365.37367.86364.43366.73344586366.85-0.000327-0.001173
2020-12-11364.90366.58363.26366.30365387366.73-0.001173-0.004477
2020-12-14368.62369.80364.47364.66437356366.30-0.0044770.013519
2020-12-15367.40369.59365.92369.59348842364.660.013519NaN
\n", "

252 rows × 8 columns

\n", "
" ], "text/plain": [ " open high low close volume close_yesterday \\\n", "2019-12-17 319.92 320.25 319.48 319.57 290316 NaN \n", "2019-12-18 320.01 320.25 319.53 319.59 276219 319.57 \n", "2019-12-19 319.79 320.98 319.75 320.90 344693 319.59 \n", "2019-12-20 320.46 321.45 320.37 320.73 521812 320.90 \n", "2019-12-23 321.59 321.65 321.06 321.22 257147 320.73 \n", "... ... ... ... ... ... ... \n", "2020-12-09 370.88 371.05 365.95 366.85 499276 370.17 \n", "2020-12-10 365.37 367.86 364.43 366.73 344586 366.85 \n", "2020-12-11 364.90 366.58 363.26 366.30 365387 366.73 \n", "2020-12-14 368.62 369.80 364.47 364.66 437356 366.30 \n", "2020-12-15 367.40 369.59 365.92 369.59 348842 364.66 \n", "\n", " yield_yesterday yield_tomorrow \n", "2019-12-17 NaN 0.000063 \n", "2019-12-18 0.000063 0.004099 \n", "2019-12-19 0.004099 -0.000530 \n", "2019-12-20 -0.000530 0.001528 \n", "2019-12-23 0.001528 0.000031 \n", "... ... ... \n", "2020-12-09 -0.008969 -0.000327 \n", "2020-12-10 -0.000327 -0.001173 \n", "2020-12-11 -0.001173 -0.004477 \n", "2020-12-14 -0.004477 0.013519 \n", "2020-12-15 0.013519 NaN \n", "\n", "[252 rows x 8 columns]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "hist.dropna(inplace=True)" ] }, { "cell_type": "code", "execution_count": 21, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolumeclose_yesterdayyield_yesterdayyield_tomorrow
2019-12-18320.01320.25319.53319.59276219319.570.0000630.004099
2019-12-19319.79320.98319.75320.90344693319.590.004099-0.000530
2019-12-20320.46321.45320.37320.73521812320.90-0.0005300.001528
2019-12-23321.59321.65321.06321.22257147320.730.0015280.000031
2019-12-24321.47321.52320.90321.23122217321.220.0000310.005323
...........................
2020-12-08367.69370.78367.67370.17269841369.090.002926-0.008969
2020-12-09370.88371.05365.95366.85499276370.17-0.008969-0.000327
2020-12-10365.37367.86364.43366.73344586366.85-0.000327-0.001173
2020-12-11364.90366.58363.26366.30365387366.73-0.001173-0.004477
2020-12-14368.62369.80364.47364.66437356366.30-0.0044770.013519
\n", "

250 rows × 8 columns

\n", "
" ], "text/plain": [ " open high low close volume close_yesterday \\\n", "2019-12-18 320.01 320.25 319.53 319.59 276219 319.57 \n", "2019-12-19 319.79 320.98 319.75 320.90 344693 319.59 \n", "2019-12-20 320.46 321.45 320.37 320.73 521812 320.90 \n", "2019-12-23 321.59 321.65 321.06 321.22 257147 320.73 \n", "2019-12-24 321.47 321.52 320.90 321.23 122217 321.22 \n", "... ... ... ... ... ... ... \n", "2020-12-08 367.69 370.78 367.67 370.17 269841 369.09 \n", "2020-12-09 370.88 371.05 365.95 366.85 499276 370.17 \n", "2020-12-10 365.37 367.86 364.43 366.73 344586 366.85 \n", "2020-12-11 364.90 366.58 363.26 366.30 365387 366.73 \n", "2020-12-14 368.62 369.80 364.47 364.66 437356 366.30 \n", "\n", " yield_yesterday yield_tomorrow \n", "2019-12-18 0.000063 0.004099 \n", "2019-12-19 0.004099 -0.000530 \n", "2019-12-20 -0.000530 0.001528 \n", "2019-12-23 0.001528 0.000031 \n", "2019-12-24 0.000031 0.005323 \n", "... ... ... \n", "2020-12-08 0.002926 -0.008969 \n", "2020-12-09 -0.008969 -0.000327 \n", "2020-12-10 -0.000327 -0.001173 \n", "2020-12-11 -0.001173 -0.004477 \n", "2020-12-14 -0.004477 0.013519 \n", "\n", "[250 rows x 8 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LinearRegression\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(250, 8)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist.shape" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-0.31591508]\n", "0.0010464284461400627\n" ] } ], "source": [ "x = hist['yield_yesterday']\n", "y = hist['yield_tomorrow']\n", "model = LinearRegression()\n", "model.fit(hist.loc[:, ['yield_yesterday']], y)\n", "print(model.coef_)\n", "print(model.intercept_)\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "preds = model.predict(hist.loc[:, [\"yield_yesterday\"]])" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.02665719e-03, -2.48508043e-04, 1.21378763e-03, 5.63784514e-04,\n", " 1.03659360e-03, -6.35278692e-04, 1.12468820e-03, 2.78813953e-03,\n", " 2.78975596e-04, -1.90797529e-03, 3.43861945e-03, -1.58793310e-04,\n", " 1.93470777e-03, -6.37251208e-04, -1.09569876e-03, 1.95553659e-03,\n", " -1.12620910e-03, 1.52807973e-03, 3.32496066e-04, -1.58146443e-03,\n", " 6.31317862e-05, 1.66503005e-03, 1.00828597e-03, 6.84118644e-04,\n", " 3.85587461e-03, 6.11037121e-03, -2.26408814e-03, 1.30736353e-03,\n", " 2.11697876e-05, 6.78280148e-03, -1.30037489e-03, -3.76851814e-03,\n", " -2.60177339e-03, -1.65556545e-05, 2.73014855e-03, -1.31199839e-03,\n", " 4.98948031e-04, -9.88936850e-04, 1.38348442e-03, 5.40304485e-04,\n", " 1.86054609e-03, -4.64049611e-04, 2.34430029e-03, 4.29980527e-03,\n", " 1.15238807e-02, 1.06193157e-02, 2.20843817e-03, 1.52347172e-02,\n", " 2.37375811e-03, -1.26347653e-02, 1.00918471e-02, -1.22324428e-02,\n", " 1.15479845e-02, 6.26885585e-03, 2.57176692e-02, -1.53005612e-02,\n", " 1.64467682e-02, 3.12723025e-02, -2.59599752e-02, 3.56150359e-02,\n", " -1.60104832e-02, 1.70421286e-02, 3.75108905e-04, 1.64277663e-02,\n", " 9.12380261e-03, -2.75765120e-02, -3.68287809e-03, -1.73997658e-02,\n", " 1.04561502e-02, -9.21314497e-03, 5.75527158e-03, 1.52641391e-02,\n", " -6.24342589e-03, 5.61272668e-03, -2.01724134e-02, 7.24382568e-04,\n", " -9.55834731e-03, -3.76094986e-03, 3.93077172e-03, -8.27080868e-03,\n", " 7.75902552e-03, -4.77643432e-04, -7.48814587e-03, 6.61219437e-03,\n", " 1.06386509e-02, -5.96516463e-03, 1.06906657e-03, -3.35700302e-03,\n", " -3.50858982e-03, 2.49916457e-03, -7.22377344e-03, 3.98782937e-03,\n", " 9.40978204e-03, 1.75061845e-04, -1.87241877e-03, 3.18792623e-03,\n", " -2.76566907e-03, -4.18075375e-03, 9.81612057e-04, 7.34312898e-03,\n", " 6.63365225e-03, -2.73423140e-03, -4.05825309e-04, -8.57624685e-03,\n", " 4.29125112e-03, -4.32035166e-03, 3.22750113e-03, 4.46481200e-04,\n", " -2.84583694e-03, -3.65406005e-03, 1.62927839e-03, -3.61253357e-04,\n", " -2.30436520e-04, -1.56939596e-03, -3.15784259e-03, 1.87623934e-03,\n", " -7.05031592e-03, -2.77217305e-03, 3.40210709e-03, 2.80922651e-03,\n", " 1.92585861e-02, -2.73685981e-03, -1.90284614e-03, -5.03420374e-03,\n", " 2.35870350e-03, 9.24790092e-04, 4.22807366e-03, -9.80242935e-04,\n", " -4.07948484e-04, 9.10502170e-03, -2.34034243e-03, 8.54986125e-03,\n", " -3.59674934e-03, -3.00030612e-03, -1.16649336e-03, -6.93281666e-04,\n", " -3.83045935e-03, 4.30472306e-03, -1.36990207e-03, 2.84492026e-03,\n", " -2.17924558e-03, 3.78192536e-03, -3.04750345e-03, -1.85596457e-03,\n", " 2.08688202e-03, 1.30561297e-04, -1.50665872e-03, 3.74310155e-04,\n", " -7.51802054e-04, 4.81583677e-03, 3.08105615e-03, -1.25736513e-03,\n", " 3.05009750e-03, -2.83894242e-03, 2.17358608e-03, -1.44999889e-03,\n", " -1.14984507e-03, -1.73840265e-04, -9.15717559e-04, -1.06531608e-03,\n", " 8.19647664e-04, 1.02186349e-04, 3.65418470e-03, -3.35815678e-03,\n", " 1.61751723e-03, 1.03704938e-03, 4.28981830e-05, 3.63944923e-04,\n", " 2.36180838e-03, 6.27946287e-05, -7.42351876e-05, -2.15478479e-03,\n", " -5.90716531e-05, -2.12080107e-03, 3.55645411e-04, -9.94190870e-04,\n", " 2.19085240e-03, -1.92903921e-03, -3.52296151e-03, 1.19184290e-02,\n", " 3.62577504e-03, 9.67813914e-03, -5.19204344e-03, 6.53187229e-03,\n", " 8.85580372e-04, -3.11457959e-03, -5.49667943e-04, 2.30017027e-03,\n", " 3.82497438e-03, 5.92851294e-03, 4.56243476e-03, -2.17098358e-03,\n", " 8.37282718e-03, 2.04353789e-04, -4.06094670e-03, -4.20072371e-03,\n", " 2.76690315e-03, -1.34881179e-03, -9.81752206e-04, 4.04585952e-03,\n", " -4.55570810e-03, 5.53745102e-03, -4.45258600e-03, -1.75338238e-03,\n", " -1.77473419e-03, -4.03590149e-03, 3.10812773e-03, 3.03144308e-03,\n", " 1.43686182e-03, 1.23734116e-03, 5.84942195e-03, -2.19042322e-04,\n", " 1.64443882e-03, -6.86481854e-04, -2.61482106e-05, 6.88452594e-03,\n", " 2.13550191e-03, 1.18440699e-02, -2.16436584e-03, 4.33980341e-03,\n", " -2.49448289e-03, -4.53135746e-03, -6.01401925e-03, -5.11480758e-03,\n", " 1.11858813e-03, -2.92326068e-03, 1.50975155e-03, -1.30035908e-03,\n", " 4.11107131e-03, -3.32724368e-03, -2.89699630e-03, 2.74550560e-03,\n", " 4.84841236e-03, -2.83628300e-04, 3.20974652e-03, -8.47301655e-04,\n", " -4.04412952e-03, 1.53349536e-03, 1.66612009e-04, 2.44501309e-03,\n", " -2.40886546e-03, 3.81834680e-04, 1.13255813e-03, -1.67601189e-03,\n", " 1.69559827e-03, 1.22024413e-04, 3.87982408e-03, 1.14976717e-03,\n", " 1.41684669e-03, 2.46084485e-03])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "preds" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "hist.plot.scatter(x = \"yield_yesterday\", y = \"yield_tomorrow\")\n", "plt.plot(hist['yield_yesterday'], preds, color=\"black\")" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'/Users/huiliu/Documents/YellowstoneIBridgePy'" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "os.getcwd()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "hist.to_csv(os.path.join(os.getcwd(), 'Output', 'myHist.csv'))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "newHist = pd.read_csv(os.path.join(os.getcwd(), 'Output', 'myHist.csv'), header=0)" ] }, { "cell_type": "code", "execution_count": 31, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0openhighlowclosevolumeclose_yesterdayyield_yesterdayyield_tomorrow
02019-12-18320.01320.25319.53319.59276219319.570.0000630.004099
12019-12-19319.79320.98319.75320.90344693319.590.004099-0.000530
22019-12-20320.46321.45320.37320.73521812320.90-0.0005300.001528
32019-12-23321.59321.65321.06321.22257147320.730.0015280.000031
42019-12-24321.47321.52320.90321.23122217321.220.0000310.005323
..............................
2452020-12-08367.69370.78367.67370.17269841369.090.002926-0.008969
2462020-12-09370.88371.05365.95366.85499276370.17-0.008969-0.000327
2472020-12-10365.37367.86364.43366.73344586366.85-0.000327-0.001173
2482020-12-11364.90366.58363.26366.30365387366.73-0.001173-0.004477
2492020-12-14368.62369.80364.47364.66437356366.30-0.0044770.013519
\n", "

250 rows × 9 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 open high low close volume close_yesterday \\\n", "0 2019-12-18 320.01 320.25 319.53 319.59 276219 319.57 \n", "1 2019-12-19 319.79 320.98 319.75 320.90 344693 319.59 \n", "2 2019-12-20 320.46 321.45 320.37 320.73 521812 320.90 \n", "3 2019-12-23 321.59 321.65 321.06 321.22 257147 320.73 \n", "4 2019-12-24 321.47 321.52 320.90 321.23 122217 321.22 \n", ".. ... ... ... ... ... ... ... \n", "245 2020-12-08 367.69 370.78 367.67 370.17 269841 369.09 \n", "246 2020-12-09 370.88 371.05 365.95 366.85 499276 370.17 \n", "247 2020-12-10 365.37 367.86 364.43 366.73 344586 366.85 \n", "248 2020-12-11 364.90 366.58 363.26 366.30 365387 366.73 \n", "249 2020-12-14 368.62 369.80 364.47 364.66 437356 366.30 \n", "\n", " yield_yesterday yield_tomorrow \n", "0 0.000063 0.004099 \n", "1 0.004099 -0.000530 \n", "2 -0.000530 0.001528 \n", "3 0.001528 0.000031 \n", "4 0.000031 0.005323 \n", ".. ... ... \n", "245 0.002926 -0.008969 \n", "246 -0.008969 -0.000327 \n", "247 -0.000327 -0.001173 \n", "248 -0.001173 -0.004477 \n", "249 -0.004477 0.013519 \n", "\n", "[250 rows x 9 columns]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newHist" ] }, { "cell_type": "code", "execution_count": 32, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
openhighlowclosevolumeclose_yesterdayyield_yesterdayyield_tomorrow
Unnamed: 0
2019-12-18320.01320.25319.53319.59276219319.570.0000630.004099
2019-12-19319.79320.98319.75320.90344693319.590.004099-0.000530
2019-12-20320.46321.45320.37320.73521812320.90-0.0005300.001528
2019-12-23321.59321.65321.06321.22257147320.730.0015280.000031
2019-12-24321.47321.52320.90321.23122217321.220.0000310.005323
...........................
2020-12-08367.69370.78367.67370.17269841369.090.002926-0.008969
2020-12-09370.88371.05365.95366.85499276370.17-0.008969-0.000327
2020-12-10365.37367.86364.43366.73344586366.85-0.000327-0.001173
2020-12-11364.90366.58363.26366.30365387366.73-0.001173-0.004477
2020-12-14368.62369.80364.47364.66437356366.30-0.0044770.013519
\n", "

250 rows × 8 columns

\n", "
" ], "text/plain": [ " open high low close volume close_yesterday \\\n", "Unnamed: 0 \n", "2019-12-18 320.01 320.25 319.53 319.59 276219 319.57 \n", "2019-12-19 319.79 320.98 319.75 320.90 344693 319.59 \n", "2019-12-20 320.46 321.45 320.37 320.73 521812 320.90 \n", "2019-12-23 321.59 321.65 321.06 321.22 257147 320.73 \n", "2019-12-24 321.47 321.52 320.90 321.23 122217 321.22 \n", "... ... ... ... ... ... ... \n", "2020-12-08 367.69 370.78 367.67 370.17 269841 369.09 \n", "2020-12-09 370.88 371.05 365.95 366.85 499276 370.17 \n", "2020-12-10 365.37 367.86 364.43 366.73 344586 366.85 \n", "2020-12-11 364.90 366.58 363.26 366.30 365387 366.73 \n", "2020-12-14 368.62 369.80 364.47 364.66 437356 366.30 \n", "\n", " yield_yesterday yield_tomorrow \n", "Unnamed: 0 \n", "2019-12-18 0.000063 0.004099 \n", "2019-12-19 0.004099 -0.000530 \n", "2019-12-20 -0.000530 0.001528 \n", "2019-12-23 0.001528 0.000031 \n", "2019-12-24 0.000031 0.005323 \n", "... ... ... \n", "2020-12-08 0.002926 -0.008969 \n", "2020-12-09 -0.008969 -0.000327 \n", "2020-12-10 -0.000327 -0.001173 \n", "2020-12-11 -0.001173 -0.004477 \n", "2020-12-14 -0.004477 0.013519 \n", "\n", "[250 rows x 8 columns]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "newHist.set_index('Unnamed: 0')" ] }, { "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.6" } }, "nbformat": 4, "nbformat_minor": 4 }