Repository: huseinzol05/Stock-Prediction-Models
Branch: master
Commit: 33266732b0b1
Files: 114
Total size: 14.9 MB
Directory structure:
gitextract_w7zipbjz/
├── .gitignore
├── LICENSE
├── README.md
├── agent/
│ ├── 1.turtle-agent.ipynb
│ ├── 10.duel-q-learning-agent.ipynb
│ ├── 11.double-duel-q-learning-agent.ipynb
│ ├── 12.duel-recurrent-q-learning-agent.ipynb
│ ├── 13.double-duel-recurrent-q-learning-agent.ipynb
│ ├── 14.actor-critic-agent.ipynb
│ ├── 15.actor-critic-duel-agent.ipynb
│ ├── 16.actor-critic-recurrent-agent.ipynb
│ ├── 17.actor-critic-duel-recurrent-agent.ipynb
│ ├── 18.curiosity-q-learning-agent.ipynb
│ ├── 19.recurrent-curiosity-q-learning-agent.ipynb
│ ├── 2.moving-average-agent.ipynb
│ ├── 20.duel-curiosity-q-learning-agent.ipynb
│ ├── 21.neuro-evolution-agent.ipynb
│ ├── 22.neuro-evolution-novelty-search-agent.ipynb
│ ├── 23.abcd-strategy-agent.ipynb
│ ├── 3.signal-rolling-agent.ipynb
│ ├── 4.policy-gradient-agent.ipynb
│ ├── 5.q-learning-agent.ipynb
│ ├── 6.evolution-strategy-agent.ipynb
│ ├── 7.double-q-learning-agent.ipynb
│ ├── 8.recurrent-q-learning-agent.ipynb
│ ├── 9.double-recurrent-q-learning-agent.ipynb
│ └── updated-NES-google.ipynb
├── dataset/
│ ├── AMD.csv
│ ├── BTC-sentiment.csv
│ ├── FB.csv
│ ├── FSV.csv
│ ├── GOOG-year.csv
│ ├── GOOG.csv
│ ├── INFY.csv
│ ├── KNX.csv
│ ├── MONDY.csv
│ ├── MTDR.csv
│ ├── SINA.csv
│ ├── TMUS.csv
│ ├── TSLA.csv
│ ├── TWTR.csv
│ ├── eur-myr.csv
│ ├── oil.csv
│ └── usd-myr.csv
├── deep-learning/
│ ├── 1.lstm.ipynb
│ ├── 10.lstm-seq2seq.ipynb
│ ├── 11.bidirectional-lstm-seq2seq.ipynb
│ ├── 12.lstm-seq2seq-vae.ipynb
│ ├── 13.gru-seq2seq.ipynb
│ ├── 14.bidirectional-gru-seq2seq.ipynb
│ ├── 15.gru-seq2seq-vae.ipynb
│ ├── 16.attention-is-all-you-need.ipynb
│ ├── 17.cnn-seq2seq.ipynb
│ ├── 18.dilated-cnn-seq2seq.ipynb
│ ├── 2.bidirectional-lstm.ipynb
│ ├── 3.lstm-2path.ipynb
│ ├── 4.gru.ipynb
│ ├── 5.bidirectional-gru.ipynb
│ ├── 6.gru-2path.ipynb
│ ├── 7.vanilla.ipynb
│ ├── 8.bidirectional-vanilla.ipynb
│ ├── 9.vanilla-2path.ipynb
│ ├── access.py
│ ├── addressing.py
│ ├── autoencoder.py
│ ├── dnc.py
│ ├── how-to-forecast.ipynb
│ ├── sentiment-consensus.ipynb
│ └── util.py
├── free-agent/
│ ├── evolution-strategy-agent.ipynb
│ └── evolution-strategy-bayesian-agent.ipynb
├── misc/
│ ├── bitcoin-analysis-lstm.ipynb
│ ├── fashion-forecasting.ipynb
│ ├── fashion.csv
│ ├── kijang-emas-bank-negara.ipynb
│ ├── outliers.ipynb
│ ├── overbought-oversold.ipynb
│ ├── sentiment-bitcoin.csv
│ ├── tesla-study.ipynb
│ └── which-stock.ipynb
├── realtime-agent/
│ ├── AMD.csv
│ ├── CPRT.csv
│ ├── FB.csv
│ ├── FSV.csv
│ ├── GOOG.csv
│ ├── GWR.csv
│ ├── LB.csv
│ ├── LYFT.csv
│ ├── MTDR.csv
│ ├── README.md
│ ├── SINA.csv
│ ├── TSLA.csv
│ ├── TWTR.csv
│ ├── app.py
│ ├── model.pkl
│ ├── realtime-evolution-strategy.ipynb
│ └── request.ipynb
├── simulation/
│ ├── monte-carlo-drift.ipynb
│ ├── monte-carlo-dynamic-volatility.ipynb
│ ├── monte-carlo-simple.ipynb
│ ├── multivariate-drift-monte-carlo.ipynb
│ └── portfolio-optimization.ipynb
├── stacking/
│ ├── autoencoder.py
│ ├── model.py
│ ├── stack-encoder-ensemble-xgb.ipynb
│ └── stack-rnn-arima-xgb.ipynb
└── stock-forecasting-js/
├── README.md
├── css/
│ └── style.css
├── data/
│ └── google.js
├── index.html
├── init.js
└── js/
├── tf-expand.js
├── tf.js
└── utils.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*DS_Store
*ipynb_checkpoints
*__pycache__
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
---
**Stock-Prediction-Models**, Gathers machine learning and deep learning models for Stock forecasting, included trading bots and simulations.
## Table of contents
* [Models](#models)
* [Agents](#agents)
* [Realtime Agent](realtime-agent)
* [Data Explorations](#data-explorations)
* [Simulations](#simulations)
* [Tensorflow-js](#tensorflow-js)
* [Misc](#misc)
* [Results](#results)
* [Results Agent](#results-agent)
* [Results signal prediction](#results-signal-prediction)
* [Results analysis](#results-analysis)
* [Results simulation](#results-simulation)
## Contents
### Models
#### [Deep-learning models](deep-learning)
1. LSTM
2. LSTM Bidirectional
3. LSTM 2-Path
4. GRU
5. GRU Bidirectional
6. GRU 2-Path
7. Vanilla
8. Vanilla Bidirectional
9. Vanilla 2-Path
10. LSTM Seq2seq
11. LSTM Bidirectional Seq2seq
12. LSTM Seq2seq VAE
13. GRU Seq2seq
14. GRU Bidirectional Seq2seq
15. GRU Seq2seq VAE
16. Attention-is-all-you-Need
17. CNN-Seq2seq
18. Dilated-CNN-Seq2seq
**Bonus**
1. How to use one of the model to forecast `t + N`, [how-to-forecast.ipynb](deep-learning/how-to-forecast.ipynb)
2. Consensus, how to use sentiment data to forecast `t + N`, [sentiment-consensus.ipynb](deep-learning/sentiment-consensus.ipynb)
#### [Stacking models](stacking)
1. Deep Feed-forward Auto-Encoder Neural Network to reduce dimension + Deep Recurrent Neural Network + ARIMA + Extreme Boosting Gradient Regressor
2. Adaboost + Bagging + Extra Trees + Gradient Boosting + Random Forest + XGB
### [Agents](agent)
1. Turtle-trading agent
2. Moving-average agent
3. Signal rolling agent
4. Policy-gradient agent
5. Q-learning agent
6. Evolution-strategy agent
7. Double Q-learning agent
8. Recurrent Q-learning agent
9. Double Recurrent Q-learning agent
10. Duel Q-learning agent
11. Double Duel Q-learning agent
12. Duel Recurrent Q-learning agent
13. Double Duel Recurrent Q-learning agent
14. Actor-critic agent
15. Actor-critic Duel agent
16. Actor-critic Recurrent agent
17. Actor-critic Duel Recurrent agent
18. Curiosity Q-learning agent
19. Recurrent Curiosity Q-learning agent
20. Duel Curiosity Q-learning agent
21. Neuro-evolution agent
22. Neuro-evolution with Novelty search agent
23. ABCD strategy agent
### [Data Explorations](misc)
1. stock market study on TESLA stock, [tesla-study.ipynb](misc/tesla-study.ipynb)
2. Outliers study using K-means, SVM, and Gaussian on TESLA stock, [outliers.ipynb](misc/outliers.ipynb)
3. Overbought-Oversold study on TESLA stock, [overbought-oversold.ipynb](misc/overbought-oversold.ipynb)
4. Which stock you need to buy? [which-stock.ipynb](misc/which-stock.ipynb)
### [Simulations](simulation)
1. Simple Monte Carlo, [monte-carlo-drift.ipynb](simulation/monte-carlo-drift.ipynb)
2. Dynamic volatility Monte Carlo, [monte-carlo-dynamic-volatility.ipynb](simulation/monte-carlo-dynamic-volatility.ipynb)
3. Drift Monte Carlo, [monte-carlo-drift.ipynb](simulation/monte-carlo-drift.ipynb)
4. Multivariate Drift Monte Carlo BTC/USDT with Bitcurate sentiment, [multivariate-drift-monte-carlo.ipynb](simulation/multivariate-drift-monte-carlo.ipynb)
5. Portfolio optimization, [portfolio-optimization.ipynb](simulation/portfolio-optimization.ipynb), inspired from https://pythonforfinance.net/2017/01/21/investment-portfolio-optimisation-with-python/
### [Tensorflow-js](stock-forecasting-js)
I code [LSTM Recurrent Neural Network](deep-learning/1.lstm.ipynb) and [Simple signal rolling agent](agent/simple-agent.ipynb) inside Tensorflow JS, you can try it here, [huseinhouse.com/stock-forecasting-js](https://huseinhouse.com/stock-forecasting-js/), you can download any historical CSV and upload dynamically.
### [Misc](misc)
1. fashion trending prediction with cross-validation, [fashion-forecasting.ipynb](misc/fashion-forecasting.ipynb)
2. Bitcoin analysis with LSTM prediction, [bitcoin-analysis-lstm.ipynb](misc/bitcoin-analysis-lstm.ipynb)
3. Kijang Emas Bank Negara, [kijang-emas-bank-negara.ipynb](misc/kijang-emas-bank-negara.ipynb)
## Results
### Results Agent
**This agent only able to buy or sell 1 unit per transaction.**
1. Turtle-trading agent, [turtle-agent.ipynb](agent/1.turtle-agent.ipynb)
2. Moving-average agent, [moving-average-agent.ipynb](agent/2.moving-average-agent.ipynb)
3. Signal rolling agent, [signal-rolling-agent.ipynb](agent/3.signal-rolling-agent.ipynb)
4. Policy-gradient agent, [policy-gradient-agent.ipynb](agent/4.policy-gradient-agent.ipynb)
5. Q-learning agent, [q-learning-agent.ipynb](agent/5.q-learning-agent.ipynb)
6. Evolution-strategy agent, [evolution-strategy-agent.ipynb](agent/6.evolution-strategy-agent.ipynb)
7. Double Q-learning agent, [double-q-learning-agent.ipynb](agent/7.double-q-learning-agent.ipynb)
8. Recurrent Q-learning agent, [recurrent-q-learning-agent.ipynb](agent/8.recurrent-q-learning-agent.ipynb)
9. Double Recurrent Q-learning agent, [double-recurrent-q-learning-agent.ipynb](agent/9.double-recurrent-q-learning-agent.ipynb)
10. Duel Q-learning agent, [duel-q-learning-agent.ipynb](agent/10.duel-q-learning-agent.ipynb)
11. Double Duel Q-learning agent, [double-duel-q-learning-agent.ipynb](agent/11.double-duel-q-learning-agent.ipynb)
12. Duel Recurrent Q-learning agent, [duel-recurrent-q-learning-agent.ipynb](agent/12.duel-recurrent-q-learning-agent.ipynb)
13. Double Duel Recurrent Q-learning agent, [double-duel-recurrent-q-learning-agent.ipynb](agent/13.double-duel-recurrent-q-learning-agent.ipynb)
14. Actor-critic agent, [actor-critic-agent.ipynb](agent/14.actor-critic-agent.ipynb)
15. Actor-critic Duel agent, [actor-critic-duel-agent.ipynb](agent/14.actor-critic-duel-agent.ipynb)
16. Actor-critic Recurrent agent, [actor-critic-recurrent-agent.ipynb](agent/16.actor-critic-recurrent-agent.ipynb)
17. Actor-critic Duel Recurrent agent, [actor-critic-duel-recurrent-agent.ipynb](agent/17.actor-critic-duel-recurrent-agent.ipynb)
18. Curiosity Q-learning agent, [curiosity-q-learning-agent.ipynb](agent/18.curiosity-q-learning-agent.ipynb)
19. Recurrent Curiosity Q-learning agent, [recurrent-curiosity-q-learning.ipynb](agent/19.recurrent-curiosity-q-learning-agent.ipynb)
20. Duel Curiosity Q-learning agent, [duel-curiosity-q-learning-agent.ipynb](agent/20.duel-curiosity-q-learning-agent.ipynb)
21. Neuro-evolution agent, [neuro-evolution.ipynb](agent/21.neuro-evolution-agent.ipynb)
22. Neuro-evolution with Novelty search agent, [neuro-evolution-novelty-search.ipynb](agent/22.neuro-evolution-novelty-search-agent.ipynb)
23. ABCD strategy agent, [abcd-strategy.ipynb](agent/23.abcd-strategy-agent.ipynb)
### Results signal prediction
I will cut the dataset to train and test datasets,
1. Train dataset derived from starting timestamp until last 30 days
2. Test dataset derived from last 30 days until end of the dataset
So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot.
1. LSTM, accuracy 95.693%, time taken for 1 epoch 01:09
2. LSTM Bidirectional, accuracy 93.8%, time taken for 1 epoch 01:40
3. LSTM 2-Path, accuracy 94.63%, time taken for 1 epoch 01:39
4. GRU, accuracy 94.63%, time taken for 1 epoch 02:10
5. GRU Bidirectional, accuracy 92.5673%, time taken for 1 epoch 01:40
6. GRU 2-Path, accuracy 93.2117%, time taken for 1 epoch 01:39
7. Vanilla, accuracy 91.4686%, time taken for 1 epoch 00:52
8. Vanilla Bidirectional, accuracy 88.9927%, time taken for 1 epoch 01:06
9. Vanilla 2-Path, accuracy 91.5406%, time taken for 1 epoch 01:08
10. LSTM Seq2seq, accuracy 94.9817%, time taken for 1 epoch 01:36
11. LSTM Bidirectional Seq2seq, accuracy 94.517%, time taken for 1 epoch 02:30
12. LSTM Seq2seq VAE, accuracy 95.4190%, time taken for 1 epoch 01:48
13. GRU Seq2seq, accuracy 90.8854%, time taken for 1 epoch 01:34
14. GRU Bidirectional Seq2seq, accuracy 67.9915%, time taken for 1 epoch 02:30
15. GRU Seq2seq VAE, accuracy 89.1321%, time taken for 1 epoch 01:48
16. Attention-is-all-you-Need, accuracy 94.2482%, time taken for 1 epoch 01:41
17. CNN-Seq2seq, accuracy 90.74%, time taken for 1 epoch 00:43
18. Dilated-CNN-Seq2seq, accuracy 95.86%, time taken for 1 epoch 00:14
**Bonus**
1. How to forecast,
2. Sentiment consensus,
### Results analysis
1. Outliers study using K-means, SVM, and Gaussian on TESLA stock
2. Overbought-Oversold study on TESLA stock
3. Which stock you need to buy?
### Results simulation
1. Simple Monte Carlo
2. Dynamic volatity Monte Carlo
3. Drift Monte Carlo
4. Multivariate Drift Monte Carlo BTC/USDT with Bitcurate sentiment
5. Portfolio optimization
================================================
FILE: agent/1.turtle-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" signal \n",
" trend \n",
" RollingMax \n",
" RollingMin \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.0 \n",
" 768.700012 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 1 \n",
" 0.0 \n",
" 762.130005 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2 \n",
" 0.0 \n",
" 762.020020 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 3 \n",
" 0.0 \n",
" 782.520020 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 0.0 \n",
" 790.510010 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 5 \n",
" 0.0 \n",
" 785.309998 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 6 \n",
" 0.0 \n",
" 762.559998 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 7 \n",
" 0.0 \n",
" 754.020020 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 8 \n",
" 0.0 \n",
" 736.080017 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 9 \n",
" 0.0 \n",
" 758.489990 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 10 \n",
" 0.0 \n",
" 764.479980 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 11 \n",
" 0.0 \n",
" 771.229980 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 12 \n",
" 0.0 \n",
" 760.539978 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 13 \n",
" 0.0 \n",
" 769.200012 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 14 \n",
" 0.0 \n",
" 768.270020 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 15 \n",
" 0.0 \n",
" 760.989990 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 16 \n",
" 0.0 \n",
" 761.679993 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 17 \n",
" 0.0 \n",
" 768.239990 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 18 \n",
" 0.0 \n",
" 770.840027 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 19 \n",
" 0.0 \n",
" 758.039978 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 20 \n",
" 0.0 \n",
" 747.919983 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 21 \n",
" 0.0 \n",
" 750.500000 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 22 \n",
" 0.0 \n",
" 762.520020 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 23 \n",
" 0.0 \n",
" 759.109985 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 24 \n",
" 0.0 \n",
" 771.190002 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 25 \n",
" 0.0 \n",
" 776.419983 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 26 \n",
" 0.0 \n",
" 789.289978 \n",
" 790.510010 \n",
" 736.080017 \n",
" \n",
" \n",
" 27 \n",
" 0.0 \n",
" 789.270020 \n",
" 790.510010 \n",
" 736.080017 \n",
" \n",
" \n",
" 28 \n",
" -1.0 \n",
" 796.099976 \n",
" 790.510010 \n",
" 736.080017 \n",
" \n",
" \n",
" 29 \n",
" -1.0 \n",
" 797.070007 \n",
" 796.099976 \n",
" 736.080017 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 222 \n",
" 0.0 \n",
" 932.450012 \n",
" 939.330017 \n",
" 906.659973 \n",
" \n",
" \n",
" 223 \n",
" 0.0 \n",
" 928.530029 \n",
" 939.330017 \n",
" 906.659973 \n",
" \n",
" \n",
" 224 \n",
" 0.0 \n",
" 920.969971 \n",
" 939.330017 \n",
" 906.659973 \n",
" \n",
" \n",
" 225 \n",
" 0.0 \n",
" 924.859985 \n",
" 939.330017 \n",
" 906.659973 \n",
" \n",
" \n",
" 226 \n",
" -1.0 \n",
" 944.489990 \n",
" 939.330017 \n",
" 906.659973 \n",
" \n",
" \n",
" 227 \n",
" -1.0 \n",
" 949.500000 \n",
" 944.489990 \n",
" 913.809998 \n",
" \n",
" \n",
" 228 \n",
" -1.0 \n",
" 959.109985 \n",
" 949.500000 \n",
" 913.809998 \n",
" \n",
" \n",
" 229 \n",
" 0.0 \n",
" 953.270020 \n",
" 959.109985 \n",
" 913.809998 \n",
" \n",
" \n",
" 230 \n",
" 0.0 \n",
" 957.789978 \n",
" 959.109985 \n",
" 913.809998 \n",
" \n",
" \n",
" 231 \n",
" 0.0 \n",
" 951.679993 \n",
" 959.109985 \n",
" 913.809998 \n",
" \n",
" \n",
" 232 \n",
" -1.0 \n",
" 969.960022 \n",
" 959.109985 \n",
" 915.000000 \n",
" \n",
" \n",
" 233 \n",
" -1.0 \n",
" 978.890015 \n",
" 969.960022 \n",
" 915.000000 \n",
" \n",
" \n",
" 234 \n",
" 0.0 \n",
" 977.000000 \n",
" 978.890015 \n",
" 915.000000 \n",
" \n",
" \n",
" 235 \n",
" 0.0 \n",
" 972.599976 \n",
" 978.890015 \n",
" 915.000000 \n",
" \n",
" \n",
" 236 \n",
" -1.0 \n",
" 989.250000 \n",
" 978.890015 \n",
" 915.000000 \n",
" \n",
" \n",
" 237 \n",
" 0.0 \n",
" 987.830017 \n",
" 989.250000 \n",
" 915.000000 \n",
" \n",
" \n",
" 238 \n",
" -1.0 \n",
" 989.679993 \n",
" 989.250000 \n",
" 915.000000 \n",
" \n",
" \n",
" 239 \n",
" -1.0 \n",
" 992.000000 \n",
" 989.679993 \n",
" 915.000000 \n",
" \n",
" \n",
" 240 \n",
" -1.0 \n",
" 992.179993 \n",
" 992.000000 \n",
" 915.000000 \n",
" \n",
" \n",
" 241 \n",
" -1.0 \n",
" 992.809998 \n",
" 992.179993 \n",
" 915.000000 \n",
" \n",
" \n",
" 242 \n",
" 0.0 \n",
" 984.450012 \n",
" 992.809998 \n",
" 915.000000 \n",
" \n",
" \n",
" 243 \n",
" 0.0 \n",
" 988.200012 \n",
" 992.809998 \n",
" 915.000000 \n",
" \n",
" \n",
" 244 \n",
" 0.0 \n",
" 968.450012 \n",
" 992.809998 \n",
" 915.000000 \n",
" \n",
" \n",
" 245 \n",
" 0.0 \n",
" 970.539978 \n",
" 992.809998 \n",
" 915.000000 \n",
" \n",
" \n",
" 246 \n",
" 0.0 \n",
" 973.330017 \n",
" 992.809998 \n",
" 920.969971 \n",
" \n",
" \n",
" 247 \n",
" 0.0 \n",
" 972.559998 \n",
" 992.809998 \n",
" 920.969971 \n",
" \n",
" \n",
" 248 \n",
" -1.0 \n",
" 1019.270020 \n",
" 992.809998 \n",
" 920.969971 \n",
" \n",
" \n",
" 249 \n",
" 0.0 \n",
" 1017.109985 \n",
" 1019.270020 \n",
" 920.969971 \n",
" \n",
" \n",
" 250 \n",
" 0.0 \n",
" 1016.640015 \n",
" 1019.270020 \n",
" 920.969971 \n",
" \n",
" \n",
" 251 \n",
" -1.0 \n",
" 1025.500000 \n",
" 1019.270020 \n",
" 924.859985 \n",
" \n",
" \n",
"
\n",
"
252 rows × 4 columns
\n",
"
"
],
"text/plain": [
" signal trend RollingMax RollingMin\n",
"0 0.0 768.700012 NaN NaN\n",
"1 0.0 762.130005 NaN NaN\n",
"2 0.0 762.020020 NaN NaN\n",
"3 0.0 782.520020 NaN NaN\n",
"4 0.0 790.510010 NaN NaN\n",
"5 0.0 785.309998 NaN NaN\n",
"6 0.0 762.559998 NaN NaN\n",
"7 0.0 754.020020 NaN NaN\n",
"8 0.0 736.080017 NaN NaN\n",
"9 0.0 758.489990 NaN NaN\n",
"10 0.0 764.479980 NaN NaN\n",
"11 0.0 771.229980 NaN NaN\n",
"12 0.0 760.539978 NaN NaN\n",
"13 0.0 769.200012 NaN NaN\n",
"14 0.0 768.270020 NaN NaN\n",
"15 0.0 760.989990 NaN NaN\n",
"16 0.0 761.679993 NaN NaN\n",
"17 0.0 768.239990 NaN NaN\n",
"18 0.0 770.840027 NaN NaN\n",
"19 0.0 758.039978 NaN NaN\n",
"20 0.0 747.919983 NaN NaN\n",
"21 0.0 750.500000 NaN NaN\n",
"22 0.0 762.520020 NaN NaN\n",
"23 0.0 759.109985 NaN NaN\n",
"24 0.0 771.190002 NaN NaN\n",
"25 0.0 776.419983 NaN NaN\n",
"26 0.0 789.289978 790.510010 736.080017\n",
"27 0.0 789.270020 790.510010 736.080017\n",
"28 -1.0 796.099976 790.510010 736.080017\n",
"29 -1.0 797.070007 796.099976 736.080017\n",
".. ... ... ... ...\n",
"222 0.0 932.450012 939.330017 906.659973\n",
"223 0.0 928.530029 939.330017 906.659973\n",
"224 0.0 920.969971 939.330017 906.659973\n",
"225 0.0 924.859985 939.330017 906.659973\n",
"226 -1.0 944.489990 939.330017 906.659973\n",
"227 -1.0 949.500000 944.489990 913.809998\n",
"228 -1.0 959.109985 949.500000 913.809998\n",
"229 0.0 953.270020 959.109985 913.809998\n",
"230 0.0 957.789978 959.109985 913.809998\n",
"231 0.0 951.679993 959.109985 913.809998\n",
"232 -1.0 969.960022 959.109985 915.000000\n",
"233 -1.0 978.890015 969.960022 915.000000\n",
"234 0.0 977.000000 978.890015 915.000000\n",
"235 0.0 972.599976 978.890015 915.000000\n",
"236 -1.0 989.250000 978.890015 915.000000\n",
"237 0.0 987.830017 989.250000 915.000000\n",
"238 -1.0 989.679993 989.250000 915.000000\n",
"239 -1.0 992.000000 989.679993 915.000000\n",
"240 -1.0 992.179993 992.000000 915.000000\n",
"241 -1.0 992.809998 992.179993 915.000000\n",
"242 0.0 984.450012 992.809998 915.000000\n",
"243 0.0 988.200012 992.809998 915.000000\n",
"244 0.0 968.450012 992.809998 915.000000\n",
"245 0.0 970.539978 992.809998 915.000000\n",
"246 0.0 973.330017 992.809998 920.969971\n",
"247 0.0 972.559998 992.809998 920.969971\n",
"248 -1.0 1019.270020 992.809998 920.969971\n",
"249 0.0 1017.109985 1019.270020 920.969971\n",
"250 0.0 1016.640015 1019.270020 920.969971\n",
"251 -1.0 1025.500000 1019.270020 924.859985\n",
"\n",
"[252 rows x 4 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"count = int(np.ceil(len(df) * 0.1))\n",
"signals = pd.DataFrame(index=df.index)\n",
"signals['signal'] = 0.0\n",
"signals['trend'] = df['Close']\n",
"signals['RollingMax'] = (signals.trend.shift(1).rolling(count).max())\n",
"signals['RollingMin'] = (signals.trend.shift(1).rolling(count).min())\n",
"signals.loc[signals['RollingMax'] < signals.trend, 'signal'] = -1\n",
"signals.loc[signals['RollingMin'] > signals.trend, 'signal'] = 1\n",
"signals"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def buy_stock(\n",
" real_movement,\n",
" signal,\n",
" initial_money = 10000,\n",
" max_buy = 1,\n",
" max_sell = 1,\n",
"):\n",
" \"\"\"\n",
" real_movement = actual movement in the real world\n",
" delay = how much interval you want to delay to change our decision from buy to sell, vice versa\n",
" initial_state = 1 is buy, 0 is sell\n",
" initial_money = 1000, ignore what kind of currency\n",
" max_buy = max quantity for share to buy\n",
" max_sell = max quantity for share to sell\n",
" \"\"\"\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" current_inventory = 0\n",
"\n",
" def buy(i, initial_money, current_inventory):\n",
" shares = initial_money // real_movement[i]\n",
" if shares < 1:\n",
" print(\n",
" 'day %d: total balances %f, not enough money to buy a unit price %f'\n",
" % (i, initial_money, real_movement[i])\n",
" )\n",
" else:\n",
" if shares > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = shares\n",
" initial_money -= buy_units * real_movement[i]\n",
" current_inventory += buy_units\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (i, buy_units, buy_units * real_movement[i], initial_money)\n",
" )\n",
" states_buy.append(0)\n",
" return initial_money, current_inventory\n",
"\n",
" for i in range(real_movement.shape[0] - int(0.025 * len(df))):\n",
" state = signal[i]\n",
" if state == 1:\n",
" initial_money, current_inventory = buy(\n",
" i, initial_money, current_inventory\n",
" )\n",
" states_buy.append(i)\n",
" elif state == -1:\n",
" if current_inventory == 0:\n",
" print('day %d: cannot sell anything, inventory 0' % (i))\n",
" else:\n",
" if current_inventory > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = current_inventory\n",
" current_inventory -= sell_units\n",
" total_sell = sell_units * real_movement[i]\n",
" initial_money += total_sell\n",
" try:\n",
" invest = (\n",
" (real_movement[i] - real_movement[states_buy[-1]])\n",
" / real_movement[states_buy[-1]]\n",
" ) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (i, sell_units, total_sell, invest, initial_money)\n",
" )\n",
" states_sell.append(i)\n",
" \n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 28: cannot sell anything, inventory 0\n",
"day 29: cannot sell anything, inventory 0\n",
"day 30: cannot sell anything, inventory 0\n",
"day 44: cannot sell anything, inventory 0\n",
"day 45: cannot sell anything, inventory 0\n",
"day 47: cannot sell anything, inventory 0\n",
"day 54: cannot sell anything, inventory 0\n",
"day 55: cannot sell anything, inventory 0\n",
"day 56: cannot sell anything, inventory 0\n",
"day 85: cannot sell anything, inventory 0\n",
"day 86: cannot sell anything, inventory 0\n",
"day 87: cannot sell anything, inventory 0\n",
"day 88: cannot sell anything, inventory 0\n",
"day 89: cannot sell anything, inventory 0\n",
"day 90: cannot sell anything, inventory 0\n",
"day 91: cannot sell anything, inventory 0\n",
"day 92: cannot sell anything, inventory 0\n",
"day 96: buy 1 units at price 817.580017, total balance 9182.419983\n",
"day 97: buy 1 units at price 814.429993, total balance 8367.989990\n",
"day 117, sell 1 units at price 862.760010, investment 5.934214 %, total balance 9230.750000,\n",
"day 118, sell 1 units at price 872.299988, investment 7.105582 %, total balance 10103.049988,\n",
"day 120: cannot sell anything, inventory 0\n",
"day 121: cannot sell anything, inventory 0\n",
"day 122: cannot sell anything, inventory 0\n",
"day 123: cannot sell anything, inventory 0\n",
"day 124: cannot sell anything, inventory 0\n",
"day 125: cannot sell anything, inventory 0\n",
"day 127: cannot sell anything, inventory 0\n",
"day 132: cannot sell anything, inventory 0\n",
"day 133: cannot sell anything, inventory 0\n",
"day 138: cannot sell anything, inventory 0\n",
"day 139: cannot sell anything, inventory 0\n",
"day 140: cannot sell anything, inventory 0\n",
"day 141: cannot sell anything, inventory 0\n",
"day 142: cannot sell anything, inventory 0\n",
"day 146: cannot sell anything, inventory 0\n",
"day 162: buy 1 units at price 927.330017, total balance 9175.719971\n",
"day 164: buy 1 units at price 917.789978, total balance 8257.929993\n",
"day 165: buy 1 units at price 908.729980, total balance 7349.200013\n",
"day 166: buy 1 units at price 898.700012, total balance 6450.500001\n",
"day 177, sell 1 units at price 970.890015, investment 8.032714 %, total balance 7421.390016,\n",
"day 179, sell 1 units at price 972.919983, investment 8.258592 %, total balance 8394.309999,\n",
"day 180, sell 1 units at price 980.340027, investment 9.084234 %, total balance 9374.650026,\n",
"day 200: buy 1 units at price 906.659973, total balance 8467.990053\n",
"day 226, sell 1 units at price 944.489990, investment 4.172459 %, total balance 9412.480043,\n",
"day 227, sell 1 units at price 949.500000, investment 4.725038 %, total balance 10361.980043,\n",
"day 228: cannot sell anything, inventory 0\n",
"day 232: cannot sell anything, inventory 0\n",
"day 233: cannot sell anything, inventory 0\n",
"day 236: cannot sell anything, inventory 0\n",
"day 238: cannot sell anything, inventory 0\n",
"day 239: cannot sell anything, inventory 0\n",
"day 240: cannot sell anything, inventory 0\n",
"day 241: cannot sell anything, inventory 0\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = buy_stock(df.Close, signals['signal'])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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v2oH/kXsfT4f61btYPIJA1q5VQe77LK/tMh1Bg0awt13z2+RawkhhBBCCNHSPEVWRc9ICfw6DX+2z+sxAz+vx8fmn9MYO7EPEVEhjT7/a6+9wsqVX+FylXHFFVcxZcqx7Nu3l8suu4DFi78EqPL3Rx99iG7dunHuuRcCsGXLZu6++zZeffVtHnjgXgYNGsysWbN58cXn2LlzB8XFRezdu4cePXpy330PERYWRlFREX/727388cc2kpNTSEpKJj4+gb/+9doqbSsrK2P+/LvZvn0bdruD3r37cN99D/L99+v4178e58UXXwHg7bdf5803/0dUVDRHHDGRd955g8WLvwy0e8aMM1izZhVlZWXccstdjBgxErfbzU03XUt+fj4ul4shQ4Zy44234XQ6G/2eCiGEEEII0RidsaIndPKhnpWzfX7+rF9TsNlsLFz4Kg899A8efvgBcnNzat1/1qyzeP/9dwJtevvtNzj99D9hGMZB+2q9ibvvvp///vct3G43S5Z8AsB//vM80dExvPrq29x334P89NOGaq+1du1qSkqKWbToTV566TVuvPG2g/b5/fffeOWVhTzzzAJeeOFlCgurrmWSn5/PsGHD+c9/XuWSSy7n2WefAMBut3P33fN58cVXeOWV1/F4PCxe/H7db5gQQgghhBDNzFNsVvTsbIFfnRk/pdTfgVlAX+AwrfUv1usDgZeARCAbuFBr/VtjtrWkA7N9fk2Z9TvllNMA6N27LwMHKjZu/Jl+/WoeRtq37yF0796DNWu+YejQw1i1agVXX319tfsefvgEoqOjARgyZBh79uwG4Icf1nHttTcCEBMTy6RJR1d7fP/+A9i+/Q8effQhRo0aw5FHHnXQPj/8sJ4jjphIfHw8ANOnz+Dzzz8JbA8Pj2DixEkADB16GE899RgAXq+X115bxJo13+D1eigsLCQsLKzmN0oIIYQQQogW4im0Ar9ONtQzmIzfe8Bk4MA02LPAv7TWA4F/Ac81wbYWU122z68ps34HstvteL37r1teXrWYzJlnns27777F4sUfMHnyVKJq+CYiJCQ08LPNZsPj8dSrHT169GTRojcYN24869at5eKLz8HlctXrHCEh+4dumm1wA/D555/y008bePrp53n55dc5/fQzD7pPIYQQQgghWkMg42clUTqLOgM/rfXXWutdlV9TSqUAo4HX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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"close = df['Close']\n",
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/10.duel-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"\n",
"class Agent:\n",
" def __init__(self, state_size, window_size, trend, skip, batch_size):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.action_size = 3\n",
" self.batch_size = batch_size\n",
" self.memory = deque(maxlen = 1000)\n",
" self.inventory = []\n",
"\n",
" self.gamma = 0.95\n",
" self.epsilon = 0.5\n",
" self.epsilon_min = 0.01\n",
" self.epsilon_decay = 0.999\n",
"\n",
" tf.reset_default_graph()\n",
" self.sess = tf.InteractiveSession()\n",
" self.X = tf.placeholder(tf.float32, [None, self.state_size])\n",
" self.Y = tf.placeholder(tf.float32, [None, self.action_size])\n",
" feed = tf.layers.dense(self.X, 512, activation = tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(feed,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, self.action_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.GradientDescentOptimizer(1e-5).minimize(\n",
" self.cost\n",
" )\n",
" self.sess.run(tf.global_variables_initializer())\n",
"\n",
" def act(self, state):\n",
" if random.random() <= self.epsilon:\n",
" return random.randrange(self.action_size)\n",
" return np.argmax(\n",
" self.sess.run(self.logits, feed_dict = {self.X: state})[0]\n",
" )\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
"\n",
" def replay(self, batch_size):\n",
" mini_batch = []\n",
" l = len(self.memory)\n",
" for i in range(l - batch_size, l):\n",
" mini_batch.append(self.memory[i])\n",
" replay_size = len(mini_batch)\n",
" X = np.empty((replay_size, self.state_size))\n",
" Y = np.empty((replay_size, self.action_size))\n",
" states = np.array([a[0][0] for a in mini_batch])\n",
" new_states = np.array([a[3][0] for a in mini_batch])\n",
" Q = self.sess.run(self.logits, feed_dict = {self.X: states})\n",
" Q_new = self.sess.run(self.logits, feed_dict = {self.X: new_states})\n",
" for i in range(len(mini_batch)):\n",
" state, action, reward, next_state, done = mini_batch[i]\n",
" target = Q[i]\n",
" target[action] = reward\n",
" if not done:\n",
" target[action] += self.gamma * np.amax(Q_new[i])\n",
" X[i] = state\n",
" Y[i] = target\n",
" cost, _ = self.sess.run(\n",
" [self.cost, self.optimizer], feed_dict = {self.X: X, self.Y: Y}\n",
" )\n",
" if self.epsilon > self.epsilon_min:\n",
" self.epsilon *= self.epsilon_decay\n",
" return cost\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" self.memory.append((state, action, invest, \n",
" next_state, starting_money < initial_money))\n",
" state = next_state\n",
" batch_size = min(self.batch_size, len(self.memory))\n",
" cost = self.replay(batch_size)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From :30: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"epoch: 10, total rewards: 231.100222.3, cost: 0.499693, total money: 10231.100222\n",
"epoch: 20, total rewards: 195.875063.3, cost: 0.324152, total money: 10195.875063\n",
"epoch: 30, total rewards: 219.615054.3, cost: 0.237771, total money: 10219.615054\n",
"epoch: 40, total rewards: 56.505131.3, cost: 0.183305, total money: 10056.505131\n",
"epoch: 50, total rewards: 190.745120.3, cost: 0.129967, total money: 10190.745120\n",
"epoch: 60, total rewards: 165.275088.3, cost: 0.134246, total money: 10165.275088\n",
"epoch: 70, total rewards: 201.795107.3, cost: 0.075016, total money: 10201.795107\n",
"epoch: 80, total rewards: 187.545045.3, cost: 0.062454, total money: 10187.545045\n",
"epoch: 90, total rewards: 206.835023.3, cost: 0.050687, total money: 10206.835023\n",
"epoch: 100, total rewards: 199.895082.3, cost: 0.041359, total money: 10199.895082\n",
"epoch: 110, total rewards: 184.405092.3, cost: 0.035289, total money: 10184.405092\n",
"epoch: 120, total rewards: 242.405092.3, cost: 0.047248, total money: 10242.405092\n",
"epoch: 130, total rewards: 148.405032.3, cost: 0.050786, total money: 10148.405032\n",
"epoch: 140, total rewards: 225.724978.3, cost: 0.021171, total money: 10225.724978\n",
"epoch: 150, total rewards: 168.344972.3, cost: 0.018388, total money: 10168.344972\n",
"epoch: 160, total rewards: 230.095034.3, cost: 0.199324, total money: 10230.095034\n",
"epoch: 170, total rewards: 206.275026.3, cost: 0.044696, total money: 10206.275026\n",
"epoch: 180, total rewards: 364.895023.3, cost: 0.016494, total money: 10364.895023\n",
"epoch: 190, total rewards: 220.664980.3, cost: 0.014381, total money: 10220.664980\n",
"epoch: 200, total rewards: 175.284975.3, cost: 0.010883, total money: 10175.284975\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip, \n",
" batch_size = batch_size)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 7: buy 1 unit at price 754.020020, total balance 9245.979980\n",
"day 8: buy 1 unit at price 736.080017, total balance 8509.899963\n",
"day 9, sell 1 unit at price 758.489990, investment 0.592818 %, total balance 9268.389953,\n",
"day 11: buy 1 unit at price 771.229980, total balance 8497.159973\n",
"day 12, sell 1 unit at price 760.539978, investment 3.323003 %, total balance 9257.699951,\n",
"day 14, sell 1 unit at price 768.270020, investment -0.383797 %, total balance 10025.969971,\n",
"day 22: buy 1 unit at price 762.520020, total balance 9263.449951\n",
"day 24, sell 1 unit at price 771.190002, investment 1.137017 %, total balance 10034.639953,\n",
"day 28: buy 1 unit at price 796.099976, total balance 9238.539977\n",
"day 29: buy 1 unit at price 797.070007, total balance 8441.469970\n",
"day 31, sell 1 unit at price 790.799988, investment -0.665744 %, total balance 9232.269958,\n",
"day 32: buy 1 unit at price 794.200012, total balance 8438.069946\n",
"day 33: buy 1 unit at price 796.419983, total balance 7641.649963\n",
"day 37, sell 1 unit at price 791.549988, investment -0.692539 %, total balance 8433.199951,\n",
"day 39, sell 1 unit at price 782.789978, investment -1.436670 %, total balance 9215.989929,\n",
"day 41, sell 1 unit at price 786.140015, investment -1.290772 %, total balance 10002.129944,\n",
"day 48: buy 1 unit at price 806.359985, total balance 9195.769959\n",
"day 49: buy 1 unit at price 807.880005, total balance 8387.889954\n",
"day 50, sell 1 unit at price 804.609985, investment -0.217025 %, total balance 9192.499939,\n",
"day 52: buy 1 unit at price 802.174988, total balance 8390.324951\n",
"day 53, sell 1 unit at price 805.020020, investment -0.354011 %, total balance 9195.344971,\n",
"day 56, sell 1 unit at price 835.669983, investment 4.175522 %, total balance 10031.014954,\n",
"day 67: buy 1 unit at price 809.559998, total balance 9221.454956\n",
"day 68: buy 1 unit at price 813.669983, total balance 8407.784973\n",
"day 69, sell 1 unit at price 819.239990, investment 1.195710 %, total balance 9227.024963,\n",
"day 71: buy 1 unit at price 818.979980, total balance 8408.044983\n",
"day 72, sell 1 unit at price 824.159973, investment 1.289219 %, total balance 9232.204956,\n",
"day 76: buy 1 unit at price 831.330017, total balance 8400.874939\n",
"day 77, sell 1 unit at price 828.640015, investment 1.179520 %, total balance 9229.514954,\n",
"day 78: buy 1 unit at price 829.280029, total balance 8400.234925\n",
"day 79, sell 1 unit at price 823.210022, investment -0.976747 %, total balance 9223.444947,\n",
"day 80: buy 1 unit at price 835.239990, total balance 8388.204957\n",
"day 81, sell 1 unit at price 830.630005, investment 0.162789 %, total balance 9218.834962,\n",
"day 83, sell 1 unit at price 827.780029, investment -0.893152 %, total balance 10046.614991,\n",
"day 88: buy 1 unit at price 845.539978, total balance 9201.075013\n",
"day 89, sell 1 unit at price 845.619995, investment 0.009463 %, total balance 10046.695008,\n",
"day 91: buy 1 unit at price 848.780029, total balance 9197.914979\n",
"day 92: buy 1 unit at price 852.119995, total balance 8345.794984\n",
"day 93: buy 1 unit at price 848.400024, total balance 7497.394960\n",
"day 96, sell 1 unit at price 817.580017, investment -3.675865 %, total balance 8314.974977,\n",
"day 97: buy 1 unit at price 814.429993, total balance 7500.544984\n",
"day 100, sell 1 unit at price 831.409973, investment -2.430411 %, total balance 8331.954957,\n",
"day 101, sell 1 unit at price 831.500000, investment -1.991988 %, total balance 9163.454957,\n",
"day 103, sell 1 unit at price 838.549988, investment 2.961580 %, total balance 10002.004945,\n",
"day 104: buy 1 unit at price 834.570007, total balance 9167.434938\n",
"day 105: buy 1 unit at price 831.409973, total balance 8336.024965\n",
"day 106, sell 1 unit at price 827.880005, investment -0.801611 %, total balance 9163.904970,\n",
"day 107: buy 1 unit at price 824.669983, total balance 8339.234987\n",
"day 108: buy 1 unit at price 824.729980, total balance 7514.505007\n",
"day 110: buy 1 unit at price 824.320007, total balance 6690.185000\n",
"day 111: buy 1 unit at price 823.559998, total balance 5866.625002\n",
"day 112, sell 1 unit at price 837.169983, investment 0.692800 %, total balance 6703.794985,\n",
"day 113, sell 1 unit at price 836.820007, investment 1.473320 %, total balance 7540.614992,\n",
"day 114, sell 1 unit at price 838.210022, investment 1.634479 %, total balance 8378.825014,\n",
"day 115, sell 1 unit at price 841.650024, investment 2.102341 %, total balance 9220.475038,\n",
"day 116, sell 1 unit at price 843.190002, investment 2.383555 %, total balance 10063.665040,\n",
"day 122: buy 1 unit at price 912.570007, total balance 9151.095033\n",
"day 123, sell 1 unit at price 916.440002, investment 0.424077 %, total balance 10067.535035,\n",
"day 125: buy 1 unit at price 931.659973, total balance 9135.875062\n",
"day 126, sell 1 unit at price 927.130005, investment -0.486225 %, total balance 10063.005067,\n",
"day 144: buy 1 unit at price 966.950012, total balance 9096.055055\n",
"day 145, sell 1 unit at price 975.599976, investment 0.894562 %, total balance 10071.655031,\n",
"day 146: buy 1 unit at price 983.679993, total balance 9087.975038\n",
"day 148: buy 1 unit at price 980.940002, total balance 8107.035036\n",
"day 149, sell 1 unit at price 983.409973, investment -0.027450 %, total balance 9090.445009,\n",
"day 151, sell 1 unit at price 942.900024, investment -3.877911 %, total balance 10033.345033,\n",
"day 155: buy 1 unit at price 939.780029, total balance 9093.565004\n",
"day 157, sell 1 unit at price 950.630005, investment 1.154523 %, total balance 10044.195009,\n",
"day 160: buy 1 unit at price 965.590027, total balance 9078.604982\n",
"day 161, sell 1 unit at price 952.270020, investment -1.379468 %, total balance 10030.875002,\n",
"day 164: buy 1 unit at price 917.789978, total balance 9113.085024\n",
"day 166, sell 1 unit at price 898.700012, investment -2.079993 %, total balance 10011.785036,\n",
"day 168: buy 1 unit at price 906.690002, total balance 9105.095034\n",
"day 171: buy 1 unit at price 930.090027, total balance 8175.005007\n",
"day 172, sell 1 unit at price 943.830017, investment 4.096220 %, total balance 9118.835024,\n",
"day 173, sell 1 unit at price 947.159973, investment 1.835300 %, total balance 10065.994997,\n",
"day 176: buy 1 unit at price 965.400024, total balance 9100.594973\n",
"day 179, sell 1 unit at price 972.919983, investment 0.778947 %, total balance 10073.514956,\n",
"day 180: buy 1 unit at price 980.340027, total balance 9093.174929\n",
"day 181, sell 1 unit at price 950.700012, investment -3.023442 %, total balance 10043.874941,\n",
"day 194: buy 1 unit at price 914.390015, total balance 9129.484926\n",
"day 195, sell 1 unit at price 922.669983, investment 0.905518 %, total balance 10052.154909,\n",
"day 197: buy 1 unit at price 926.960022, total balance 9125.194887\n",
"day 199: buy 1 unit at price 910.669983, total balance 8214.524904\n",
"day 201, sell 1 unit at price 924.690002, investment -0.244889 %, total balance 9139.214906,\n",
"day 202, sell 1 unit at price 927.000000, investment 1.793187 %, total balance 10066.214906,\n",
"day 208: buy 1 unit at price 939.330017, total balance 9126.884889\n",
"day 211, sell 1 unit at price 927.809998, investment -1.226408 %, total balance 10054.694887,\n",
"day 214: buy 1 unit at price 929.080017, total balance 9125.614870\n",
"day 216, sell 1 unit at price 935.090027, investment 0.646878 %, total balance 10060.704897,\n",
"day 219: buy 1 unit at price 915.000000, total balance 9145.704897\n",
"day 221: buy 1 unit at price 931.580017, total balance 8214.124880\n",
"day 222, sell 1 unit at price 932.450012, investment 1.907105 %, total balance 9146.574892,\n",
"day 223, sell 1 unit at price 928.530029, investment -0.327399 %, total balance 10075.104921,\n",
"day 224: buy 1 unit at price 920.969971, total balance 9154.134950\n",
"day 226: buy 1 unit at price 944.489990, total balance 8209.644960\n",
"day 227: buy 1 unit at price 949.500000, total balance 7260.144960\n",
"day 228, sell 1 unit at price 959.109985, investment 4.141287 %, total balance 8219.254945,\n",
"day 229, sell 1 unit at price 953.270020, investment 0.929605 %, total balance 9172.524965,\n",
"day 230: buy 1 unit at price 957.789978, total balance 8214.734987\n",
"day 231: buy 1 unit at price 951.679993, total balance 7263.054994\n",
"day 232, sell 1 unit at price 969.960022, investment 2.154821 %, total balance 8233.015016,\n",
"day 233, sell 1 unit at price 978.890015, investment 2.202992 %, total balance 9211.905031,\n",
"day 234, sell 1 unit at price 977.000000, investment 2.660559 %, total balance 10188.905031,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/11.double-duel-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Model:\n",
" def __init__(self, input_size, output_size, layer_size, learning_rate):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" feed = tf.layers.dense(self.X, layer_size, activation = tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(feed,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 500\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.model = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.model_negative = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" self.trainable = tf.trainable_variables()\n",
" \n",
" def _assign(self):\n",
" for i in range(len(self.trainable)//2):\n",
" assign_op = self.trainable[i+len(self.trainable)//2].assign(self.trainable[i])\n",
" self.sess.run(assign_op)\n",
"\n",
" def _memorize(self, state, action, reward, new_state, done):\n",
" self.MEMORIES.append((state, action, reward, new_state, done))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" Q = self.predict(states)\n",
" Q_new = self.predict(new_states)\n",
" Q_new_negative = self.sess.run(self.model_negative.logits, feed_dict={self.model_negative.X:new_states})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, done_r = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not done_r:\n",
" target[action_r] += self.GAMMA * Q_new_negative[i, np.argmax(Q_new[i])]\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" return X, Y\n",
"\n",
" def predict(self, inputs):\n",
" return self.sess.run(self.model.logits, feed_dict={self.model.X:inputs})\n",
" \n",
" def get_predicted_action(self, sequence):\n",
" prediction = self.predict(np.array(sequence))[0]\n",
" return np.argmax(prediction)\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign()\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" state = next_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" X, Y = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.model.cost, self.model.optimizer], \n",
" feed_dict={self.model.X: X, self.model.Y:Y})\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From :12: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"epoch: 10, total rewards: 1486.684997.3, cost: 0.694152, total money: 10514.124999\n",
"epoch: 20, total rewards: 313.279660.3, cost: 0.878157, total money: 8354.909665\n",
"epoch: 30, total rewards: 752.595089.3, cost: 0.320037, total money: 10752.595089\n",
"epoch: 40, total rewards: 1159.299987.3, cost: 0.318166, total money: 10186.739989\n",
"epoch: 50, total rewards: 993.220279.3, cost: 0.391151, total money: 4149.310245\n",
"epoch: 60, total rewards: 1616.499880.3, cost: 0.307440, total money: 9630.939883\n",
"epoch: 70, total rewards: 941.484560.3, cost: 0.332979, total money: 6969.054506\n",
"epoch: 80, total rewards: 904.899903.3, cost: 0.718111, total money: 1132.559876\n",
"epoch: 90, total rewards: 346.619873.3, cost: 0.482044, total money: 542.599852\n",
"epoch: 100, total rewards: 141.554626.3, cost: 0.238426, total money: 6115.974608\n",
"epoch: 110, total rewards: -159.529845.3, cost: 0.202412, total money: 8852.270143\n",
"epoch: 120, total rewards: -37.579779.3, cost: 0.433529, total money: 8945.780206\n",
"epoch: 130, total rewards: 1049.544800.3, cost: 0.408910, total money: 8099.664795\n",
"epoch: 140, total rewards: 59.114809.3, cost: 0.028664, total money: 7098.904848\n",
"epoch: 150, total rewards: 96.424866.3, cost: 0.070552, total money: 9079.784851\n",
"epoch: 160, total rewards: 74.179754.3, cost: 0.044092, total money: 10074.179754\n",
"epoch: 170, total rewards: 80.999883.3, cost: 0.018813, total money: 8047.249883\n",
"epoch: 180, total rewards: 62.700011.3, cost: 0.083292, total money: 10062.700011\n",
"epoch: 190, total rewards: 70.424991.3, cost: 0.013884, total money: 9053.315006\n",
"epoch: 200, total rewards: 10.620115.3, cost: 0.030838, total money: 10010.620115\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 1: buy 1 unit at price 762.130005, total balance 9237.869995\n",
"day 2, sell 1 unit at price 762.020020, investment -0.014431 %, total balance 9999.890015,\n",
"day 11: buy 1 unit at price 771.229980, total balance 9228.660035\n",
"day 12: buy 1 unit at price 760.539978, total balance 8468.120057\n",
"day 13, sell 1 unit at price 769.200012, investment -0.263212 %, total balance 9237.320069,\n",
"day 15, sell 1 unit at price 760.989990, investment 0.059170 %, total balance 9998.310059,\n",
"day 34: buy 1 unit at price 794.559998, total balance 9203.750061\n",
"day 35, sell 1 unit at price 791.260010, investment -0.415323 %, total balance 9995.010071,\n",
"day 36: buy 1 unit at price 789.909973, total balance 9205.100098\n",
"day 37, sell 1 unit at price 791.549988, investment 0.207620 %, total balance 9996.650086,\n",
"day 38: buy 1 unit at price 785.049988, total balance 9211.600098\n",
"day 40, sell 1 unit at price 771.820007, investment -1.685241 %, total balance 9983.420105,\n",
"day 54: buy 1 unit at price 819.309998, total balance 9164.110107\n",
"day 55, sell 1 unit at price 823.869995, investment 0.556566 %, total balance 9987.980102,\n",
"day 62: buy 1 unit at price 798.530029, total balance 9189.450073\n",
"day 64, sell 1 unit at price 801.340027, investment 0.351896 %, total balance 9990.790100,\n",
"day 68: buy 1 unit at price 813.669983, total balance 9177.120117\n",
"day 69, sell 1 unit at price 819.239990, investment 0.684554 %, total balance 9996.360107,\n",
"day 72: buy 1 unit at price 824.159973, total balance 9172.200134\n",
"day 73, sell 1 unit at price 828.070007, investment 0.474427 %, total balance 10000.270141,\n",
"day 74: buy 1 unit at price 831.659973, total balance 9168.610168\n",
"day 75, sell 1 unit at price 830.760010, investment -0.108213 %, total balance 9999.370178,\n",
"day 79: buy 1 unit at price 823.210022, total balance 9176.160156\n",
"day 80, sell 1 unit at price 835.239990, investment 1.461349 %, total balance 10011.400146,\n",
"day 90: buy 1 unit at price 847.200012, total balance 9164.200134\n",
"day 91, sell 1 unit at price 848.780029, investment 0.186499 %, total balance 10012.980163,\n",
"day 93: buy 1 unit at price 848.400024, total balance 9164.580139\n",
"day 94: buy 1 unit at price 830.460022, total balance 8334.120117\n",
"day 95, sell 1 unit at price 829.590027, investment -2.217114 %, total balance 9163.710144,\n",
"day 96, sell 1 unit at price 817.580017, investment -1.550948 %, total balance 9981.290161,\n",
"day 100: buy 1 unit at price 831.409973, total balance 9149.880188\n",
"day 101, sell 1 unit at price 831.500000, investment 0.010828 %, total balance 9981.380188,\n",
"day 104: buy 1 unit at price 834.570007, total balance 9146.810181\n",
"day 106: buy 1 unit at price 827.880005, total balance 8318.930176\n",
"day 107, sell 1 unit at price 824.669983, investment -1.186242 %, total balance 9143.600159,\n",
"day 108, sell 1 unit at price 824.729980, investment -0.380493 %, total balance 9968.330139,\n",
"day 110: buy 1 unit at price 824.320007, total balance 9144.010132\n",
"day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 9967.570130,\n",
"day 115: buy 1 unit at price 841.650024, total balance 9125.920106\n",
"day 116, sell 1 unit at price 843.190002, investment 0.182971 %, total balance 9969.110108,\n",
"day 125: buy 1 unit at price 931.659973, total balance 9037.450135\n",
"day 126, sell 1 unit at price 927.130005, investment -0.486225 %, total balance 9964.580140,\n",
"day 127: buy 1 unit at price 934.299988, total balance 9030.280152\n",
"day 128, sell 1 unit at price 932.169983, investment -0.227979 %, total balance 9962.450135,\n",
"day 141: buy 1 unit at price 971.469971, total balance 8990.980164\n",
"day 142, sell 1 unit at price 975.880005, investment 0.453955 %, total balance 9966.860169,\n",
"day 152: buy 1 unit at price 953.400024, total balance 9013.460145\n",
"day 153, sell 1 unit at price 950.760010, investment -0.276905 %, total balance 9964.220155,\n",
"day 156: buy 1 unit at price 957.369995, total balance 9006.850160\n",
"day 157, sell 1 unit at price 950.630005, investment -0.704011 %, total balance 9957.480165,\n",
"day 166: buy 1 unit at price 898.700012, total balance 9058.780153\n",
"day 167, sell 1 unit at price 911.710022, investment 1.447648 %, total balance 9970.490175,\n",
"day 172: buy 1 unit at price 943.830017, total balance 9026.660158\n",
"day 173, sell 1 unit at price 947.159973, investment 0.352813 %, total balance 9973.820131,\n",
"day 185: buy 1 unit at price 930.500000, total balance 9043.320131\n",
"day 186: buy 1 unit at price 930.830017, total balance 8112.490114\n",
"day 187, sell 1 unit at price 930.390015, investment -0.011820 %, total balance 9042.880129,\n",
"day 188, sell 1 unit at price 923.650024, investment -0.771354 %, total balance 9966.530153,\n",
"day 193: buy 1 unit at price 907.239990, total balance 9059.290163\n",
"day 194, sell 1 unit at price 914.390015, investment 0.788107 %, total balance 9973.680178,\n",
"day 197: buy 1 unit at price 926.960022, total balance 9046.720156\n",
"day 199, sell 1 unit at price 910.669983, investment -1.757362 %, total balance 9957.390139,\n",
"day 211: buy 1 unit at price 927.809998, total balance 9029.580141\n",
"day 212, sell 1 unit at price 935.950012, investment 0.877336 %, total balance 9965.530153,\n",
"day 213: buy 1 unit at price 926.500000, total balance 9039.030153\n",
"day 214, sell 1 unit at price 929.080017, investment 0.278469 %, total balance 9968.110170,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA34AAAFBCAYAAAAomn1FAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3XeYFdX5wPHv3LK9N8pSFTgUpUoAUUTsilhA7C0akmCi5meJGmOJ3fRoLLFHFLFLghIsIIig0gQRDn2BLWxhe7m79975/TFzL7uwvbP7fp7HR3bmzJkzc2dh3vueYpimiRBCCCGEEEKIrsvR0Q0QQgghhBBCCNG2JPATQgghhBBCiC5OAj8hhBBCCCGE6OIk8BNCCCGEEEKILk4CPyGEEEIIIYTo4iTwE0IIIYQQQoguTgI/IYSohVLqVaXUw21Q78lKKd3a9YrORym1TCl1Yx377lFKvdjebRJCCNF9uTq6AUII0RxKqT3AjVrrz9qifFvRWq8AVFufRyn1G+DXQBJQAiwA7tBae+39DwEXAsOAh7XWD9RTVyjwd+AiwA2sBH6htU639w8AngEmAR7gXeDWauc6H3gMGABsxPocfrT3GcBDwPVAFLAeuElrvdne/yRwORAL5APPa60frda20cBL9nVsAW7QWm9o5D0ygcFa6x1tUb4+1a+hIyilXgX2a63v7YBzDwB2A+7AM9LI4xr9WSul5gGnAZFAFvCk1vpFe18I8CZwAtAfOFVrvazasR35vN8B/BY4AFymtd5kb5+M9ft7YWPvlxBCHE4yfkII0TUtBMZqrWOA44BRwM3V9u8A7gQWNaKuW7BeckcCvbECsKeq7X8GyAZ6AaOBU4C5AEqpwcAbwC+AOOA/wEKlVOCLx0uAnwInAwnAKuD1anW/BAy1r+NE4Eql1MV23SHAR8A8IB54DfjI3i66kGZ81o8BA+znZgbwsFJqXLX9XwFXYQWFh+uQ510p1Qu4ATgGeNa+Buxj/wzcWs8tEkKIBknGTwhx1FFKvQ70A/6jlPIBf9BaP6mUmoH1spQKbAB+qbXeUk/5d7BewMKB7+3ymxtxfifwJHAtUIz1UvYUdgZDKXU9VlDVB8gBntBaP28fOxWYp7XuY/+8B3gauAYr+7AYuFZrXaGUSgJeBU4C/MBm4BSttb+hNmqtd1b70bCPH1Rt/2v2+a9sqC5gIPA/rfUB+5gFwF8O2/+01roCyFJKLQZG2PvOAlZorb+yj30CuA/rZflz+9ivtNa77P3zgN9Ua+fh3WKrX8dUrH/H/qa1NoF/KKVuB6Zh3cc6KaWW23/83s7k3aC1XqCU+hlWxiUBKzj4hdY6o7bywBKsl/YJdjsCmaH99Z3bPv8DwCCt9VXVMmDXYWWDIoC/aq0fUUr1BnYCqVrrg/axY4BPgV5a6yql1E+BO4CewLfAHK11mp1d+gtwJRAGpGFlT0+0t5lKqVuBpVrr8+1n8Z/A1cCxwFvAPRx6Br8BLtFa59vtmGjXP9yu+5ZA5kwptQxYgfVZjMQKcK7QWucCgXtZoJQCOENrvaqBWzaVJnzWh/0em/Z/xwJrtdaVwN/sdvpqOVdHPe/9gPVa6yKl1GfYwSRWwLdQa72ngXskhBD1koyfEOKoo7W+GtgLnK+1jrKDuCHAfKyXpGTgY6xAL6S28nZVnwCDgRRgHdY39Y3xM+AcrG/7x2J1mawuG5gOxGB16fqrUmpsPfXNBs7GeikciRUAANwG7LevpwfWS7jZyDailLpCKVUE5GJl/J5v7LGHeQmYrJTqrZSKwAoaPqm2/2/AZUqpCKVUKta9qf4ybhz2ZwMrCwlWcHGsUmqIUsqNFUzXeJFXSt2llCrBuheRWN30wHrZ3mgHAgEbOfQSXiet9RT7j6PsZ2KBUmoa1hcHs7GyOWl2+2otj/Vv6CtYAXs/oBwriG+uk7C6AZ8G3KeUGqa1zsAKmmZWK3cF8K4d9F2A9VxcjPWcrMD6PQA4E5gCDMHqKjsbyNNa/wvrWX/Svpbzq9U9EzjDPuZ8rM/5HrtuB3bW2P6cFwEPYwXJtwPvKaWSD2vn9Vi/XyF2Gew2AcTZ528o6INmfNZKqWeUUmXAViAT6++Exuio530HcLxSKg44HdislOoLXAb8qZFtF0KIOkngJ4ToKi4FFmmtP9VaV2G9KIVjZTdqpbV+WWtdrLX2AA8Ao5RSsY0412zg71rr/Xb24/HD6l2ktd6ptTa11l9iZYZOrqe+f2itM+yMzn+wAkqAKqwApL/WukprveKwF996aa3ftLu6DQGewxo31BzbgX1AOlCENcbqD9X2L8d6AS/CCs7WAB/a+z4DTlFKTbW75d2DFQRE2PszsTJrGitwuoRqGT/7Oh4HorGC7NeBQntXVLU/BxTaZZvjSuBlrfU6+5m4G5hkZ+SOoLXO01q/p7Uu01oXA49gZXaa60GtdbnW+nusDPQoe/ubWJm6wBixyzgU/P4CeExrvcUeY/YoMFop1R/r+YkGhgKGXSazgTY8pbU+YI9nWwF8o7Veb2e3PgDG2OWuAj7WWn+stfZrrT/F+tzPrVbXK1rrbVrrcuBtDj3XzdHkz1prPdfefzLwPtZ4vMbokOdda52H9Qx9AZyHFSj/HSsDfZFS6kul1EdKqT6NvA4hhKhBAj8hRFfRGytDA4DdHXIfVrfPIyilnEqpx5VSO+2s2B57V1Ijz7Wv2s/V/4xS6hyl1Gql1EGlVAHWy3B99VYfZ1SG9ZIL8EesLMASpdQupdRddVzLPUqpEvu/5w7fr7XejtVN9JmGLqwO/wRCgUSsjNv72BkQpZQDK2Pxvr0vCWsM1hP2ubdiZTWexnrpTQJ+xHphBqsb3HigL1Z3xAeBL+xMS/VrMLXW67Felh+0N5dgZVWri8Hqftschz9DJUAedT9DEUqp55VSafYztByIs7sCN0ddz8F7WAFoL6xsmR8rKAMr2/h3pVSB/awdxMowpWqtv8C67/8EspVS/1JKHX6/Dlf9y4HyWn4OtKk/cEngvPa5T8L6oqKh62lQtee5RCnVj2Z+1lprn93tsg/wy0aevsOed631fK31WK31OVhZQg/WBDB/wsrAvoNk/4QQzSRj/IQQR6vDM18ZwPGBH+zMSF+sb+1rK38FcAFWl6o9HJo10qBhmVgvkgF9q503FOtF/RrgI7s73oeNrLcGO4t0G3CbUuo4rBfE77TWnx9W7lGsTE99XFhjnJpjNPC7amPMngL+YI9BBKub49N2lsyjlHoFqwvgnXb73sWa+RC7G9sNwHfV6l5QbVzcq0qpv2GNG1vTwHVsxro3RrVM6EisF/fmyMAKaLDbGon18p9eR/nbsLpmTtBaZylr1sn1NOOzro/WOl8ptQQrqz0MeKva9e4DHtFa19pNWWv9D6zxcClYWbc7gN/ThC7DddgHvK61/lkzjm3w3FrrGkGiUqqln3VTnv8Of96VUuFYv9PnYHVH32eP/fsOK4sohBBNJoGfEOJodQBr9ruAt4G7lFKnYWVebsH6tvzrOspH2/vzsLphNWV6/beBW5RSi4BSrK5YASFY2YIcwKuUOgdrrNUPTagfAKXUdKzxSTuxurX5sLI9jTn2RqwJIbKVUsOxui3+r9p+N+DE6vnhUkqFAVVa69omu/gOuMaesKMMa9KJDHuiDpRSu4FfKqX+hJXVuRZr/FXgXOOwJttJwHpRX2hnRgJ1X6KUegvrnl2JNYX+Dju78jOs+12AlSm5CXu2Q2CZfU9utjOdgSDkC/u81wEPaK0H1HGbAs9EYHmG+cB8pdSbWMsFPIrV1XFPHeWjsbJgBUqpBOD+Os7TGt7Ees76Y01oEvAc8JBSaoPWerPdVflMrfU7SqnxWJ/vOqzntIJDz8/hvw9NNQ/4Til1Flb3RjcwEdjRiMltcux2HANsa+T5llHPZ12dHeROA/6L9fmcjtVV9vJqZUI5FKCH2M+/xw4qO+R5P+wy7gVe1dbEQqZVreoBnArsauQ9E0KIGqSrpxDiaPUYcK/dzex2rbXGGnf0FNZkJudjTeZSWVt54N9Y3frSsbpirW7CuV/AGre3ESvD8zHgBXx2lu5mrGAlHyuzuLCZ1zgY66W6BGuCj2e01ksbeexkYJNSqtRu38fUzBS8gPVSfDnwO/vPV0NwkfmSamVvxwoatmO9rJ6LtcZZwMVYk9PkYL3AVlFznN7fsQI3jXVPqmeJnsAaz7bBLvMbYKbWusDefxFW4FuMFWw8Zf+H/dleiJVdLcCaJv/Cap95X6yZNuvyAPCa/UzM1tYaj7/HythmYmWILqurPNYkH+FYz9tqGphJtIUWYj0PWfYYQAC01h9g3cO37O6mP2BlicDqCvkC1j1Pw/qS44/2vpeA4fa1BManNZrWeh9WxvwerM99H1Y2scH3Cq11GdZYtpX2+Sc24ph6P2u7u3NgAhYTq1vnfqxr/xPWOnvVfw8DY+xSsb4QKedQtrcjn3eUUkOxviz6h33tmVjjiDdj/d1yd0P3SwghamOYZkt7ewghRPdmZ/We01r3b7CwaDd298hbtNZbOrotQgghREeTwE8IIZrIHn9zKlbWrwdWhmi11loWWBZCCCFEpyRdPYUQoukMrNn48rG6em7Bmq1PCCGEEKJTkoyfEEIIIYQQQnRxkvETQgghhBBCiC7uaFzOIRRrSu9MrKmdhRBCCCGEEKI7cQK9sJaJ8TTmgKMx8BsPrOjoRgghhBBCCCFEBzsZ+KoxBY/GwC8TID+/FL+/c41PTEyMIi+vpOGCQjSRPFuiLcnzJdqKPFuiLcnzJdpSZ3++HA6D+PhIsGOjxjgaAz8fgN9vdrrAD+iUbRJdgzxboi3J8yXaijxboi3J8yXa0lHyfDV66JtM7iKEEEIIIYQQXZwEfkIIIYQQQgjRxR2NXT1r5fN5yc/Pweut7LA2ZGc78Pv9HXb+o5nD4SQ8PIqoqFgMw+jo5gghhBBCCNGldJnALz8/h7CwCCIje3ZY4OByOfB6JfBrKtM08fm8FBcXkJ+fQ0JCSkc3SQghhBBCiC6ly3T19HoriYyMkWzRUcgwDFwuN3FxiVRWVnR0c4QQQgghhOhyukzgB0jQd5QzDAdwVMyeJIQQQgghxFGlSwV+zVVa4uHDNzZQVtJx4wOFEEIIIYQQoq1I4AesXZlG5r5C1qxMa7U6TzrpBMrKylqtvhdffI7PP1/SavXVZevWH3nwwXvbrP6PP/4P9957Z5vVL4QQQgghRGvxlZdjdpHJG7t94Fda4mHrpgMAbN2U1Wmzfjfe+AtOO+3MNj/P0KHDuf/+h9v8PEIIIYQQQnRm5du3sfOWm8hf/HFHN6VVdJlZPZtr7co0TNMaV2aaJmtWpjHlrMGtUvf8+a+zYsWXeDwV/PznNzF16mlkZmZw441Xs2jR5wA1fv7zn5+gV69eXHHFNQBs27aV+++/hzfffI9HH32QoUOHMXPmpbz00vPs3ZtGaWkJGRnppKb24aGHniAsLIySkhIee+xBdu/eRXJyCklJycTHJ/CrX91ao20VFRU8/PD97NmzC6fTRb9+/XnoocdZt24N//zn33nppdcBeO+9BbzzzltERUUzadJk3n//bRYt+jzY7hkzLmb16pVUVFRw1133MWrUaLxeL3feeSuFhYV4PB6GDx/BHXfcg9vtbpX7KoQQQgghRFs7uGQx+P1gdI1cWde4imYKZPv8Pivw8/vMVs36ORwOXn31TZ544i88+eSj5OcfrLf8zJmz+eij94OB6Hvvvc1FF11S66Q1Wm/h/vsf4Y033sXr9bJkyScAvPLKC0RHx/Dmm+/x0EOPs3HjhlrP9c03qygrK2XevHd47bX53HHHPUeU2bFjO6+//irPPvsyL774b4qLi2vsLyws5LjjRvLKK29y/fU/47nn/gGA0+nk/vsf5qWXXuf11xfg8/lYtOijhm+YEEIIIYQQnYAn7yCl328Ap5OYE0/s6Oa0im4d+FXP9gUEsn6tYfr0CwDo128AQ4YoNm/eVG/5AQMG0rt3KqtXf01RURErVy7n3HPPr7XsT34ykejoaAzDYPjw40hP3w/A+vVrgsfExMRy8smn1Hr8oEGD2bNnN3/+8xN88cVnhISEHFFm/fq1TJo0mfj4eADOO29Gjf3h4RFMnnwyACNGHE96ejoAfr+f+fPncd11V3DttZexbt0atm/fVu+1CyGEEEII0Vlkf/4F+P1EjR6DKzauo5vTKrpt4Hd4ti+gtbN+h3M6nfj9h85ZWVnzPLNmXcYHH7zLokULmTLlVKKiomqtJyQkNPhnh8OBz+drUjtSU/swb97bjB8/gTVrvuG66y7H4/E0qY6QkENdN602eAH49NPFbNy4gWeeeYF//3sBF10064jrFEIIIYQQojMy/X4OLPkUgNgpUzu2Ma2o2wZ+tWX7Alor67do0UIA9u3by/btmhEjjichIRGv18v+/fsAK0iqbtKkyezdm8aCBW9w8cWzm3zOMWPGsXjxIgCKi4tZsWJ5reWysw/gcDiZMmUqN998GwUF+RQXF9UoM3r0WFav/pqCggIAFi/+b6PaUFJSTGxsHBERkZSUlBxxjUIIIYQQQnSkyqxM9v3pCfI//xTzsARK6Q+b8OTk4k5OJmLY8A5qYevrlpO71JXtCwhk/U6Y3J+IqCO7QDaWz+fj+uuvoKKigjvuuIf4+AQAbrnlNn7zm5uIi4tj0qSTahzjcDg455zzWL36awYNavokM9dd9zMeffRBrrhiJomJSQwdOqzWrOHOnTt47rmnAfD7fVx11XUkJSWzd++hgHfw4CFcccU1/OIX1xMREckJJ4wnMrL2DGR1Z589nRUrlnPFFTOJj09g1KgxTc4mCiGEEEII0VZK1q2lfOsWyrduoWjlV6RcdQ3hxxwLQOHyZQDEnnwKhqPr5MmMurJendgAYHdeXkmNLpNZWWn07Nm/URUs/982tmzMqjPwA3A4DYaN7NWkGT5dLgdeb8vX+bj11rnMmHEx06ad3uRjvV4vPp+P0NBQSktLmDv3Rn71q98wfvyEZrWlrKyUiIhIAF566XnS0/dz330PNauuxmjK59idJCdHk5NT3HBBIZpBni/RVuTZEm1Jni/REjlvv0X+ksVgGGDHQ67ERNzJKZRv0xiGwcAn/4IrNraDW1o7h8MgMTEKYCCwpzHHdMuMX1Z6Ub1BH1hZv6z0wnZqkWXr1h+57767GTJEMXXqtGbVUVxcxG233Yzf76ey0sMZZ5zd7KAP4Nlnn2bTpu/xeqvo3TuVO+/8XbPrEkIIIYQQojPwlVhfGiRfdgW+wkLylyzGm5eHNy8PgMSTJnfaoK+5umXgN/unJ3R0E2o1dOhw3n67ZcsexMcn8PLL81qpRXDbbb9ttbqEEEIIIYToDHwlJQC4ExKJP+0MEmdcSFVeLlU5OfiKiuh36mQKuthIpW4Z+AkhhBBCCCG6L19pKQBOey4Mw+UipEdPQnr0BMAdEw1drCtx1xmtKIQQQgghhBCNEOjq6axj6bSuSAI/IYQQQgghRLcS6Orp6EaBX7fs6nnppRei9dYGyyk1lAULPmyHFgkhhBBCCCHag+n34y8rA8PAac9e3x10y4zfyJGjcbvd9ZZxu92MGjWmnVokhBBCCCGEaA/+0lIwTRzhERhOZ0c3p910y8Bvzpy5OBpYjNHhcDBnztx2ahF8/PF/uPfeOwFYt24NN9xwNQC5uTn8+tc/b5c2PP74Q3z//fo2q3/WrPPZtWtHm9UvhBBCCCFEQ4Lj+6K7TzdP6KaBX3JyCjNmXFRn1s/tdnPBBReTlJTczi07UlJSMk899Xy7nOuuu34vWU4hhBBCCNGl+UrsGT0ju1fg1y3H+IGV9Vu48INa97U021dRUcHDD9/Pnj27cDpd9OvXn4ceehyATz75L++//w4+n4+oqChuv/0u+vUbUGddmZkZ3Hjj1Sxa9DkAJ510AnPmzGX58mUUFhZy0003M3XqaQAsW/Y5//rXM4SGhnLqqafzr389w5Ily4mIiKhR54oVy3jhhWdxOJz4fF5+85s7GTv2BH71qzlcfvnVTJ58Mjk52Tz88P3k5eWRmpqKacKECROZOfNSHnnkAUJCQti3by/Z2QcYMeJ47r33QQzDYMmSxbzzzny83ioAbrrpVk444SfNvpdCCCGEEEK0pu44oyd048AvkPX78MP3qKqqCm5vjWzfN9+soqyslHnz3gGgqKgIgO+/X88XX3zKP//5AiEhIaxatZLHHvsDzz77cpPqj4yM5MUX/83GjRu47767mTr1NA4ezOPJJx/l+edfoW/ffixY8Eadx7/44vPceefvOO64kfh8Pioqyo8o87e//ZExY8Zx3XU3kpWVyTXXXMaECROD+3ft2snf/vYMDoeD66+/kjVrvmH8+IlMmDCRM844C8Mw2Lt3D7fcMpcPPvi4SdcnhBBCCCFEW/GVWjN6SuB3GKXUn4CZwADgeK31D/b2IcBrQCKQB1yjtd7ekn3trbasX2uM7Rs0aDB79uzmz39+gjFjxnHiiScBsHLlcnbs2M6cOdcBYJomxcVFTa7/tNPOAmDEiOPJzc3B4/Hw448/MGSIom/ffgCcd94FPPXUX2s9fty4E/jHP/7C1KnTmDjxRI45ZtARZdatW8utt94BQM+evRg3bnyN/SefPJXQ0FAAlFKkp+9n/HhIT9/PAw/8jpycHFwuFwcP5pGXl0tiYlKTr1MIIYQQQojW5iu2A79u1tWzMWP8PgSmAGmHbX8O+KfWegjwT+D5VtjXrg4f69daY/tSU/swb97bjB8/gTVrvuG66y7H4/FgmnDeeTN49dU3efXVN3nttfm8//6iJtcfEhICgNOehcjn8zXp+Jtvvo3f/vZeXC43v//9XXV2ea1PaGhI8M9Wl1GrDQ888DsuuugS5s17m5dfnofT6aSysrLJ9QshhBBCCNEWghm/6OgObkn7ajDw01p/pbXeV32bUioFGAvMtzfNB8YqpZKbu6/ll9I81Wf4bK2ZPLOzD+BwOJkyZSo333wbBQX5FBcXMXnyySxevIjs7AOAFbBt3bqlxecDGD78OLZt06Sn7wessYR12bt3D8ceO4jZsy/nzDPPYcuWH48oM2bMuGAdBw5ksW7dd41qR0lJCb169QZg0aKFEvQJIYQQQohOJTDGz9HNMn7NHePXF0jXWvsAtNY+pVSGvd1o5r6cll1K8wSyfu++u6DVZvLcuXMHzz33NAB+v4+rrrqOpKRkkpKSmTNnLnfd9X/4fH683ipOPfV0hg4d1uJzJiQkcvvtd3P77TcTFhbGiSeejMvlIiws7Iiyzz77NPv378XpdBEVFcXdd993RJlbbrmNhx++nyVLFtO7d2+GDRtBZCN+OW6++f+4557biY6OZsKEE4mNjW3xtQkhhBBCCNFafCXdc4yfYZpmowoqpfYA07XWPyilxgH/1lqPqLb/R+AqrOCuyfu01usa2eYBwO7DN27e/CO9e/dvZBU15eRkc/vtv+HPf/5bp1jCoblKS0uJjIwE4L///YiFCz/iX/9q2sQxARUVFbhcLlwuF7m5OVx//dU8/fRz9O8/oBVbfKSMjDRGjBjepucQQgghhBDd18a7fkfxlq0c98gfiD1uRMMHdG4DgT2NKdjcjN8+IFUp5bSzdk6gt73daOa+JsnLK8HvPxS0+v1+vF5/sy4mPj6Jl156HaDZdQC4XI4WHd9Sb731JkuXfo7P5yUmJpY77/xds9uzZ08aDz98P6Zp4vN5uf76n5Ga2q/Nr8/v95OTU9ym5zgaJSdHy30RbUaeL9FW5NkSbUmeL9FcnvxCAIq9TirreIY6+/PlcBgkJjYtY9mswE9rna2U2gBcDsyz/79ea50D0Nx9omWuvfYGrr32hlapa9Cgwbz66putUpcQQgghhBCdxaHlHCI7uCXtqzHLOfwDuBjoCXymlMqzu2r+AnhNKXUfkA9cU+2w5u5rEdM0MQyjtaoT7cw0/VhJYSGEEEIIIVqf6fcfGuMnk7vUpLW+Gbi5lu1bgQl1HNOsfS3hcoVQWlpEZGSMBH9HmUB30uLifEJCjpyMRgghhBBCdE+maeLNz8es9BDSs1eL6/OXl4Np4ggPx3A1d9Tb0anLXG18fDL5+TmUlBR0WBscDgd+f8eN8TuaORxOwsOjiIqSWUCFEEIIIbqj8u3bKV63Bn95Gf6KCnxFRXj278dfVgpA75t/Q9TIUS06R2Aph+6W7YMuFPg5nS6Sklr+LUBLdPZBoEIIIYQQQnQ2/opyct59h8JlX9S633C7MauqyF+yuBUCP6ubp6ObLeUAXSjwE0IIIYQQQnRO/qpK/BUVuKJjgttM06R0wzqy57+J92AeOJ3ETTudkF69cISF4YyMIqR3Ko7QEHbd8X+Ub92CJz2d0NTUZreju67hBxL4CSGEEEIIIdpY5r+eo3T9OsKHKGJPORVnVBR5H75Pxe5dAIT2H0DP635KaN9+tR4fM/FECr9cSsEXn9Hj6msBML1ePPv2Etp/AIbD0ah2SOAnhBBCCCGEEG3A9Hop27QRgPJtmvJtOrjPGR1DwnnnE3fqNAyns8464qadTuGXSylatZKkmbMwnC7S//4Xyrdpev3yJqLHjW9UW4Jj/CTwE0IIIYQQQojW49m3F9PrxZ2cQvxZZ1O4/Et8xcXEnTqNuNPOwBEa2mAdoamphA8dRvnWLRR++SVlekswgCzfvr3RgZ+/1JooxhkV3fwLOkpJ4CeEEEIIIYRoM4HunOGDBhM3dRpxU6c1q564aadTvnULue+9bW1wOMDvx7N/X6Pr6M6zejauM6wQQgghujVvURHF332LWc+yRabfT1Vebju2SghxNCi3A7+wgQNbVE/UqNG4EhIBcISH03vurwHw7N+HaZqNqiM4xi9aAj8hhBBCiCNkvfwCmc8/Q8EXn9W6vzInm31PPsbu395O8drv2rl1QojOrGKXHfgdc2yL6jGcTpJmXUJo336k3vJ/RI4ajSMiEn9JCb7Cxq3lHQz8umHGT7p6CiGEEKJenvR0yn7YBMDBTxYRO2UqjpAQwJqOveir5WS/NR/TU2GVT0tr9HgbIUTX5istpepAFobLRWifvi2uL+bAkKqrAAAgAElEQVQnE4n5ycTgz6F9+lC+TePZvw9XXHzD7ZFZPYUQQgjRlV166YVovbXBckoNZcGCD2tsK/h8SfDPvsJCCpcvI/70MwHIfWcB+UsWA+BOTqYqJwdvQX4rtlw0pOrgQYpWriD+jLNwhIV1dHOEqKFiz24AQvv1x3C1fugR2qevFfjt20/kcSMbLB8Y4+fohpO7SFdPIYQQohsYOXI0bre73jJut5tRo8bU2OYrLqZo1dcAJM2aDcDBTz7GX1lJ4coVVtDndNLzhjmkXHk1AN78xnW5Eq0j6+UXyPvoA4pWrezopohuqiovl4q0PbXuC0zsEnbMMW1y7kAWsTETvJimiS84q2dkm7SnM5PATwghhOgG5syZi6OBBY4dDgdz5sytsa3gy6WYVVVEjhxF/FnnENqvP77CArLfeJ3s118DIOXKq4mZdGKwm5Vk/NpP+c4dlG/dAkBldnYHt0Z0R6bXy77HH2HvQw+w/89PBgO9gIpdOwEIG9g2gV9IEwI/f0UF+HwYoaE43CFt0p7OTAI/IYQQohtITk5hxoyL6sz6ud1uLrjgYpKSkoPbTK+XgqVfABB3+pkYhkHijAsBKFq5AtPrJfbUacRNmQoggV8HOPjxf4N/9sqMqqIDlGxYhzff+p0v2/Ijex/5A5kvPIfp9WKa5qGM38CWTexSl9DUVDAMKrMyMb3eest256UcQAI/IYQQotu46sobqWvG89qyfcXffYuvsICQ1D5EDBsOQOSo0YT26w9A+BBFyqVXHKojMhLD7cZfXm59sy7alGffPkq/3xD8uergwQ5sjeiuCr/8EoDECy4i/uxzMdxuir9ZTfb8eXjzcvEVF+OIisKdnNxATc3jCA3FnZICPh+VmZn1lvV344ldQAI/IYQQottI02UMGTAJp9NZY3tt2T4guHRD/OlnYBgGAIZh0POGnxF/9rn0nvvrGpM1GIYhWb92dPCTRQBEjTsBkIyfaH+V2dmUbdmM4XYTN+10kmfNpu9v78FwuSj8chkH5r0OQNiAY4J/h7SFxo7z684zeoIEfkIIIUS3UFriYeumA4wdMR3Mmv/815btq9izh4rdu3BERBI9YVKNfaGpfUieNbvWlydXvB345Uvg15YqDxyg+LtvwOkkefZl4HTiKy7G7/F0dNNEN1L01XIAok4YjzPSmiwlbMBAelx7PQBlP2wEILyNJnYJqC/wq8zKIvf9dylY+jnl9nhDZzec0RNkOQchhBCiW1i7Mg3TbxIZHosaOBG9+2t8fh8uw2DG9AuOzPYts8b2xUw+KbhmX2MEM34S+LUZ0zTJeXcBmCYxkybjTkzCnZBgLaWRf5CQnr06uomiGzC9XgrtwC8wzjcgZtJkKvbupeDT/wFtN6NnQGifPsCRgV/xurUcePmFI7qed8cZPUEyfkIIIUSXV1riYev3mfj91gC/scedD4b1CuAArjzx5BrlfWWlFH+7GoC4U05t0rlc8XGAdPVsLVW5ORQs/aLGi2vBF59Run4djvBwEs+fAYArIdEqn5fXIe0U3U/J9xvwFRUR0qs3YYMGH7E/edZsosaOw92zJ+GDhrRpWw7N7LkfANPvJ/f9d8l85in8FRVEjhpN9MRJuHv0wHC7iRg2ok3b01lJxk8IIYTowipzsln+6nL83nhwWP/sR4bHMvSYE/lx+3KmJqUQunMnnHZG8Jiir7/GrKwkYthwQnr2bNL5Ahm/Ksn4tZi/spL9f/0TVQcOULD0M3r94leYlZXkvrMAgB7X/RR3YhIA7sREyrHWUxOiPRQuXwZA7JRTah2/Zzid9J77a0zTbNPxfQDuxCSM0DB8hQWUrF9L3sKP8OzbCw4HSTMvIf7Ms4NtaI/2dFYS+AkhhBBd2O5nX2CvayKmo+Y/+WOGn8fBwgzOT02mdOMG/FVVONxuTNOk0O7mGTu1adk+AFd8AiAZv9aQt/BDqg4cAKAyI4O9jzyIMyLSXkbjNKLHjQ+WddkBoPegZPxE2/NXVVK2dQsYBjGTJtdbtj2CLMPhILRPHyp27iDjn08BVha8509vJGLosHZvT2clXT2FEEKILspbWIAuT8Ss5UUnMjyWC8+4g6JjT8NfUUHZls0AlOutVGZl4oyNI2rUmCafUyZ3aR0VaXvIX7IYDIM+t91J9E8mYHo8ePMPEtq3H8mzL61R3p1gBdzS1VO0h8r0dPD5COnZq9PMkBnarx8AhstFwvkXMOChR48I+ro7yfgJIYQQXVTeD5rM6MGYhrPW/X6fSbo7lX7OcErWrsVwush+w5p+PXbKKTWWamgsWc6h5UyvlwOvvgx+P3Gnn0nEsOGEDx1G+BBF6cbvSb7sShzumhPuBDN+EviJdlCRlgYQXNOzM0g45zxcsXHETJjUZmsGHu0k8BNCCCG6qPXrczAJr7eMaRjsjh9F6KqVFK1cAUBIz17ETTutWed0xcaCYeArLMT0+ZpVR0t4CwvY/6cniRozlqSLZ7X7+VtD/mdL8OzbiyspiaSLZgJW97S4qdOImzqt1mPcifbkLtLVU7QDz949AIT17zyBnzshkcTpMzq6GZ2aBH5CCCFEF5VbZB4xtu9wfj8URadCrh8jNIzE6TOIP+PMZmX7wOpm5YyOxldURGVBAdD4pSBaQ8HSL6jMzKCgIJ/ECy7CcNae7eysTNOk8MtlAKRcfhWO0NBGHeeyu3p68/Mx/X4Mh4zmEW3Hs3cv0LkyfqJhEvgJIYQQXZCvpISf7H4fw+nk2KeeOaJrYHUVu3dRuslH7JRTgl01W8IVF28FfnkHIb5ps4K2hOn1Bmca9JeXU7FnN+HHDmq387eGqgNZVOVk44iMJPK44xt9nMMdgjMmBl9REd6CfNz28g5CtDbT67VmzOTQuDpxdJCvg4QQQoguqHzHdjBNwo45tt6gDyBs4DEkzriwVYI+ODTBS2XewVapr7TEw4dvbKCspLLecsXr1uArKgr+XPbj5lY5f3sq3fg9AJHHjWxyttIdHOfXOvddiNpUZmVier24k5NxRnTPhdCPVhL4CSGEEF1Q+TYNQPiQtl04uTaBALKylcabrV2ZRua+QtasTKu3XOFSaxmKiBHHAVC25cdWOX97KgkEfqNGNflYV3Ccn6zlJ9qOdPM8ekngJ4QQQnRBZYHAb7Bq93MHMn6eVsg8lZZ42LrJWstu66asYNbPX1FO1msvk//5p5h+P559+yjfvg1HWBg9rr0eDIPynTvwV1S0uA3txVdWSvn2beBwEDmi8d08AwLdO2VmT9EcZVt+pGL3rgbLVdgTu0jgd/SRwE8IIYToYvwV5XjS9oDTSfigwe1+/mDGr47Ar7FdN8HK9pmmCVgTnwSyfgVLl1K0Yjk5899g3xOPkvvR+wDEnDgZd0IiYQMGgs9nBVJHibLNm8HnI3zQYJyRTe9CF8z4SeAnmqgqJ4f9f/kj+/74OFW5OTX2VWZlUnkgK/izx17KoTPN6CkaRwI/IYQQoosp37HDGt/Xv3+jZ4VsTcExfgdrD/wa23WztMTD1o1Z+H1W4Of3mWzdlEVpUUVwEhdHWBgVO3dQumE9ALFTrWUoIoYNt+o4isb5lWzcAEDkyKZ384RDY/wk8BNNVbRqJZgmZmUl2W+9GdxesTeNtAfvI+0PD1BlzxhbEejq2VcCv6ONBH5CCCFEF1Pegd084VDGz5N7ZABSV9fN2qxdmYbp89fYZpom33y8gaqcbFwJCQx87I/ETJoMQOSo0YT27g1AxPARQOee4KXom1VkPPcMnowMTL+fsk2bAIgcObpZ9QWXdJAxfqIJTNO0Aj8Aw6B0w3pKvt+Ar6SEjGeewqyqwvRUkPve21TlZGN6KnDGxVlrdoqjiiznIIQQQnQxZVutSU3CVQcFfvFxgJXxM00TwzCC+2ZfciHpmbuDPz8zr/Y6Bg9WnDHhdt5e/DB5BfvrPtmSjwEYcuwg3przy+DmsGMHYYSEUJm+H29hAa7YuBZcUevzezxkz/s3/vJySjduIPbkU/CVFONOTiakV69m1Xko43fkfReiLhU7tlOVk4MrPp64088k950FZM+fR0iPnnhzcwnp05eqrEyKV6/CGRUFQJiM7zsqScZPCCGE6EJKf9hExa5dOMLCOizj5wiPwAgJwV9Rgb+8/FDbSjzERfXD4ah/mQK3202PxGMwTZMeScc0qvzoceNrdGt1uN2ED7ZmNC3buqUFV9M2itd8i7+8HCM0DLOykoLPPwWsbF9zAzZHRASOsDBMTwX+0tLWbK7owgLZvugJk4g//UxC+vTFm5tL2eYfcEZFk3rzrcSfeTYABZ9Zz2lo/wEd1VzRAi0O/JRS5yml1imlNimlvlRKDbS371FKbVVKbbD/O6vaMROVUt8rpbYppZYopVJa2g4hhBCiuzO9XnIWzAcgYfoMnOHhHdIOwzCC4/y8BfnB7WtXpjFu+LkYRv2vHw6Hg0Gpp+H3mYwdMb1R5efMmXvE9mB3z82dr7tn4ZfLAEi5/Ap63jgHR1gYAFFjxja7TsMwcAWyfq20lIbo2vyVlRR/9y1gTYxkOJ30uPIaa6dh0Ovnv8SdkEjCudNxxh3KmofJwu1HpRZ19VRKxQOvASdqrbcppa4CngXOtovM0lr/cNgxDmAecJ3W+iul1L3A48BPW9IWIYQQorsrWPYFlZkZuFN6EHfaGR3aFldcPFUHDuDNzye0d2pwbF94eBxq4CS27lqJ3+874ji32834MdMID4vB7zOJDI9tsPwFF1xMUlLyEfsi1DAAynftaP0LbKRLL70QrbfWXWDNagCGHDuYVx58hIihw1p0PndCgtW9NS8XpDueaEDphvX4y8sJHTCQ0N6pAIQPHkzvm27GcLuDkyQ5wsJInjWbrBf/BUBovwEd1WTRAi3N+A0CDmitA3MlfwycpZRKqueYcUCF1vor++fngNktbIcQQgjRrXmLi8j76AMAkmdfhsPt7tD2BCZ4CWT81q5Mw/RbE7XUl8VzOByMHXFecCbPxpSvLdsHBMfKVeXkYPqODBrbw8iRo3E38FlYXVVPIPK4kS0+n8sOgAu++AJfWVmL6xNdW+HXVjfPmBMn19geNWYskcfVXEsyesIkYqecQsxJU4ITCYmjS0snd9kG9FRKjddafwdcaW8P5H/fUEoZwFfAPVrrAntfcP5mrXWuUsqhlErQWjd6pdfExKgWNr1tJCdHd3QTRBclz5ZoS/J8Hf12vvsm/vJy4kaPYsDpJ3f4xB5l/VMp/gbMtF2ETZuG3nQAO+6rM4vndru57LLL+O0fLgJg6+N/JG/Vagbf8iscsZczf/58qqqqguVDQkK47LLLGDbsmDpaEc3ehAQqDx4kxvAQltyjrS63TnfffScLF35Qbxmn08ndd9/ZKr+HERdN54c131K2ZTMZTzzMsN/dTXhq7xbX21nJ313NV7JrN2U//oDhcjHwnNNwxzR8L1Nuu7kdWtZ5dLXnq0WBn9a6UCl1KfBXpVQY8AlQAHiBk7XW+5RSocDfgKeBq1ra4IC8vBL8frPhgu0oOTmanJzijm6G6ILk2RJtSZ6vo1/lgQNkLfkMHA5iL55Nbm5JRzcJ16jx8O77ZC/7kvXho/CbNf/NHjtiOnr3KqB6Js7g6qtvDD6PhdutLpqVCT25+uobWbBgQY06DKNm+do4k5Lh4EGytuwi0hHRKtfWFA5HBOeeM4OF//kAn897xH63282MGRdhGOGt83sYEU/fe+4j/em/U56+nw233UnfO+8htG/fltfdycjfXc3n93jY++RfwO8n5pRTKfAYIPeyhs7+fDkcRpMTYS2e3EVr/ZnW+iSt9QlYwV04sFNrvc/e7wGeAQI55L1AsNO53S3U35RsnxBCCCEOyfvvR9YL3ImTg+N0OlpIjx6kTDsV/H4ydhyo0XUTDmX9AjN2OhxOjh96cnCsnq+4GG9uLkZICCE9e5GcnMKMGRcFu03WN7avOneKleWryj7Q2pfYaGNHnAfUnoGtr6tqc7mTk+l3971EHj8Sf3k5Bcs+b9X6xdEv5923qczMsH63ZsmIq+6iNWb17Gn/3wE8ijVmD6VUrP1/A7gM2GAfshYIV0qdZP/8C+CdlrZDCCGE6I4qMzMoXr0KnE4Sp8/o6ObU0PfSWeB0Mn7bW5zv/pbTdrzCrEEH+OVdp/DLu07h788+jNttdT5ymX4enHtF8NiKtD0AhPbrj+G0gsM5c+bicFivLo0NmEJ6WIFf5YGOCfxKSzxkplXVCHIDGhu8NocjLIyE8y8AOudyFqLjlGz8nsKln4PTSc85v6ixDIro2lpjHb+HlVJbgO1AJXAX0ANYppTaCPwADAHmAmit/cDVwLNKqe3AKfYxQgghhGiivIUfgmkSe9LJuNsggGiJsJQUYqecAqZJ2RZrSYXon0wI7g9k8QzDYGpSCo51a4P7AoFf2IABtZZvbMDkTrFWjOqojF9gUpuxI6ZjHPba1RbZvurC+g/AERZG1YEDsryDAKwungdeeQmApAtnykLs3UxLJ3dBa31jLZt3AWPqOeZr4Pi69gshhBDdjWmaHPzvQlxxccSefEqjjvHs30fxmu8wXC4Szju/jVvYPAnnnk/RiuWYXi/uHj0I7Vtz/a85c+ayY9tWZjnclG5YT1VeHu7ERDx79gBW8HJ4+Z07dzQ6YApJ6QlAVXZ2i6+lqQJLWPj9dtfWYw5NaNOW2b4Aw+kkfIiidOP3lG3ZQuzkkxo+SHRpFWl78BUXEdKrN/Fnnd3wAaJLaY2MnxBCCCFaqHj1KvI++oDsN14PLnvQkLz/fGRl+6acgjshsY1b2Dzu+Hjipp0OQMzEE4+YbTQ5OYVXXnuLvpMmg2ly4NWX8BYWUpG2G4DQ/gOPKP/yy/MaHTAFM365OY2+r62l+hIWUHNZirbO9gVEDLXWYSuv1t3TX1VF0aqV+CvK2/z8onPx7N8HQNixx2I4JAzoblqc8RNCCCFEy/jKysh55y0ATK+XqrxcQpJT6j2mMiuTkrVrrGzfudPbo5nNljTzEiKGDQ8uBl2bhPPOp/SHTZRt+ZG0++/FV1KMERpGSM+eLTq3IzQUZ1wcvoICvAfzgt1hi75ZjSs+noghqkX116V6ti8gMKHNjztWcN65F7Zpti8gcM/Ltm7BNE0MwyDvw/fI/99i4k47g5TLr2ygBlGbSy+9EK23NlhOqaEsWPBhO7SocSrtwC+0T9eb5VU0TEJ9IYQQooPlLfwQX1FR8OeqrKwGj8lf8j8AYk48KbhYemdlOJ1EHj8Sw1X3982hqan0f+AhwocOw1diTaEe1q9fq2QlQlJqTvDiSU8n64XnyHrh+RbXXZe1K9MwzSOXnRo7Yjq9UgbZM322vZDUVJxR0XjzD1J14AC+khIKli0FoHjNd+2eBT1aeDIyOPjJIrwF+bXuHzlydHCG2bq43W5Gjapz5FOH8Ejg161J4CeEEEK0UGmJhw/f2EBZSWWTj/Xs30fBF5+BYRA2aDBgZfPq4y0qoujrrwCIP/Ospje4k3InJNDn/+4gadZsHGFhRI//SevUG1zSwRrnV7Z5EwDe/IP4ykpb5RzVBbN9viMDv8jwWGZMu52MPZ5mPS9NZTgchA8dCkDZ1h/J//xTTI8HAF9hARW7d7V5G45GWS+/QO5777D7nt+S95+P8Nv3LKD6DLN1aa/uvI1l+v149u8HJPDrriTwE0IIIVpo7co0MvcVsmZlWpOOM/1+st94Hfx+4k6dRvTYEwCobCDjV7D0c0yvl8hRownp2avZ7e6MDIeDhLPP5dinng2ODWypEHucX6U9s2fpj5uD+xq6181RV7avOtM0m/y8NFegu2fJhvUUfP4ZAGHHDrK2rVvTLm04mngyMvDs2Q0OB2ZlJXkffcCe399NVd6hmVEPX1fycO0xeU9TVeVkY1ZW4oqPxxnVtIW/RdcgY/yEEEKIRiot8fDpR1s484LhRESFAHDJJRewfbu2CrwF/Lb2Y2sb65P/6f8o374NZ3Q0iRdeTPmOHQBUHqg7GPF7PBQstRbkjj/rnJZdUCd2+CQwLVF9EXd/VRXl23RwX2VmJuHHHNtq5wLISi+qNdtXnd9nkpVe2KrnrUvE0GEAlP1gZTrDBw8h6eJZ7HviUUrWriVp1qWter+PdsWrvwYgZvJJxEw8kew351GZvp/8T/9HymWH1pqcM2cuCxd+UGsdnS3bB4e6eYakSravu5LATwghhGik6pm9KWdZ3TJTEo9h584d+P2+Oo+rbaxPxe5d5L7/LgA9rv0pzojIYPauqp7Ar+jrlfhLSggdMJDwwUNaekndQmAR96rsbCp27sCsPNTFsqFutc0x+6dW5jbjuWcoWfMtKVdeQ9yp01r9PI3lTumBKz4Bb/5BABLOnU7YsYNwxsRQlZtD/rZdLF9TzBsf3n/oS4x6dLYJS1qT6fdTtHoVADGTJhMxRNHzpzey96EHKPp6JUkzZ+FwW1/6BLJ+H374HlVVVcE6GpPtK/xqBXkLPyTl8iuIGjOubS/KFuzm2VcCv+5KunoKIYQQjRAYtwWwdVMWZSWVlJZ4GNTr1OAU/XU5/Nt/X3k5mf96Fnw+4k47g6jRVlDoTkrCcLnw5ufjr6g4oh5fcTEHFy8CIOGscyRL00hue4bUqpxsSu2sl8te/qItAj+wAohybS2hUN9spu3BMAwihllZv9B+/Yk47ngMh4OoMWMB+G7pdjL3FZKSeAxOZ/05gc44YUlrKt+m8R7Mw5WYSLg95jas/wBC+w/AX1ZKyZqaXWPnzJl7xO9hVVUVb789n9Gjh9b537V33IL3YB4HF3/Sbtfm2bcXkPF93ZkEfkIIIUQjVB+3FRiftearNMJDo1EDJ+FwOGs97vBv//0V5Rx47WWqcnII7duPpFmzg2UNhyO47tzh3T19ZWXs/+uf8OblEdq3L1Fj2ydL0BU4wsJwxsZher0UrbK68QUycFWZbRP4VWak4ysuxhUfj9vOOHakuGmnE9qvPymXXxkMVKLGnoDHGc6efCuDdWzvU4H6v0zojF0YW1NRoJvnxBNrzCgbO2UqAIXLlwW3lZZ4WLkkg2lDhuOy76lBw92UXYbBkOgYDJeLip07qMzJbnI7Tb+fir1p5H+2hMwXnqN4bcNjNStlYpduT7p6CiGEEA0oLfHwh8fnkpu//9DGNxp3bOBF2VtQQP7nn1L45VL8ZWUYoaH0+vkvcRw2OURIj15UZmRQmZVFWP8BgDWuL+Opv+HZm4Y7OYXUW27DcNYeaIrahaSkUF5YgK+wAMPlIvbkU8h9/10qc7Ixvd56l5pojjJ7wfTwocM6RWY2bMBA+t/3YI1tEWooe5LHWV9oGBAeYq0zuHXXylq7LrfXhCW1jaVtD/7KSkrsACpm0ok19sVMmEDO229Rvn0bnowMQnv3Dnb9Pj5lPJ9v/h6wX6wdDqp8dXf9dhgGv37wEVw//EDxN6soXr2KxPMvaHQ7q3Jy2Pv4w/gKD40RLf7uW4xf3UzUyNG1HuMrL6cqNwfD5Qp2fRbdj2T8hBBCiAZ8t3Q7KQkD68zq1cXtcnH+2dPxf7aE3XfdTv4ni/CXlRE+eAh9br2t1hk53faC5dW7IGa+8Bzl27fhio+nz2134IqLa9kFdUPVs25hgwbjjIrClZgIPh9Vzci41MeTkU7xN6uBQxOrdEZlFT4yoo7FdBwKeseOmF5n1+Xasn2m19vgDKZN1dxZcluqdMN6/OXlhA4YeMTvpiMsnJgJEwEoXPFlja7fJUmjmaZGYBgGp6b0YHTvEXX+XeEyDM4/53z6TppMzMRJABR9s6pJ97Bg+TJ8hYU4Y2OJmTSZmEmTwe8n87lnKN+5o9ZjAtm+kN6prf4lhzh6yCcvhBBC1KOksBy9OZuxx52P3rMaqPub/CP4/ZyZnk5BejoAUWPHEX/2ufXOIhliB36BCV486emUbliPIyyMPv93B+5OND380SSwiDtA5PAR1raevfDm5lKZlUlIr94tPkfpD5vIff9dPHvtgMXhIGLYiBbX21bWrkwDhwOqreEeGV571q96ts/0+ynbuoWiFV9Ssn4d4YMVPW+4EVdcfIvbdPhY2hMm92+3rF/hyhXAkdm+gNgpUylcvoyir79ic9hxh7p+A5NO/xk5Ea8ze/DxLC8bzLqM+6nt7wpnSAi//M3tAEQMH4EzOpqqrCw8aWmEDRjQYBtNv5/ib6zJZ3r9fC4RQ5TVDqeDoq9WkP6Pv9L3t78jtHfN5/nQwu19GnMrRBclGT8hhBCiHivfWIbpN4MvxHV9k+9wOImP6RXc73A4GZ16HHFA5Jix9L//IXrP/XWDSwcEMg2B9eWK13wLQNQJ41slOOmu3NUCv4jhxwHV7nUrjPPzezxkPPtPPHvTcISHEzvlFPrdfS/uhIQW190WgovM+4/cN3bE9CO6elafsGTM2OFMvmIm5zz7D+74fh1lWzaz54HfU7JhfYvbVdtY2qZqTgayMiuLss0/YLjdxEyYVGuZsAEDCO3Xn/IKP9s2ZweX7DAdLrILInj6Hy9T0PckIur4u+LwrrKG00n0+AmAlfVrDGvymYM1Jp8xDIMeV19H5MhR+EtLyXrx+SPuwaHAT8b3dWcS+AkhhBB1yNu0lT0FIcGucPV1gzMMB9Mm3RDcbxgOJky5hn73PUjqTTc3egr1kB52V88DWZimScna7wCIPuEnLb2cbi2QSXVERRHar5+1rVcgyG554Ff6/QZMTwWhAwZyzF/+To9rrids4DEtrret1LfIfGR4LPExR3ZDPpzL6WTc1GlEjDgOf0kJGU//ndwP3mt2m0pLPGzdmBUMqPw+MziDbmOU79pF2h/uZ8/v7sJbXNSkcxd8YS1sHz1xUr2Lm6dcfiX7Bp6Cedi4TdM0WbVsF7sy/ZgOV61/V9TWVTba7u5Z/O03mLVF4YcJTE50+OQzhtNJr5/PxRkTg2dvGmWbf6hxXDDw67YmkDUAACAASURBVNuvwXOIrksCPyGEEKIO3y3dRvVX47qyfk6ni5kzZ/H7J67i4otnYhgGM2fO4sY7phPWr3+TzumMisIRFYXp8VD242YqMzJwREZ26rFiR4OQ1D4kzZpNz5/+LPjCfCi72vLAr+hba0xfzMRJwXXeOqtgtq+eReZPnXRDg/U4XS5+edtvSb3l/0i65FJwOjm46D8cXPxxs9q15qs0/IdNitKYrJ/f4yFnwXz2PfYQnr1pVGUfIPftBY0+r6+8nMKVXwEQP+2M+s/Vqz/7XamYRs2/A/w+k22bDwSD6cP/rqhrYpywgcfgTk7BV1gQnBCovusMfBFUW3dUR2go8WecBcDBTxYFt5t+f3ANvxDp6tmtSeAnhBBC1ML0eskt9NeY+AJqz/oZGMFv8ufMmcuYMeNaNOV9IOt38L8LAYgaM04mZGghwzBIOPtcokaOCm4LdJ2tzMxs0QQlvrJSyn7YBIZxVGRm68v2BST/P3t3Hl/VXe57/LP2kGRnnoGEuZTFPBcKdAA6FwodsLV2UKvGiserXqvW4epRz/H0qsfTq1br6RFPtT2KtpbWaq1jSxtKW2gZCmQxB0gIhITM897r/pG9Q6a9szPu7OT7fr14Qdb4bFhdzZPn9/s9aRNCVv3aJzKGw0H6DTcx9oGPAXD+md9Q+fprvYqptqYRa08xdqdvTcOp+hX/6Adc+MvLAKSsWoPhclH1Rn6PiVRAVf7r2I0NeKabPVbmQ/7d2eDzXdzX/l0RrA2GYRhtVb+y55/DDrEaaM2ed/E1NHS7+ExAyqo1ODwe6q2CtoVeAtVoZ0oKrqTkkJ9PRjYlfiIiIt2oswpYWriVm2r+xINfvIpPPHw1n3j4ah76xnpuv/0O3P42DG63m9vv2Nj2k/ysrGw2b36qX0veB76pqz98CICkJZf189NId5xJSTjiE/DV1+Otquz5hCBq3tmF3dKCx5wRFSuulhRVhaz2BbRW/bpvRdFdIpO87HKy3n8PAGd/8XNq9u4Oef2GwhPU7N1DY3Exb/5hDz5v90MdQ1X9vHW11B3cj+FyMfErX2PMvfeTvm59awy/fBJfc3PIGGyfr22YZ+o1oat94VRK2wtU/cDgsoXXBH0npK25FmdqKg1Hj1D2wtag16sODPMMsvgMgNPjIXX1NUBr1a/+yGHOPPE4AKmr1oQVt4xc+vGhiIhIN9oWVblsaZc+bHl5m3jhheeAwWloHZiPBmiY5yAyDIOYceNam2ifOYMrpW9JW/WbbwKQvPTygQxv0Nz5wJKwj3UmH2Hrc8/S3HIxgQrVzy/t2uvwVldR/offc/7ZZ4L2lWs6W8LJb38LvF4anR4OT9rYpboeEKj6dbfCZ+PJkwDEjJ9A3OQprTHccBPVO96gqeQMF/70x5A98ur2v0fzubO40jNIXLAw5N9FOJXSzhbNXseFyjNMy11DXU1TtyuUOpOSGPexBzn9vf9L+R9fxGPOaFt5NqClqora/e+B00nS0mUh75l6zXVc+POfqN39LvVWAXZTE8lXXNmWEMvopYqfiIhIJ3ZLCzXv7AK6X1QlKyub9etvwzCMQWlo3T7x0zDPwdXfeX4tlRXUFRwAp5PExeEnVNEiL28TDmfPi5S0l75uPYbLRVPRabx1td0eU/H3v4HXizszi8Kc5dhBKosBwap+DYUnAIibNPlifG432fd9EIDyP/yepjPFQa8bGCKauvoaDGfoPp3hVkrbS/CksP6ah/DEJYecqxhvzmhNzGybkp/9Jy2VHSvQFX/7C/h8JMyZ2+NwTVdKCslXXAWAr76ehAULGXPfh7r8AEtGHyV+IiIindRZBfhqa4kZl0Nsbm63xwzEXL5g3GMuzt9Jumz4zxmLZv1N/Kp3vg22TcKcuTgTEgYytGEh8EOO9kObe/phh8PtJtZffWs4drTLfm99PVX+nnk5n/wUdRNmYQdpkxLg89qUFHUdjttY2JpMxU7quIhSvDmD5CuuxG5poeS/N3e7YmbDiRPUHdiPERtLypVXhbw/tFZKA0O+2//KyO753z1Y/O1l3LIBz3QTb2UlZ5/c3FZdbKmq4sJf/wxA+s3rerwXQPqNN+GIjyd+5izG5X2ix6RWRgf9CFFERKST6rcv9s4LJjCXbzDEZGfjSkvDcLmIN2cMyj2kVVtLhz728qt+q3WYZ1KUDPPsi74MbfZcMo2GI4e5/6FPczRUUn3L9QCY5gy2bLk4v61k8xNUbc8n6+57SAsx967h5AmgY8UvIOvO91O7bx8NR49Q8be/tK14GVD+0osApF69OmQLh570ZuhsKIbDwdiPfpzCr3+F2r17qNqeT8rKKyj/44vYjY0kzF+A55JpYV3LnZnFJd//ATgcHdo+yOimJ0FERKQdu6WFmneDD/McCobLxaSvfZOJX/m6hnkOskDFr/H06bD6qLXXUlFBw9EjGG43ifO7n8s2EvRlaLNnWmuCMj0pua1aGIzb7Wb+/I7z6+KmXgJAw9GuFcOAlrp6ms+eBaeTmJyulXlnfAJj/EM+zz/3LE1nz7btazpTTM07uzBcLtKuv6HLuZHiTk8n++57ASj99dPUHz1C5St/ByDz1tt7dS3D5VLSJx3o/yYiIiLtVL/1Zuswz5zgwzyHgjMpKWL3Hk3c2dm40tJpuVBO/SGrbSGdu+66Fcsq6PH8yZ54Hrv7PhxxcYMdakTl5W3i6NEjYQ9tjpvamvjdlprG33tIPrqrIgYqW/XHjgQ9r/b4cbBtYnPH4wiSXCYuWEjSsuVUv/kGZ//7Z+R++rM44jyU/+klsG2SV1yBKzUtrM80VJKWr6B619vU7tnN6e8+gt3SQtLSZWq+Lv2mxE9ERMSv7uABzv7i5wCkrr42wtHIUDAcDpKvuJLy3z9P5bZX2xK/efMWcOzYUZpDtANwORxMT0wioV1vwJGqt0ObXSkpuLOySS09x9o11/H7v77c7d9lsDmDMbnj+cKBfZyoq4U/vRjyXlMLj/E7vhF0f/bd91B3YD/1hw9x/CsPk37jzVTt2A6GQdqNN4f9mYaKYRiMue9DnDj8FXx1teBwkLH+tkiHJSOA6r8iIiJAw4njFP3oB9gtLaSuuZaUVasjHZIMkZQrrgTDoOadnXhragD/apY9VaqAjTm5oyLx64s4/3DPe5YtD/p3GbSxucPBzNzxuHpYidJlGMydHnoerDMxkfH/+/PETZ2Kt7KS0i2/Aq+XpMuWEZOdHeanGVqu1FTG3Hs/GAYpV6/qsNKvSF8p8RMRkVGvubSUoke/j93YQNKyy8l6/we09Pko4s7IJH7WbOyWltZKEF1Xs+xyjsvFqowsxkydhjs9YyjDjRqB4ZrxpaWsX38brk7JX08rhH7ollt7aPLQ+o3sxx7I6zGW2AkTmPDwVxn7wMdwpqRgxMSQvja8FTIjJWnpMqZ+9/ttc/5E+kuJn4iIjHqlv/013ppq4mfPYeyHP6oFEUahlCuvBqDytW1ty+iHqvoZ+Kt981XtC8ZzyaUAVBw7xfjk5RidWuD1tEJo7oKFrM7M6pIwBrgMg1VZ2eTMmxdWPIbDQfKKlUx55LtMeeR7xOaOD++DRJArNU3vIxkwepJERGRUqz96pHV1v5gYxn74I1pFc5RKXLAQZ1ISTUWnaTh+DGhX9ev0TLjdbtaMzSXVHUPCvIXdXU6AmNxcHHFxHGYCdbWxLBg/G5e/n1w4/QA9U6dxR84EDLv7pukO4O5FS3G4Y3oVl8Mdgys5dBN0kZFIiZ+IiIxatm1z/tnfApB27fXDbnU/GTqGy0XyipUAVG57tW17Xt4mjE4DDg0bbs/IwJmcTNzkyUMZZlQxHA6YMoMzSZcCBjMX3I3Dn/iF0w/QmZiI+ZGPcd3M2V2qfi6nk1WZ2Yybbg5W+CIjjhI/EREZtere20f9IQtHfAJpN94U6XAkwgLDPavffhNfYyPQWvW75pJpbYuMuAyDVWnp/mrffA3D68HRhJkE6nUJCWlctuiaXvUDTL1qFZ/9fz/G2WmupcNnszEnl1gl3iJh09tKRERGJdvno9Rf7Utfuw5nfEKEI5JIixk7jripU7EbG6nZ8y4AvuZmbktKbqv5ORwONvqbhSfMG7lN2wdCbU0jhVVx2I7WobI+HEzLWcP8eYvC7gcIXRfacRkGqzKzSHXHEDdx0qDELjISKfETEZFRqebdd2g6fQpXejqpa66JdDgyTCQtWw5A9Zs7AGg4cphUDK6ZNAXDMFi/bgPpaek44hNImDU7kqEOe7vyC7E7rY4b70nhgQ/8c1jVvvbaL7TjdLt539RLcCbEq6m5SC9oBruIiIxKjYUnAEhesbLXi0PIyJW0ZCmlW35F7Xv78NbUULv/PQA+tP42zr3+Kg9+6rOkutzYXi+OuLgIRzt81dY0UrDvLD5vx4VZfF6bgn0lLFk5ifjE8P+7C1T9nnlmCxtuvYMFD/4Taclx1LhiBzp0kRFLFT8RERmVmi+UA6093EQCXCkpxM+cBV4v5954m78diqHR6WHCsuVs3vwUmZlZuFJTcWeod18ou/IL29pidGbbNjvzC3t9zby8TSxcuJi8vE240zPwjFNTc5He6HfFzzTNtcC3ADdQDnzIsqzjpmlOB54EMoAy4H7Lsg77zwm6T0REZCi0XLgAgEvNt6WT5MuXU7f/PXa9WcQF53iOZyxk9qXTIx1W1AhW7QvoT9Vv8+anBipMkVGnXxU/0zTTaE3g3m9Z1lzgCeAn/t2PA49ZljUdeAz4abtTQ+0TEREZdC3lrRU/V5paOEhHiQsX0RSXTJFjHBgGZ5IvpaEp0lFFj1DVvoC+Vv1EpO/6O9RzGnDWsqxD/q//CNxgmmY2sAj4lX/7r4BFpmlmhdrXz1hERETCYts2LYGhnunpEY5GhhtHnIdTU1e1tSHAMJSk9EJJUVXQal+Az2tTUlQ5RBGJCPR/qOchYKxpmpdZlvU2cI9/+wSgyLIsL4BlWV7TNIv9240Q+0rDvXFGRmI/Qx8cWVlJkQ5BRig9WzKYRtvz1VxVhd3cjDMhnjETsiMdzogWjc9WdVUDp7wZ2P4fj/tsA+u9Em5YP4vEZC3o0pNPfnH1kN0rGp8viR4j7fnqV+JnWValaZp3Af9hmmYc8BJQAQx6VlZWVoPPF/qnSUMtKyuJ0tLqSIchI5CeLRlMo/H5ajh5EgBnStqo++xDKVqfrW0vH8LGgIs1P3w+m5dfOMBVN1waucCkg2h9viQ6DPfny+Ewel0I6/eqnpZl/dWyrCssy1oC/AjwACeAXNM0nQD+33OAU/5fwfaJiIgMurb5fRrmKZ301IagrkaT/UQkOvU78TNNc6z/dwfwbeBxy7IKgd3A3f7D7gbetSyr1LKsc8H29TcWERGRcGh+nwQzGG0IRESGg4Ho4/cvpmkeBA4DTcDD/u0PAp8yTfMQ8Cn/14SxT0REZFA1t63oqcRPLgq3DYGqfiISjfrdx8+yrI8G2V4ALOvtPhERkcEWqPgp8ZP2etOGQHP9RCTaDETFT0REJKpojp90R20IRGQk63fFT0REJNpojp90584HlkQ6BBGRQaOKn4iIjCqtzdsvABrqKSIio4cSPxERGVW81dXYLS044hNwxMZGOhwREZEhocRPRERGFc3vExGR0UiJn4iIjCpt8/vS0iIciYiIyNBR4iciIqNK8wVV/EREZPRR4iciIqNKi5q3i4jIKKTET0RERhU1bxcRkdFIiZ+IiIwqgYqfeviJiMhoosRPRERGFc3xExGR0UiJn4iIjBq2z3exeXuqVvUUEZHRQ4mfiIiMGt7qKvB6cSQmqnm7iIiMKkr8RERk1Gib36eFXUREZJRR4iciIqNGc2CYp5q3i4jIKKPET0RERgW7pYXa3e8A4ErPiHA0IiIiQ8sV6QBEREQGmq+5ibqDB3AlpxAzdhwtlRWceeKnNJ44DoZB4oKFkQ5RRERkSCnxExGREafshee58NIfLm5wOsHrxZWewdiP5hE/3YxccCIiIhGgxE9EREYU2+ulKv81ANxjxtJ8vhS8XpKWXU72PffhjE+IcIQiIiJDT4mfiIiMKLX79+GtqiJm7Dgmfevb4PPha2jAmaCET0RERi8lfiIiMqJU5b8OQPKKlRiGAU6nkj4RERn1tKqniIiMGN6aGmr37AbDIGn5ykiHIyIiMmwo8RMRkRGj+u23sFtaiJ81G7d69YmIiLRR4iciIiNG1faLwzxFRETkIiV+IiIyIjSdKabh+DEcHg+JCxZFOhwREZFhRYmfiIiMCFVvvQlA4pLLcMTGRjgaERGR4UWJn4iIjAgNx48BkDBnXoQjERERGX6U+ImIyIjQePoUALETJkY4EhERkeFHiZ+IiEQ9b3U13ooKjNg43JmZkQ5HRERk2FHiJyIiUa+t2jd+PIZD/2sTERHpTP93FBGRqNd4KpD4TYhwJCIiIsOTEj8REYl6Fyt+SvxERES6o8RPRESinhI/ERGR0Fz9vYBpmuuAbwGG/9c3LMv6nWmaJ4AG/y+AL1qW9bL/nMuBnwIe4ARwr2VZ5/obi4hINLrrrluxrIIej7v0UpN7bv0G12+YRXxizBBEFh1sr5em4iIAYsaPj3A0IiIiw1O/Kn6maRrAL4H7LMtaANwHPGmaZuC6Gy3LWuD/FUj6HMBTwCcty5oObAMe6U8cIiLRbN68Bbjd7pDHuN1uxmRM5cypSnbmFw5RZNGhqaQEu6UFd2YWTo8n0uGIiIgMSwMx1NMHpPj/nAqcsSzLF+L4xUCDZVmv+79+HLhzAOIQEYlKeXmbwDZCHmP4bKblXgNAwb4S6mqahiK0qBAY5hkzQcM8RUREgulX4mdZlk1r0va8aZqFwFbg/naHPG2a5l7TNH9smmaqf9tEoLDdNc4DDtM00/sTi4hItIr3pDB9ynIcDme3+12GwfzcWXjciQDYtq2qXzuNp04Cmt8nIiISSr/m+Jmm6QK+BGywLCvfNM2VwG9M05wFXGlZ1inTNGOBR4EfAff2O2K/jIzEgbrUgMrKSop0CDJC6dkaud7adoIlc9dScGw74O2y3+l2M2v++/HRWhX0eW2s90q4Yf0sEpPjBiSGaH6+SkvPAJA9ezoZUfw5RqpofrZk+NPzJYNppD1f/V3cZQGQY1lWPoA/+asFZlqW9bZ/W6Npmj8GXvCfcxKYFLiAaZqZgM+yrPLe3LisrAafz+5n+AMrKyuJ0tLqSIchI5CerZGr8nQJ775xgriYFMwpyyk4lo/PdzH5c7vdXLboGuITM2j/yvP5bF5+4QBX3XBpv2OIpucr5EI4G+9o+6NpzmDLlq1DFJUEE03PlkQfPV8ymIb78+VwGL0uhPV3jt9pYLxpmiaAaZozgTFAsWmaKf5tBvB+YLf/nF2AxzTNK/xfPwj8tp9xiIgMe80XLlD+xxcpfeY3nNvyK4p/8iNefex5bG9rordo9joMo+Nr2eFwMC33Gjr/nMvntUflXL9wF8KZP3/hEEUkIiISHfpV8bMsq8Q0zU8Az5imGVjQ5QEgFnjRNE0n4AQOAJv85/hM07wP+KlpmnH42zn0Jw4RkeHM9vmofG0b55/Zgq++vm17o9PDmUkbsR2tr+IET8eqn9vt5rKFa/DEJePzdh3hEJjrNxBVv2iRl7eJrc/9LuQxDoejdcEcERERadPvPn6WZT0NPN3NrqA/brUsazswt7/3FhEZ7povXKDkicepP2QBkDB3Hp5Lp4PTya6iODjvaF0b2W/R7HVYx98AvGAbrdW+bpI+uFj1W7Jy0qjp6xdYCOfg0dc7DIkNcLvdbNhwO5mZWRGITkREZPgaiHYOIiLSDV9zE8U/+n/UH7JwJiUxLu8T5Pyvz5J+8zpiV67heLkLX6fmN4GqHxhcOnk5ntjkkPcYbSt87sovZPHctV2GxAao2iciItI9JX4iIoOk9FdP01h4AldmJpO+8a8kLV2GYbSuzLkrvxDb7r6St2j2OsZlTWPx7LU9LmLl89qUFFUOeOzDUW1NIwV7S/D4F8Lp3P5C1T4REZHg+j3UU0QkWoVcIbKdvqwQWfn6a1RuexXD5SLnE/+EK7lj5a6kqCroEM4ETwrrr3kIgIzsBO58YAkA3poajn7mnzBiYpj2w59gOLvv+zdS7dx2DJ/XCzg6Don1U7VPREQkOCV+IjJqzZu3gGPHjtLc3Bz0mL6sENlw4jjnnv4FANn33k/cpMldjgkkc73hTEzElZFBS1kZTSUlxObm9voafVGz+12wfSQuXExtTSN/ef4g12+YNaTzCqtLL1Cw9ww2rcludwvhqNonIiISnIZ6isiolZe3CYcj9Guwt1Wk+qNHOP3v38Fubib5yqtIueKq/obZQSCJbCw8MaDXDaa5vIzix35A8WM/pDL/dXblF3LmVOWgzSv0VldTvWsndVYBTSUl1B89QsmTm/nHo89idxr22rH9haFqn4iISAiq+ImMInZLC4Zr5P1n39cqVFZWNuvX38bWrc92W/XrbRWpruAgRT98FLuxkcRFixlzz/1hxxKu2EmTqXlnFw2FJ0hesbJf1wp3qOtkTzzfmT2Pk0//moLJ7wMYtNVES57cTO3udzts69z2IiBQ9Ttw5DWmT1lBfFzKgMYiIiIykoy87wBFpFvVu97mzH8+TsbaW0i/ZUPbIiPRrn3y8s/fDX5csHl6eXmbeOGF57o9pzfVvpq9ezjzkx9hNzeTtHwFYz/0kUGZgxeo+FUWFrP96d39GnIZzlBXl2EwPTGJ+NlzKDiX2DrHznAOSg9BX3MzdQf2AxB3yTS8VZXYPh/HJ14Dta4ObS8CFs1ex4XKMyyZs3bU9TQUERHpDSV+IqNE5WvbwOul7IWt2F4vGbfePiKSv1kz53L48OFue7oFhJqnF6zq15tqXyCpxusl5erVZN9zH0YPQ0j7KnbSJL6wfy8ndu4AftanZDcgrGbowPvnziP1I//EmR+/ge2fITAYPQQbjh3FbmoiJnc8E7/01bbtOzfvxFdd2+057RfCGS2rm4qIiPSFEj+RUcDX0EB9wUEwDDAMyv/we7BtMm67I2qSv3CHJXanp8pdXt4mXni+YwJk2IRV7avank/Jz/8LbJu0628k8313DerfqSspmWmZYzhZdLLPyW5AT83QXQ4HqzKymHztDbzzxklwOqHdSqS21zegVba6gwda45o5s8P2viyEIyIiIh1pcReRUaD2wH7slhbipkxlXN6D4HBQ/scXqdz2SqRDC9u8eQtwu929Ps/tcvVYucvKyuaGxUtx+RM2l2GwKi2d+PPnQ167Mv81SjY/AbZN+i0bBj3pC7hs6Z0YPby+wxmmuiu/kMWzQzRDt2Fj7gRc85dRsO9sl/YTPhsK9hRTV9NEbU0jW5/eTV1NU+8+TDttid+MWX2+hoiIiHRPiZ/IKFC7ZzcACfMXkLRkKWPu/xAAF/7yctAm4sNNOCtwdsfwerktLR1fU+iEZGPuBAIpm8PpZGNOLmd++hOq3tqB3dLS5fja/e9x9smfA5C58U4yN9w2JElfbU0jFTFTMKd2bWAeEM4w1bZm6HHdN0N3OZysysxi/GXL2P3ehaDPia+lhfzf9H+1T19DPQ0njoPDgcec0adriIiISHAa6ikywtk+H7V79wCQOH8BAMnLV1L2/HM0l5RQbxUQP2NmqEsMCz2twNnKAC4mKC6Hg9VZ2Th37eLUuW+Rdfe9eCsraTx9CsPlIv3mdRhOJ76GeuJOnWR1ZjZ/OX+OW2/byLhYD/UFByn5z8c5n5ZGyqo1pKy8AldqGo1FRZx5/DHw+Ui78WbSb7x5SP4OoLVKB0a3DcwDwq322V5f0Gs5bB8bc3JxL72Sgle7VvsCbIeLR37xLcoqTrdu+DXwxZ4/R+f5h3WHLPB6iZs6FafH0/MFREREpFeU+ImMID3Og1t3HdD6TfdjH/gg5b9/nsptr0RF4gdw7z0f5bnnnu12n8PhwgC8vovVOafbzf/6zn/QtOXXNJ46xenv/FvHczwe0q69ntoDB8Dr5QPLV3L+9EnyPv5J0lNSqNqeT8Vf/kxTyRnKnnuWsq2/I37mLJpKSvDV15O4eAmZt28czI/cQW1NY+uQS7trA/OAsKt9+87i89c4O1/L5XSyOmsMYy65lANl8dh2Vci4xmRM5ULVmZBzDjuzrAIWLOimsrdzB/zmf4CeF6cRERGR8Gmop8gIEs48uMCiHylXXAWGQfWunbRUh/7GfrgotOqYPnk5zk7DEh0OJzOmrsScuqJtyKLD4WTtzbeSO38hE7/6dZJXXIE7ewwJ8xeQ7G+qXvb8c1SVlPHSP0ppdHqYsGw5mzc/RWZmFg53DKlXr2bSN/+V3M98jsRFi8HhoO7AflrKy4ibegljP5I3aKt3dmdXfmGHIZcdG5gH/i7CrPb5OvZGaH8tw+Hkof/+HyZ++f9wtrgqaLWv7dw5XeMIxeFw4HSG/rljOIvTiIiISPhU8RMZQUL1pAsIJAbujAwS5s6jdu8eqrbnk37DTUMUZd8EqlTdDUs0DAeLZ6/FhrZ9huFg0ey1ADjj4xn7wEfbjrdtm5aKC9S9t4/tW/Ipa0rmeNp8ps9b0OW+hsNBwpy5JMyZi7emhuqdb9FUXEz6LetxxAxs8/JQ2qp07ZKwzpW6QLIbVrWvU0+8zs3QExLTMVyuHlfU3PbyIQ7uNbqtPnbH7XZz7bU38uc//ynkcb3poSgiIiI9U8VPZAQJzIMLVvXrPAww5apVAFRue2XYL/ISqFIleFIwJy/vUNkzp6wg3pPSlryAgTllBXVV3b/iDMMg+667aYxJpLA2AQyDMynTaUnNDhmDMzGR1FVryP7AvbiSkgf6I4bUudoX0KFS1y7Z7e11AtcalzWtrRl6T9ono91VH7vjcDhYsfAOZnSzoExAb3ooioiISHhU8RMZYULPg+tYRUmYOw9XWjrNZ89SX3CQ+JlDt4x+uH35THMGTmmHxQAAIABJREFUm3+2hYK9JW1VqkVz1mGdaK3sud0ufvD4v7QlCRtLZ/LFL/5vvvOdfwmZOMSMy6F49s3YgZ7fhoNd208OWE+6gVZS1P2Qy/aVOnPKCuouhE7gg10ncK3eNENvn0QGm3PYnsswWDV5GsVHa1k4ex0F/VicRkRERHpHiZ/ICBOYB2cd347Xe3Ghk+6qKIbTSfIVV1L+++ep3rVzSBO/efMWcOzY0RArdF6c57Xz9UJ8Xi+BQQoJnhRmTF3BgSPbunymrKxsNm9+qsf719Y0UliXiO1oTVx8GBTsK2HJyknEJw7dEM5wBRtyedddt2IdaU2gDxx5lQNHXuXbj3U9LrBQyp0PLOH81mcpf/H3pFx1NWPu/zBZWUmUllb3Kp7uhp6GWmkUWv/15uWuoLqfi9OIiIhI72mop8gI0n4eHHTsKResiuKZ1lrhaio6PRQhtgmnL5/D4eDeez6KtacYu9PrauGstYzNmsZ993ysT/fflV9I57qXbdt97kMXKb1Z0AfAW1dL9VtvAZC4ZGmf79vdkNFAMtd+CGegt6Hb7ebG1TdQO3YJtqP1Z459XZxGREREek+Jn8gIEvhmvHUe3OVtq1+GqqLE5uYC0FhUNKTz/Hqaj+gyDK6fM58jb5zG13klElqTjFuv+zzHC2p7fe/uqlUAPq9Nwb4S6mpCN3sfTsJNoD940y2UbH6CYw99luZzZ3EmJxPfj0bpwYaMtk/mHA4XDn+S53A4WLribux2Te47J4pOp0vVPhERkUGioZ4iI0TnZGbRnFuwTuwAvCGrKM6UVBzx8fjqavFWVuJKTR2ymEOtQuoArve5OHCspq1C1FkgUevt8MxQC5wEqn7Dda5fZz01tne73ay9ejW1P/4h+D9z/MzZZN5+B4az+8VVwhFqtc/GmHd45pktbNz4Pmzb5plntnDzzRsoPtHUJVnsODzU6HMFV0REREJTxU9khOiczATmwRmGEbKKYhgGsbnjAWgsLhqSWAPiPSnMnXkVrk6rO7pdbtZdfxM189Z3qBB1p7fDM4NV+wJGWtXP4XCwtrEZbJvk5SuZ/O3vMP5znyduytRBjWfhwsXk5W1q+/Pi2Wu7Tbbbr8Q6Y+qKPlVwRUREpGdK/ERGgGDJTLjz4GJycoChn+e3K7+QGZOu67Ld4XSw6fNfojplPLYRuirl89phrUDZ/p49DWmNtrl+bcNmXR0ro263m2svNUmqrSV28hTGfPDDxGSHblkxUPFs3vwUmZlZbX+uq3IGTbYDbSQWzVrbq39LERERCZ+GeoqMAMGSmfbz4CZMCn5+TI5/nt8QVvxqaxop2Fvir/iswDqxnRavt8N8xDsfGPi5XqHaGQT0NpkcDtqGzbZcXMnV8PnY4HRhxMQw7qN5GK7IvfJ7agT/EOuHKBIREZHRSYmfSJQLd+hiqHlwsf7Er6m4eNDi7GxXfiG21wcYLJp9M4cK36Sn+YgDoacEJFp1nuvnMgxWpWeS6o4h633vJ2bsuEiHKCIiIhGkoZ4iUW4ghi7G+Of4NRUPzcqetTWNFOw5g8/fciI+Pp3pU5b3OB9RQms/18/pdnOnOZOkZctJWbU6wpGJiIhIpCnxE4lyAzF00ZWcjDMxCV99PS0Xygc6xC7eenm/vyH7RYvnrmXq5Fnq4dYPgaqfYRhsuPUOFv/gx4z72MfbeumJiIjI6KWhniJRLjB0sf7IYU498q/EjMth8re+3evrxOTkUH/Ioqm4CHd6xkCH2aaq6ByHDlV0WbTFE5PCDSs/Q3xcyqDdezTIy9vE0aNHyMvbhNFDfz8REREZPfRdgcgIUWcVAODpY1PuwHDPxqLBWeDFW11NxbZX2Lb55R576EnftV9RU0RERCRAFT+RCGouL6Px9CkSZs3psOJic9l5ms+dwzNjZtjD9Or9iV98HxO/tgVeBjDxs1taqNn9DpWvbaPu4AEajViKJm0c8IbsIiIiIhKaEj+RQWTbNt6aaprPncNwu4mbeLGnQv3hwxT96FF8tbU4U1NJXbWGuMmTqXz1VWp2vwO2TcpVq8i+9/6e79PSQv2RwwB4pk/vU6wxuQPX0sH2+Sj7/fNUvvJ3vNXVrRudTk5NWwM+F4SYkhio+l11w6X9jkNEREREWinxExkk53/3DBX/+Bu++vq2bfEzZ5Nx2x20XCij5ImfYre04IhPwFtRQdnW31082enEMAwqt72Ct7aGzC89RNPZs1Ru+weNp0+Tffc9HZbnbyg8gd3URMzYcbhSUvsUb1vF70wxts8X1vywu+66FctfaQxlWk4uW37zPLt/U4DvXG3IY6Oxh56IiIjIcKfET2QQ+BrqKX/5JfB6cXg8uLOyaS49R93B/dQd3N92XMrVq8m++x7qrAIq/vYXmktLSVxyGalXr6bp3FmKf/goNbt2suvBf6Lp/Pm2805//3tMePgruNPTsW2bqje2A32f3wfgTEzEmZKCt7KSlrIy3Fk9zxGbN28Bx44dpbm5OegxbrebRVdchTMxccT20BMREREZ7pT4iQyC2gMHwOsl7pJpTHj4KxiGgbe2lgsvv8SFv/4Zu6mJzNs3knbTWgzDIGH2HBJmz+lwDVdqKuM//zBFj/47TefPY7jdJF22lKaSEhqOHaXo0e+R+5nPUfqbLdTsfAuApCWX9Svu2Jxc6ioraSwuCivxy8vbxAsvPBfymMFuyC4iIiIiPet34mea5jrgW4Dh//UNy7J+Z5rmdOBJIAMoA+63LOuw/5yg+0RGgtq9ewBImDe/bXEWZ0ICmbdvJPW66/FWV7cNrQwlbuIkJn7167iKTuCbYuJMTMRbU8Op73ybpuJijn/pC61Vxbg4xn7048TPnNWvuGNycqk7eICm4iKYvyD456tp5C/PH+T6DbNYv/42tm59ttuqn9vtVkN2ERERkWGgX+0cTNM0gF8C91mWtQC4D3jSNE0H8DjwmGVZ04HHgJ+2OzXUPpGoZts2tfv2ApA4b36X/a6k5LCSvgB3egbZa1bhTEwEWodk5n7mIVzp6eD14h47lolf+RqJCxb2O/bYiRMBqNqejy/E8M1d+YWcOVXJjpf2cnNtPUanZuwBqvaJiIiIDA8D0cfPBwQ6LqcCZ4BMYBHwK//2XwGLTNPMMk0zO9i+AYhFJOIaTxbirazAlZZOzPgJg3IPd3o6E774FbI/cC8Tv/w1YsblDMh1k5Yuwz1mLE1niin/44vdHlNb00jBvrMAHD5ciausilUZmbg6tZ1QtU9ERERk+DCCNVIOl2ma1wBbgFogCbgZaAZ+YVnW7HbHHQDupXU4aLf7LMt6J4xbTgaO9ytoGVWqqxp49pfvsPG+RSQmxw36/U5t+S0n/+fXjLnhOqZtenDQ7zfQKvfv570vfw3D5WL+979LwqSJHfb/4bd7eHfHSXwYGL4WpqU1suK2Waxev57Gpqa24+Li4njjjTfIzs4e6o8gIiIiMlpMAU6Ec2C/5viZpukCvgRssCwr3zTNlcBvaB3yOajKymrw+fqXtA60rKwkSkurIx3GiNRcXkbD0aPUHztK0+nTpKxeQ9KixWGdu+3lQ5w8Vs7LLxwYkt5w53a0LrTivHTWgD0PQ/psZU8k5epVVL76CgWP/pAJD3+1rbVD9dkLvLujEJ9/sIDtcHGsNoYViTms33B721w/t9vN+vW3YRge/TcRBfTuksGiZ0sGk54vGUzD/flyOAwyMhJ7dU5/F3dZAORYlpUP4E/+aoEGINc0TadlWV7TNJ1ADnCK1opfsH0ibWoP7Kd29zvU7t9P89mSDvsaT58kYfYcHLGxXc7z1tVR+crfcY8Zi3HpnLZhiQX7SliychLxiTGDFnNLdRUNx49juFz9XmglkjLvuJOaPbtpOHaM4h8+StLSy3FnZ/PqU9ux3bnQrsdfoOF6+xU+NbdPREREZHjpb+J3GhhvmqZpWZZlmuZMYAxwGNgN3A085f/9XcuySgFM0wy6TwSgMv81zv78Z21fOzwe4i6ZhueSadS8+w6NJwup+MffSL/x5rZjbNum5p2dnPvV03grKgD49JHjnKk423bMj5/qXRymOYMtW7aGfXzdvn1g23jMGd0mpdHCGR/PmPs/RPFjP6R2315q9+2l0emhaNJGbEfH14bPa7cl1evX38Yzz2zR3D4RERGRYaZfiZ9lWSWmaX4CeMY0TZ9/8wOWZZWbpvkgrSt8fg24ANzf7tRQ+2SU8zU3Uba1tXKUsvoakpddTtyUqRhOJwBxU6ZS9Oi/c+FPL5G6ag2OuDi8dbWU/OwJavfsBiB20mRqq+pJz3Bztuo8Pl/3q06G4na7mT+/dytl1gTaOMztuppntEmct4Ap3/4ONe++Q+2edykoS8F2dL8eVPuq39GjR1TtExERERlm+t3Hz7Ksp4Gnu9leACwLck7QfSKVr75Cy4VyYidMIPvue9rmlwXEz55D3CXTaDh6hIq//5WUK6/m9H98j8aThTg8HjJvfx8pV69i258sFscfouDEDqD3iV9vhyu2VFdRu+9i/76RwJ2RQdq11xFz+VWUPP4Wdouv2+PaV/02b+5lWVVEREREBt1AtHMQGTC+hgbK//B7ADI23N4l6QMwDIOM9bcCUP7yS5z67iM0nizEnT2GSV//Jqmr11BX14x14DweTyrmlOU4HM5exdGXVgQXXv4TdmMjCXPnETPCVrLclV9ITysAB6p+IiIiIjL8KPGLkKq3dlB/+HCkwxh2LvztL3irq4mbOpWE+QuCHhc/azZxl0zDV1tLU3ERMTk5TPjCl3D7E7X2icqi2eswjN496r2t9nmrq6n4x98ASL/l1l7dKxqUFFXh84ZO/Hxem5KiyiGKSERERER6o99DPaX36g8fouQ/H8eIiWHS179JzJixkQ4pYnyNjVS+tg1fQz0YBhdefgmAzNs2YnRqCN6eYRhk3r6R09//LrG548n97OdwJSUDFxuMBxKVBE8K5pTlFBzL7zDXz+FwkpKYTWXNuQ7b3W43c2deRXxcStifo/zPrdW++Dnz8Eyd2qu/g2hw5wNLIh2CiIiIiPSDKn4RcOHPLwNgNzVRsvm/sH3dz5saDSr+8TdKf/00ZVt/R9lzz+Krq8MzY2ZYrRDizRlM/b//zsSvfr0t6YPuhyV2V/UzDAdrln+kazXQNpg56bqwhy16q6up+HtrtS9j/YawzhERERERGUpK/IZY07lz1Ox+B8PlwpmSSsPRI21VrtGodt9eAJKWXk7aTWtJX3cLYz/8kbDPd6WmdpkH2N2wxEDVLzDXz+FwYk5ZQWbahA7bnYbB9MmXE+9JoWBfCXU1TUHvbds2TaXnKP3db7EbG4ifMxfP1EvCjl1EREREZKhoqOcQq/jrn8G2SVp6OUlLl1L06Pcpe/45EubOI3b8hEiHN6R8DQ3UHzkMhkH2PffhTEgYkOsGG5a4sXQmN990LT6fF8NwsHj2WqC1GmgdfwPwYhhOFs+8Ebi4WMlVN1za5Vrnf/cMla+9ire6um1bxi2q9omIiIjI8KSK3xDy1tVSmf8aAGnX3UDCnHmkXL0Ku6WFs0/9IsLRDb06qwC8XuKmTB2wpC+UeE8K06csBwzMKSuI97TO4QtUA8Fg+tSVeBIygIstCjpX/bzV1ZT/8UW81dU4E5NImDefsXkP4rlk2qB/BhERERGRvlDFbwhVbnu1dQGQmbOJndBa3cvceBeV216l4dhR7JYWDNfo+Sep278PaO3LNxR25ReyeO5ayiuK26p9AYtmr+NC5Zku222vl52vn+CqG6e3bas7fAgAz3ST8Z9/OOQiNCIiIiIiw4EqfkPEbmmh4m9/BSD1uuvbtjs9HtyZmeDz0XTuXKTCi4ja/e8BkDBEiV9JURWemBTWX/NQW7UvIMHT/XafbXBwdxG11Y1t2+qtAgA85gwlfSIiIiISFUZPeSnCGk6epOVCOe6sLBLmzO2wL2bsOJpLS2kqOUNsTk6EIhxazaWlNJ89i8PjIW7K0LQ/CNWSYNvLhzi4t6TbXnW2z8dbfz3A6tsWAlB/qDXxizdnDE6gIiIiIiIDTBW/IdJUdAqAuKmXdFmFMmbsOACaS84MeVyRUnugtdoXP3MWhtMZ2Vg69f3rzHa4OHyokrqaJrw1NTSePo3hchGnFTxFREREJEoo8RsijUVFAMTmju+yzz2uNfFrOjN6Er86/zDP+Nlzezhy8HXX968zn8/HzvxC6g8fAtsmbuolOGJihihCEREREZH+0VDPIdLkT/xicnK77AtU/JpGScXP9nqpO3gAgITZsyMcTfd9/zqzDSdnCsuoqzgOtC7sIiIiIiISLZT4DZFG/1DP2PFdK37tEz/btkf8giENx47hq6/HPWYs7sysSIcTdO7fXXfdiuVfyCXg3wJ/2LkD/vnLAJjmDLZs2TqIEYqIiIiI9I+Geg6BluoqvFVVGLFxuNIzuux3JiXhiE/AV1+Pt7Kyz/eprWlk69O7u/SdG05s2+bCX/4E0GWRm+Fm3rwFuN3ukMe43W7mz184RBGJiIiIiPSNEr8h0NQ2vy+3y8IuAIZhEDOu/8M9d+UXcuZUJTvzC/t8jcFW/dYOat7ZhSMujrTrb4h0OCHl5W3C0c2/V3sOh4O8vE1DFJGIiIiISN9oqOcQaCw6DUBMbtf5fQExY8fRcPQITSVniJ8xs9f3CKxMCfDNRzZx/ounejxnqIcotlRc4NzTvwQg6667cWdkDtm9+yIrK5v1629j69ZnaW5u7rLf7XazYcPtZA6D4aoiIiIiIqGo4jcEmkKs6BnQ3wVe2q9MOSZzKk5n6Jx+qIco2rbN2Sd/jq+ujoS580i+4qohu3d/hKr6qdonIiIiItFCid8QCFT8QiZ+/Wjp0LkP3cJZa4HQC8SEk7TYtk3VG/mc+dl/4q2r63Vc7VW//Sa1+/biiE9gzAc/HDUL2ASqfp3n+qnaJyIiIiLRRInfILNtm6ZifyuHQar47covxPb62r5O8KQwY+qKoFW/cJIWb309JU/8lJKfPUH1G9upfvONXsfVXvWO1vMzbr0NV2pav6411Lqr+qnaJyIiIiLRRInfAPDW1nLy3/6F4hde7LKvpbwcX309zqQkXMnJQa/hzswEp5OWsjJ8jY1h37ut2tepDV2oqp8D+NjHPhH0mo2nTnHym1+n+q0dF+/jb7jeF76mJuoKDgKQtGhxn68TKZ2rfqr2iYiIiEi0UeI3AHyNjTQcO8qJJ39Jc2lph30XF3YJXu0DMFwuYrLHANB0tiTse3eu9gVcrPo5O2x3GQZXp6YTd6r7xV/slhaKH3+M5tJzxE6YyPjPfQGAuoMHsVtawo6rvXqrALupidiJk6Ku2hfQvuqnap+IiIiIRBut6jkA3OnpJF2+nOo3tnPX3bdz7Hxp14N27oCnft72ZXcrasaMHUfTmWKaSs4QN3FSj/etrWmkYG9Jl2pfwMJZayk4th3wtm1zOJ1szMml/MUXSFy4qMtcu8rXt9F8tgR39hgmfPmrONwxxOTk0FRcTP3RI8SbM3qMq7OavbsBSJg3v9fnDheBqt8zz2xRtU9EREREoo4SvwGSueE2at5+i2mGQaHThdcbvDoWbEXNmHHj4N3wF3jZlV+I7fMRbEhngicFc/LlWMe247Vbk7+mlhby9rwDe96B323p9rzJnnh++eDjONwxAMTPnktTcTF1+9/rdeJn2za1e/e0xjNvQa/OHW7y8jZx9OgRVftEREREJOpoqOcAcWdmMW7tTdwyfhp9XVEzsMBLc5gLvJScqsBnh77Xojm3YDiMtvu6XO6Qx7sMg5k5uSQuvqxtW8LsOQDUvrcvrLjaayoupqWsDGdSMnGTJ/f6/OEkKyubzZufUrVPRERERKKOEr8BNH7jHVTkrsCcfDkOh7PbY0ItDOLu5cqeV3ssrjnyc9Y53+DBL17FJx6+mk88fDXXeN/A4WutOCbFJnDTVWswDIO1a9fjdIb+J3cAm77w5Q5DQD3TTQy3m8aThbRUVYU8v+ncOUp/u4Xm8jKAi9W+uXMxgvTDExERERGRwaXvxAdQA27OJE1rrbIZvW/6HTNuHDgcNBYV0VJxIfS9ThZS+crfweEg+wP3dkjUTmQvITDtzzYMlq74AAsXLubTn/5ctz3pAlyGwXXTZzJh2fKOMcfE4JluAlB3IPTqnmXPP8eFl1/i1CPfpunsWWpHwPw+EREREZFop8RvAG37y2Fsh6N1bt2U5V2qfj21AXB6PCQuXAQ+HxWvvhL0PrZtc+5/ngLbJnXNNR0aw9fWNHKiIgbb0Tp90zacnCls5kc/2ExmZla3PekCHIbBJ7/6jW73tQ33DNHWwfZ6qX1vLwAt5WWc+s6/UX/0CDidxM+aE/Q8EREREREZXEr8BkhtTSN73jqFz9taa1s0e12Xql84bQBSV18DQOW2V4O2T6je8QYNRw7jTEomY/2tHfbtyi+k8yKftm2zM78Q6NqTLsDtcrHh1o3kzJ3b7T3jZ7dur9v/nn9Bma4ajh3FV1uLOzMLjzkDb2UF+Hx4Lp2OMz4+5OcWEREREZHBo8RvgOzKL8S2L6Zcnat+TqcrrDYAHnMGMeNy8FZWULP7nS77bdvm/HPPApB5x/twxie07Wtr5u7tmPr5vDYF+0qoq2kC6Lbq53A6+fimTwWNKyYnB1daGt6qKhpPd98DsGaPf1jngoXkfvp/Ez+nNVlMardQjIiIiIiIDD0lfgMgkHB5OyVcHat+Bvfd87Eer2UYBimr1wBQ8Y+/d9nvraqkpbwMR3w8yStWdtjXOflsL1TVr6chqIG4EubOA6DmnV3dHhNYyCVx/gIcMTHkfuozTPzqP5Ny9aoQn1hERERERAabEr8BECzhClT9wGDG1BUcL6gN63rJy1dixMZSbxXQWFTUYV+gx1/MuJwOq2QGq/YFhKr6hTMEFSDpsmUAVL+5o8vnbT5fSlNxEY64ODyXTgfAcDqJmzxZq3mKiIiIiESYviMfACVFVUETrkWz1zEuaxqLZq2lpKgyrOs5PR6SL18BQMUrHat+bYmfv/VDQKhqX0B3VT/DMMIaggqtw1CdKak0l56j8cTxDvsC1b742XMwXK4eryUiIiIiIkNH36EPgDsfWAJAVlYSpaXVXfY/xPpeXzN19RoqX/0H1Tu2k333PW1Vs6YzxYC/9UM7oZLPAJ/X7pB85uVt4ujRI2FV+wAMh4Oky5ZS8dc/U/XmDuKmTG3bVxPo16e2DSIiIiIiw06/Ej/TNCcDW9ttSgWSLctKN03zBNDg/wXwRcuyXvafdznwU8ADnADutSzrXH9iGWlix0/AlZZOy4Vyms+WEDMuBwhe8Qskn72RlZXN5s1P9eqc5GWXU/HXP1P99ptk3fl+DIcDX2Mj9QUHAUiYM6/XcYiIiIiIyODqV+JnWdYJYEHga9M0H+10zY2WZXVo/GaapgN4CviQZVmvm6b5VeAR4IH+xDISxU6aRMuFchoKT1xM/EouzvGLSEyTp+DOHkPzubPUWwXEz5xF3cED2C0txE2ZiislJSJxiYiIiIhIcAM2x880zRjgHmBzD4cuBhosy3rd//XjwJ0DFcdIEjdpMgCNha3z8nwN9bRcKMdwuXBn9TwnbzAYhkHSsssBqHrzDeoPH+Lc//wS0DBPEREREZHhaiDn+K0HiizLat987mnTNA3gdeDLlmVVABOBwsABlmWdN03TYZpmumVZ5eHeLCMjcaDiHlBZWUkDdi3nvJmUPf8c3jOnycpKovrwWQA8uTlkj4lcZS3hxjWU//55qt/cQdX2fPD5SLx0Gpe8bwPupIH7/NLRQD5bIp3p+ZLBomdLBpOeLxlMI+35GsjE7wE6VvuutCzrlGmascCjwI+AewfqZmVlNfh8oRczGWrBFnfpq5bUbABqjhzl3NlKqg8eAcCRNWZA79NrsSnETpxE48lCMAzSblpL5obbqGgAGiIY1wg20M+WSHt6vmSw6NmSwaTnSwbTcH++HA6j14WwARnqaZpmLnA18HRgm2VZp/y/NwI/BgLdxk8Ck9qdmwn4elPtGy1cKak4U1PxNTTQXHou6MIukZD1vruInz2H3M8+RNYd71MLBxERERGRYWygvlv/IPAHy7LKAEzTTABclmVV+od6vh/Y7T92F+AxTfMK/zy/B4HfDlAcI07cxEnUVlTQUHiiQ/P2SIufOYv4mbMiHYaIiIiIiIRhoBZ3+RAdh3mOAV4xTXMv8B4wHdgEYFmWD7gP+IlpmodprRQ+PEBxjDixbQu8nAjaw09ERERERCSUAan4WZY1vdPXx4CFIY7fDswdiHuPdIGVPRuOHaOp9BwYBjFjxkY2KBERERERiSqamDXMBSp+9UcOg23jyszEERsb2aBERERERCSqDFgfPxkcrtRUnMnJYLeuYDocFnYREREREZHoosRvmDMMo224JwyPhV1ERERERCS6KPGLArGT2rpfaGEXERERERHpNSV+UaBDxU9DPUVEREREpJeU+EWB2HaJX6yGeoqIiIiISC9pVc8o4EpLJ2nZcnAYOJOSIh2OiIiIiIhEGSV+UcAwDMZ97OORDkNERERERKKUhnqKiIiIiIiMcEr8RERERERERjglfiIiIiIiIiOcEj8REREREZERTomfiIiIiIjICKfET0REREREZIRT4iciIiIiIjLCKfETEREREREZ4ZT4iYiIiIiIjHCuSAfQB04Ah8OIdBzdGq5xSfTTsyWDSc+XDBY9WzKY9HzJYBrOz1e72JzhnmPYtj040QyeK4DXIh2EiIiIiIhIhF0JvB7OgdGY+MUClwFnAG+EYxERERERERlqTmAc8DbQGM4J0Zj4iYiIiIiISC9ocRcREREREZERTomfiIiIiIjICKfET0REREREZIRT4iciIiIiIjLCKfETEREREREZ4ZT4iYiIiIiIjHBK/EREREREREY4V6QDGAlM05wOPAlkAGXA/ZZlHY4vyJVHAAAD4klEQVRsVBKtTNM8ATT4fwF80bKsl03TvBz4KeABTgD3WpZ1LhIxSvQwTfN7wB3AZGCuZVnv+bcHfW/pnSbhCPFsnaCbd5h/n95j0iPTNDOAXwKXAE3AYeDjlmWVhnqG9HxJOHp4vmxgH+DzH36fZVn7/OfdAnyX1vxpF/Bhy7Lqhjr+/lDFb2A8DjxmWdZ04DFaXzoi/bHRsqwF/l8vm6bpAJ4CPul/zrYBj0Q2RIkSW4GrgMJO20O9t/ROk3AEe7ag0zsMQO8x6QUb+I5lWaZlWXOBo8AjoZ4hPV/SC90+X+32r2j3/gokfYnAE8AtlmVNA6qBh4Y68P5S4tdPpmlmA4uAX/k3/QpYZJpmVuSikhFoMdBgWdbr/q8fB+6MYDwSJSzLet2yrFPtt4V6b+mdJuHq7tnqgd5jEhbLssoty3ql3aYdwCRCP0N6viQsIZ6vUG4CdrYb/fI4cNcghDeolPj13wSgyLIsL4D/92L/dpG+eto0zb2maf7YNM1UYCLtfqpuWdZ5wGGaZnrEIpRoFuq9pXeaDITO7zDQe0z6wF/J+wTwAqGfIT1f0mudnq+AV0zT3G2a5r+Zphnr39bh+QJOEoX/X1TiJzL8XGlZ1nzgMsAAfhTheEREekPvMBlIPwRq0HMkg6Pz8zXRsqwltA5jnwX8n0gFNhiU+PXfKSDXNE0ngP/3HP92kV4LDJ2yLKsR+DGwktafLLUNQzBNMxPwWZZVHpEgJdqFem/pnSb9EuQdBnqPSS/5FxC6FLjLsiwfoZ8hPV/SK908X+3fX1XAfxHk/UVrBTDq/r+oxK+f/KtF7Qbu9m+6G3jXsqzSyEUl0co0zQTTNFP8fzaA99P6fO0CPKZpXuE/9EHgt5GJUqJdqPeW3mnSHyHeYaD3mPSCaZrfpnXe3q3+HyJA6GdIz5eErbvnyzTNNNM0Pf4/u4CNXHx//Qm4zDTNS/1fP8j/b+eOURoKgjAA/yKCrZ21zQq5gXcQ0RN4AvEclh5D8Bq2NiKMjaUIio1iGYv3wMbEQCAhy/fBNstbmGIY+OExyc1qq17e1nQ6XXcNG6+1dphh9fleko8Mq89rvVWxiVprB0luk2yP5zHJRVW9tNaOMmxX3M3vmurXddXKZmitXSc5S7Kf5C3Je1VN5s0tM41F/NVbSY4zY4aNb8wx/tVamyR5SPKU5Hu8fq6q03k9pL9YxKz+SnKVoX+mSXaS3CW5rKrP8d3J+M12kvsk51X1tdrqlyP4AQAAdM6vngAAAJ0T/AAAADon+AEAAHRO8AMAAOic4AcAANA5wQ8AAKBzgh8AAEDnBD8AAIDO/QCkpuKSKQcTLgAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/12.duel-recurrent-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.X = tf.placeholder(tf.float32, (None, None, self.state_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, self.OUTPUT_SIZE))\n",
" cell = tf.nn.rnn_cell.LSTMCell(self.LAYER_SIZE, state_is_tuple = False)\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * self.LAYER_SIZE))\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" tensor_action, tensor_validation = tf.split(self.rnn[:,-1],2,1)\n",
" feed_action = tf.layers.dense(tensor_action, self.OUTPUT_SIZE)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = self.LEARNING_RATE).minimize(self.cost)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.logits, feed_dict={self.X:states, self.hidden_layer:init_values})\n",
" Q_new = self.sess.run(self.logits, feed_dict={self.X:new_states, self.hidden_layer:init_values})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, 4, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" INIT_VAL = np.empty((replay_size, 2 * self.LAYER_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, dead_r, rnn_memory = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not dead_r:\n",
" target[action_r] += self.GAMMA * np.amax(Q_new[i])\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" INIT_VAL[i] = rnn_memory\n",
" return X, Y, INIT_VAL\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action, last_state = self.sess.run([self.logits,self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.logits,\n",
" self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" self.INITIAL_FEATURES = new_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" X, Y, INIT_VAL = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.cost, self.optimizer], \n",
" feed_dict={self.X: X, self.Y:Y,\n",
" self.hidden_layer: INIT_VAL})\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" \n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:From :35: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"epoch: 10, total rewards: 1303.755127.3, cost: 0.204159, total money: 2622.175109\n",
"epoch: 20, total rewards: 1332.510133.3, cost: 2.512769, total money: 11332.510133\n",
"epoch: 30, total rewards: 167.034789.3, cost: 0.204751, total money: 10167.034789\n",
"epoch: 40, total rewards: 885.269897.3, cost: 0.095390, total money: 8848.889892\n",
"epoch: 50, total rewards: 312.624996.3, cost: 0.415782, total money: 10312.624996\n",
"epoch: 60, total rewards: 220.209960.3, cost: 0.119438, total money: 10220.209960\n",
"epoch: 70, total rewards: 407.794859.3, cost: 0.983801, total money: 8417.984861\n",
"epoch: 80, total rewards: 200.149718.3, cost: 0.235913, total money: 9226.819701\n",
"epoch: 90, total rewards: 87.564821.3, cost: 0.034903, total money: 8097.894838\n",
"epoch: 100, total rewards: 1056.600041.3, cost: 0.286240, total money: 11056.600041\n",
"epoch: 110, total rewards: 537.204957.3, cost: 0.140037, total money: 7610.014955\n",
"epoch: 120, total rewards: 263.944828.3, cost: 0.535866, total money: 9247.304813\n",
"epoch: 130, total rewards: 387.030092.3, cost: 0.352989, total money: 8396.590090\n",
"epoch: 140, total rewards: 207.069887.3, cost: 0.474047, total money: 10207.069887\n",
"epoch: 150, total rewards: -119.230104.3, cost: 0.301262, total money: 9880.769896\n",
"epoch: 160, total rewards: 21.299804.3, cost: 0.709494, total money: 10021.299804\n",
"epoch: 170, total rewards: 241.145077.3, cost: 0.486697, total money: 10241.145077\n",
"epoch: 180, total rewards: 5.329770.3, cost: 0.447255, total money: 7042.329770\n",
"epoch: 190, total rewards: 126.395198.3, cost: 0.240739, total money: 9107.125178\n",
"epoch: 200, total rewards: 91.499876.3, cost: 0.259028, total money: 8055.119871\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 53: buy 1 unit at price 805.020020, total balance 9194.979980\n",
"day 54, sell 1 unit at price 819.309998, investment 1.775108 %, total balance 10014.289978,\n",
"day 64: buy 1 unit at price 801.340027, total balance 9212.949951\n",
"day 68, sell 1 unit at price 813.669983, investment 1.538667 %, total balance 10026.619934,\n",
"day 79: buy 1 unit at price 823.210022, total balance 9203.409912\n",
"day 82: buy 1 unit at price 829.080017, total balance 8374.329895\n",
"day 84, sell 1 unit at price 831.909973, investment 1.056832 %, total balance 9206.239868,\n",
"day 86, sell 1 unit at price 838.679993, investment 1.157907 %, total balance 10044.919861,\n",
"day 111: buy 1 unit at price 823.559998, total balance 9221.359863\n",
"day 116, sell 1 unit at price 843.190002, investment 2.383555 %, total balance 10064.549865,\n",
"day 167: buy 1 unit at price 911.710022, total balance 9152.839843\n",
"day 169, sell 1 unit at price 918.590027, investment 0.754626 %, total balance 10071.429870,\n",
"day 182: buy 1 unit at price 947.799988, total balance 9123.629882\n",
"day 183, sell 1 unit at price 934.090027, investment -1.446504 %, total balance 10057.719909,\n",
"day 185: buy 1 unit at price 930.500000, total balance 9127.219909\n",
"day 187: buy 1 unit at price 930.390015, total balance 8196.829894\n",
"day 188, sell 1 unit at price 923.650024, investment -0.736161 %, total balance 9120.479918,\n",
"day 190, sell 1 unit at price 929.359985, investment -0.110709 %, total balance 10049.839903,\n",
"day 206: buy 1 unit at price 921.289978, total balance 9128.549925\n",
"day 207, sell 1 unit at price 929.570007, investment 0.898743 %, total balance 10058.119932,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/13.double-duel-recurrent-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Model:\n",
" def __init__(self, input_size, output_size, layer_size, learning_rate, name):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" cell = tf.nn.rnn_cell.LSTMCell(layer_size, state_is_tuple = False)\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * layer_size))\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" tensor_action, tensor_validation = tf.split(self.rnn[:,-1],2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.model = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE,\n",
" 'real_model')\n",
" self.model_negative = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE,\n",
" 'negative_model')\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" self.trainable = tf.trainable_variables()\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
"\n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.model.logits, feed_dict={self.model.X:states, \n",
" self.model.hidden_layer:init_values})\n",
" Q_new = self.sess.run(self.model.logits, feed_dict={self.model.X:new_states, \n",
" self.model.hidden_layer:init_values})\n",
" Q_new_negative = self.sess.run(self.model_negative.logits, \n",
" feed_dict={self.model_negative.X:new_states, \n",
" self.model_negative.hidden_layer:init_values})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, 4, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" INIT_VAL = np.empty((replay_size, 2 * self.LAYER_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, dead_r, rnn_memory = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not dead_r:\n",
" target[action_r] += self.GAMMA * Q_new_negative[i, np.argmax(Q_new[i])]\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" INIT_VAL[i] = rnn_memory\n",
" return X, Y, INIT_VAL\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action, last_state = self.sess.run([self.model.logits,self.model.last_state],\n",
" feed_dict={self.model.X:[self.INITIAL_FEATURES],\n",
" self.model.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('real_model', 'negative_model')\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.model.logits,\n",
" self.model.last_state],\n",
" feed_dict={self.model.X:[self.INITIAL_FEATURES],\n",
" self.model.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" \n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" self.INITIAL_FEATURES = new_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" X, Y, INIT_VAL = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.model.cost, self.model.optimizer], \n",
" feed_dict={self.model.X: X, self.model.Y:Y,\n",
" self.model.hidden_layer: INIT_VAL})\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:From :17: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 328.014401.3, cost: 0.233912, total money: 2446.714413\n",
"epoch: 20, total rewards: 629.485052.3, cost: 0.592428, total money: 5723.605047\n",
"epoch: 30, total rewards: 1222.065245.3, cost: 0.182284, total money: 7288.965209\n",
"epoch: 40, total rewards: 719.309753.3, cost: 0.690094, total money: 3739.159728\n",
"epoch: 50, total rewards: 328.994876.3, cost: 0.918951, total money: 2756.724856\n",
"epoch: 60, total rewards: 1518.540281.3, cost: 0.226017, total money: 10545.210264\n",
"epoch: 70, total rewards: 440.315127.3, cost: 0.145386, total money: 7494.335086\n",
"epoch: 80, total rewards: 656.779966.3, cost: 0.113699, total money: 6666.949948\n",
"epoch: 90, total rewards: 846.820129.3, cost: 0.444679, total money: 6860.080139\n",
"epoch: 100, total rewards: 1044.679930.3, cost: 0.240218, total money: 9067.419920\n",
"epoch: 110, total rewards: 207.934935.3, cost: 0.236219, total money: 10207.934935\n",
"epoch: 120, total rewards: 6.745002.3, cost: 1.133358, total money: 10006.745002\n",
"epoch: 130, total rewards: 586.910091.3, cost: 0.162622, total money: 4665.650081\n",
"epoch: 140, total rewards: 1084.244877.3, cost: 0.630996, total money: 6178.484867\n",
"epoch: 150, total rewards: 991.774842.3, cost: 1.439193, total money: 420.904786\n",
"epoch: 160, total rewards: 714.735100.3, cost: 0.337296, total money: 5744.735038\n",
"epoch: 170, total rewards: 1158.574706.3, cost: 0.186633, total money: 10185.244689\n",
"epoch: 180, total rewards: 1120.314817.3, cost: 0.539594, total money: 7186.704770\n",
"epoch: 190, total rewards: 230.760193.3, cost: 0.110742, total money: 4290.020202\n",
"epoch: 200, total rewards: 218.420047.3, cost: 0.125164, total money: 10218.420047\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 17: buy 1 unit at price 768.239990, total balance 9231.760010\n",
"day 18, sell 1 unit at price 770.840027, investment 0.338441 %, total balance 10002.600037,\n",
"day 20: buy 1 unit at price 747.919983, total balance 9254.680054\n",
"day 21: buy 1 unit at price 750.500000, total balance 8504.180054\n",
"day 23, sell 1 unit at price 759.109985, investment 1.496150 %, total balance 9263.290039,\n",
"day 24, sell 1 unit at price 771.190002, investment 2.756829 %, total balance 10034.480041,\n",
"day 27: buy 1 unit at price 789.270020, total balance 9245.210021\n",
"day 28, sell 1 unit at price 796.099976, investment 0.865351 %, total balance 10041.309997,\n",
"day 34: buy 1 unit at price 794.559998, total balance 9246.749999\n",
"day 35, sell 1 unit at price 791.260010, investment -0.415323 %, total balance 10038.010009,\n",
"day 36: buy 1 unit at price 789.909973, total balance 9248.100036\n",
"day 38: buy 1 unit at price 785.049988, total balance 8463.050048\n",
"day 40: buy 1 unit at price 771.820007, total balance 7691.230041\n",
"day 41, sell 1 unit at price 786.140015, investment -0.477264 %, total balance 8477.370056,\n",
"day 44: buy 1 unit at price 806.150024, total balance 7671.220032\n",
"day 45, sell 1 unit at price 806.650024, investment 2.751422 %, total balance 8477.870056,\n",
"day 48, sell 1 unit at price 806.359985, investment 4.475134 %, total balance 9284.230041,\n",
"day 49, sell 1 unit at price 807.880005, investment 0.214598 %, total balance 10092.110046,\n",
"day 51: buy 1 unit at price 806.070007, total balance 9286.040039\n",
"day 52, sell 1 unit at price 802.174988, investment -0.483211 %, total balance 10088.215027,\n",
"day 57: buy 1 unit at price 832.150024, total balance 9256.065003\n",
"day 58: buy 1 unit at price 823.309998, total balance 8432.755005\n",
"day 61: buy 1 unit at price 795.695007, total balance 7637.059998\n",
"day 63: buy 1 unit at price 801.489990, total balance 6835.570008\n",
"day 64, sell 1 unit at price 801.340027, investment -3.702457 %, total balance 7636.910035,\n",
"day 66, sell 1 unit at price 808.380005, investment -1.813411 %, total balance 8445.290040,\n",
"day 67, sell 1 unit at price 809.559998, investment 1.742501 %, total balance 9254.850038,\n",
"day 68: buy 1 unit at price 813.669983, total balance 8441.180055\n",
"day 70, sell 1 unit at price 820.450012, investment 2.365597 %, total balance 9261.630067,\n",
"day 71: buy 1 unit at price 818.979980, total balance 8442.650087\n",
"day 73: buy 1 unit at price 828.070007, total balance 7614.580080\n",
"day 76, sell 1 unit at price 831.330017, investment 2.170417 %, total balance 8445.910097,\n",
"day 77, sell 1 unit at price 828.640015, investment 1.179520 %, total balance 9274.550112,\n",
"day 78: buy 1 unit at price 829.280029, total balance 8445.270083\n",
"day 82: buy 1 unit at price 829.080017, total balance 7616.190066\n",
"day 83: buy 1 unit at price 827.780029, total balance 6788.410037\n",
"day 84: buy 1 unit at price 831.909973, total balance 5956.500064\n",
"day 87: buy 1 unit at price 843.250000, total balance 5113.250064\n",
"day 88: buy 1 unit at price 845.539978, total balance 4267.710086\n",
"day 90: buy 1 unit at price 847.200012, total balance 3420.510074\n",
"day 91, sell 1 unit at price 848.780029, investment 2.500999 %, total balance 4269.290103,\n",
"day 98: buy 1 unit at price 819.510010, total balance 3449.780093\n",
"day 99, sell 1 unit at price 820.919983, investment -1.008109 %, total balance 4270.700076,\n",
"day 100: buy 1 unit at price 831.409973, total balance 3439.290103\n",
"day 103, sell 1 unit at price 838.549988, investment 1.142226 %, total balance 4277.840091,\n",
"day 104: buy 1 unit at price 834.570007, total balance 3443.270084\n",
"day 106: buy 1 unit at price 827.880005, total balance 2615.390079\n",
"day 107, sell 1 unit at price 824.669983, investment -0.375709 %, total balance 3440.060062,\n",
"day 108, sell 1 unit at price 824.729980, investment -0.863073 %, total balance 4264.790042,\n",
"day 109, sell 1 unit at price 823.349976, investment -2.359920 %, total balance 5088.140018,\n",
"day 110: buy 1 unit at price 824.320007, total balance 4263.820011\n",
"day 111, sell 1 unit at price 823.559998, investment -2.599520 %, total balance 5087.380009,\n",
"day 114: buy 1 unit at price 838.210022, total balance 4249.169987\n",
"day 115, sell 1 unit at price 841.650024, investment -0.655098 %, total balance 5090.820011,\n",
"day 117, sell 1 unit at price 862.760010, investment 5.277544 %, total balance 5953.580021,\n",
"day 118, sell 1 unit at price 872.299988, investment 4.918153 %, total balance 6825.880009,\n",
"day 119: buy 1 unit at price 871.729980, total balance 5954.150029\n",
"day 121, sell 1 unit at price 905.960022, investment 8.554107 %, total balance 6860.110051,\n",
"day 122, sell 1 unit at price 912.570007, investment 10.229744 %, total balance 7772.680058,\n",
"day 123: buy 1 unit at price 916.440002, total balance 6856.240056\n",
"day 124, sell 1 unit at price 927.039978, investment 12.461177 %, total balance 7783.280034,\n",
"day 125, sell 1 unit at price 931.659973, investment 11.148751 %, total balance 8714.940007,\n",
"day 126, sell 1 unit at price 927.130005, investment 6.355182 %, total balance 9642.070012,\n",
"day 129: buy 1 unit at price 928.780029, total balance 8713.289983\n",
"day 131: buy 1 unit at price 932.219971, total balance 7781.070012\n",
"day 134, sell 1 unit at price 919.619995, investment 0.346994 %, total balance 8700.690007,\n",
"day 136: buy 1 unit at price 934.010010, total balance 7766.679997\n",
"day 138, sell 1 unit at price 948.820007, investment 2.157667 %, total balance 8715.500004,\n",
"day 139, sell 1 unit at price 954.960022, investment 2.439344 %, total balance 9670.460026,\n",
"day 140, sell 1 unit at price 969.539978, investment 3.804024 %, total balance 10640.000004,\n",
"day 141: buy 1 unit at price 971.469971, total balance 9668.530033\n",
"day 142, sell 1 unit at price 975.880005, investment 0.453955 %, total balance 10644.410038,\n",
"day 143: buy 1 unit at price 964.859985, total balance 9679.550053\n",
"day 144, sell 1 unit at price 966.950012, investment 0.216615 %, total balance 10646.500065,\n",
"day 145: buy 1 unit at price 975.599976, total balance 9670.900089\n",
"day 146: buy 1 unit at price 983.679993, total balance 8687.220096\n",
"day 148, sell 1 unit at price 980.940002, investment 0.547358 %, total balance 9668.160098,\n",
"day 150, sell 1 unit at price 949.830017, investment -3.441157 %, total balance 10617.990115,\n",
"day 152: buy 1 unit at price 953.400024, total balance 9664.590091\n",
"day 154, sell 1 unit at price 942.309998, investment -1.163208 %, total balance 10606.900089,\n",
"day 162: buy 1 unit at price 927.330017, total balance 9679.570072\n",
"day 163: buy 1 unit at price 940.489990, total balance 8739.080082\n",
"day 170: buy 1 unit at price 928.799988, total balance 7810.280094\n",
"day 173, sell 1 unit at price 947.159973, investment 2.138393 %, total balance 8757.440067,\n",
"day 175: buy 1 unit at price 953.419983, total balance 7804.020084\n",
"day 176, sell 1 unit at price 965.400024, investment 2.648623 %, total balance 8769.420108,\n",
"day 177, sell 1 unit at price 970.890015, investment 4.531657 %, total balance 9740.310123,\n",
"day 178: buy 1 unit at price 968.150024, total balance 8772.160099\n",
"day 179, sell 1 unit at price 972.919983, investment 2.045269 %, total balance 9745.080082,\n",
"day 180, sell 1 unit at price 980.340027, investment 1.259103 %, total balance 10725.420109,\n",
"day 185: buy 1 unit at price 930.500000, total balance 9794.920109\n",
"day 186: buy 1 unit at price 930.830017, total balance 8864.090092\n",
"day 187: buy 1 unit at price 930.390015, total balance 7933.700077\n",
"day 188: buy 1 unit at price 923.650024, total balance 7010.050053\n",
"day 191, sell 1 unit at price 926.789978, investment -0.398713 %, total balance 7936.840031,\n",
"day 192, sell 1 unit at price 922.900024, investment -0.851927 %, total balance 8859.740055,\n",
"day 195, sell 1 unit at price 922.669983, investment -0.829763 %, total balance 9782.410038,\n",
"day 198: buy 1 unit at price 910.979980, total balance 8871.430058\n",
"day 202: buy 1 unit at price 927.000000, total balance 7944.430058\n",
"day 203, sell 1 unit at price 921.280029, investment -0.256590 %, total balance 8865.710087,\n",
"day 205, sell 1 unit at price 913.809998, investment 0.310656 %, total balance 9779.520085,\n",
"day 206, sell 1 unit at price 921.289978, investment -0.615968 %, total balance 10700.810063,\n",
"day 207: buy 1 unit at price 929.570007, total balance 9771.240056\n",
"day 209, sell 1 unit at price 937.340027, investment 0.835872 %, total balance 10708.580083,\n",
"day 212: buy 1 unit at price 935.950012, total balance 9772.630071\n",
"day 213, sell 1 unit at price 926.500000, investment -1.009671 %, total balance 10699.130071,\n",
"day 216: buy 1 unit at price 935.090027, total balance 9764.040044\n",
"day 217: buy 1 unit at price 925.109985, total balance 8838.930059\n",
"day 219: buy 1 unit at price 915.000000, total balance 7923.930059\n",
"day 221: buy 1 unit at price 931.580017, total balance 6992.350042\n",
"day 222: buy 1 unit at price 932.450012, total balance 6059.900030\n",
"day 223, sell 1 unit at price 928.530029, investment -0.701537 %, total balance 6988.430059,\n",
"day 224, sell 1 unit at price 920.969971, investment -0.447516 %, total balance 7909.400030,\n",
"day 225: buy 1 unit at price 924.859985, total balance 6984.540045\n",
"day 226: buy 1 unit at price 944.489990, total balance 6040.050055\n",
"day 227: buy 1 unit at price 949.500000, total balance 5090.550055\n",
"day 228, sell 1 unit at price 959.109985, investment 4.820763 %, total balance 6049.660040,\n",
"day 229, sell 1 unit at price 953.270020, investment 2.328303 %, total balance 7002.930060,\n",
"day 230: buy 1 unit at price 957.789978, total balance 6045.140082\n",
"day 235, sell 1 unit at price 972.599976, investment 4.305857 %, total balance 7017.740058,\n",
"day 236, sell 1 unit at price 989.250000, investment 6.962137 %, total balance 8006.990058,\n",
"day 238: buy 1 unit at price 989.679993, total balance 7017.310065\n",
"day 239, sell 1 unit at price 992.000000, investment 5.030229 %, total balance 8009.310065,\n",
"day 240: buy 1 unit at price 992.179993, total balance 7017.130072\n",
"day 241, sell 1 unit at price 992.809998, investment 4.561348 %, total balance 8009.940070,\n",
"day 242, sell 1 unit at price 984.450012, investment 2.783495 %, total balance 8994.390082,\n",
"day 244, sell 1 unit at price 968.450012, investment -2.145136 %, total balance 9962.840094,\n",
"day 245, sell 1 unit at price 970.539978, investment -2.181057 %, total balance 10933.380072,\n",
"day 248: buy 1 unit at price 1019.270020, total balance 9914.110052\n",
"day 249, sell 1 unit at price 1017.109985, investment -0.211920 %, total balance 10931.220037,\n",
"day 250: buy 1 unit at price 1016.640015, total balance 9914.580022\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/14.actor-critic-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Actor:\n",
" def __init__(self, name, input_size, output_size, size_layer):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" feed_actor = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_actor, output_size)\n",
"\n",
"class Critic:\n",
" def __init__(self, name, input_size, output_size, size_layer, learning_rate):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.REWARD = tf.placeholder(tf.float32, (None, 1))\n",
" feed_critic = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" feed_critic = tf.layers.dense(feed_critic, output_size, activation = tf.nn.relu) + self.Y\n",
" feed_critic = tf.layers.dense(feed_critic, size_layer//2, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_critic, 1)\n",
" self.cost = tf.reduce_mean(tf.square(self.REWARD - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.001\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" COPY = 1000\n",
" T_COPY = 0\n",
"\n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.actor = Actor('actor-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.actor_target = Actor('actor-target', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.critic = Critic('critic-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.critic_target = Critic('critic-target', self.state_size, self.OUTPUT_SIZE, \n",
" self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.grad_critic = tf.gradients(self.critic.logits, self.critic.Y)\n",
" self.actor_critic_grad = tf.placeholder(tf.float32, [None, self.OUTPUT_SIZE])\n",
" weights_actor = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='actor')\n",
" self.grad_actor = tf.gradients(self.actor.logits, weights_actor, -self.actor_critic_grad)\n",
" grads = zip(self.grad_actor, weights_actor)\n",
" self.optimizer = tf.train.AdamOptimizer(self.LEARNING_RATE).apply_gradients(grads)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" prediction = self.sess.run(self.actor.logits, feed_dict={self.actor.X:[state]})[0]\n",
" action = np.argmax(prediction)\n",
" return action\n",
" \n",
" def _construct_memories_and_train(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" Q = self.sess.run(self.actor.logits, feed_dict={self.actor.X: states})\n",
" Q_target = self.sess.run(self.actor_target.logits, feed_dict={self.actor_target.X: states})\n",
" grads = self.sess.run(self.grad_critic, feed_dict={self.critic.X:states, self.critic.Y:Q})[0]\n",
" self.sess.run(self.optimizer, feed_dict={self.actor.X:states, self.actor_critic_grad:grads})\n",
" \n",
" rewards = np.array([a[2] for a in replay]).reshape((-1, 1))\n",
" rewards_target = self.sess.run(self.critic_target.logits, \n",
" feed_dict={self.critic_target.X:new_states,self.critic_target.Y:Q_target})\n",
" for i in range(len(replay)):\n",
" if not replay[0][-1]:\n",
" rewards[i] += self.GAMMA * rewards_target[i]\n",
" cost, _ = self.sess.run([self.critic.cost, self.critic.optimizer], \n",
" feed_dict={self.critic.X:states, self.critic.Y:Q, self.critic.REWARD:rewards})\n",
" return cost\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('actor-original', 'actor-target')\n",
" self._assign('critic-original', 'critic-target')\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" state = next_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories_and_train(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 10, total rewards: 1539.185237.3, cost: 2.181347, total money: 1684.395196\n",
"epoch: 20, total rewards: 1308.335026.3, cost: 658.992737, total money: 11308.335026\n",
"epoch: 30, total rewards: 810.315002.3, cost: 19406.357422, total money: 5871.594971\n",
"epoch: 40, total rewards: 380.889899.3, cost: 436790400.000000, total money: 7327.869879\n",
"epoch: 50, total rewards: 676.170224.3, cost: 27570524160.000000, total money: 10676.170224\n",
"epoch: 60, total rewards: 796.770199.3, cost: 935274741760.000000, total money: 10796.770199\n",
"epoch: 70, total rewards: 47.440366.3, cost: 8344191369216.000000, total money: 7043.150388\n",
"epoch: 80, total rewards: 450.169980.3, cost: 88121093914624.000000, total money: 6472.479916\n",
"epoch: 90, total rewards: 443.664980.3, cost: 675454474256384.000000, total money: 9427.024965\n",
"epoch: 100, total rewards: 350.460142.3, cost: 1153362061950976.000000, total money: 10350.460142\n",
"epoch: 110, total rewards: 247.584961.3, cost: 6317238688677888.000000, total money: 9230.944946\n",
"epoch: 120, total rewards: 138.510132.3, cost: 3956869119726321664.000000, total money: 8102.600097\n",
"epoch: 130, total rewards: 410.025086.3, cost: 2205253088434978816.000000, total money: 10410.025086\n",
"epoch: 140, total rewards: 513.814999.3, cost: 5849743807884558336.000000, total money: 9497.174984\n",
"epoch: 150, total rewards: 876.734991.3, cost: 25442419893862400.000000, total money: 9860.094976\n",
"epoch: 160, total rewards: 216.929627.3, cost: 73146239398445056.000000, total money: 9244.369629\n",
"epoch: 170, total rewards: 26.000066.3, cost: 210379489706770432.000000, total money: 7992.250066\n",
"epoch: 180, total rewards: 230.090269.3, cost: 378469838063927296.000000, total money: 8194.180234\n",
"epoch: 190, total rewards: 31.099796.3, cost: 1333389845631860736.000000, total money: 6978.079776\n",
"epoch: 200, total rewards: 158.599487.3, cost: 459357028892629008384.000000, total money: 10158.599487\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 3: buy 1 unit at price 782.520020, total balance 9217.479980\n",
"day 4: buy 1 unit at price 790.510010, total balance 8426.969970\n",
"day 5, sell 1 unit at price 785.309998, investment 0.356538 %, total balance 9212.279968,\n",
"day 6, sell 1 unit at price 762.559998, investment -3.535694 %, total balance 9974.839966,\n",
"day 16: buy 1 unit at price 761.679993, total balance 9213.159973\n",
"day 17: buy 1 unit at price 768.239990, total balance 8444.919983\n",
"day 18, sell 1 unit at price 770.840027, investment 1.202609 %, total balance 9215.760010,\n",
"day 19, sell 1 unit at price 758.039978, investment -1.327712 %, total balance 9973.799988,\n",
"day 20: buy 1 unit at price 747.919983, total balance 9225.880005\n",
"day 21: buy 1 unit at price 750.500000, total balance 8475.380005\n",
"day 22, sell 1 unit at price 762.520020, investment 1.952085 %, total balance 9237.900025,\n",
"day 24, sell 1 unit at price 771.190002, investment 2.756829 %, total balance 10009.090027,\n",
"day 25: buy 1 unit at price 776.419983, total balance 9232.670044\n",
"day 26, sell 1 unit at price 789.289978, investment 1.657607 %, total balance 10021.960022,\n",
"day 27: buy 1 unit at price 789.270020, total balance 9232.690002\n",
"day 28: buy 1 unit at price 796.099976, total balance 8436.590026\n",
"day 31, sell 1 unit at price 790.799988, investment 0.193846 %, total balance 9227.390014,\n",
"day 32, sell 1 unit at price 794.200012, investment -0.238659 %, total balance 10021.590026,\n",
"day 33: buy 1 unit at price 796.419983, total balance 9225.170043\n",
"day 34, sell 1 unit at price 794.559998, investment -0.233543 %, total balance 10019.730041,\n",
"day 36: buy 1 unit at price 789.909973, total balance 9229.820068\n",
"day 37, sell 1 unit at price 791.549988, investment 0.207620 %, total balance 10021.370056,\n",
"day 49: buy 1 unit at price 807.880005, total balance 9213.490051\n",
"day 51: buy 1 unit at price 806.070007, total balance 8407.420044\n",
"day 52, sell 1 unit at price 802.174988, investment -0.706171 %, total balance 9209.595032,\n",
"day 53, sell 1 unit at price 805.020020, investment -0.130260 %, total balance 10014.615052,\n",
"day 59: buy 1 unit at price 802.320007, total balance 9212.295045\n",
"day 62, sell 1 unit at price 798.530029, investment -0.472377 %, total balance 10010.825074,\n",
"day 63: buy 1 unit at price 801.489990, total balance 9209.335084\n",
"day 64, sell 1 unit at price 801.340027, investment -0.018711 %, total balance 10010.675111,\n",
"day 67: buy 1 unit at price 809.559998, total balance 9201.115113\n",
"day 68, sell 1 unit at price 813.669983, investment 0.507681 %, total balance 10014.785096,\n",
"day 73: buy 1 unit at price 828.070007, total balance 9186.715089\n",
"day 74, sell 1 unit at price 831.659973, investment 0.433534 %, total balance 10018.375062,\n",
"day 81: buy 1 unit at price 830.630005, total balance 9187.745057\n",
"day 82, sell 1 unit at price 829.080017, investment -0.186604 %, total balance 10016.825074,\n",
"day 87: buy 1 unit at price 843.250000, total balance 9173.575074\n",
"day 88, sell 1 unit at price 845.539978, investment 0.271566 %, total balance 10019.115052,\n",
"day 92: buy 1 unit at price 852.119995, total balance 9166.995057\n",
"day 93, sell 1 unit at price 848.400024, investment -0.436555 %, total balance 10015.395081,\n",
"day 97: buy 1 unit at price 814.429993, total balance 9200.965088\n",
"day 98: buy 1 unit at price 819.510010, total balance 8381.455078\n",
"day 99, sell 1 unit at price 820.919983, investment 0.796875 %, total balance 9202.375061,\n",
"day 100: buy 1 unit at price 831.409973, total balance 8370.965088\n",
"day 101, sell 1 unit at price 831.500000, investment 1.463068 %, total balance 9202.465088,\n",
"day 102, sell 1 unit at price 829.559998, investment -0.222511 %, total balance 10032.025086,\n",
"day 107: buy 1 unit at price 824.669983, total balance 9207.355103\n",
"day 109, sell 1 unit at price 823.349976, investment -0.160065 %, total balance 10030.705079,\n",
"day 110: buy 1 unit at price 824.320007, total balance 9206.385072\n",
"day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 10029.945070,\n",
"day 115: buy 1 unit at price 841.650024, total balance 9188.295046\n",
"day 116, sell 1 unit at price 843.190002, investment 0.182971 %, total balance 10031.485048,\n",
"day 119: buy 1 unit at price 871.729980, total balance 9159.755068\n",
"day 120, sell 1 unit at price 874.250000, investment 0.289083 %, total balance 10034.005068,\n",
"day 129: buy 1 unit at price 928.780029, total balance 9105.225039\n",
"day 130, sell 1 unit at price 930.599976, investment 0.195950 %, total balance 10035.825015,\n",
"day 137: buy 1 unit at price 941.859985, total balance 9093.965030\n",
"day 138, sell 1 unit at price 948.820007, investment 0.738966 %, total balance 10042.785037,\n",
"day 140: buy 1 unit at price 969.539978, total balance 9073.245059\n",
"day 141, sell 1 unit at price 971.469971, investment 0.199063 %, total balance 10044.715030,\n",
"day 144: buy 1 unit at price 966.950012, total balance 9077.765018\n",
"day 145, sell 1 unit at price 975.599976, investment 0.894562 %, total balance 10053.364994,\n",
"day 147: buy 1 unit at price 976.570007, total balance 9076.794987\n",
"day 148, sell 1 unit at price 980.940002, investment 0.447484 %, total balance 10057.734989,\n",
"day 156: buy 1 unit at price 957.369995, total balance 9100.364994\n",
"day 157, sell 1 unit at price 950.630005, investment -0.704011 %, total balance 10050.994999,\n",
"day 160: buy 1 unit at price 965.590027, total balance 9085.404972\n",
"day 161, sell 1 unit at price 952.270020, investment -1.379468 %, total balance 10037.674992,\n",
"day 165: buy 1 unit at price 908.729980, total balance 9128.945012\n",
"day 166: buy 1 unit at price 898.700012, total balance 8230.245000\n",
"day 167, sell 1 unit at price 911.710022, investment 0.327935 %, total balance 9141.955022,\n",
"day 168, sell 1 unit at price 906.690002, investment 0.889061 %, total balance 10048.645024,\n",
"day 169: buy 1 unit at price 918.590027, total balance 9130.054997\n",
"day 170, sell 1 unit at price 928.799988, investment 1.111482 %, total balance 10058.854985,\n",
"day 171: buy 1 unit at price 930.090027, total balance 9128.764958\n",
"day 172: buy 1 unit at price 943.830017, total balance 8184.934941\n",
"day 173, sell 1 unit at price 947.159973, investment 1.835300 %, total balance 9132.094914,\n",
"day 174: buy 1 unit at price 955.989990, total balance 8176.104924\n",
"day 176: buy 1 unit at price 965.400024, total balance 7210.704900\n",
"day 177, sell 1 unit at price 970.890015, investment 2.867041 %, total balance 8181.594915,\n",
"day 178, sell 1 unit at price 968.150024, investment 1.271983 %, total balance 9149.744939,\n",
"day 179, sell 1 unit at price 972.919983, investment 0.778947 %, total balance 10122.664922,\n",
"day 182: buy 1 unit at price 947.799988, total balance 9174.864934\n",
"day 183, sell 1 unit at price 934.090027, investment -1.446504 %, total balance 10108.954961,\n",
"day 184: buy 1 unit at price 941.530029, total balance 9167.424932\n",
"day 185: buy 1 unit at price 930.500000, total balance 8236.924932\n",
"day 186, sell 1 unit at price 930.830017, investment -1.136449 %, total balance 9167.754949,\n",
"day 187, sell 1 unit at price 930.390015, investment -0.011820 %, total balance 10098.144964,\n",
"day 189: buy 1 unit at price 927.960022, total balance 9170.184942\n",
"day 190, sell 1 unit at price 929.359985, investment 0.150865 %, total balance 10099.544927,\n",
"day 192: buy 1 unit at price 922.900024, total balance 9176.644903\n",
"day 193, sell 1 unit at price 907.239990, investment -1.696829 %, total balance 10083.884893,\n",
"day 197: buy 1 unit at price 926.960022, total balance 9156.924871\n",
"day 198, sell 1 unit at price 910.979980, investment -1.723919 %, total balance 10067.904851,\n",
"day 199: buy 1 unit at price 910.669983, total balance 9157.234868\n",
"day 200, sell 1 unit at price 906.659973, investment -0.440336 %, total balance 10063.894841,\n",
"day 202: buy 1 unit at price 927.000000, total balance 9136.894841\n",
"day 203, sell 1 unit at price 921.280029, investment -0.617041 %, total balance 10058.174870,\n",
"day 204: buy 1 unit at price 915.890015, total balance 9142.284855\n",
"day 205: buy 1 unit at price 913.809998, total balance 8228.474857\n",
"day 206, sell 1 unit at price 921.289978, investment 0.589586 %, total balance 9149.764835,\n",
"day 207, sell 1 unit at price 929.570007, investment 1.724648 %, total balance 10079.334842,\n",
"day 209: buy 1 unit at price 937.340027, total balance 9141.994815\n",
"day 210, sell 1 unit at price 928.450012, investment -0.948430 %, total balance 10070.444827,\n",
"day 211: buy 1 unit at price 927.809998, total balance 9142.634829\n",
"day 212: buy 1 unit at price 935.950012, total balance 8206.684817\n",
"day 213: buy 1 unit at price 926.500000, total balance 7280.184817\n",
"day 214, sell 1 unit at price 929.080017, investment 0.136884 %, total balance 8209.264834,\n",
"day 215: buy 1 unit at price 932.070007, total balance 7277.194827\n",
"day 216: buy 1 unit at price 935.090027, total balance 6342.104800\n",
"day 217, sell 1 unit at price 925.109985, investment -1.158184 %, total balance 7267.214785,\n",
"day 218, sell 1 unit at price 920.289978, investment -0.670267 %, total balance 8187.504763,\n",
"day 219, sell 1 unit at price 915.000000, investment -1.831408 %, total balance 9102.504763,\n",
"day 221, sell 1 unit at price 931.580017, investment -0.375366 %, total balance 10034.084780,\n",
"day 223: buy 1 unit at price 928.530029, total balance 9105.554751\n",
"day 224: buy 1 unit at price 920.969971, total balance 8184.584780\n",
"day 225, sell 1 unit at price 924.859985, investment -0.395253 %, total balance 9109.444765,\n",
"day 226, sell 1 unit at price 944.489990, investment 2.553831 %, total balance 10053.934755,\n",
"day 227: buy 1 unit at price 949.500000, total balance 9104.434755\n",
"day 228, sell 1 unit at price 959.109985, investment 1.012110 %, total balance 10063.544740,\n",
"day 231: buy 1 unit at price 951.679993, total balance 9111.864747\n",
"day 232: buy 1 unit at price 969.960022, total balance 8141.904725\n",
"day 233: buy 1 unit at price 978.890015, total balance 7163.014710\n",
"day 235, sell 1 unit at price 972.599976, investment 2.198216 %, total balance 8135.614686,\n",
"day 236, sell 1 unit at price 989.250000, investment 1.988739 %, total balance 9124.864686,\n",
"day 238, sell 1 unit at price 989.679993, investment 1.102267 %, total balance 10114.544679,\n",
"day 243: buy 1 unit at price 988.200012, total balance 9126.344667\n",
"day 244: buy 1 unit at price 968.450012, total balance 8157.894655\n",
"day 245: buy 1 unit at price 970.539978, total balance 7187.354677\n",
"day 246, sell 1 unit at price 973.330017, investment -1.504756 %, total balance 8160.684694,\n",
"day 247: buy 1 unit at price 972.559998, total balance 7188.124696\n",
"day 248, sell 1 unit at price 1019.270020, investment 5.247561 %, total balance 8207.394716,\n",
"day 249, sell 1 unit at price 1017.109985, investment 4.798361 %, total balance 9224.504701,\n",
"day 250: buy 1 unit at price 1016.640015, total balance 8207.864686\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/15.actor-critic-duel-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Actor:\n",
" def __init__(self, name, input_size, output_size, size_layer):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" feed_actor = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(feed_actor,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,\n",
" tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
"\n",
"class Critic:\n",
" def __init__(self, name, input_size, output_size, size_layer, learning_rate):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.REWARD = tf.placeholder(tf.float32, (None, 1))\n",
" feed_critic = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(feed_critic,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" feed_critic = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" feed_critic = tf.nn.relu(feed_critic) + self.Y\n",
" feed_critic = tf.layers.dense(feed_critic, size_layer//2, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_critic, 1)\n",
" self.cost = tf.reduce_mean(tf.square(self.REWARD - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.001\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" COPY = 1000\n",
" T_COPY = 0\n",
"\n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.actor = Actor('actor-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.actor_target = Actor('actor-target', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.critic = Critic('critic-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.critic_target = Critic('critic-target', self.state_size, self.OUTPUT_SIZE, \n",
" self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.grad_critic = tf.gradients(self.critic.logits, self.critic.Y)\n",
" self.actor_critic_grad = tf.placeholder(tf.float32, [None, self.OUTPUT_SIZE])\n",
" weights_actor = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='actor')\n",
" self.grad_actor = tf.gradients(self.actor.logits, weights_actor, -self.actor_critic_grad)\n",
" grads = zip(self.grad_actor, weights_actor)\n",
" self.optimizer = tf.train.AdamOptimizer(self.LEARNING_RATE).apply_gradients(grads)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" prediction = self.sess.run(self.actor.logits, feed_dict={self.actor.X:[state]})[0]\n",
" action = np.argmax(prediction)\n",
" return action\n",
" \n",
" def _construct_memories_and_train(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" Q = self.sess.run(self.actor.logits, feed_dict={self.actor.X: states})\n",
" Q_target = self.sess.run(self.actor_target.logits, feed_dict={self.actor_target.X: states})\n",
" grads = self.sess.run(self.grad_critic, feed_dict={self.critic.X:states, self.critic.Y:Q})[0]\n",
" self.sess.run(self.optimizer, feed_dict={self.actor.X:states, self.actor_critic_grad:grads})\n",
" \n",
" rewards = np.array([a[2] for a in replay]).reshape((-1, 1))\n",
" rewards_target = self.sess.run(self.critic_target.logits, \n",
" feed_dict={self.critic_target.X:new_states,self.critic_target.Y:Q_target})\n",
" for i in range(len(replay)):\n",
" if not replay[0][-1]:\n",
" rewards[i] += self.GAMMA * rewards_target[i]\n",
" cost, _ = self.sess.run([self.critic.cost, self.critic.optimizer], \n",
" feed_dict={self.critic.X:states, self.critic.Y:Q, self.critic.REWARD:rewards})\n",
" return cost\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('actor-original', 'actor-target')\n",
" self._assign('critic-original', 'critic-target')\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" state = next_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories_and_train(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From :13: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"epoch: 10, total rewards: 707.200200.3, cost: 0.405626, total money: 9715.020207\n",
"epoch: 20, total rewards: 1598.640143.3, cost: 30.734631, total money: 10581.530158\n",
"epoch: 30, total rewards: 1271.279733.3, cost: 465.966644, total money: 10254.169748\n",
"epoch: 40, total rewards: 611.054993.3, cost: 38.079464, total money: 2818.014953\n",
"epoch: 50, total rewards: 1098.115172.3, cost: 71481.406250, total money: 1453.295102\n",
"epoch: 60, total rewards: 575.370237.3, cost: 45955692.000000, total money: 9558.260252\n",
"epoch: 70, total rewards: 1020.545110.3, cost: 244974075904.000000, total money: 10003.435125\n",
"epoch: 80, total rewards: 824.555359.3, cost: 62751015698432.000000, total money: 4025.125366\n",
"epoch: 90, total rewards: 182.215205.3, cost: 3949580517376.000000, total money: 10182.215205\n",
"epoch: 100, total rewards: 861.215276.3, cost: 7310792458240.000000, total money: 7918.025274\n",
"epoch: 110, total rewards: 68.690005.3, cost: 3184271573385216.000000, total money: 10068.690005\n",
"epoch: 120, total rewards: 205.980352.3, cost: 224217291292672.000000, total money: 10205.980352\n",
"epoch: 130, total rewards: 256.794983.3, cost: 363017178972160.000000, total money: 8275.784973\n",
"epoch: 140, total rewards: 1586.720156.3, cost: 530019768074240.000000, total money: 11586.720156\n",
"epoch: 150, total rewards: 824.849978.3, cost: 3151772092727296.000000, total money: 8881.750002\n",
"epoch: 160, total rewards: 222.490291.3, cost: 6080023886823424.000000, total money: 9205.850276\n",
"epoch: 170, total rewards: 37.630069.3, cost: 9586346603577344.000000, total money: 9020.990054\n",
"epoch: 180, total rewards: 510.125126.3, cost: 22490134536519680.000000, total money: 5604.765140\n",
"epoch: 190, total rewards: 639.559874.3, cost: 106721235701858304.000000, total money: 9669.019896\n",
"epoch: 200, total rewards: 945.395079.3, cost: 31826508674760704.000000, total money: 384.445006\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 unit at price 768.700012, total balance 9231.299988\n",
"day 2: buy 1 unit at price 762.020020, total balance 8469.279968\n",
"day 3, sell 1 unit at price 782.520020, investment 1.797842 %, total balance 9251.799988,\n",
"day 4, sell 1 unit at price 790.510010, investment 3.738746 %, total balance 10042.309998,\n",
"day 5: buy 1 unit at price 785.309998, total balance 9257.000000\n",
"day 8: buy 1 unit at price 736.080017, total balance 8520.919983\n",
"day 11, sell 1 unit at price 771.229980, investment -1.792925 %, total balance 9292.149963,\n",
"day 12: buy 1 unit at price 760.539978, total balance 8531.609985\n",
"day 14: buy 1 unit at price 768.270020, total balance 7763.339965\n",
"day 15: buy 1 unit at price 760.989990, total balance 7002.349975\n",
"day 17, sell 1 unit at price 768.239990, investment 4.369087 %, total balance 7770.589965,\n",
"day 20, sell 1 unit at price 747.919983, investment -1.659347 %, total balance 8518.509948,\n",
"day 21, sell 1 unit at price 750.500000, investment -2.312991 %, total balance 9269.009948,\n",
"day 22, sell 1 unit at price 762.520020, investment 0.201058 %, total balance 10031.529968,\n",
"day 27: buy 1 unit at price 789.270020, total balance 9242.259948\n",
"day 33: buy 1 unit at price 796.419983, total balance 8445.839965\n",
"day 34, sell 1 unit at price 794.559998, investment 0.670237 %, total balance 9240.399963,\n",
"day 35, sell 1 unit at price 791.260010, investment -0.647896 %, total balance 10031.659973,\n",
"day 36: buy 1 unit at price 789.909973, total balance 9241.750000\n",
"day 37, sell 1 unit at price 791.549988, investment 0.207620 %, total balance 10033.299988,\n",
"day 41: buy 1 unit at price 786.140015, total balance 9247.159973\n",
"day 43: buy 1 unit at price 794.020020, total balance 8453.139953\n",
"day 44: buy 1 unit at price 806.150024, total balance 7646.989929\n",
"day 45, sell 1 unit at price 806.650024, investment 2.608951 %, total balance 8453.639953,\n",
"day 47: buy 1 unit at price 807.909973, total balance 7645.729980\n",
"day 48: buy 1 unit at price 806.359985, total balance 6839.369995\n",
"day 49, sell 1 unit at price 807.880005, investment 1.745546 %, total balance 7647.250000,\n",
"day 55: buy 1 unit at price 823.869995, total balance 6823.380005\n",
"day 56, sell 1 unit at price 835.669983, investment 3.661844 %, total balance 7659.049988,\n",
"day 57, sell 1 unit at price 832.150024, investment 3.000341 %, total balance 8491.200012,\n",
"day 58, sell 1 unit at price 823.309998, investment 2.102040 %, total balance 9314.510010,\n",
"day 59: buy 1 unit at price 802.320007, total balance 8512.190003\n",
"day 60, sell 1 unit at price 796.789978, investment -3.286928 %, total balance 9308.979981,\n",
"day 62: buy 1 unit at price 798.530029, total balance 8510.449952\n",
"day 63, sell 1 unit at price 801.489990, investment -0.103452 %, total balance 9311.939942,\n",
"day 69, sell 1 unit at price 819.239990, investment 2.593511 %, total balance 10131.179932,\n",
"day 75: buy 1 unit at price 830.760010, total balance 9300.419922\n",
"day 76, sell 1 unit at price 831.330017, investment 0.068613 %, total balance 10131.749939,\n",
"day 77: buy 1 unit at price 828.640015, total balance 9303.109924\n",
"day 78: buy 1 unit at price 829.280029, total balance 8473.829895\n",
"day 80, sell 1 unit at price 835.239990, investment 0.796483 %, total balance 9309.069885,\n",
"day 83: buy 1 unit at price 827.780029, total balance 8481.289856\n",
"day 84, sell 1 unit at price 831.909973, investment 0.317136 %, total balance 9313.199829,\n",
"day 86: buy 1 unit at price 838.679993, total balance 8474.519836\n",
"day 87: buy 1 unit at price 843.250000, total balance 7631.269836\n",
"day 88: buy 1 unit at price 845.539978, total balance 6785.729858\n",
"day 89, sell 1 unit at price 845.619995, investment 2.155158 %, total balance 7631.349853,\n",
"day 91: buy 1 unit at price 848.780029, total balance 6782.569824\n",
"day 92: buy 1 unit at price 852.119995, total balance 5930.449829\n",
"day 94, sell 1 unit at price 830.460022, investment -0.980108 %, total balance 6760.909851,\n",
"day 95: buy 1 unit at price 829.590027, total balance 5931.319824\n",
"day 96: buy 1 unit at price 817.580017, total balance 5113.739807\n",
"day 97: buy 1 unit at price 814.429993, total balance 4299.309814\n",
"day 98: buy 1 unit at price 819.510010, total balance 3479.799804\n",
"day 104, sell 1 unit at price 834.570007, investment -1.029350 %, total balance 4314.369811,\n",
"day 105: buy 1 unit at price 831.409973, total balance 3482.959838\n",
"day 106: buy 1 unit at price 827.880005, total balance 2655.079833\n",
"day 107, sell 1 unit at price 824.669983, investment -2.468245 %, total balance 3479.749816,\n",
"day 108: buy 1 unit at price 824.729980, total balance 2655.019836\n",
"day 110, sell 1 unit at price 824.320007, investment -2.881786 %, total balance 3479.339843,\n",
"day 111, sell 1 unit at price 823.559998, investment -3.351640 %, total balance 4302.899841,\n",
"day 112: buy 1 unit at price 837.169983, total balance 3465.729858\n",
"day 118, sell 1 unit at price 872.299988, investment 5.148321 %, total balance 4338.029846,\n",
"day 121, sell 1 unit at price 905.960022, investment 10.809952 %, total balance 5243.989868,\n",
"day 122, sell 1 unit at price 912.570007, investment 12.050147 %, total balance 6156.559875,\n",
"day 123, sell 1 unit at price 916.440002, investment 11.827798 %, total balance 7072.999877,\n",
"day 125: buy 1 unit at price 931.659973, total balance 6141.339904\n",
"day 128: buy 1 unit at price 932.169983, total balance 5209.169921\n",
"day 132, sell 1 unit at price 937.080017, investment 12.709740 %, total balance 6146.249938,\n",
"day 133, sell 1 unit at price 943.000000, investment 13.905396 %, total balance 7089.249938,\n",
"day 134: buy 1 unit at price 919.619995, total balance 6169.629943\n",
"day 136, sell 1 unit at price 934.010010, investment 13.250401 %, total balance 7103.639953,\n",
"day 137, sell 1 unit at price 941.859985, investment 12.505226 %, total balance 8045.499938,\n",
"day 139, sell 1 unit at price 954.960022, investment 2.500918 %, total balance 9000.459960,\n",
"day 140: buy 1 unit at price 969.539978, total balance 8030.919982\n",
"day 143: buy 1 unit at price 964.859985, total balance 7066.059997\n",
"day 149, sell 1 unit at price 983.409973, investment 5.496850 %, total balance 8049.469970,\n",
"day 150: buy 1 unit at price 949.830017, total balance 7099.639953\n",
"day 152, sell 1 unit at price 953.400024, investment 3.673260 %, total balance 8053.039977,\n",
"day 153, sell 1 unit at price 950.760010, investment -1.936998 %, total balance 9003.799987,\n",
"day 154, sell 1 unit at price 942.309998, investment -2.337125 %, total balance 9946.109985,\n",
"day 156: buy 1 unit at price 957.369995, total balance 8988.739990\n",
"day 157, sell 1 unit at price 950.630005, investment 0.084224 %, total balance 9939.369995,\n",
"day 159, sell 1 unit at price 957.090027, investment -0.029243 %, total balance 10896.460022,\n",
"day 161: buy 1 unit at price 952.270020, total balance 9944.190002\n",
"day 163: buy 1 unit at price 940.489990, total balance 9003.700012\n",
"day 167, sell 1 unit at price 911.710022, investment -4.259296 %, total balance 9915.410034,\n",
"day 168: buy 1 unit at price 906.690002, total balance 9008.720032\n",
"day 170, sell 1 unit at price 928.799988, investment -1.242969 %, total balance 9937.520020,\n",
"day 171, sell 1 unit at price 930.090027, investment 2.580819 %, total balance 10867.610047,\n",
"day 188: buy 1 unit at price 923.650024, total balance 9943.960023\n",
"day 191, sell 1 unit at price 926.789978, investment 0.339951 %, total balance 10870.750001,\n",
"day 196: buy 1 unit at price 922.219971, total balance 9948.530030\n",
"day 197: buy 1 unit at price 926.960022, total balance 9021.570008\n",
"day 198, sell 1 unit at price 910.979980, investment -1.218797 %, total balance 9932.549988,\n",
"day 199: buy 1 unit at price 910.669983, total balance 9021.880005\n",
"day 202, sell 1 unit at price 927.000000, investment 0.004313 %, total balance 9948.880005,\n",
"day 203: buy 1 unit at price 921.280029, total balance 9027.599976\n",
"day 204, sell 1 unit at price 915.890015, investment 0.573208 %, total balance 9943.489991,\n",
"day 205: buy 1 unit at price 913.809998, total balance 9029.679993\n",
"day 206, sell 1 unit at price 921.289978, investment 0.001080 %, total balance 9950.969971,\n",
"day 207: buy 1 unit at price 929.570007, total balance 9021.399964\n",
"day 208, sell 1 unit at price 939.330017, investment 2.792705 %, total balance 9960.729981,\n",
"day 209: buy 1 unit at price 937.340027, total balance 9023.389954\n",
"day 210: buy 1 unit at price 928.450012, total balance 8094.939942\n",
"day 212: buy 1 unit at price 935.950012, total balance 7158.989930\n",
"day 213, sell 1 unit at price 926.500000, investment -0.330261 %, total balance 8085.489930,\n",
"day 219: buy 1 unit at price 915.000000, total balance 7170.489930\n",
"day 220, sell 1 unit at price 921.809998, investment -1.656819 %, total balance 8092.299928,\n",
"day 221, sell 1 unit at price 931.580017, investment 0.337122 %, total balance 9023.879945,\n",
"day 222, sell 1 unit at price 932.450012, investment -0.373952 %, total balance 9956.329957,\n",
"day 223: buy 1 unit at price 928.530029, total balance 9027.799928\n",
"day 226: buy 1 unit at price 944.489990, total balance 8083.309938\n",
"day 227, sell 1 unit at price 949.500000, investment 3.770492 %, total balance 9032.809938,\n",
"day 228: buy 1 unit at price 959.109985, total balance 8073.699953\n",
"day 229, sell 1 unit at price 953.270020, investment 2.664426 %, total balance 9026.969973,\n",
"day 231: buy 1 unit at price 951.679993, total balance 8075.289980\n",
"day 232, sell 1 unit at price 969.960022, investment 2.696697 %, total balance 9045.250002,\n",
"day 233, sell 1 unit at price 978.890015, investment 2.062332 %, total balance 10024.140017,\n",
"day 234, sell 1 unit at price 977.000000, investment 2.660559 %, total balance 11001.140017,\n",
"day 235: buy 1 unit at price 972.599976, total balance 10028.540041\n",
"day 238: buy 1 unit at price 989.679993, total balance 9038.860048\n",
"day 240, sell 1 unit at price 992.179993, investment 2.013162 %, total balance 10031.040041,\n",
"day 241, sell 1 unit at price 992.809998, investment 0.316264 %, total balance 11023.850039,\n",
"day 247: buy 1 unit at price 972.559998, total balance 10051.290041\n",
"day 248, sell 1 unit at price 1019.270020, investment 4.802791 %, total balance 11070.560061,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/16.actor-critic-recurrent-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Actor:\n",
" def __init__(self, name, input_size, output_size, size_layer):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * size_layer))\n",
" cell = tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X, cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" self.logits = tf.layers.dense(self.rnn[:,-1], output_size)\n",
"\n",
"class Critic:\n",
" def __init__(self, name, input_size, output_size, size_layer, learning_rate):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * size_layer))\n",
" self.REWARD = tf.placeholder(tf.float32, (None, 1))\n",
" feed_critic = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" cell = tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X, cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" feed_critic = tf.layers.dense(self.rnn[:,-1], output_size, activation = tf.nn.relu) + self.Y\n",
" feed_critic = tf.layers.dense(feed_critic, size_layer//2, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_critic, 1)\n",
" self.cost = tf.reduce_mean(tf.square(self.REWARD - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.001\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" COPY = 1000\n",
" T_COPY = 0\n",
"\n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.actor = Actor('actor-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.actor_target = Actor('actor-target', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.critic = Critic('critic-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.critic_target = Critic('critic-target', self.state_size, self.OUTPUT_SIZE, \n",
" self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.grad_critic = tf.gradients(self.critic.logits, self.critic.Y)\n",
" self.actor_critic_grad = tf.placeholder(tf.float32, [None, self.OUTPUT_SIZE])\n",
" weights_actor = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='actor')\n",
" self.grad_actor = tf.gradients(self.actor.logits, weights_actor, -self.actor_critic_grad)\n",
" grads = zip(self.grad_actor, weights_actor)\n",
" self.optimizer = tf.train.AdamOptimizer(self.LEARNING_RATE).apply_gradients(grads)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" prediction = self.sess.run(self.actor.logits, feed_dict={self.actor.X:[state]})[0]\n",
" action = np.argmax(prediction)\n",
" return action\n",
" \n",
" def _construct_memories_and_train(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.actor.logits, feed_dict={self.actor.X: states,\n",
" self.actor.hidden_layer: init_values})\n",
" Q_target = self.sess.run(self.actor_target.logits, feed_dict={self.actor_target.X: states,\n",
" self.actor_target.hidden_layer: init_values})\n",
" grads = self.sess.run(self.grad_critic, feed_dict={self.critic.X:states, self.critic.Y:Q,\n",
" self.critic.hidden_layer: init_values})[0]\n",
" self.sess.run(self.optimizer, feed_dict={self.actor.X:states, self.actor_critic_grad:grads,\n",
" self.actor.hidden_layer: init_values})\n",
" \n",
" rewards = np.array([a[2] for a in replay]).reshape((-1, 1))\n",
" rewards_target = self.sess.run(self.critic_target.logits, \n",
" feed_dict={self.critic_target.X:new_states,self.critic_target.Y:Q_target,\n",
" self.critic_target.hidden_layer: init_values})\n",
" for i in range(len(replay)):\n",
" if not replay[0][-2]:\n",
" rewards[i] += self.GAMMA * rewards_target[i]\n",
" cost, _ = self.sess.run([self.critic.cost, self.critic.optimizer], \n",
" feed_dict={self.critic.X:states, self.critic.Y:Q, self.critic.REWARD:rewards,\n",
" self.critic.hidden_layer: init_values})\n",
" return cost\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.actor.logits,\n",
" self.actor.last_state],\n",
" feed_dict={self.actor.X:[self.INITIAL_FEATURES],\n",
" self.actor.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('actor-original', 'actor-target')\n",
" self._assign('critic-original', 'critic-target')\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.actor.logits,\n",
" self.actor.last_state],\n",
" feed_dict={self.actor.X:[self.INITIAL_FEATURES],\n",
" self.actor.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" self.INITIAL_FEATURES = new_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories_and_train(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 1158.549991.3, cost: 0.046632, total money: 4247.099979\n",
"epoch: 20, total rewards: 466.185119.3, cost: 0.035100, total money: 5537.135131\n",
"epoch: 30, total rewards: 477.615173.3, cost: 0.330107, total money: 975.775206\n",
"epoch: 40, total rewards: 1200.205012.3, cost: 0.215860, total money: 10180.934992\n",
"epoch: 50, total rewards: 283.615237.3, cost: 0.116108, total money: 3314.845217\n",
"epoch: 60, total rewards: 324.265078.3, cost: 0.435482, total money: 9334.585085\n",
"epoch: 70, total rewards: 587.429873.3, cost: 0.749076, total money: 4785.129884\n",
"epoch: 80, total rewards: 1248.729918.3, cost: 0.167420, total money: 663.739866\n",
"epoch: 90, total rewards: 520.270204.3, cost: 0.006982, total money: 9503.630189\n",
"epoch: 100, total rewards: 195.270142.3, cost: 0.153058, total money: 10195.270142\n",
"epoch: 110, total rewards: 74.399840.3, cost: 0.350105, total money: 10074.399840\n",
"epoch: 120, total rewards: 2842.805359.3, cost: 0.074852, total money: 7832.085327\n",
"epoch: 130, total rewards: 509.049985.3, cost: 0.053447, total money: 8518.609983\n",
"epoch: 140, total rewards: -2.900205.3, cost: 0.015182, total money: 8979.989810\n",
"epoch: 150, total rewards: 93.080022.3, cost: 0.008775, total money: 10093.080022\n",
"epoch: 160, total rewards: 89.794983.3, cost: 0.107893, total money: 10089.794983\n",
"epoch: 170, total rewards: 222.045106.3, cost: 0.189179, total money: 10222.045106\n",
"epoch: 180, total rewards: -57.619995.3, cost: 0.002425, total money: 8925.739990\n",
"epoch: 190, total rewards: 21.009889.3, cost: 0.005919, total money: 10021.009889\n",
"epoch: 200, total rewards: 201.354980.3, cost: 0.002352, total money: 10201.354980\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 unit at price 768.700012, total balance 9231.299988\n",
"day 1, sell 1 unit at price 762.130005, investment -0.854691 %, total balance 9993.429993,\n",
"day 3: buy 1 unit at price 782.520020, total balance 9210.909973\n",
"day 4, sell 1 unit at price 790.510010, investment 1.021059 %, total balance 10001.419983,\n",
"day 22: buy 1 unit at price 762.520020, total balance 9238.899963\n",
"day 23: buy 1 unit at price 759.109985, total balance 8479.789978\n",
"day 24, sell 1 unit at price 771.190002, investment 1.137017 %, total balance 9250.979980,\n",
"day 26, sell 1 unit at price 789.289978, investment 3.975708 %, total balance 10040.269958,\n",
"day 31: buy 1 unit at price 790.799988, total balance 9249.469970\n",
"day 32, sell 1 unit at price 794.200012, investment 0.429947 %, total balance 10043.669982,\n",
"day 33: buy 1 unit at price 796.419983, total balance 9247.249999\n",
"day 34, sell 1 unit at price 794.559998, investment -0.233543 %, total balance 10041.809997,\n",
"day 39: buy 1 unit at price 782.789978, total balance 9259.020019\n",
"day 40: buy 1 unit at price 771.820007, total balance 8487.200012\n",
"day 42, sell 1 unit at price 786.900024, investment 0.525051 %, total balance 9274.100036,\n",
"day 45, sell 1 unit at price 806.650024, investment 4.512712 %, total balance 10080.750060,\n",
"day 64: buy 1 unit at price 801.340027, total balance 9279.410033\n",
"day 65, sell 1 unit at price 806.969971, investment 0.702566 %, total balance 10086.380004,\n",
"day 68: buy 1 unit at price 813.669983, total balance 9272.710021\n",
"day 70, sell 1 unit at price 820.450012, investment 0.833265 %, total balance 10093.160033,\n",
"day 103: buy 1 unit at price 838.549988, total balance 9254.610045\n",
"day 104, sell 1 unit at price 834.570007, investment -0.474627 %, total balance 10089.180052,\n",
"day 110: buy 1 unit at price 824.320007, total balance 9264.860045\n",
"day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 10088.420043,\n",
"day 114: buy 1 unit at price 838.210022, total balance 9250.210021\n",
"day 115, sell 1 unit at price 841.650024, investment 0.410399 %, total balance 10091.860045,\n",
"day 128: buy 1 unit at price 932.169983, total balance 9159.690062\n",
"day 129: buy 1 unit at price 928.780029, total balance 8230.910033\n",
"day 131, sell 1 unit at price 932.219971, investment 0.005363 %, total balance 9163.130004,\n",
"day 132, sell 1 unit at price 937.080017, investment 0.893644 %, total balance 10100.210021,\n",
"day 144: buy 1 unit at price 966.950012, total balance 9133.260009\n",
"day 145, sell 1 unit at price 975.599976, investment 0.894562 %, total balance 10108.859985,\n",
"day 148: buy 1 unit at price 980.940002, total balance 9127.919983\n",
"day 149, sell 1 unit at price 983.409973, investment 0.251796 %, total balance 10111.329956,\n",
"day 151: buy 1 unit at price 942.900024, total balance 9168.429932\n",
"day 153, sell 1 unit at price 950.760010, investment 0.833597 %, total balance 10119.189942,\n",
"day 168: buy 1 unit at price 906.690002, total balance 9212.499940\n",
"day 169, sell 1 unit at price 918.590027, investment 1.312469 %, total balance 10131.089967,\n",
"day 171: buy 1 unit at price 930.090027, total balance 9200.999940\n",
"day 172, sell 1 unit at price 943.830017, investment 1.477275 %, total balance 10144.829957,\n",
"day 175: buy 1 unit at price 953.419983, total balance 9191.409974\n",
"day 176, sell 1 unit at price 965.400024, investment 1.256533 %, total balance 10156.809998,\n",
"day 178: buy 1 unit at price 968.150024, total balance 9188.659974\n",
"day 179, sell 1 unit at price 972.919983, investment 0.492688 %, total balance 10161.579957,\n",
"day 192: buy 1 unit at price 922.900024, total balance 9238.679933\n",
"day 193, sell 1 unit at price 907.239990, investment -1.696829 %, total balance 10145.919923,\n",
"day 194: buy 1 unit at price 914.390015, total balance 9231.529908\n",
"day 196: buy 1 unit at price 922.219971, total balance 8309.309937\n",
"day 197, sell 1 unit at price 926.960022, investment 1.374688 %, total balance 9236.269959,\n",
"day 198, sell 1 unit at price 910.979980, investment -1.218797 %, total balance 10147.249939,\n",
"day 207: buy 1 unit at price 929.570007, total balance 9217.679932\n",
"day 208: buy 1 unit at price 939.330017, total balance 8278.349915\n",
"day 209, sell 1 unit at price 937.340027, investment 0.835872 %, total balance 9215.689942,\n",
"day 210, sell 1 unit at price 928.450012, investment -1.158273 %, total balance 10144.139954,\n",
"day 211: buy 1 unit at price 927.809998, total balance 9216.329956\n",
"day 212, sell 1 unit at price 935.950012, investment 0.877336 %, total balance 10152.279968,\n",
"day 214: buy 1 unit at price 929.080017, total balance 9223.199951\n",
"day 215, sell 1 unit at price 932.070007, investment 0.321823 %, total balance 10155.269958,\n",
"day 226: buy 1 unit at price 944.489990, total balance 9210.779968\n",
"day 227, sell 1 unit at price 949.500000, investment 0.530446 %, total balance 10160.279968,\n",
"day 233: buy 1 unit at price 978.890015, total balance 9181.389953\n",
"day 234, sell 1 unit at price 977.000000, investment -0.193077 %, total balance 10158.389953,\n",
"day 243: buy 1 unit at price 988.200012, total balance 9170.189941\n",
"day 244, sell 1 unit at price 968.450012, investment -1.998583 %, total balance 10138.639953,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/17.actor-critic-duel-recurrent-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Actor:\n",
" def __init__(self, name, input_size, output_size, size_layer):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * size_layer))\n",
" cell = tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X, cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" tensor_action, tensor_validation = tf.split(self.rnn[:,-1],2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + tf.subtract(feed_action,\n",
" tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
"\n",
"class Critic:\n",
" def __init__(self, name, input_size, output_size, size_layer, learning_rate):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * size_layer))\n",
" self.REWARD = tf.placeholder(tf.float32, (None, 1))\n",
" feed_critic = tf.layers.dense(self.X, size_layer, activation = tf.nn.relu)\n",
" cell = tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X, cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" tensor_action, tensor_validation = tf.split(self.rnn[:,-1],2,1)\n",
" feed_action = tf.layers.dense(tensor_action, output_size)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" feed_critic = feed_validation + tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" feed_critic = tf.nn.relu(feed_critic) + self.Y\n",
" feed_critic = tf.layers.dense(feed_critic, size_layer//2, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_critic, 1)\n",
" self.cost = tf.reduce_mean(tf.square(self.REWARD - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.001\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" COPY = 1000\n",
" T_COPY = 0\n",
"\n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.actor = Actor('actor-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.actor_target = Actor('actor-target', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE)\n",
" self.critic = Critic('critic-original', self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.critic_target = Critic('critic-target', self.state_size, self.OUTPUT_SIZE, \n",
" self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.grad_critic = tf.gradients(self.critic.logits, self.critic.Y)\n",
" self.actor_critic_grad = tf.placeholder(tf.float32, [None, self.OUTPUT_SIZE])\n",
" weights_actor = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope='actor')\n",
" self.grad_actor = tf.gradients(self.actor.logits, weights_actor, -self.actor_critic_grad)\n",
" grads = zip(self.grad_actor, weights_actor)\n",
" self.optimizer = tf.train.AdamOptimizer(self.LEARNING_RATE).apply_gradients(grads)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" prediction = self.sess.run(self.actor.logits, feed_dict={self.actor.X:[state]})[0]\n",
" action = np.argmax(prediction)\n",
" return action\n",
" \n",
" def _construct_memories_and_train(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.actor.logits, feed_dict={self.actor.X: states,\n",
" self.actor.hidden_layer: init_values})\n",
" Q_target = self.sess.run(self.actor_target.logits, feed_dict={self.actor_target.X: states,\n",
" self.actor_target.hidden_layer: init_values})\n",
" grads = self.sess.run(self.grad_critic, feed_dict={self.critic.X:states, self.critic.Y:Q,\n",
" self.critic.hidden_layer: init_values})[0]\n",
" self.sess.run(self.optimizer, feed_dict={self.actor.X:states, self.actor_critic_grad:grads,\n",
" self.actor.hidden_layer: init_values})\n",
" \n",
" rewards = np.array([a[2] for a in replay]).reshape((-1, 1))\n",
" rewards_target = self.sess.run(self.critic_target.logits, \n",
" feed_dict={self.critic_target.X:new_states,self.critic_target.Y:Q_target,\n",
" self.critic_target.hidden_layer: init_values})\n",
" for i in range(len(replay)):\n",
" if not replay[0][-2]:\n",
" rewards[i] += self.GAMMA * rewards_target[i]\n",
" cost, _ = self.sess.run([self.critic.cost, self.critic.optimizer], \n",
" feed_dict={self.critic.X:states, self.critic.Y:Q, self.critic.REWARD:rewards,\n",
" self.critic.hidden_layer: init_values})\n",
" return cost\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.actor.logits,\n",
" self.actor.last_state],\n",
" feed_dict={self.actor.X:[self.INITIAL_FEATURES],\n",
" self.actor.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('actor-original', 'actor-target')\n",
" self._assign('critic-original', 'critic-target')\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.actor.logits,\n",
" self.actor.last_state],\n",
" feed_dict={self.actor.X:[self.INITIAL_FEATURES],\n",
" self.actor.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" self.INITIAL_FEATURES = new_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories_and_train(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:From :17: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 1217.199710.3, cost: 0.428947, total money: 9258.459720\n",
"epoch: 20, total rewards: 154.669988.3, cost: 0.205311, total money: 8167.020025\n",
"epoch: 30, total rewards: 225.259892.3, cost: 0.080974, total money: 10225.259892\n",
"epoch: 40, total rewards: 1857.994754.3, cost: 0.147440, total money: 7906.464724\n",
"epoch: 50, total rewards: 864.365355.3, cost: 0.133079, total money: 3145.525327\n",
"epoch: 60, total rewards: 252.179754.3, cost: 0.349886, total money: 10252.179754\n",
"epoch: 70, total rewards: 2285.265256.3, cost: 0.122869, total money: 841.845272\n",
"epoch: 80, total rewards: 2273.160095.3, cost: 0.042144, total money: 1779.580078\n",
"epoch: 90, total rewards: 695.794921.3, cost: 0.652829, total money: 10695.794921\n",
"epoch: 100, total rewards: -63.870359.3, cost: 0.026901, total money: 9936.129641\n",
"epoch: 110, total rewards: 1660.049986.3, cost: 0.050525, total money: 236.529905\n",
"epoch: 120, total rewards: 2137.930355.3, cost: 0.019048, total money: 635.270319\n",
"epoch: 130, total rewards: 1263.700071.3, cost: 0.105621, total money: 836.610044\n",
"epoch: 140, total rewards: 2582.234985.3, cost: 0.026973, total money: 1985.844970\n",
"epoch: 150, total rewards: 1342.129822.3, cost: 0.045669, total money: 1933.479859\n",
"epoch: 160, total rewards: 171.394838.3, cost: 0.186082, total money: 9198.064821\n",
"epoch: 170, total rewards: 581.185307.3, cost: 0.243257, total money: 26.655338\n",
"epoch: 180, total rewards: 109.954956.3, cost: 0.001933, total money: 9092.844971\n",
"epoch: 190, total rewards: -85.549868.3, cost: 0.004746, total money: 9914.450132\n",
"epoch: 200, total rewards: 94.994872.3, cost: 0.006849, total money: 10094.994872\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 unit at price 768.700012, total balance 9231.299988\n",
"day 1, sell 1 unit at price 762.130005, investment -0.854691 %, total balance 9993.429993,\n",
"day 3: buy 1 unit at price 782.520020, total balance 9210.909973\n",
"day 4, sell 1 unit at price 790.510010, investment 1.021059 %, total balance 10001.419983,\n",
"day 22: buy 1 unit at price 762.520020, total balance 9238.899963\n",
"day 23: buy 1 unit at price 759.109985, total balance 8479.789978\n",
"day 24, sell 1 unit at price 771.190002, investment 1.137017 %, total balance 9250.979980,\n",
"day 26, sell 1 unit at price 789.289978, investment 3.975708 %, total balance 10040.269958,\n",
"day 31: buy 1 unit at price 790.799988, total balance 9249.469970\n",
"day 32, sell 1 unit at price 794.200012, investment 0.429947 %, total balance 10043.669982,\n",
"day 33: buy 1 unit at price 796.419983, total balance 9247.249999\n",
"day 34, sell 1 unit at price 794.559998, investment -0.233543 %, total balance 10041.809997,\n",
"day 39: buy 1 unit at price 782.789978, total balance 9259.020019\n",
"day 40: buy 1 unit at price 771.820007, total balance 8487.200012\n",
"day 42, sell 1 unit at price 786.900024, investment 0.525051 %, total balance 9274.100036,\n",
"day 45, sell 1 unit at price 806.650024, investment 4.512712 %, total balance 10080.750060,\n",
"day 64: buy 1 unit at price 801.340027, total balance 9279.410033\n",
"day 65, sell 1 unit at price 806.969971, investment 0.702566 %, total balance 10086.380004,\n",
"day 68: buy 1 unit at price 813.669983, total balance 9272.710021\n",
"day 70, sell 1 unit at price 820.450012, investment 0.833265 %, total balance 10093.160033,\n",
"day 103: buy 1 unit at price 838.549988, total balance 9254.610045\n",
"day 104, sell 1 unit at price 834.570007, investment -0.474627 %, total balance 10089.180052,\n",
"day 110: buy 1 unit at price 824.320007, total balance 9264.860045\n",
"day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 10088.420043,\n",
"day 114: buy 1 unit at price 838.210022, total balance 9250.210021\n",
"day 115, sell 1 unit at price 841.650024, investment 0.410399 %, total balance 10091.860045,\n",
"day 128: buy 1 unit at price 932.169983, total balance 9159.690062\n",
"day 129: buy 1 unit at price 928.780029, total balance 8230.910033\n",
"day 131, sell 1 unit at price 932.219971, investment 0.005363 %, total balance 9163.130004,\n",
"day 132, sell 1 unit at price 937.080017, investment 0.893644 %, total balance 10100.210021,\n",
"day 144: buy 1 unit at price 966.950012, total balance 9133.260009\n",
"day 145, sell 1 unit at price 975.599976, investment 0.894562 %, total balance 10108.859985,\n",
"day 148: buy 1 unit at price 980.940002, total balance 9127.919983\n",
"day 149, sell 1 unit at price 983.409973, investment 0.251796 %, total balance 10111.329956,\n",
"day 151: buy 1 unit at price 942.900024, total balance 9168.429932\n",
"day 153, sell 1 unit at price 950.760010, investment 0.833597 %, total balance 10119.189942,\n",
"day 168: buy 1 unit at price 906.690002, total balance 9212.499940\n",
"day 169, sell 1 unit at price 918.590027, investment 1.312469 %, total balance 10131.089967,\n",
"day 171: buy 1 unit at price 930.090027, total balance 9200.999940\n",
"day 172, sell 1 unit at price 943.830017, investment 1.477275 %, total balance 10144.829957,\n",
"day 175: buy 1 unit at price 953.419983, total balance 9191.409974\n",
"day 176, sell 1 unit at price 965.400024, investment 1.256533 %, total balance 10156.809998,\n",
"day 178: buy 1 unit at price 968.150024, total balance 9188.659974\n",
"day 179, sell 1 unit at price 972.919983, investment 0.492688 %, total balance 10161.579957,\n",
"day 192: buy 1 unit at price 922.900024, total balance 9238.679933\n",
"day 193, sell 1 unit at price 907.239990, investment -1.696829 %, total balance 10145.919923,\n",
"day 194: buy 1 unit at price 914.390015, total balance 9231.529908\n",
"day 196: buy 1 unit at price 922.219971, total balance 8309.309937\n",
"day 197, sell 1 unit at price 926.960022, investment 1.374688 %, total balance 9236.269959,\n",
"day 198, sell 1 unit at price 910.979980, investment -1.218797 %, total balance 10147.249939,\n",
"day 207: buy 1 unit at price 929.570007, total balance 9217.679932\n",
"day 208: buy 1 unit at price 939.330017, total balance 8278.349915\n",
"day 209, sell 1 unit at price 937.340027, investment 0.835872 %, total balance 9215.689942,\n",
"day 210, sell 1 unit at price 928.450012, investment -1.158273 %, total balance 10144.139954,\n",
"day 211: buy 1 unit at price 927.809998, total balance 9216.329956\n",
"day 212, sell 1 unit at price 935.950012, investment 0.877336 %, total balance 10152.279968,\n",
"day 214: buy 1 unit at price 929.080017, total balance 9223.199951\n",
"day 215, sell 1 unit at price 932.070007, investment 0.321823 %, total balance 10155.269958,\n",
"day 226: buy 1 unit at price 944.489990, total balance 9210.779968\n",
"day 227, sell 1 unit at price 949.500000, investment 0.530446 %, total balance 10160.279968,\n",
"day 233: buy 1 unit at price 978.890015, total balance 9181.389953\n",
"day 234, sell 1 unit at price 977.000000, investment -0.193077 %, total balance 10158.389953,\n",
"day 243: buy 1 unit at price 988.200012, total balance 9170.189941\n",
"day 244, sell 1 unit at price 968.450012, investment -1.998583 %, total balance 10138.639953,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/18.curiosity-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 500\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.X = tf.placeholder(tf.float32, (None, self.state_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, self.state_size))\n",
" self.ACTION = tf.placeholder(tf.float32, (None))\n",
" self.REWARD = tf.placeholder(tf.float32, (None))\n",
" self.batch_size = tf.shape(self.ACTION)[0]\n",
" \n",
" with tf.variable_scope('curiosity_model'):\n",
" action = tf.reshape(self.ACTION, (-1,1))\n",
" state_action = tf.concat([self.X, action], axis=1)\n",
" save_state = tf.identity(self.Y)\n",
" \n",
" feed = tf.layers.dense(state_action, 32, activation=tf.nn.relu)\n",
" self.curiosity_logits = tf.layers.dense(feed, self.state_size)\n",
" self.curiosity_cost = tf.reduce_sum(tf.square(save_state - self.curiosity_logits), axis=1)\n",
" \n",
" self.curiosity_optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE)\\\n",
" .minimize(tf.reduce_mean(self.curiosity_cost))\n",
" \n",
" total_reward = tf.add(self.curiosity_cost, self.REWARD)\n",
" \n",
" with tf.variable_scope(\"q_model\"):\n",
" with tf.variable_scope(\"eval_net\"):\n",
" x_action = tf.layers.dense(self.X, 128, tf.nn.relu)\n",
" self.logits = tf.layers.dense(x_action, self.OUTPUT_SIZE)\n",
" \n",
" with tf.variable_scope(\"target_net\"):\n",
" y_action = tf.layers.dense(self.Y, 128, tf.nn.relu)\n",
" y_q = tf.layers.dense(y_action, self.OUTPUT_SIZE)\n",
" \n",
" q_target = total_reward + self.GAMMA * tf.reduce_max(y_q, axis=1)\n",
" action = tf.cast(self.ACTION, tf.int32)\n",
" action_indices = tf.stack([tf.range(self.batch_size, dtype=tf.int32), action], axis=1)\n",
" q = tf.gather_nd(params=self.logits, indices=action_indices)\n",
" self.cost = tf.losses.mean_squared_error(labels=q_target, predictions=q)\n",
" self.optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE).minimize(\n",
" self.cost, var_list=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, \"q_model/eval_net\"))\n",
" \n",
" t_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/target_net')\n",
" e_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/eval_net')\n",
" self.target_replace_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)]\n",
" \n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _memorize(self, state, action, reward, new_state, done):\n",
" self.MEMORIES.append((state, action, reward, new_state, done))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def predict(self, inputs):\n",
" return self.sess.run(self.logits, feed_dict={self.X:inputs})\n",
" \n",
" def get_predicted_action(self, sequence):\n",
" prediction = self.predict(np.array(sequence))[0]\n",
" return np.argmax(prediction)\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
" \n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" actions = np.array([a[1] for a in replay])\n",
" rewards = np.array([a[2] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.target_replace_op)\n",
" \n",
" cost, _ = self.sess.run([self.cost, self.optimizer], feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards\n",
" })\n",
" \n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.curiosity_optimizer, feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards\n",
" })\n",
" return cost\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" state = next_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 10, total rewards: 2349.819823.3, cost: 69092.625000, total money: 12349.819823\n",
"epoch: 20, total rewards: 648.444882.3, cost: 4775652.000000, total money: 6742.654903\n",
"epoch: 30, total rewards: 1543.784977.3, cost: 26533.583984, total money: 7642.034916\n",
"epoch: 40, total rewards: 1360.930418.3, cost: 871420.750000, total money: 695.580380\n",
"epoch: 50, total rewards: 2233.069826.3, cost: 228718.296875, total money: 6354.209779\n",
"epoch: 60, total rewards: 1573.414983.3, cost: 407432.843750, total money: 8625.614995\n",
"epoch: 70, total rewards: -7.114931.3, cost: 32132.660156, total money: 5021.405088\n",
"epoch: 80, total rewards: 798.045042.3, cost: 435778.562500, total money: 9780.935057\n",
"epoch: 90, total rewards: 575.719967.3, cost: 72847.468750, total money: 9559.079952\n",
"epoch: 100, total rewards: 338.655157.3, cost: 379671.968750, total money: 820.245184\n",
"epoch: 110, total rewards: 277.220155.3, cost: 391019.375000, total money: 3452.330140\n",
"epoch: 120, total rewards: 370.379826.3, cost: 429969.843750, total money: 7361.909793\n",
"epoch: 130, total rewards: 441.860107.3, cost: 2082513.625000, total money: 2538.970093\n",
"epoch: 140, total rewards: 709.099850.3, cost: 558315.562500, total money: 130.919796\n",
"epoch: 150, total rewards: 159.675106.3, cost: 2904243.000000, total money: 481.725093\n",
"epoch: 160, total rewards: 581.489981.3, cost: 1408646.250000, total money: 5631.309988\n",
"epoch: 170, total rewards: 1768.579776.3, cost: 1693698.250000, total money: 15.189760\n",
"epoch: 180, total rewards: 952.280210.3, cost: 1472623.250000, total money: 8990.750181\n",
"epoch: 190, total rewards: 1418.655145.3, cost: 25627934.000000, total money: 3706.275139\n",
"epoch: 200, total rewards: 272.595214.3, cost: 922414.500000, total money: 9255.485229\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 7: buy 1 unit at price 754.020020, total balance 9245.979980\n",
"day 8: buy 1 unit at price 736.080017, total balance 8509.899963\n",
"day 9: buy 1 unit at price 758.489990, total balance 7751.409973\n",
"day 10: buy 1 unit at price 764.479980, total balance 6986.929993\n",
"day 11: buy 1 unit at price 771.229980, total balance 6215.700013\n",
"day 15, sell 1 unit at price 760.989990, investment 0.924375 %, total balance 6976.690003,\n",
"day 18: buy 1 unit at price 770.840027, total balance 6205.849976\n",
"day 19: buy 1 unit at price 758.039978, total balance 5447.809998\n",
"day 22: buy 1 unit at price 762.520020, total balance 4685.289978\n",
"day 23: buy 1 unit at price 759.109985, total balance 3926.179993\n",
"day 24, sell 1 unit at price 771.190002, investment 4.769860 %, total balance 4697.369995,\n",
"day 27: buy 1 unit at price 789.270020, total balance 3908.099975\n",
"day 28, sell 1 unit at price 796.099976, investment 4.958534 %, total balance 4704.199951,\n",
"day 29: buy 1 unit at price 797.070007, total balance 3907.129944\n",
"day 30, sell 1 unit at price 797.849976, investment 4.365058 %, total balance 4704.979920,\n",
"day 31: buy 1 unit at price 790.799988, total balance 3914.179932\n",
"day 32, sell 1 unit at price 794.200012, investment 2.978363 %, total balance 4708.379944,\n",
"day 33: buy 1 unit at price 796.419983, total balance 3911.959961\n",
"day 35: buy 1 unit at price 791.260010, total balance 3120.699951\n",
"day 36, sell 1 unit at price 789.909973, investment 2.473917 %, total balance 3910.609924,\n",
"day 37: buy 1 unit at price 791.549988, total balance 3119.059936\n",
"day 40, sell 1 unit at price 771.820007, investment 1.817850 %, total balance 3890.879943,\n",
"day 41, sell 1 unit at price 786.140015, investment 3.097623 %, total balance 4677.019958,\n",
"day 42, sell 1 unit at price 786.900024, investment 3.660871 %, total balance 5463.919982,\n",
"day 43, sell 1 unit at price 794.020020, investment 0.601822 %, total balance 6257.940002,\n",
"day 44: buy 1 unit at price 806.150024, total balance 5451.789978\n",
"day 45: buy 1 unit at price 806.650024, total balance 4645.139954\n",
"day 47: buy 1 unit at price 807.909973, total balance 3837.229981\n",
"day 48, sell 1 unit at price 806.359985, investment 1.165516 %, total balance 4643.589966,\n",
"day 50, sell 1 unit at price 804.609985, investment 1.746332 %, total balance 5448.199951,\n",
"day 51: buy 1 unit at price 806.070007, total balance 4642.129944\n",
"day 52: buy 1 unit at price 802.174988, total balance 3839.954956\n",
"day 54: buy 1 unit at price 819.309998, total balance 3020.644958\n",
"day 55, sell 1 unit at price 823.869995, investment 3.446675 %, total balance 3844.514953,\n",
"day 56: buy 1 unit at price 835.669983, total balance 3008.844970\n",
"day 57: buy 1 unit at price 832.150024, total balance 2176.694946\n",
"day 58: buy 1 unit at price 823.309998, total balance 1353.384948\n",
"day 60, sell 1 unit at price 796.789978, investment 0.698881 %, total balance 2150.174926,\n",
"day 61: buy 1 unit at price 795.695007, total balance 1354.479919\n",
"day 62: buy 1 unit at price 798.530029, total balance 555.949890\n",
"day 63, sell 1 unit at price 801.489990, investment 1.255764 %, total balance 1357.439880,\n",
"day 64, sell 1 unit at price 801.340027, investment -0.596663 %, total balance 2158.779907,\n",
"day 65, sell 1 unit at price 806.969971, investment 0.039664 %, total balance 2965.749878,\n",
"day 66, sell 1 unit at price 808.380005, investment 0.058179 %, total balance 3774.129883,\n",
"day 67: buy 1 unit at price 809.559998, total balance 2964.569885\n",
"day 68, sell 1 unit at price 813.669983, investment 0.942843 %, total balance 3778.239868,\n",
"day 69, sell 1 unit at price 819.239990, investment 2.127342 %, total balance 4597.479858,\n",
"day 70, sell 1 unit at price 820.450012, investment 0.139143 %, total balance 5417.929870,\n",
"day 73: buy 1 unit at price 828.070007, total balance 4589.859863\n",
"day 75: buy 1 unit at price 830.760010, total balance 3759.099853\n",
"day 76, sell 1 unit at price 831.330017, investment -0.519340 %, total balance 4590.429870,\n",
"day 81, sell 1 unit at price 830.630005, investment -0.182662 %, total balance 5421.059875,\n",
"day 82, sell 1 unit at price 829.080017, investment 0.700832 %, total balance 6250.139892,\n",
"day 83, sell 1 unit at price 827.780029, investment 4.032327 %, total balance 7077.919921,\n",
"day 84: buy 1 unit at price 831.909973, total balance 6246.009948\n",
"day 87: buy 1 unit at price 843.250000, total balance 5402.759948\n",
"day 88: buy 1 unit at price 845.539978, total balance 4557.219970\n",
"day 89, sell 1 unit at price 845.619995, investment 5.897081 %, total balance 5402.839965,\n",
"day 92, sell 1 unit at price 852.119995, investment 5.257176 %, total balance 6254.959960,\n",
"day 93: buy 1 unit at price 848.400024, total balance 5406.559936\n",
"day 94: buy 1 unit at price 830.460022, total balance 4576.099914\n",
"day 95, sell 1 unit at price 829.590027, investment 0.183562 %, total balance 5405.689941,\n",
"day 99, sell 1 unit at price 820.919983, investment -1.184461 %, total balance 6226.609924,\n",
"day 101, sell 1 unit at price 831.500000, investment -0.049281 %, total balance 7058.109924,\n",
"day 103, sell 1 unit at price 838.549988, investment -0.557369 %, total balance 7896.659912,\n",
"day 104: buy 1 unit at price 834.570007, total balance 7062.089905\n",
"day 107, sell 1 unit at price 824.669983, investment -2.468245 %, total balance 7886.759888,\n",
"day 109, sell 1 unit at price 823.349976, investment -2.952622 %, total balance 8710.109864,\n",
"day 110, sell 1 unit at price 824.320007, investment -0.739351 %, total balance 9534.429871,\n",
"day 111: buy 1 unit at price 823.559998, total balance 8710.869873\n",
"day 112, sell 1 unit at price 837.169983, investment 0.311535 %, total balance 9548.039856,\n",
"day 113, sell 1 unit at price 836.820007, investment 1.610084 %, total balance 10384.859863,\n",
"day 122: buy 1 unit at price 912.570007, total balance 9472.289856\n",
"day 123, sell 1 unit at price 916.440002, investment 0.424077 %, total balance 10388.729858,\n",
"day 128: buy 1 unit at price 932.169983, total balance 9456.559875\n",
"day 129, sell 1 unit at price 928.780029, investment -0.363663 %, total balance 10385.339904,\n",
"day 130: buy 1 unit at price 930.599976, total balance 9454.739928\n",
"day 132: buy 1 unit at price 937.080017, total balance 8517.659911\n",
"day 133, sell 1 unit at price 943.000000, investment 1.332476 %, total balance 9460.659911,\n",
"day 134, sell 1 unit at price 919.619995, investment -1.863237 %, total balance 10380.279906,\n",
"day 140: buy 1 unit at price 969.539978, total balance 9410.739928\n",
"day 141, sell 1 unit at price 971.469971, investment 0.199063 %, total balance 10382.209899,\n",
"day 145: buy 1 unit at price 975.599976, total balance 9406.609923\n",
"day 146: buy 1 unit at price 983.679993, total balance 8422.929930\n",
"day 149, sell 1 unit at price 983.409973, investment 0.800533 %, total balance 9406.339903,\n",
"day 150: buy 1 unit at price 949.830017, total balance 8456.509886\n",
"day 151, sell 1 unit at price 942.900024, investment -4.145654 %, total balance 9399.409910,\n",
"day 152, sell 1 unit at price 953.400024, investment 0.375857 %, total balance 10352.809934,\n",
"day 159: buy 1 unit at price 957.090027, total balance 9395.719907\n",
"day 160: buy 1 unit at price 965.590027, total balance 8430.129880\n",
"day 161: buy 1 unit at price 952.270020, total balance 7477.859860\n",
"day 164: buy 1 unit at price 917.789978, total balance 6560.069882\n",
"day 167: buy 1 unit at price 911.710022, total balance 5648.359860\n",
"day 170: buy 1 unit at price 928.799988, total balance 4719.559872\n",
"day 171, sell 1 unit at price 930.090027, investment -2.821051 %, total balance 5649.649899,\n",
"day 173: buy 1 unit at price 947.159973, total balance 4702.489926\n",
"day 174: buy 1 unit at price 955.989990, total balance 3746.499936\n",
"day 175: buy 1 unit at price 953.419983, total balance 2793.079953\n",
"day 176, sell 1 unit at price 965.400024, investment -0.019677 %, total balance 3758.479977,\n",
"day 177: buy 1 unit at price 970.890015, total balance 2787.589962\n",
"day 178, sell 1 unit at price 968.150024, investment 1.667595 %, total balance 3755.739986,\n",
"day 179: buy 1 unit at price 972.919983, total balance 2782.820003\n",
"day 180: buy 1 unit at price 980.340027, total balance 1802.479976\n",
"day 181: buy 1 unit at price 950.700012, total balance 851.779964\n",
"day 183, sell 1 unit at price 934.090027, investment 1.776011 %, total balance 1785.869991,\n",
"day 184, sell 1 unit at price 941.530029, investment 3.270778 %, total balance 2727.400020,\n",
"day 185, sell 1 unit at price 930.500000, investment 0.183033 %, total balance 3657.900020,\n",
"day 186: buy 1 unit at price 930.830017, total balance 2727.070003\n",
"day 190: buy 1 unit at price 929.359985, total balance 1797.710018\n",
"day 191: buy 1 unit at price 926.789978, total balance 870.920040\n",
"day 192, sell 1 unit at price 922.900024, investment -2.561336 %, total balance 1793.820064,\n",
"day 193, sell 1 unit at price 907.239990, investment -5.099426 %, total balance 2701.060054,\n",
"day 194, sell 1 unit at price 914.390015, investment -4.093681 %, total balance 3615.450069,\n",
"day 195: buy 1 unit at price 922.669983, total balance 2692.780086\n",
"day 196, sell 1 unit at price 922.219971, investment -5.012931 %, total balance 3615.000057,\n",
"day 197: buy 1 unit at price 926.960022, total balance 2688.040035\n",
"day 198: buy 1 unit at price 910.979980, total balance 1777.060055\n",
"day 199: buy 1 unit at price 910.669983, total balance 866.390072\n",
"day 200, sell 1 unit at price 906.659973, investment -6.810427 %, total balance 1773.050045,\n",
"day 201, sell 1 unit at price 924.690002, investment -5.676604 %, total balance 2697.740047,\n",
"day 202: buy 1 unit at price 927.000000, total balance 1770.740047\n",
"day 204, sell 1 unit at price 915.890015, investment -3.661512 %, total balance 2686.630062,\n",
"day 210, sell 1 unit at price 928.450012, investment -0.255686 %, total balance 3615.080074,\n",
"day 214: buy 1 unit at price 929.080017, total balance 2686.000057\n",
"day 215: buy 1 unit at price 932.070007, total balance 1753.930050\n",
"day 216: buy 1 unit at price 935.090027, total balance 818.840023\n",
"day 220, sell 1 unit at price 921.809998, investment -0.812386 %, total balance 1740.650021,\n",
"day 221, sell 1 unit at price 931.580017, investment 0.516842 %, total balance 2672.230038,\n",
"day 222, sell 1 unit at price 932.450012, investment 1.059970 %, total balance 3604.680050,\n",
"day 224, sell 1 unit at price 920.969971, investment -0.646204 %, total balance 4525.650021,\n",
"day 226, sell 1 unit at price 944.489990, investment 3.678457 %, total balance 5470.140011,\n",
"day 227, sell 1 unit at price 949.500000, investment 4.263896 %, total balance 6419.640011,\n",
"day 228, sell 1 unit at price 959.109985, investment 3.463860 %, total balance 7378.749996,\n",
"day 229, sell 1 unit at price 953.270020, investment 2.603651 %, total balance 8332.020016,\n",
"day 230, sell 1 unit at price 957.789978, investment 2.759446 %, total balance 9289.809994,\n",
"day 232, sell 1 unit at price 969.960022, investment 3.729052 %, total balance 10259.770016,\n",
"day 235: buy 1 unit at price 972.599976, total balance 9287.170040\n",
"day 236, sell 1 unit at price 989.250000, investment 1.711909 %, total balance 10276.420040,\n",
"day 237: buy 1 unit at price 987.830017, total balance 9288.590023\n",
"day 238, sell 1 unit at price 989.679993, investment 0.187277 %, total balance 10278.270016,\n",
"day 241: buy 1 unit at price 992.809998, total balance 9285.460018\n",
"day 242, sell 1 unit at price 984.450012, investment -0.842053 %, total balance 10269.910030,\n",
"day 245: buy 1 unit at price 970.539978, total balance 9299.370052\n",
"day 246: buy 1 unit at price 973.330017, total balance 8326.040035\n",
"day 247, sell 1 unit at price 972.559998, investment 0.208134 %, total balance 9298.600033,\n",
"day 249: buy 1 unit at price 1017.109985, total balance 8281.490048\n",
"day 250, sell 1 unit at price 1016.640015, investment 4.449672 %, total balance 9298.130063,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/19.recurrent-curiosity-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 128\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.X = tf.placeholder(tf.float32, (None, None, self.state_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, None, self.state_size))\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * self.LAYER_SIZE))\n",
" self.ACTION = tf.placeholder(tf.float32, (None))\n",
" self.REWARD = tf.placeholder(tf.float32, (None))\n",
" self.batch_size = tf.shape(self.ACTION)[0]\n",
" self.seq_len = tf.shape(self.X)[1]\n",
" \n",
" with tf.variable_scope('curiosity_model'):\n",
" action = tf.reshape(self.ACTION, (-1,1,1))\n",
" repeat_action = tf.tile(action, [1,self.seq_len,1])\n",
" state_action = tf.concat([self.X, repeat_action], axis=-1)\n",
" save_state = tf.identity(self.Y)\n",
" cell = tf.nn.rnn_cell.LSTMCell(self.LAYER_SIZE, state_is_tuple = False)\n",
" self.rnn,last_state = tf.nn.dynamic_rnn(inputs=state_action,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" self.curiosity_logits = tf.layers.dense(self.rnn[:,-1], self.state_size)\n",
" self.curiosity_cost = tf.reduce_sum(tf.square(save_state[:,-1] - self.curiosity_logits), axis=1)\n",
" \n",
" self.curiosity_optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE)\\\n",
" .minimize(tf.reduce_mean(self.curiosity_cost))\n",
" \n",
" total_reward = tf.add(self.curiosity_cost, self.REWARD)\n",
" \n",
" with tf.variable_scope(\"q_model\"):\n",
" with tf.variable_scope(\"eval_net\"):\n",
" cell = tf.nn.rnn_cell.LSTMCell(self.LAYER_SIZE, state_is_tuple = False)\n",
" rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" self.logits = tf.layers.dense(rnn[:,-1], self.OUTPUT_SIZE)\n",
" \n",
" with tf.variable_scope(\"target_net\"):\n",
" cell = tf.nn.rnn_cell.LSTMCell(self.LAYER_SIZE, state_is_tuple = False)\n",
" rnn,last_state = tf.nn.dynamic_rnn(inputs=self.Y,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" y_q = tf.layers.dense(rnn[:,-1], self.OUTPUT_SIZE)\n",
" \n",
" q_target = total_reward + self.GAMMA * tf.reduce_max(y_q, axis=1)\n",
" action = tf.cast(self.ACTION, tf.int32)\n",
" action_indices = tf.stack([tf.range(self.batch_size, dtype=tf.int32), action], axis=1)\n",
" q = tf.gather_nd(params=self.logits, indices=action_indices)\n",
" self.cost = tf.losses.mean_squared_error(labels=q_target, predictions=q)\n",
" self.optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE).minimize(\n",
" self.cost, var_list=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, \"q_model/eval_net\"))\n",
" \n",
" t_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/target_net')\n",
" e_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/eval_net')\n",
" self.target_replace_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)]\n",
" \n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _memorize(self, state, action, reward, new_state, done, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, done, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" actions = np.array([a[1] for a in replay])\n",
" rewards = np.array([a[2] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.target_replace_op)\n",
" \n",
" cost, _ = self.sess.run([self.cost, self.optimizer], feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards,\n",
" self.hidden_layer: init_values\n",
" })\n",
" \n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.curiosity_optimizer, feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards,\n",
" self.hidden_layer: init_values\n",
" })\n",
" return cost\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.logits,\n",
" self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.logits,\n",
" self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" self.INITIAL_FEATURES = new_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 685.860168.3, cost: 4139534.500000, total money: 977.580137\n",
"epoch: 20, total rewards: 1724.255003.3, cost: 5132677.500000, total money: 5851.904966\n",
"epoch: 30, total rewards: 493.970035.3, cost: 3979546.750000, total money: 8528.600039\n",
"epoch: 40, total rewards: 1580.255128.3, cost: 5099559.000000, total money: 4018.855103\n",
"epoch: 50, total rewards: 1467.990231.3, cost: 4410721.500000, total money: 8490.720211\n",
"epoch: 60, total rewards: 1285.420161.3, cost: 3993190.000000, total money: 2688.440118\n",
"epoch: 70, total rewards: 391.130068.3, cost: 3420379.000000, total money: 6491.710085\n",
"epoch: 80, total rewards: 1276.110108.3, cost: 3443612.750000, total money: 3698.110047\n",
"epoch: 90, total rewards: 672.475340.3, cost: 2882908.000000, total money: 208.605285\n",
"epoch: 100, total rewards: 706.604982.3, cost: 3108476.500000, total money: 1169.724916\n",
"epoch: 110, total rewards: 979.940367.3, cost: 2024909.750000, total money: 3200.720335\n",
"epoch: 120, total rewards: 853.199893.3, cost: 4572564.500000, total money: 6070.309879\n",
"epoch: 130, total rewards: 1339.975223.3, cost: 3904469.500000, total money: 7475.465274\n",
"epoch: 140, total rewards: 1136.924864.3, cost: 4352429.000000, total money: 4448.164854\n",
"epoch: 150, total rewards: 1499.745116.3, cost: 2398584.500000, total money: 3999.355042\n",
"epoch: 160, total rewards: 481.755190.3, cost: 3168836.250000, total money: 7573.215212\n",
"epoch: 170, total rewards: 1733.610290.3, cost: 1907320.875000, total money: 6940.950254\n",
"epoch: 180, total rewards: 390.074828.3, cost: 2862924.000000, total money: 5516.364805\n",
"epoch: 190, total rewards: 714.815121.3, cost: 2666878.750000, total money: 9726.615109\n",
"epoch: 200, total rewards: 1474.129822.3, cost: 3016419.000000, total money: 1901.589906\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 unit at price 768.700012, total balance 9231.299988\n",
"day 1, sell 1 unit at price 762.130005, investment -0.854691 %, total balance 9993.429993,\n",
"day 4: buy 1 unit at price 790.510010, total balance 9202.919983\n",
"day 5: buy 1 unit at price 785.309998, total balance 8417.609985\n",
"day 8: buy 1 unit at price 736.080017, total balance 7681.529968\n",
"day 9: buy 1 unit at price 758.489990, total balance 6923.039978\n",
"day 11, sell 1 unit at price 771.229980, investment -2.438936 %, total balance 7694.269958,\n",
"day 13: buy 1 unit at price 769.200012, total balance 6925.069946\n",
"day 17: buy 1 unit at price 768.239990, total balance 6156.829956\n",
"day 19, sell 1 unit at price 758.039978, investment -3.472517 %, total balance 6914.869934,\n",
"day 25, sell 1 unit at price 776.419983, investment 5.480378 %, total balance 7691.289917,\n",
"day 26: buy 1 unit at price 789.289978, total balance 6901.999939\n",
"day 28: buy 1 unit at price 796.099976, total balance 6105.899963\n",
"day 31: buy 1 unit at price 790.799988, total balance 5315.099975\n",
"day 40, sell 1 unit at price 771.820007, investment 1.757441 %, total balance 6086.919982,\n",
"day 46, sell 1 unit at price 804.789978, investment 4.626881 %, total balance 6891.709960,\n",
"day 47, sell 1 unit at price 807.909973, investment 5.163749 %, total balance 7699.619933,\n",
"day 50: buy 1 unit at price 804.609985, total balance 6895.009948\n",
"day 57: buy 1 unit at price 832.150024, total balance 6062.859924\n",
"day 58, sell 1 unit at price 823.309998, investment 4.310205 %, total balance 6886.169922,\n",
"day 61: buy 1 unit at price 795.695007, total balance 6090.474915\n",
"day 62: buy 1 unit at price 798.530029, total balance 5291.944886\n",
"day 70: buy 1 unit at price 820.450012, total balance 4471.494874\n",
"day 73: buy 1 unit at price 828.070007, total balance 3643.424867\n",
"day 76: buy 1 unit at price 831.330017, total balance 2812.094850\n",
"day 85: buy 1 unit at price 835.369995, total balance 1976.724855\n",
"day 89, sell 1 unit at price 845.619995, investment 6.220327 %, total balance 2822.344850,\n",
"day 91: buy 1 unit at price 848.780029, total balance 1973.564821\n",
"day 98: buy 1 unit at price 819.510010, total balance 1154.054811\n",
"day 100: buy 1 unit at price 831.409973, total balance 322.644838\n",
"day 102, sell 1 unit at price 829.559998, investment 4.901367 %, total balance 1152.204836,\n",
"day 111, sell 1 unit at price 823.559998, investment 2.355180 %, total balance 1975.764834,\n",
"day 113: buy 1 unit at price 836.820007, total balance 1138.944827\n",
"day 114, sell 1 unit at price 838.210022, investment 0.728234 %, total balance 1977.154849,\n",
"day 117: buy 1 unit at price 862.760010, total balance 1114.394839\n",
"day 118: buy 1 unit at price 872.299988, total balance 242.094851\n",
"day 132, sell 1 unit at price 937.080017, investment 17.768744 %, total balance 1179.174868,\n",
"day 138: buy 1 unit at price 948.820007, total balance 230.354861\n",
"day 139, sell 1 unit at price 954.960022, investment 19.589745 %, total balance 1185.314883,\n",
"day 140: buy 1 unit at price 969.539978, total balance 215.774905\n",
"day 154, sell 1 unit at price 942.309998, investment 14.852823 %, total balance 1158.084903,\n",
"day 158, sell 1 unit at price 959.450012, investment 15.865809 %, total balance 2117.534915,\n",
"day 160: buy 1 unit at price 965.590027, total balance 1151.944888\n",
"day 168: buy 1 unit at price 906.690002, total balance 245.254886\n",
"day 169, sell 1 unit at price 918.590027, investment 10.496434 %, total balance 1163.844913,\n",
"day 176: buy 1 unit at price 965.400024, total balance 198.444889\n",
"day 189, sell 1 unit at price 927.960022, investment 11.083715 %, total balance 1126.404911,\n",
"day 191: buy 1 unit at price 926.789978, total balance 199.614933\n",
"day 195, sell 1 unit at price 922.669983, investment 8.705430 %, total balance 1122.284916,\n",
"day 200, sell 1 unit at price 906.659973, investment 10.634399 %, total balance 2028.944889,\n",
"day 201: buy 1 unit at price 924.690002, total balance 1104.254887\n",
"day 202, sell 1 unit at price 927.000000, investment 11.497339 %, total balance 2031.254887,\n",
"day 206: buy 1 unit at price 921.289978, total balance 1109.964909\n",
"day 211: buy 1 unit at price 927.809998, total balance 182.154911\n",
"day 220, sell 1 unit at price 921.809998, investment 10.156305 %, total balance 1103.964909,\n",
"day 226, sell 1 unit at price 944.489990, investment 9.473084 %, total balance 2048.454899,\n",
"day 228, sell 1 unit at price 959.109985, investment 9.951851 %, total balance 3007.564884,\n",
"day 230: buy 1 unit at price 957.789978, total balance 2049.774906\n",
"day 231, sell 1 unit at price 951.679993, investment 0.301426 %, total balance 3001.454899,\n",
"day 234: buy 1 unit at price 977.000000, total balance 2024.454899\n",
"day 237: buy 1 unit at price 987.830017, total balance 1036.624882\n",
"day 238, sell 1 unit at price 989.679993, investment 2.077275 %, total balance 2026.304875,\n",
"day 240: buy 1 unit at price 992.179993, total balance 1034.124882\n",
"day 241: buy 1 unit at price 992.809998, total balance 41.314884\n",
"day 242, sell 1 unit at price 984.450012, investment 1.953208 %, total balance 1025.764896,\n",
"day 248, sell 1 unit at price 1019.270020, investment 12.416594 %, total balance 2045.034916,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/2.moving-average-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" signal \n",
" short_ma \n",
" long_ma \n",
" positions \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.0 \n",
" 768.700012 \n",
" 768.700012 \n",
" NaN \n",
" \n",
" \n",
" 1 \n",
" 0.0 \n",
" 765.415008 \n",
" 765.415008 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" 0.0 \n",
" 764.283346 \n",
" 764.283346 \n",
" 0.0 \n",
" \n",
" \n",
" 3 \n",
" 0.0 \n",
" 768.842514 \n",
" 768.842514 \n",
" 0.0 \n",
" \n",
" \n",
" 4 \n",
" 0.0 \n",
" 773.176013 \n",
" 773.176013 \n",
" 0.0 \n",
" \n",
" \n",
" 5 \n",
" 0.0 \n",
" 775.198344 \n",
" 775.198344 \n",
" 0.0 \n",
" \n",
" \n",
" 6 \n",
" 1.0 \n",
" 774.175008 \n",
" 773.392866 \n",
" 1.0 \n",
" \n",
" \n",
" 7 \n",
" 1.0 \n",
" 772.823344 \n",
" 770.971260 \n",
" 0.0 \n",
" \n",
" \n",
" 8 \n",
" 1.0 \n",
" 768.500010 \n",
" 767.094456 \n",
" 0.0 \n",
" \n",
" \n",
" 9 \n",
" 0.0 \n",
" 764.495005 \n",
" 766.234009 \n",
" -1.0 \n",
" \n",
" \n",
" 10 \n",
" 0.0 \n",
" 760.156667 \n",
" 766.074552 \n",
" 0.0 \n",
" \n",
" \n",
" 11 \n",
" 0.0 \n",
" 757.809998 \n",
" 766.504171 \n",
" 0.0 \n",
" \n",
" \n",
" 12 \n",
" 0.0 \n",
" 757.473327 \n",
" 765.824168 \n",
" 0.0 \n",
" \n",
" \n",
" 13 \n",
" 0.0 \n",
" 760.003326 \n",
" 766.413335 \n",
" 0.0 \n",
" \n",
" \n",
" 14 \n",
" 0.0 \n",
" 765.368327 \n",
" 766.934169 \n",
" 0.0 \n",
" \n",
" \n",
" 15 \n",
" 1.0 \n",
" 765.784993 \n",
" 765.139999 \n",
" 1.0 \n",
" \n",
" \n",
" 16 \n",
" 1.0 \n",
" 765.318329 \n",
" 762.737498 \n",
" 0.0 \n",
" \n",
" \n",
" 17 \n",
" 1.0 \n",
" 764.819997 \n",
" 761.314997 \n",
" 0.0 \n",
" \n",
" \n",
" 18 \n",
" 1.0 \n",
" 766.536672 \n",
" 762.005000 \n",
" 0.0 \n",
" \n",
" \n",
" 19 \n",
" 1.0 \n",
" 764.676666 \n",
" 762.339996 \n",
" 0.0 \n",
" \n",
" \n",
" 20 \n",
" 0.0 \n",
" 761.284993 \n",
" 763.326660 \n",
" -1.0 \n",
" \n",
" \n",
" 21 \n",
" 0.0 \n",
" 759.536662 \n",
" 762.660828 \n",
" 0.0 \n",
" \n",
" \n",
" 22 \n",
" 0.0 \n",
" 759.676666 \n",
" 762.497498 \n",
" 0.0 \n",
" \n",
" \n",
" 23 \n",
" 0.0 \n",
" 758.154999 \n",
" 761.487498 \n",
" 0.0 \n",
" \n",
" \n",
" 24 \n",
" 0.0 \n",
" 758.213328 \n",
" 762.375000 \n",
" 0.0 \n",
" \n",
" \n",
" 25 \n",
" 0.0 \n",
" 761.276662 \n",
" 762.976664 \n",
" 0.0 \n",
" \n",
" \n",
" 26 \n",
" 1.0 \n",
" 768.171661 \n",
" 764.728327 \n",
" 1.0 \n",
" \n",
" \n",
" 27 \n",
" 1.0 \n",
" 774.633331 \n",
" 767.084997 \n",
" 0.0 \n",
" \n",
" \n",
" 28 \n",
" 1.0 \n",
" 780.229991 \n",
" 769.953328 \n",
" 0.0 \n",
" \n",
" \n",
" 29 \n",
" 1.0 \n",
" 786.556661 \n",
" 772.355830 \n",
" 0.0 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 222 \n",
" 0.0 \n",
" 924.373332 \n",
" 927.728338 \n",
" 0.0 \n",
" \n",
" \n",
" 223 \n",
" 0.0 \n",
" 924.943339 \n",
" 927.788340 \n",
" 0.0 \n",
" \n",
" \n",
" 224 \n",
" 0.0 \n",
" 925.056671 \n",
" 926.540003 \n",
" 0.0 \n",
" \n",
" \n",
" 225 \n",
" 1.0 \n",
" 926.700002 \n",
" 926.403335 \n",
" 1.0 \n",
" \n",
" \n",
" 226 \n",
" 1.0 \n",
" 930.480001 \n",
" 927.687500 \n",
" 0.0 \n",
" \n",
" \n",
" 227 \n",
" 1.0 \n",
" 933.466664 \n",
" 929.139999 \n",
" 0.0 \n",
" \n",
" \n",
" 228 \n",
" 1.0 \n",
" 937.909993 \n",
" 931.141662 \n",
" 0.0 \n",
" \n",
" \n",
" 229 \n",
" 1.0 \n",
" 942.033325 \n",
" 933.488332 \n",
" 0.0 \n",
" \n",
" \n",
" 230 \n",
" 1.0 \n",
" 948.169993 \n",
" 936.613332 \n",
" 0.0 \n",
" \n",
" \n",
" 231 \n",
" 1.0 \n",
" 952.639994 \n",
" 939.669998 \n",
" 0.0 \n",
" \n",
" \n",
" 232 \n",
" 1.0 \n",
" 956.885000 \n",
" 943.682500 \n",
" 0.0 \n",
" \n",
" \n",
" 233 \n",
" 1.0 \n",
" 961.783335 \n",
" 947.625000 \n",
" 0.0 \n",
" \n",
" \n",
" 234 \n",
" 1.0 \n",
" 964.765005 \n",
" 951.337499 \n",
" 0.0 \n",
" \n",
" \n",
" 235 \n",
" 1.0 \n",
" 967.986664 \n",
" 955.009995 \n",
" 0.0 \n",
" \n",
" \n",
" 236 \n",
" 1.0 \n",
" 973.230001 \n",
" 960.699997 \n",
" 0.0 \n",
" \n",
" \n",
" 237 \n",
" 1.0 \n",
" 979.255005 \n",
" 965.947500 \n",
" 0.0 \n",
" \n",
" \n",
" 238 \n",
" 1.0 \n",
" 982.541667 \n",
" 969.713333 \n",
" 0.0 \n",
" \n",
" \n",
" 239 \n",
" 1.0 \n",
" 984.726664 \n",
" 973.255000 \n",
" 0.0 \n",
" \n",
" \n",
" 240 \n",
" 1.0 \n",
" 987.256663 \n",
" 976.010834 \n",
" 0.0 \n",
" \n",
" \n",
" 241 \n",
" 1.0 \n",
" 990.625000 \n",
" 979.305832 \n",
" 0.0 \n",
" \n",
" \n",
" 242 \n",
" 1.0 \n",
" 989.825002 \n",
" 981.527502 \n",
" 0.0 \n",
" \n",
" \n",
" 243 \n",
" 1.0 \n",
" 989.886668 \n",
" 984.570836 \n",
" 0.0 \n",
" \n",
" \n",
" 244 \n",
" 1.0 \n",
" 986.348338 \n",
" 984.445002 \n",
" 0.0 \n",
" \n",
" \n",
" 245 \n",
" 0.0 \n",
" 982.771667 \n",
" 983.749166 \n",
" -1.0 \n",
" \n",
" \n",
" 246 \n",
" 0.0 \n",
" 979.630005 \n",
" 983.443334 \n",
" 0.0 \n",
" \n",
" \n",
" 247 \n",
" 0.0 \n",
" 976.255005 \n",
" 983.440002 \n",
" 0.0 \n",
" \n",
" \n",
" 248 \n",
" 0.0 \n",
" 982.058339 \n",
" 985.941671 \n",
" 0.0 \n",
" \n",
" \n",
" 249 \n",
" 0.0 \n",
" 986.876668 \n",
" 988.381668 \n",
" 0.0 \n",
" \n",
" \n",
" 250 \n",
" 1.0 \n",
" 994.908335 \n",
" 990.628337 \n",
" 1.0 \n",
" \n",
" \n",
" 251 \n",
" 1.0 \n",
" 1004.068339 \n",
" 993.420003 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
252 rows × 4 columns
\n",
"
"
],
"text/plain": [
" signal short_ma long_ma positions\n",
"0 0.0 768.700012 768.700012 NaN\n",
"1 0.0 765.415008 765.415008 0.0\n",
"2 0.0 764.283346 764.283346 0.0\n",
"3 0.0 768.842514 768.842514 0.0\n",
"4 0.0 773.176013 773.176013 0.0\n",
"5 0.0 775.198344 775.198344 0.0\n",
"6 1.0 774.175008 773.392866 1.0\n",
"7 1.0 772.823344 770.971260 0.0\n",
"8 1.0 768.500010 767.094456 0.0\n",
"9 0.0 764.495005 766.234009 -1.0\n",
"10 0.0 760.156667 766.074552 0.0\n",
"11 0.0 757.809998 766.504171 0.0\n",
"12 0.0 757.473327 765.824168 0.0\n",
"13 0.0 760.003326 766.413335 0.0\n",
"14 0.0 765.368327 766.934169 0.0\n",
"15 1.0 765.784993 765.139999 1.0\n",
"16 1.0 765.318329 762.737498 0.0\n",
"17 1.0 764.819997 761.314997 0.0\n",
"18 1.0 766.536672 762.005000 0.0\n",
"19 1.0 764.676666 762.339996 0.0\n",
"20 0.0 761.284993 763.326660 -1.0\n",
"21 0.0 759.536662 762.660828 0.0\n",
"22 0.0 759.676666 762.497498 0.0\n",
"23 0.0 758.154999 761.487498 0.0\n",
"24 0.0 758.213328 762.375000 0.0\n",
"25 0.0 761.276662 762.976664 0.0\n",
"26 1.0 768.171661 764.728327 1.0\n",
"27 1.0 774.633331 767.084997 0.0\n",
"28 1.0 780.229991 769.953328 0.0\n",
"29 1.0 786.556661 772.355830 0.0\n",
".. ... ... ... ...\n",
"222 0.0 924.373332 927.728338 0.0\n",
"223 0.0 924.943339 927.788340 0.0\n",
"224 0.0 925.056671 926.540003 0.0\n",
"225 1.0 926.700002 926.403335 1.0\n",
"226 1.0 930.480001 927.687500 0.0\n",
"227 1.0 933.466664 929.139999 0.0\n",
"228 1.0 937.909993 931.141662 0.0\n",
"229 1.0 942.033325 933.488332 0.0\n",
"230 1.0 948.169993 936.613332 0.0\n",
"231 1.0 952.639994 939.669998 0.0\n",
"232 1.0 956.885000 943.682500 0.0\n",
"233 1.0 961.783335 947.625000 0.0\n",
"234 1.0 964.765005 951.337499 0.0\n",
"235 1.0 967.986664 955.009995 0.0\n",
"236 1.0 973.230001 960.699997 0.0\n",
"237 1.0 979.255005 965.947500 0.0\n",
"238 1.0 982.541667 969.713333 0.0\n",
"239 1.0 984.726664 973.255000 0.0\n",
"240 1.0 987.256663 976.010834 0.0\n",
"241 1.0 990.625000 979.305832 0.0\n",
"242 1.0 989.825002 981.527502 0.0\n",
"243 1.0 989.886668 984.570836 0.0\n",
"244 1.0 986.348338 984.445002 0.0\n",
"245 0.0 982.771667 983.749166 -1.0\n",
"246 0.0 979.630005 983.443334 0.0\n",
"247 0.0 976.255005 983.440002 0.0\n",
"248 0.0 982.058339 985.941671 0.0\n",
"249 0.0 986.876668 988.381668 0.0\n",
"250 1.0 994.908335 990.628337 1.0\n",
"251 1.0 1004.068339 993.420003 0.0\n",
"\n",
"[252 rows x 4 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"short_window = int(0.025 * len(df))\n",
"long_window = int(0.05 * len(df))\n",
"\n",
"signals = pd.DataFrame(index=df.index)\n",
"signals['signal'] = 0.0\n",
"\n",
"signals['short_ma'] = df['Close'].rolling(window=short_window, min_periods=1, center=False).mean()\n",
"signals['long_ma'] = df['Close'].rolling(window=long_window, min_periods=1, center=False).mean()\n",
"\n",
"signals['signal'][short_window:] = np.where(signals['short_ma'][short_window:] \n",
" > signals['long_ma'][short_window:], 1.0, 0.0) \n",
"signals['positions'] = signals['signal'].diff()\n",
"\n",
"signals"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def buy_stock(\n",
" real_movement,\n",
" signal,\n",
" initial_money = 10000,\n",
" max_buy = 1,\n",
" max_sell = 1,\n",
"):\n",
" \"\"\"\n",
" real_movement = actual movement in the real world\n",
" delay = how much interval you want to delay to change our decision from buy to sell, vice versa\n",
" initial_state = 1 is buy, 0 is sell\n",
" initial_money = 1000, ignore what kind of currency\n",
" max_buy = max quantity for share to buy\n",
" max_sell = max quantity for share to sell\n",
" \"\"\"\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" current_inventory = 0\n",
"\n",
" def buy(i, initial_money, current_inventory):\n",
" shares = initial_money // real_movement[i]\n",
" if shares < 1:\n",
" print(\n",
" 'day %d: total balances %f, not enough money to buy a unit price %f'\n",
" % (i, initial_money, real_movement[i])\n",
" )\n",
" else:\n",
" if shares > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = shares\n",
" initial_money -= buy_units * real_movement[i]\n",
" current_inventory += buy_units\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (i, buy_units, buy_units * real_movement[i], initial_money)\n",
" )\n",
" states_buy.append(0)\n",
" return initial_money, current_inventory\n",
"\n",
" for i in range(real_movement.shape[0] - int(0.025 * len(df))):\n",
" state = signal[i]\n",
" if state == 1:\n",
" initial_money, current_inventory = buy(\n",
" i, initial_money, current_inventory\n",
" )\n",
" states_buy.append(i)\n",
" elif state == -1:\n",
" if current_inventory == 0:\n",
" print('day %d: cannot sell anything, inventory 0' % (i))\n",
" else:\n",
" if current_inventory > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = current_inventory\n",
" current_inventory -= sell_units\n",
" total_sell = sell_units * real_movement[i]\n",
" initial_money += total_sell\n",
" try:\n",
" invest = (\n",
" (real_movement[i] - real_movement[states_buy[-1]])\n",
" / real_movement[states_buy[-1]]\n",
" ) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (i, sell_units, total_sell, invest, initial_money)\n",
" )\n",
" states_sell.append(i)\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 6: buy 1 units at price 762.559998, total balance 9237.440002\n",
"day 9, sell 1 units at price 758.489990, investment -0.533730 %, total balance 9995.929992,\n",
"day 15: buy 1 units at price 760.989990, total balance 9234.940002\n",
"day 20, sell 1 units at price 747.919983, investment -1.717501 %, total balance 9982.859985,\n",
"day 26: buy 1 units at price 789.289978, total balance 9193.570007\n",
"day 37, sell 1 units at price 791.549988, investment 0.286335 %, total balance 9985.119995,\n",
"day 45: buy 1 units at price 806.650024, total balance 9178.469971\n",
"day 62, sell 1 units at price 798.530029, investment -1.006632 %, total balance 9977.000000,\n",
"day 69: buy 1 units at price 819.239990, total balance 9157.760010\n",
"day 84, sell 1 units at price 831.909973, investment 1.546553 %, total balance 9989.669983,\n",
"day 85: buy 1 units at price 835.369995, total balance 9154.299988\n",
"day 96, sell 1 units at price 817.580017, investment -2.129593 %, total balance 9971.880005,\n",
"day 104: buy 1 units at price 834.570007, total balance 9137.309998\n",
"day 109, sell 1 units at price 823.349976, investment -1.344409 %, total balance 9960.659974,\n",
"day 114: buy 1 units at price 838.210022, total balance 9122.449952\n",
"day 151, sell 1 units at price 942.900024, investment 12.489710 %, total balance 10065.349976,\n",
"day 160: buy 1 units at price 965.590027, total balance 9099.759949\n",
"day 164, sell 1 units at price 917.789978, investment -4.950346 %, total balance 10017.549927,\n",
"day 173: buy 1 units at price 947.159973, total balance 9070.389954\n",
"day 184, sell 1 units at price 941.530029, investment -0.594403 %, total balance 10011.919983,\n",
"day 204: buy 1 units at price 915.890015, total balance 9096.029968\n",
"day 218, sell 1 units at price 920.289978, investment 0.480403 %, total balance 10016.319946,\n",
"day 225: buy 1 units at price 924.859985, total balance 9091.459961\n",
"day 245, sell 1 units at price 970.539978, investment 4.939125 %, total balance 10061.999939,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = buy_stock(df.Close, signals['positions'])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"close = df['Close']\n",
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/20.duel-curiosity-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 500\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.X = tf.placeholder(tf.float32, (None, self.state_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, self.state_size))\n",
" self.ACTION = tf.placeholder(tf.float32, (None))\n",
" self.REWARD = tf.placeholder(tf.float32, (None))\n",
" self.batch_size = tf.shape(self.ACTION)[0]\n",
" \n",
" with tf.variable_scope('curiosity_model'):\n",
" action = tf.reshape(self.ACTION, (-1,1))\n",
" state_action = tf.concat([self.X, action], axis=1)\n",
" save_state = tf.identity(self.Y)\n",
" \n",
" feed = tf.layers.dense(state_action, 32, activation=tf.nn.relu)\n",
" self.curiosity_logits = tf.layers.dense(feed, self.state_size)\n",
" self.curiosity_cost = tf.reduce_sum(tf.square(save_state - self.curiosity_logits), axis=1)\n",
" \n",
" self.curiosity_optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE)\\\n",
" .minimize(tf.reduce_mean(self.curiosity_cost))\n",
" \n",
" total_reward = tf.add(self.curiosity_cost, self.REWARD)\n",
" \n",
" with tf.variable_scope(\"q_model\"):\n",
" with tf.variable_scope(\"eval_net\"):\n",
" x_action = tf.layers.dense(self.X, 128, tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(x_action,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, self.OUTPUT_SIZE)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" self.logits = feed_validation + \\\n",
" tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" \n",
" with tf.variable_scope(\"target_net\"):\n",
" y_action = tf.layers.dense(self.Y, 128, tf.nn.relu)\n",
" tensor_action, tensor_validation = tf.split(y_action,2,1)\n",
" feed_action = tf.layers.dense(tensor_action, self.OUTPUT_SIZE)\n",
" feed_validation = tf.layers.dense(tensor_validation, 1)\n",
" y_q = feed_validation + \\\n",
" tf.subtract(feed_action,tf.reduce_mean(feed_action,axis=1,keep_dims=True))\n",
" \n",
" q_target = total_reward + self.GAMMA * tf.reduce_max(y_q, axis=1)\n",
" action = tf.cast(self.ACTION, tf.int32)\n",
" action_indices = tf.stack([tf.range(self.batch_size, dtype=tf.int32), action], axis=1)\n",
" q = tf.gather_nd(params=self.logits, indices=action_indices)\n",
" self.cost = tf.losses.mean_squared_error(labels=q_target, predictions=q)\n",
" self.optimizer = tf.train.RMSPropOptimizer(self.LEARNING_RATE).minimize(\n",
" self.cost, var_list=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, \"q_model/eval_net\"))\n",
" \n",
" t_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/target_net')\n",
" e_params = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='q_model/eval_net')\n",
" self.target_replace_op = [tf.assign(t, e) for t, e in zip(t_params, e_params)]\n",
" \n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _memorize(self, state, action, reward, new_state, done):\n",
" self.MEMORIES.append((state, action, reward, new_state, done))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def predict(self, inputs):\n",
" return self.sess.run(self.logits, feed_dict={self.X:inputs})\n",
" \n",
" def get_predicted_action(self, sequence):\n",
" prediction = self.predict(np.array(sequence))[0]\n",
" return np.argmax(prediction)\n",
" \n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
" \n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" actions = np.array([a[1] for a in replay])\n",
" rewards = np.array([a[2] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.target_replace_op)\n",
" \n",
" cost, _ = self.sess.run([self.cost, self.optimizer], feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards\n",
" })\n",
" \n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self.sess.run(self.curiosity_optimizer, feed_dict = {\n",
" self.X: states, self.Y: new_states, self.ACTION: actions, self.REWARD: rewards\n",
" })\n",
" return cost\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" state = next_state\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" cost = self._construct_memories(replay)\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From :53: calling reduce_mean (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"keep_dims is deprecated, use keepdims instead\n",
"epoch: 10, total rewards: 698.460085.3, cost: 596251.000000, total money: 10698.460085\n",
"epoch: 20, total rewards: 1683.164917.3, cost: 5890915.500000, total money: 6720.204895\n",
"epoch: 30, total rewards: 1686.875004.3, cost: 75077.554688, total money: 6721.424992\n",
"epoch: 40, total rewards: 541.999876.3, cost: 2707843.750000, total money: 9525.359861\n",
"epoch: 50, total rewards: 1668.824950.3, cost: 32719.388672, total money: 7666.774900\n",
"epoch: 60, total rewards: 751.654909.3, cost: 1165742.750000, total money: 8743.134889\n",
"epoch: 70, total rewards: 1637.889772.3, cost: 325201.937500, total money: 6669.909730\n",
"epoch: 80, total rewards: 587.055053.3, cost: 1527037.250000, total money: 892.705077\n",
"epoch: 90, total rewards: 2170.969727.3, cost: 122936.546875, total money: 8204.549683\n",
"epoch: 100, total rewards: 1565.850155.3, cost: 844705.187500, total money: 19.270138\n",
"epoch: 110, total rewards: 1733.244930.3, cost: 557043.125000, total money: 6744.174861\n",
"epoch: 120, total rewards: 1282.489866.3, cost: 3785043.750000, total money: 8328.149839\n",
"epoch: 130, total rewards: 1260.559873.3, cost: 596946.312500, total money: 6319.639890\n",
"epoch: 140, total rewards: 1346.769778.3, cost: 26543662.000000, total money: 10330.129763\n",
"epoch: 150, total rewards: 2415.594848.3, cost: 851761.625000, total money: 9467.174865\n",
"epoch: 160, total rewards: 1033.800112.3, cost: 3596937.500000, total money: 9044.600099\n",
"epoch: 170, total rewards: 1597.439823.3, cost: 511038.375000, total money: 93.789859\n",
"epoch: 180, total rewards: 1736.860354.3, cost: 3795484.000000, total money: 1011.990359\n",
"epoch: 190, total rewards: 1682.540215.3, cost: 657330.250000, total money: 8675.460198\n",
"epoch: 200, total rewards: 875.094668.3, cost: 30907612.000000, total money: 10875.094668\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 3: buy 1 unit at price 782.520020, total balance 9217.479980\n",
"day 4: buy 1 unit at price 790.510010, total balance 8426.969970\n",
"day 5: buy 1 unit at price 785.309998, total balance 7641.659972\n",
"day 6: buy 1 unit at price 762.559998, total balance 6879.099974\n",
"day 7: buy 1 unit at price 754.020020, total balance 6125.079954\n",
"day 9: buy 1 unit at price 758.489990, total balance 5366.589964\n",
"day 10, sell 1 unit at price 764.479980, investment -2.305377 %, total balance 6131.069944,\n",
"day 11: buy 1 unit at price 771.229980, total balance 5359.839964\n",
"day 13: buy 1 unit at price 769.200012, total balance 4590.639952\n",
"day 15: buy 1 unit at price 760.989990, total balance 3829.649962\n",
"day 16: buy 1 unit at price 761.679993, total balance 3067.969969\n",
"day 17: buy 1 unit at price 768.239990, total balance 2299.729979\n",
"day 19: buy 1 unit at price 758.039978, total balance 1541.690001\n",
"day 21: buy 1 unit at price 750.500000, total balance 791.190001\n",
"day 22, sell 1 unit at price 762.520020, investment -3.540751 %, total balance 1553.710021,\n",
"day 23, sell 1 unit at price 759.109985, investment -3.336264 %, total balance 2312.820006,\n",
"day 24: buy 1 unit at price 771.190002, total balance 1541.630004\n",
"day 25, sell 1 unit at price 776.419983, investment 1.817560 %, total balance 2318.049987,\n",
"day 27, sell 1 unit at price 789.270020, investment 4.674942 %, total balance 3107.320007,\n",
"day 29, sell 1 unit at price 797.070007, investment 5.086424 %, total balance 3904.390014,\n",
"day 30, sell 1 unit at price 797.849976, investment 3.451629 %, total balance 4702.239990,\n",
"day 32: buy 1 unit at price 794.200012, total balance 3908.039978\n",
"day 33, sell 1 unit at price 796.419983, investment 3.538738 %, total balance 4704.459961,\n",
"day 34, sell 1 unit at price 794.559998, investment 4.411360 %, total balance 5499.019959,\n",
"day 38: buy 1 unit at price 785.049988, total balance 4713.969971\n",
"day 39, sell 1 unit at price 782.789978, investment 2.771503 %, total balance 5496.759949,\n",
"day 40, sell 1 unit at price 771.820007, investment 0.466002 %, total balance 6268.579956,\n",
"day 41: buy 1 unit at price 786.140015, total balance 5482.439941\n",
"day 45: buy 1 unit at price 806.650024, total balance 4675.789917\n",
"day 47, sell 1 unit at price 807.909973, investment 6.578808 %, total balance 5483.699890,\n",
"day 50: buy 1 unit at price 804.609985, total balance 4679.089905\n",
"day 51, sell 1 unit at price 806.070007, investment 7.404398 %, total balance 5485.159912,\n",
"day 52, sell 1 unit at price 802.174988, investment 4.017815 %, total balance 6287.334900,\n",
"day 53: buy 1 unit at price 805.020020, total balance 5482.314880\n",
"day 54, sell 1 unit at price 819.309998, investment 3.161670 %, total balance 6301.624878,\n",
"day 56: buy 1 unit at price 835.669983, total balance 5465.954895\n",
"day 58, sell 1 unit at price 823.309998, investment 4.873576 %, total balance 6289.264893,\n",
"day 59, sell 1 unit at price 802.320007, investment 2.058157 %, total balance 7091.584900,\n",
"day 60: buy 1 unit at price 796.789978, total balance 6294.794922\n",
"day 61, sell 1 unit at price 795.695007, investment -1.358088 %, total balance 7090.489929,\n",
"day 62, sell 1 unit at price 798.530029, investment -0.755640 %, total balance 7889.019958,\n",
"day 63, sell 1 unit at price 801.489990, investment -0.438502 %, total balance 8690.509948,\n",
"day 66: buy 1 unit at price 808.380005, total balance 7882.129943\n",
"day 67, sell 1 unit at price 809.559998, investment -3.124437 %, total balance 8691.689941,\n",
"day 68: buy 1 unit at price 813.669983, total balance 7878.019958\n",
"day 69, sell 1 unit at price 819.239990, investment 2.817557 %, total balance 8697.259948,\n",
"day 70, sell 1 unit at price 820.450012, investment 1.493111 %, total balance 9517.709960,\n",
"day 72, sell 1 unit at price 824.159973, investment 1.289219 %, total balance 10341.869933,\n",
"day 73: buy 1 unit at price 828.070007, total balance 9513.799926\n",
"day 74, sell 1 unit at price 831.659973, investment 0.433534 %, total balance 10345.459899,\n",
"day 75: buy 1 unit at price 830.760010, total balance 9514.699889\n",
"day 76: buy 1 unit at price 831.330017, total balance 8683.369872\n",
"day 78: buy 1 unit at price 829.280029, total balance 7854.089843\n",
"day 79: buy 1 unit at price 823.210022, total balance 7030.879821\n",
"day 80: buy 1 unit at price 835.239990, total balance 6195.639831\n",
"day 81, sell 1 unit at price 830.630005, investment -0.015649 %, total balance 7026.269836,\n",
"day 82, sell 1 unit at price 829.080017, investment -0.270651 %, total balance 7855.349853,\n",
"day 84, sell 1 unit at price 831.909973, investment 0.317136 %, total balance 8687.259826,\n",
"day 85: buy 1 unit at price 835.369995, total balance 7851.889831\n",
"day 86: buy 1 unit at price 838.679993, total balance 7013.209838\n",
"day 88: buy 1 unit at price 845.539978, total balance 6167.669860\n",
"day 89: buy 1 unit at price 845.619995, total balance 5322.049865\n",
"day 90, sell 1 unit at price 847.200012, investment 2.914200 %, total balance 6169.249877,\n",
"day 91: buy 1 unit at price 848.780029, total balance 5320.469848\n",
"day 92: buy 1 unit at price 852.119995, total balance 4468.349853\n",
"day 93, sell 1 unit at price 848.400024, investment 1.575599 %, total balance 5316.749877,\n",
"day 94: buy 1 unit at price 830.460022, total balance 4486.289855\n",
"day 95: buy 1 unit at price 829.590027, total balance 3656.699828\n",
"day 96, sell 1 unit at price 817.580017, investment -2.129593 %, total balance 4474.279845,\n",
"day 97: buy 1 unit at price 814.429993, total balance 3659.849852\n",
"day 98, sell 1 unit at price 819.510010, investment -2.285733 %, total balance 4479.359862,\n",
"day 100: buy 1 unit at price 831.409973, total balance 3647.949889\n",
"day 101, sell 1 unit at price 831.500000, investment -1.660475 %, total balance 4479.449889,\n",
"day 103: buy 1 unit at price 838.549988, total balance 3640.899901\n",
"day 104: buy 1 unit at price 834.570007, total balance 2806.329894\n",
"day 105, sell 1 unit at price 831.409973, investment -1.680426 %, total balance 3637.739867,\n",
"day 106: buy 1 unit at price 827.880005, total balance 2809.859862\n",
"day 108: buy 1 unit at price 824.729980, total balance 1985.129882\n",
"day 109: buy 1 unit at price 823.349976, total balance 1161.779906\n",
"day 110: buy 1 unit at price 824.320007, total balance 337.459899\n",
"day 112, sell 1 unit at price 837.169983, investment -1.367851 %, total balance 1174.629882,\n",
"day 113: buy 1 unit at price 836.820007, total balance 337.809875\n",
"day 115, sell 1 unit at price 841.650024, investment -1.228697 %, total balance 1179.459899,\n",
"day 116, sell 1 unit at price 843.190002, investment 1.532883 %, total balance 2022.649901,\n",
"day 117, sell 1 unit at price 862.760010, investment 3.998358 %, total balance 2885.409911,\n",
"day 118: buy 1 unit at price 872.299988, total balance 2013.109923\n",
"day 119, sell 1 unit at price 871.729980, investment 7.035594 %, total balance 2884.839903,\n",
"day 120, sell 1 unit at price 874.250000, investment 5.152696 %, total balance 3759.089903,\n",
"day 123, sell 1 unit at price 916.440002, investment 9.288655 %, total balance 4675.529905,\n",
"day 124: buy 1 unit at price 927.039978, total balance 3748.489927\n",
"day 126, sell 1 unit at price 927.130005, investment 11.090741 %, total balance 4675.619932,\n",
"day 127, sell 1 unit at price 934.299988, investment 12.854518 %, total balance 5609.919920,\n",
"day 128, sell 1 unit at price 932.169983, investment 13.027294 %, total balance 6542.089903,\n",
"day 129: buy 1 unit at price 928.780029, total balance 5613.309874\n",
"day 133, sell 1 unit at price 943.000000, investment 14.532098 %, total balance 6556.309874,\n",
"day 137, sell 1 unit at price 941.859985, investment 14.259023 %, total balance 7498.169859,\n",
"day 140, sell 1 unit at price 969.539978, investment 15.860038 %, total balance 8467.709837,\n",
"day 141: buy 1 unit at price 971.469971, total balance 7496.239866\n",
"day 142, sell 1 unit at price 975.880005, investment 11.874357 %, total balance 8472.119871,\n",
"day 143, sell 1 unit at price 964.859985, investment 4.079652 %, total balance 9436.979856,\n",
"day 144, sell 1 unit at price 966.950012, investment 4.109690 %, total balance 10403.929868,\n",
"day 145, sell 1 unit at price 975.599976, investment 0.425129 %, total balance 11379.529844,\n",
"day 147: buy 1 unit at price 976.570007, total balance 10402.959837\n",
"day 148: buy 1 unit at price 980.940002, total balance 9422.019835\n",
"day 149, sell 1 unit at price 983.409973, investment 0.700407 %, total balance 10405.429808,\n",
"day 150: buy 1 unit at price 949.830017, total balance 9455.599791\n",
"day 151, sell 1 unit at price 942.900024, investment -3.877911 %, total balance 10398.499815,\n",
"day 152, sell 1 unit at price 953.400024, investment 0.375857 %, total balance 11351.899839,\n",
"day 153: buy 1 unit at price 950.760010, total balance 10401.139829\n",
"day 155, sell 1 unit at price 939.780029, investment -1.154864 %, total balance 11340.919858,\n",
"day 156: buy 1 unit at price 957.369995, total balance 10383.549863\n",
"day 157: buy 1 unit at price 950.630005, total balance 9432.919858\n",
"day 158: buy 1 unit at price 959.450012, total balance 8473.469846\n",
"day 159, sell 1 unit at price 957.090027, investment -0.029243 %, total balance 9430.559873,\n",
"day 160: buy 1 unit at price 965.590027, total balance 8464.969846\n",
"day 162, sell 1 unit at price 927.330017, investment -2.451005 %, total balance 9392.299863,\n",
"day 163: buy 1 unit at price 940.489990, total balance 8451.809873\n",
"day 164: buy 1 unit at price 917.789978, total balance 7534.019895\n",
"day 165: buy 1 unit at price 908.729980, total balance 6625.289915\n",
"day 166, sell 1 unit at price 898.700012, investment -6.331752 %, total balance 7523.989927,\n",
"day 167, sell 1 unit at price 911.710022, investment -5.580008 %, total balance 8435.699949,\n",
"day 169: buy 1 unit at price 918.590027, total balance 7517.109922\n",
"day 170: buy 1 unit at price 928.799988, total balance 6588.309934\n",
"day 171: buy 1 unit at price 930.090027, total balance 5658.219907\n",
"day 172: buy 1 unit at price 943.830017, total balance 4714.389890\n",
"day 173: buy 1 unit at price 947.159973, total balance 3767.229917\n",
"day 175: buy 1 unit at price 953.419983, total balance 2813.809934\n",
"day 177: buy 1 unit at price 970.890015, total balance 1842.919919\n",
"day 178, sell 1 unit at price 968.150024, investment 2.941024 %, total balance 2811.069943,\n",
"day 179: buy 1 unit at price 972.919983, total balance 1838.149960\n",
"day 180: buy 1 unit at price 980.340027, total balance 857.809933\n",
"day 187, sell 1 unit at price 930.390015, investment 1.372867 %, total balance 1788.199948,\n",
"day 189, sell 1 unit at price 927.960022, investment 2.116145 %, total balance 2716.159970,\n",
"day 190, sell 1 unit at price 929.359985, investment 1.172444 %, total balance 3645.519955,\n",
"day 191, sell 1 unit at price 926.789978, investment -0.216409 %, total balance 4572.309933,\n",
"day 192, sell 1 unit at price 922.900024, investment -0.773044 %, total balance 5495.209957,\n",
"day 193: buy 1 unit at price 907.239990, total balance 4587.969967\n",
"day 196, sell 1 unit at price 922.219971, investment -2.289612 %, total balance 5510.189938,\n",
"day 197, sell 1 unit at price 926.960022, investment -2.132686 %, total balance 6437.149960,\n",
"day 198, sell 1 unit at price 910.979980, investment -4.451344 %, total balance 7348.129940,\n",
"day 200, sell 1 unit at price 906.659973, investment -6.615584 %, total balance 8254.789913,\n",
"day 201: buy 1 unit at price 924.690002, total balance 7330.099911\n",
"day 202: buy 1 unit at price 927.000000, total balance 6403.099911\n",
"day 204: buy 1 unit at price 915.890015, total balance 5487.209896\n",
"day 205: buy 1 unit at price 913.809998, total balance 4573.399898\n",
"day 206: buy 1 unit at price 921.289978, total balance 3652.109920\n",
"day 207: buy 1 unit at price 929.570007, total balance 2722.539913\n",
"day 208: buy 1 unit at price 939.330017, total balance 1783.209896\n",
"day 209: buy 1 unit at price 937.340027, total balance 845.869869\n",
"day 210, sell 1 unit at price 928.450012, investment -4.570774 %, total balance 1774.319881,\n",
"day 211: buy 1 unit at price 927.809998, total balance 846.509883\n",
"day 215, sell 1 unit at price 932.070007, investment -4.923804 %, total balance 1778.579890,\n",
"day 218: buy 1 unit at price 920.289978, total balance 858.289912\n",
"day 219, sell 1 unit at price 915.000000, investment 0.855343 %, total balance 1773.289912,\n",
"day 220, sell 1 unit at price 921.809998, investment -0.311456 %, total balance 2695.099910,\n",
"day 221, sell 1 unit at price 931.580017, investment 0.494069 %, total balance 3626.679927,\n",
"day 223: buy 1 unit at price 928.530029, total balance 2698.149898\n",
"day 225, sell 1 unit at price 924.859985, investment 0.979372 %, total balance 3623.009883,\n",
"day 228: buy 1 unit at price 959.109985, total balance 2663.899898\n",
"day 230, sell 1 unit at price 957.789978, investment 4.812814 %, total balance 3621.689876,\n",
"day 231, sell 1 unit at price 951.679993, investment 3.298637 %, total balance 4573.369869,\n",
"day 232, sell 1 unit at price 969.960022, investment 4.345021 %, total balance 5543.329891,\n",
"day 233, sell 1 unit at price 978.890015, investment 4.211512 %, total balance 6522.219906,\n",
"day 234, sell 1 unit at price 977.000000, investment 4.231119 %, total balance 7499.219906,\n",
"day 235, sell 1 unit at price 972.599976, investment 4.827495 %, total balance 8471.819882,\n",
"day 236, sell 1 unit at price 989.250000, investment 7.493293 %, total balance 9461.069882,\n",
"day 239: buy 1 unit at price 992.000000, total balance 8469.069882\n",
"day 240, sell 1 unit at price 992.179993, investment 6.854917 %, total balance 9461.249875,\n",
"day 242, sell 1 unit at price 984.450012, investment 2.642036 %, total balance 10445.699887,\n",
"day 243: buy 1 unit at price 988.200012, total balance 9457.499875\n",
"day 245, sell 1 unit at price 970.539978, investment -2.163309 %, total balance 10428.039853,\n",
"day 246, sell 1 unit at price 973.330017, investment -1.504756 %, total balance 11401.369870,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/21.neuro-evolution-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class neuralnetwork:\n",
" def __init__(self, id_, hidden_size = 128):\n",
" self.W1 = np.random.randn(window_size, hidden_size) / np.sqrt(window_size)\n",
" self.W2 = np.random.randn(hidden_size, 3) / np.sqrt(hidden_size)\n",
" self.fitness = 0\n",
" self.id = id_\n",
"\n",
"def relu(X):\n",
" return np.maximum(X, 0)\n",
" \n",
"def softmax(X):\n",
" e_x = np.exp(X - np.max(X, axis=-1, keepdims=True))\n",
" return e_x / np.sum(e_x, axis=-1, keepdims=True)\n",
"\n",
"def feed_forward(X, nets):\n",
" a1 = np.dot(X, nets.W1)\n",
" z1 = relu(a1)\n",
" a2 = np.dot(z1, nets.W2)\n",
" return softmax(a2)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class NeuroEvolution:\n",
" def __init__(self, population_size, mutation_rate, model_generator,\n",
" state_size, window_size, trend, skip, initial_money):\n",
" self.population_size = population_size\n",
" self.mutation_rate = mutation_rate\n",
" self.model_generator = model_generator\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.initial_money = initial_money\n",
" \n",
" def _initialize_population(self):\n",
" self.population = []\n",
" for i in range(self.population_size):\n",
" self.population.append(self.model_generator(i))\n",
" \n",
" def mutate(self, individual, scale=1.0):\n",
" mutation_mask = np.random.binomial(1, p=self.mutation_rate, size=individual.W1.shape)\n",
" individual.W1 += np.random.normal(loc=0, scale=scale, size=individual.W1.shape) * mutation_mask\n",
" mutation_mask = np.random.binomial(1, p=self.mutation_rate, size=individual.W2.shape)\n",
" individual.W2 += np.random.normal(loc=0, scale=scale, size=individual.W2.shape) * mutation_mask\n",
" return individual\n",
" \n",
" def inherit_weights(self, parent, child):\n",
" child.W1 = parent.W1.copy()\n",
" child.W2 = parent.W2.copy()\n",
" return child\n",
" \n",
" def crossover(self, parent1, parent2):\n",
" child1 = self.model_generator((parent1.id+1)*10)\n",
" child1 = self.inherit_weights(parent1, child1)\n",
" child2 = self.model_generator((parent2.id+1)*10)\n",
" child2 = self.inherit_weights(parent2, child2)\n",
" # first W\n",
" n_neurons = child1.W1.shape[1]\n",
" cutoff = np.random.randint(0, n_neurons)\n",
" child1.W1[:, cutoff:] = parent2.W1[:, cutoff:].copy()\n",
" child2.W1[:, cutoff:] = parent1.W1[:, cutoff:].copy()\n",
" # second W\n",
" n_neurons = child1.W2.shape[1]\n",
" cutoff = np.random.randint(0, n_neurons)\n",
" child1.W2[:, cutoff:] = parent2.W2[:, cutoff:].copy()\n",
" child2.W2[:, cutoff:] = parent1.W2[:, cutoff:].copy()\n",
" return child1, child2\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
" \n",
" def act(self, p, state):\n",
" logits = feed_forward(state, p)\n",
" return np.argmax(logits, 1)[0]\n",
" \n",
" def buy(self, individual):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" state = self.get_state(0)\n",
" inventory = []\n",
" states_sell = []\n",
" states_buy = []\n",
" \n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(individual, state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((self.trend[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, self.trend[t], invest, initial_money)\n",
" )\n",
" state = next_state\n",
" \n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def calculate_fitness(self):\n",
" for i in range(self.population_size):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" state = self.get_state(0)\n",
" inventory = []\n",
" \n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(self.population[i], state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
"\n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" starting_money += self.trend[t]\n",
"\n",
" state = next_state\n",
" invest = ((starting_money - initial_money) / initial_money) * 100\n",
" self.population[i].fitness = invest\n",
" \n",
" def evolve(self, generations=20, checkpoint= 5):\n",
" self._initialize_population()\n",
" n_winners = int(self.population_size * 0.4)\n",
" n_parents = self.population_size - n_winners\n",
" for epoch in range(generations):\n",
" self.calculate_fitness()\n",
" fitnesses = [i.fitness for i in self.population]\n",
" sort_fitness = np.argsort(fitnesses)[::-1]\n",
" self.population = [self.population[i] for i in sort_fitness]\n",
" fittest_individual = self.population[0]\n",
" if (epoch+1) % checkpoint == 0:\n",
" print('epoch %d, fittest individual %d with accuracy %f'%(epoch+1, sort_fitness[0], \n",
" fittest_individual.fitness))\n",
" next_population = [self.population[i] for i in range(n_winners)]\n",
" total_fitness = np.sum([np.abs(i.fitness) for i in self.population])\n",
" parent_probabilities = [np.abs(i.fitness / total_fitness) for i in self.population]\n",
" parents = np.random.choice(self.population, size=n_parents, p=parent_probabilities, replace=False)\n",
" for i in np.arange(0, len(parents), 2):\n",
" child1, child2 = self.crossover(parents[i], parents[i+1])\n",
" next_population += [self.mutate(child1), self.mutate(child2)]\n",
" self.population = next_population\n",
" return fittest_individual"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"population_size = 100\n",
"generations = 100\n",
"mutation_rate = 0.1\n",
"neural_evolve = NeuroEvolution(population_size, mutation_rate, neuralnetwork,\n",
" window_size, window_size, close, skip, initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch 5, fittest individual 0 with accuracy 10.849749\n",
"epoch 10, fittest individual 0 with accuracy 11.095000\n",
"epoch 15, fittest individual 0 with accuracy 11.095000\n",
"epoch 20, fittest individual 93 with accuracy 13.756802\n",
"epoch 25, fittest individual 95 with accuracy 23.728605\n",
"epoch 30, fittest individual 0 with accuracy 23.728605\n",
"epoch 35, fittest individual 0 with accuracy 23.728605\n",
"epoch 40, fittest individual 0 with accuracy 23.728605\n",
"epoch 45, fittest individual 0 with accuracy 23.728605\n",
"epoch 50, fittest individual 0 with accuracy 23.728605\n"
]
}
],
"source": [
"fittest_nets = neural_evolve.evolve(50)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 1: buy 1 unit at price 762.130005, total balance 9237.869995\n",
"day 2: buy 1 unit at price 762.020020, total balance 8475.849975\n",
"day 3, sell 1 unit at price 782.520020, investment 2.675399 %, total balance 9258.369995,\n",
"day 5, sell 1 unit at price 785.309998, investment 3.056347 %, total balance 10043.679993,\n",
"day 6: buy 1 unit at price 762.559998, total balance 9281.119995\n",
"day 7: buy 1 unit at price 754.020020, total balance 8527.099975\n",
"day 8: buy 1 unit at price 736.080017, total balance 7791.019958\n",
"day 9: buy 1 unit at price 758.489990, total balance 7032.529968\n",
"day 10, sell 1 unit at price 764.479980, investment 0.251781 %, total balance 7797.009948,\n",
"day 12: buy 1 unit at price 760.539978, total balance 7036.469970\n",
"day 14: buy 1 unit at price 768.270020, total balance 6268.199950\n",
"day 15: buy 1 unit at price 760.989990, total balance 5507.209960\n",
"day 16: buy 1 unit at price 761.679993, total balance 4745.529967\n",
"day 17, sell 1 unit at price 768.239990, investment 1.885888 %, total balance 5513.769957,\n",
"day 18, sell 1 unit at price 770.840027, investment 4.722314 %, total balance 6284.609984,\n",
"day 20: buy 1 unit at price 747.919983, total balance 5536.690001\n",
"day 21: buy 1 unit at price 750.500000, total balance 4786.190001\n",
"day 22: buy 1 unit at price 762.520020, total balance 4023.669981\n",
"day 24, sell 1 unit at price 771.190002, investment 1.674381 %, total balance 4794.859983,\n",
"day 25, sell 1 unit at price 776.419983, investment 2.087991 %, total balance 5571.279966,\n",
"day 26, sell 1 unit at price 789.289978, investment 2.736012 %, total balance 6360.569944,\n",
"day 27: buy 1 unit at price 789.270020, total balance 5571.299924\n",
"day 28: buy 1 unit at price 796.099976, total balance 4775.199948\n",
"day 29: buy 1 unit at price 797.070007, total balance 3978.129941\n",
"day 31: buy 1 unit at price 790.799988, total balance 3187.329953\n",
"day 32, sell 1 unit at price 794.200012, investment 4.364055 %, total balance 3981.529965,\n",
"day 33: buy 1 unit at price 796.419983, total balance 3185.109982\n",
"day 34, sell 1 unit at price 794.559998, investment 4.316774 %, total balance 3979.669980,\n",
"day 35, sell 1 unit at price 791.260010, investment 5.794741 %, total balance 4770.929990,\n",
"day 37: buy 1 unit at price 791.549988, total balance 3979.380002\n",
"day 38, sell 1 unit at price 785.049988, investment 4.603596 %, total balance 4764.429990,\n",
"day 39: buy 1 unit at price 782.789978, total balance 3981.640012\n",
"day 40: buy 1 unit at price 771.820007, total balance 3209.820005\n",
"day 41: buy 1 unit at price 786.140015, total balance 2423.679990\n",
"day 42, sell 1 unit at price 786.900024, investment 3.197294 %, total balance 3210.580014,\n",
"day 43: buy 1 unit at price 794.020020, total balance 2416.559994\n",
"day 44: buy 1 unit at price 806.150024, total balance 1610.409970\n",
"day 46, sell 1 unit at price 804.789978, investment 1.966369 %, total balance 2415.199948,\n",
"day 47, sell 1 unit at price 807.909973, investment 1.483482 %, total balance 3223.109921,\n",
"day 48: buy 1 unit at price 806.359985, total balance 2416.749936\n",
"day 49, sell 1 unit at price 807.880005, investment 1.356217 %, total balance 3224.629941,\n",
"day 50, sell 1 unit at price 804.609985, investment 1.746332 %, total balance 4029.239926,\n",
"day 51, sell 1 unit at price 806.070007, investment 1.211675 %, total balance 4835.309933,\n",
"day 52: buy 1 unit at price 802.174988, total balance 4033.134945\n",
"day 53: buy 1 unit at price 805.020020, total balance 3228.114925\n",
"day 54, sell 1 unit at price 819.309998, investment 3.507044 %, total balance 4047.424923,\n",
"day 55, sell 1 unit at price 823.869995, investment 5.247898 %, total balance 4871.294918,\n",
"day 56, sell 1 unit at price 835.669983, investment 8.272651 %, total balance 5706.964901,\n",
"day 57, sell 1 unit at price 832.150024, investment 5.852648 %, total balance 6539.114925,\n",
"day 58: buy 1 unit at price 823.309998, total balance 5715.804927\n",
"day 59: buy 1 unit at price 802.320007, total balance 4913.484920\n",
"day 60: buy 1 unit at price 796.789978, total balance 4116.694942\n",
"day 61: buy 1 unit at price 795.695007, total balance 3320.999935\n",
"day 63: buy 1 unit at price 801.489990, total balance 2519.509945\n",
"day 65: buy 1 unit at price 806.969971, total balance 1712.539974\n",
"day 66, sell 1 unit at price 808.380005, investment 1.808517 %, total balance 2520.919979,\n",
"day 67: buy 1 unit at price 809.559998, total balance 1711.359981\n",
"day 68, sell 1 unit at price 813.669983, investment 0.932824 %, total balance 2525.029964,\n",
"day 69, sell 1 unit at price 819.239990, investment 1.597302 %, total balance 3344.269954,\n",
"day 70, sell 1 unit at price 820.450012, investment 2.278184 %, total balance 4164.719966,\n",
"day 71: buy 1 unit at price 818.979980, total balance 3345.739986\n",
"day 72: buy 1 unit at price 824.159973, total balance 2521.580013\n",
"day 73: buy 1 unit at price 828.070007, total balance 1693.510006\n",
"day 75, sell 1 unit at price 830.760010, investment 3.197435 %, total balance 2524.270016,\n",
"day 76, sell 1 unit at price 831.330017, investment 0.974119 %, total balance 3355.600033,\n",
"day 77, sell 1 unit at price 828.640015, investment 3.280488 %, total balance 4184.240048,\n",
"day 78, sell 1 unit at price 829.280029, investment 4.077618 %, total balance 5013.520077,\n",
"day 79, sell 1 unit at price 823.210022, investment 3.457985 %, total balance 5836.730099,\n",
"day 80: buy 1 unit at price 835.239990, total balance 5001.490109\n",
"day 81, sell 1 unit at price 830.630005, investment 3.635730 %, total balance 5832.120114,\n",
"day 83: buy 1 unit at price 827.780029, total balance 5004.340085\n",
"day 84: buy 1 unit at price 831.909973, total balance 4172.430112\n",
"day 85: buy 1 unit at price 835.369995, total balance 3337.060117\n",
"day 86, sell 1 unit at price 838.679993, investment 3.929517 %, total balance 4175.740110,\n",
"day 87, sell 1 unit at price 843.250000, investment 4.161520 %, total balance 5018.990110,\n",
"day 88, sell 1 unit at price 845.539978, investment 3.243058 %, total balance 5864.530088,\n",
"day 89: buy 1 unit at price 845.619995, total balance 5018.910093\n",
"day 90, sell 1 unit at price 847.200012, investment 2.795578 %, total balance 5866.110105,\n",
"day 91: buy 1 unit at price 848.780029, total balance 5017.330076\n",
"day 92: buy 1 unit at price 852.119995, total balance 4165.210081\n",
"day 93, sell 1 unit at price 848.400024, investment 2.455108 %, total balance 5013.610105,\n",
"day 95: buy 1 unit at price 829.590027, total balance 4184.020078\n",
"day 97: buy 1 unit at price 814.429993, total balance 3369.590085\n",
"day 98, sell 1 unit at price 819.510010, investment -1.883289 %, total balance 4189.100095,\n",
"day 100: buy 1 unit at price 831.409973, total balance 3357.690122\n",
"day 101, sell 1 unit at price 831.500000, investment 0.449391 %, total balance 4189.190122,\n",
"day 102: buy 1 unit at price 829.559998, total balance 3359.630124\n",
"day 103: buy 1 unit at price 838.549988, total balance 2521.080136\n",
"day 104: buy 1 unit at price 834.570007, total balance 1686.510129\n",
"day 105, sell 1 unit at price 831.409973, investment -0.060103 %, total balance 2517.920102,\n",
"day 106: buy 1 unit at price 827.880005, total balance 1690.040097\n",
"day 108: buy 1 unit at price 824.729980, total balance 865.310117\n",
"day 109: buy 1 unit at price 823.349976, total balance 41.960141\n",
"day 110: buy 1 unit at price 824.320007, total balance -782.359866\n",
"day 112, sell 1 unit at price 837.169983, investment 0.215472 %, total balance 54.810117,\n",
"day 113, sell 1 unit at price 836.820007, investment -1.040655 %, total balance 891.630124,\n",
"day 114, sell 1 unit at price 838.210022, investment -1.245318 %, total balance 1729.840146,\n",
"day 115: buy 1 unit at price 841.650024, total balance 888.190122\n",
"day 117: buy 1 unit at price 862.760010, total balance 25.430112\n",
"day 118, sell 1 unit at price 872.299988, investment 2.368210 %, total balance 897.730100,\n",
"day 119: buy 1 unit at price 871.729980, total balance 26.000120\n",
"day 120, sell 1 unit at price 874.250000, investment 5.383379 %, total balance 900.250120,\n",
"day 121, sell 1 unit at price 905.960022, investment 11.238539 %, total balance 1806.210142,\n",
"day 122, sell 1 unit at price 912.570007, investment 9.761734 %, total balance 2718.780149,\n",
"day 123, sell 1 unit at price 916.440002, investment 10.473022 %, total balance 3635.220151,\n",
"day 124, sell 1 unit at price 927.039978, investment 10.552739 %, total balance 4562.260129,\n",
"day 125, sell 1 unit at price 931.659973, investment 11.633532 %, total balance 5493.920102,\n",
"day 126, sell 1 unit at price 927.130005, investment 11.988452 %, total balance 6421.050107,\n",
"day 127, sell 1 unit at price 934.299988, investment 13.285561 %, total balance 7355.350095,\n",
"day 128, sell 1 unit at price 932.169983, investment 13.216738 %, total balance 8287.520078,\n",
"day 129: buy 1 unit at price 928.780029, total balance 7358.740049\n",
"day 130, sell 1 unit at price 930.599976, investment 12.893047 %, total balance 8289.340025,\n",
"day 132: buy 1 unit at price 937.080017, total balance 7352.260008\n",
"day 133, sell 1 unit at price 943.000000, investment 12.041819 %, total balance 8295.260008,\n",
"day 134: buy 1 unit at price 919.619995, total balance 7375.640013\n",
"day 135: buy 1 unit at price 930.239990, total balance 6445.400023\n",
"day 136: buy 1 unit at price 934.010010, total balance 5511.390013\n",
"day 138: buy 1 unit at price 948.820007, total balance 4562.570006\n",
"day 140: buy 1 unit at price 969.539978, total balance 3593.030028\n",
"day 142, sell 1 unit at price 975.880005, investment 13.111409 %, total balance 4568.910033,\n",
"day 143, sell 1 unit at price 964.859985, investment 10.683355 %, total balance 5533.770018,\n",
"day 144, sell 1 unit at price 966.950012, investment 4.109690 %, total balance 6500.720030,\n",
"day 146, sell 1 unit at price 983.679993, investment 4.972892 %, total balance 7484.400023,\n",
"day 147: buy 1 unit at price 976.570007, total balance 6507.830016\n",
"day 148, sell 1 unit at price 980.940002, investment 6.667972 %, total balance 7488.770018,\n",
"day 149: buy 1 unit at price 983.409973, total balance 6505.360045\n",
"day 150, sell 1 unit at price 949.830017, investment 2.105911 %, total balance 7455.190062,\n",
"day 151: buy 1 unit at price 942.900024, total balance 6512.290038\n",
"day 152, sell 1 unit at price 953.400024, investment 2.075996 %, total balance 7465.690062,\n",
"day 154: buy 1 unit at price 942.309998, total balance 6523.380064\n",
"day 155: buy 1 unit at price 939.780029, total balance 5583.600035\n",
"day 157: buy 1 unit at price 950.630005, total balance 4632.970030\n",
"day 158, sell 1 unit at price 959.450012, investment 1.120339 %, total balance 5592.420042,\n",
"day 159: buy 1 unit at price 957.090027, total balance 4635.330015\n",
"day 160, sell 1 unit at price 965.590027, investment -0.407405 %, total balance 5600.920042,\n",
"day 161, sell 1 unit at price 952.270020, investment -2.488300 %, total balance 6553.190062,\n",
"day 163: buy 1 unit at price 940.489990, total balance 5612.700072\n",
"day 165: buy 1 unit at price 908.729980, total balance 4703.970092\n",
"day 166, sell 1 unit at price 898.700012, investment -8.613901 %, total balance 5602.670104,\n",
"day 169, sell 1 unit at price 918.590027, investment -2.578216 %, total balance 6521.260131,\n",
"day 170: buy 1 unit at price 928.799988, total balance 5592.460143\n",
"day 171, sell 1 unit at price 930.090027, investment -1.296810 %, total balance 6522.550170,\n",
"day 172: buy 1 unit at price 943.830017, total balance 5578.720153\n",
"day 173, sell 1 unit at price 947.159973, investment 0.785284 %, total balance 6525.880126,\n",
"day 174: buy 1 unit at price 955.989990, total balance 5569.890136\n",
"day 175: buy 1 unit at price 953.419983, total balance 4616.470153\n",
"day 177, sell 1 unit at price 970.890015, investment 2.131219 %, total balance 5587.360168,\n",
"day 178, sell 1 unit at price 968.150024, investment 1.155586 %, total balance 6555.510192,\n",
"day 180, sell 1 unit at price 980.340027, investment 4.237157 %, total balance 7535.850219,\n",
"day 181, sell 1 unit at price 950.700012, investment 4.618537 %, total balance 8486.550231,\n",
"day 182: buy 1 unit at price 947.799988, total balance 7538.750243\n",
"day 183, sell 1 unit at price 934.090027, investment 0.569556 %, total balance 8472.840270,\n",
"day 185, sell 1 unit at price 930.500000, investment -1.412332 %, total balance 9403.340270,\n",
"day 186: buy 1 unit at price 930.830017, total balance 8472.510253\n",
"day 187: buy 1 unit at price 930.390015, total balance 7542.120238\n",
"day 188, sell 1 unit at price 923.650024, investment -3.382877 %, total balance 8465.770262,\n",
"day 189: buy 1 unit at price 927.960022, total balance 7537.810240\n",
"day 191: buy 1 unit at price 926.789978, total balance 6611.020262\n",
"day 192, sell 1 unit at price 922.900024, investment -3.201103 %, total balance 7533.920286,\n",
"day 193: buy 1 unit at price 907.239990, total balance 6626.680296\n",
"day 195: buy 1 unit at price 922.669983, total balance 5704.010313\n",
"day 197, sell 1 unit at price 926.960022, investment -2.198773 %, total balance 6630.970335,\n",
"day 199, sell 1 unit at price 910.669983, investment -2.165813 %, total balance 7541.640318,\n",
"day 201, sell 1 unit at price 924.690002, investment -0.612648 %, total balance 8466.330320,\n",
"day 202: buy 1 unit at price 927.000000, total balance 7539.330320\n",
"day 204, sell 1 unit at price 915.890015, investment -1.300703 %, total balance 8455.220335,\n",
"day 205, sell 1 unit at price 913.809998, investment -1.400531 %, total balance 9369.030333,\n",
"day 206: buy 1 unit at price 921.289978, total balance 8447.740355\n",
"day 207, sell 1 unit at price 929.570007, investment 2.461313 %, total balance 9377.310362,\n",
"day 208: buy 1 unit at price 939.330017, total balance 8437.980345\n",
"day 209, sell 1 unit at price 937.340027, investment 1.589956 %, total balance 9375.320372,\n",
"day 211, sell 1 unit at price 927.809998, investment 0.087378 %, total balance 10303.130370,\n",
"day 212: buy 1 unit at price 935.950012, total balance 9367.180358\n",
"day 213: buy 1 unit at price 926.500000, total balance 8440.680358\n",
"day 214, sell 1 unit at price 929.080017, investment 0.845558 %, total balance 9369.760375,\n",
"day 215, sell 1 unit at price 932.070007, investment -0.772892 %, total balance 10301.830382,\n",
"day 217: buy 1 unit at price 925.109985, total balance 9376.720397\n",
"day 218: buy 1 unit at price 920.289978, total balance 8456.430419\n",
"day 219: buy 1 unit at price 915.000000, total balance 7541.430419\n",
"day 220, sell 1 unit at price 921.809998, investment -1.510766 %, total balance 8463.240417,\n",
"day 223: buy 1 unit at price 928.530029, total balance 7534.710388\n",
"day 224: buy 1 unit at price 920.969971, total balance 6613.740417\n",
"day 225: buy 1 unit at price 924.859985, total balance 5688.880432\n",
"day 226, sell 1 unit at price 944.489990, investment 1.941715 %, total balance 6633.370422,\n",
"day 227, sell 1 unit at price 949.500000, investment 2.636445 %, total balance 7582.870422,\n",
"day 229, sell 1 unit at price 953.270020, investment 3.583658 %, total balance 8536.140442,\n",
"day 230, sell 1 unit at price 957.789978, investment 4.676500 %, total balance 9493.930420,\n",
"day 231: buy 1 unit at price 951.679993, total balance 8542.250427\n",
"day 232, sell 1 unit at price 969.960022, investment 4.461890 %, total balance 9512.210449,\n",
"day 233, sell 1 unit at price 978.890015, investment 6.289026 %, total balance 10491.100464,\n",
"day 235, sell 1 unit at price 972.599976, investment 5.161861 %, total balance 11463.700440,\n",
"day 236, sell 1 unit at price 989.250000, investment 3.947756 %, total balance 12452.950440,\n",
"day 238: buy 1 unit at price 989.679993, total balance 11463.270447\n",
"day 239, sell 1 unit at price 992.000000, investment 0.234420 %, total balance 12455.270447,\n",
"day 243: buy 1 unit at price 988.200012, total balance 11467.070435\n",
"day 244: buy 1 unit at price 968.450012, total balance 10498.620423\n",
"day 245: buy 1 unit at price 970.539978, total balance 9528.080445\n",
"day 246, sell 1 unit at price 973.330017, investment -1.504756 %, total balance 10501.410462,\n",
"day 248, sell 1 unit at price 1019.270020, investment 5.247561 %, total balance 11520.680482,\n",
"day 249, sell 1 unit at price 1017.109985, investment 4.798361 %, total balance 12537.790467,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = neural_evolve.buy(fittest_nets)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/22.neuro-evolution-novelty-search-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.neighbors import NearestNeighbors\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"\n",
"novelty_search_threshold = 6\n",
"novelty_log_maxlen = 1000\n",
"backlog_maxsize = 500\n",
"novelty_log_add_amount = 3"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class neuralnetwork:\n",
" def __init__(self, id_, hidden_size = 128):\n",
" self.W1 = np.random.randn(window_size, hidden_size) / np.sqrt(window_size)\n",
" self.W2 = np.random.randn(hidden_size, 3) / np.sqrt(hidden_size)\n",
" self.fitness = 0\n",
" self.last_features = None\n",
" self.id = id_\n",
"\n",
"def relu(X):\n",
" return np.maximum(X, 0)\n",
" \n",
"def softmax(X):\n",
" e_x = np.exp(X - np.max(X, axis=-1, keepdims=True))\n",
" return e_x / np.sum(e_x, axis=-1, keepdims=True)\n",
"\n",
"def feed_forward(X, nets):\n",
" a1 = np.dot(X, nets.W1)\n",
" z1 = relu(a1)\n",
" a2 = np.dot(z1, nets.W2)\n",
" return softmax(a2)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"class NeuroEvolution:\n",
" def __init__(self, population_size, mutation_rate, model_generator,\n",
" state_size, window_size, trend, skip, initial_money):\n",
" self.population_size = population_size\n",
" self.mutation_rate = mutation_rate\n",
" self.model_generator = model_generator\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.initial_money = initial_money\n",
" self.generation_backlog = []\n",
" self.novel_backlog = []\n",
" self.novel_pop = []\n",
" \n",
" def _initialize_population(self):\n",
" self.population = []\n",
" for i in range(self.population_size):\n",
" self.population.append(self.model_generator(i))\n",
" \n",
" def _memorize(self, q, i, limit):\n",
" q.append(i)\n",
" if len(q) > limit:\n",
" q.pop()\n",
" \n",
" def mutate(self, individual, scale=1.0):\n",
" mutation_mask = np.random.binomial(1, p=self.mutation_rate, size=individual.W1.shape)\n",
" individual.W1 += np.random.normal(loc=0, scale=scale, size=individual.W1.shape) * mutation_mask\n",
" mutation_mask = np.random.binomial(1, p=self.mutation_rate, size=individual.W2.shape)\n",
" individual.W2 += np.random.normal(loc=0, scale=scale, size=individual.W2.shape) * mutation_mask\n",
" return individual\n",
" \n",
" def inherit_weights(self, parent, child):\n",
" child.W1 = parent.W1.copy()\n",
" child.W2 = parent.W2.copy()\n",
" return child\n",
" \n",
" def crossover(self, parent1, parent2):\n",
" child1 = self.model_generator((parent1.id+1)*10)\n",
" child1 = self.inherit_weights(parent1, child1)\n",
" child2 = self.model_generator((parent2.id+1)*10)\n",
" child2 = self.inherit_weights(parent2, child2)\n",
" # first W\n",
" n_neurons = child1.W1.shape[1]\n",
" cutoff = np.random.randint(0, n_neurons)\n",
" child1.W1[:, cutoff:] = parent2.W1[:, cutoff:].copy()\n",
" child2.W1[:, cutoff:] = parent1.W1[:, cutoff:].copy()\n",
" # second W\n",
" n_neurons = child1.W2.shape[1]\n",
" cutoff = np.random.randint(0, n_neurons)\n",
" child1.W2[:, cutoff:] = parent2.W2[:, cutoff:].copy()\n",
" child2.W2[:, cutoff:] = parent1.W2[:, cutoff:].copy()\n",
" return child1, child2\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
" \n",
" def act(self, p, state):\n",
" logits = feed_forward(state, p)\n",
" return np.argmax(logits, 1)[0]\n",
" \n",
" def buy(self, individual):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" state = self.get_state(0)\n",
" inventory = []\n",
" states_sell = []\n",
" states_buy = []\n",
" \n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(individual, state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((self.trend[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, self.trend[t], invest, initial_money)\n",
" )\n",
" state = next_state\n",
" \n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def calculate_fitness(self):\n",
" for i in range(self.population_size):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" state = self.get_state(0)\n",
" inventory = []\n",
" \n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(self.population[i], state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
"\n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" starting_money += self.trend[t]\n",
"\n",
" state = next_state\n",
" invest = ((starting_money - initial_money) / initial_money) * 100\n",
" self.population[i].fitness = invest\n",
" self.population[i].last_features = self.population[i].W2.flatten()\n",
" \n",
" def evaluate(self, individual, backlog, pop, k = 4):\n",
" score = 0\n",
" if len(backlog):\n",
" x = np.array(backlog)\n",
" nn = NearestNeighbors(n_neighbors = k, metric = 'euclidean').fit(np.array(backlog))\n",
" d, _ = nn.kneighbors([individual])\n",
" score += np.mean(d)\n",
" \n",
" if len(pop):\n",
" nn = NearestNeighbors(n_neighbors = k, metric = 'euclidean').fit(np.array(pop))\n",
" d, _ = nn.kneighbors([individual])\n",
" score += np.mean(d)\n",
" \n",
" return score\n",
" \n",
" def evolve(self, generations=20, checkpoint= 5):\n",
" self._initialize_population()\n",
" n_winners = int(self.population_size * 0.4)\n",
" n_parents = self.population_size - n_winners\n",
" for epoch in range(generations):\n",
" self.calculate_fitness()\n",
" scores = [self.evaluate(p.last_features, self.novel_backlog, self.novel_pop) for p in self.population]\n",
" sort_fitness = np.argsort(scores)[::-1]\n",
" self.population = [self.population[i] for i in sort_fitness]\n",
" fittest_individual = self.population[0]\n",
" if (epoch+1) % checkpoint == 0:\n",
" print('epoch %d, fittest individual %d with accuracy %f'%(epoch+1, sort_fitness[0], \n",
" fittest_individual.fitness))\n",
" next_population = [self.population[i] for i in range(n_winners)]\n",
" total_fitness = np.sum([np.abs(i.fitness) for i in self.population])\n",
" parent_probabilities = [np.abs(i.fitness / total_fitness) for i in self.population]\n",
" parents = np.random.choice(self.population, size=n_parents, p=parent_probabilities, replace=False)\n",
" \n",
" for p in next_population:\n",
" if p.last_features is not None:\n",
" self._memorize(self.novel_pop, p.last_features, backlog_maxsize)\n",
" if np.random.randint(0,10) < novelty_search_threshold:\n",
" self._memorize(self.novel_backlog, p.last_features, novelty_log_maxlen)\n",
" \n",
" for i in np.arange(0, len(parents), 2):\n",
" child1, child2 = self.crossover(parents[i], parents[i+1])\n",
" next_population += [self.mutate(child1), self.mutate(child2)]\n",
" self.population = next_population\n",
" \n",
" if np.random.randint(0,10) < novelty_search_threshold:\n",
" pop_sorted = sorted(self.population, key=lambda p: p.fitness, reverse=True)\n",
" self.generation_backlog.append(pop_sorted[0])\n",
" print('novel add fittest, score: %f, backlog size: %d'%(pop_sorted[0].fitness, \n",
" len(self.generation_backlog)))\n",
" generation_backlog_temp = self.generation_backlog\n",
" if len(self.generation_backlog) > backlog_maxsize:\n",
" generation_backlog_temp = random.sample(generation_backlog, backlog_maxsize)\n",
" for p in generation_backlog_temp:\n",
" if p.last_features is not None:\n",
" self._memorize(self.novel_backlog, p.last_features, novelty_log_maxlen)\n",
" \n",
" return fittest_individual"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"population_size = 100\n",
"generations = 100\n",
"mutation_rate = 0.1\n",
"neural_evolve = NeuroEvolution(population_size, mutation_rate, neuralnetwork,\n",
" window_size, window_size, close, skip, initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"novel add fittest, score: 5.960001, backlog size: 16\n",
"novel add fittest, score: 2.560349, backlog size: 17\n",
"epoch 5, fittest individual 86 with accuracy -99.353801\n",
"novel add fittest, score: 2.073401, backlog size: 18\n",
"epoch 10, fittest individual 53 with accuracy -99.622801\n",
"novel add fittest, score: 9.773855, backlog size: 19\n",
"novel add fittest, score: 1.068502, backlog size: 20\n",
"novel add fittest, score: 1.733602, backlog size: 21\n",
"epoch 15, fittest individual 49 with accuracy -94.018300\n",
"novel add fittest, score: 1.439049, backlog size: 22\n",
"novel add fittest, score: 0.000000, backlog size: 23\n",
"novel add fittest, score: 0.000000, backlog size: 24\n",
"novel add fittest, score: 3.052850, backlog size: 25\n",
"epoch 20, fittest individual 83 with accuracy -42.284500\n",
"novel add fittest, score: 3.284498, backlog size: 26\n",
"novel add fittest, score: 3.284498, backlog size: 27\n",
"novel add fittest, score: 0.000000, backlog size: 28\n",
"novel add fittest, score: 0.000000, backlog size: 29\n",
"epoch 25, fittest individual 43 with accuracy -99.809850\n",
"novel add fittest, score: 0.000000, backlog size: 30\n",
"novel add fittest, score: 0.000000, backlog size: 31\n",
"novel add fittest, score: 4.712602, backlog size: 32\n",
"novel add fittest, score: 4.712602, backlog size: 33\n",
"epoch 30, fittest individual 51 with accuracy -94.734501\n",
"novel add fittest, score: 4.712602, backlog size: 34\n",
"novel add fittest, score: 0.000000, backlog size: 35\n",
"novel add fittest, score: 0.000000, backlog size: 36\n",
"epoch 35, fittest individual 74 with accuracy -99.895853\n",
"novel add fittest, score: 0.000000, backlog size: 37\n",
"novel add fittest, score: 0.000000, backlog size: 38\n",
"novel add fittest, score: 0.000000, backlog size: 39\n",
"novel add fittest, score: 0.000000, backlog size: 40\n",
"epoch 40, fittest individual 50 with accuracy -99.900900\n",
"novel add fittest, score: 0.000000, backlog size: 41\n",
"novel add fittest, score: 0.000000, backlog size: 42\n",
"epoch 45, fittest individual 98 with accuracy -92.305952\n",
"novel add fittest, score: 0.000000, backlog size: 43\n",
"novel add fittest, score: 0.000000, backlog size: 44\n",
"novel add fittest, score: 0.000000, backlog size: 45\n",
"novel add fittest, score: 0.000000, backlog size: 46\n",
"epoch 50, fittest individual 55 with accuracy -99.841901\n",
"novel add fittest, score: 0.000000, backlog size: 47\n",
"novel add fittest, score: 0.000000, backlog size: 48\n",
"novel add fittest, score: 0.000000, backlog size: 49\n",
"epoch 55, fittest individual 0 with accuracy -99.351002\n",
"novel add fittest, score: 0.000000, backlog size: 50\n",
"novel add fittest, score: 0.000000, backlog size: 51\n",
"novel add fittest, score: 0.000000, backlog size: 52\n",
"epoch 60, fittest individual 56 with accuracy -91.532553\n",
"novel add fittest, score: 0.000000, backlog size: 53\n",
"novel add fittest, score: 0.000000, backlog size: 54\n",
"novel add fittest, score: 0.000000, backlog size: 55\n",
"epoch 65, fittest individual 0 with accuracy -99.389200\n",
"novel add fittest, score: 0.000000, backlog size: 56\n",
"novel add fittest, score: 0.000000, backlog size: 57\n",
"novel add fittest, score: 0.000000, backlog size: 58\n",
"epoch 70, fittest individual 68 with accuracy -90.999901\n",
"novel add fittest, score: 0.000000, backlog size: 59\n",
"novel add fittest, score: 0.000000, backlog size: 60\n",
"novel add fittest, score: 0.000000, backlog size: 61\n",
"novel add fittest, score: 0.000000, backlog size: 62\n",
"epoch 75, fittest individual 50 with accuracy -98.881400\n",
"novel add fittest, score: 0.000000, backlog size: 63\n",
"novel add fittest, score: 0.000000, backlog size: 64\n",
"novel add fittest, score: 0.000000, backlog size: 65\n",
"epoch 80, fittest individual 0 with accuracy -91.959200\n",
"novel add fittest, score: 0.000000, backlog size: 66\n",
"novel add fittest, score: 0.000000, backlog size: 67\n",
"novel add fittest, score: 0.000000, backlog size: 68\n",
"epoch 85, fittest individual 0 with accuracy -94.175699\n",
"novel add fittest, score: 0.000000, backlog size: 69\n",
"novel add fittest, score: 0.000000, backlog size: 70\n",
"novel add fittest, score: 0.000000, backlog size: 71\n",
"novel add fittest, score: 0.000000, backlog size: 72\n",
"novel add fittest, score: 0.000000, backlog size: 73\n",
"epoch 90, fittest individual 60 with accuracy -93.196199\n",
"novel add fittest, score: 0.000000, backlog size: 74\n",
"novel add fittest, score: 0.000000, backlog size: 75\n",
"novel add fittest, score: 0.000000, backlog size: 76\n",
"epoch 95, fittest individual 66 with accuracy -93.122201\n",
"novel add fittest, score: 0.000000, backlog size: 77\n",
"novel add fittest, score: 0.000000, backlog size: 78\n",
"novel add fittest, score: 0.000000, backlog size: 79\n",
"epoch 100, fittest individual 52 with accuracy -93.193801\n",
"novel add fittest, score: 0.000000, backlog size: 80\n"
]
}
],
"source": [
"fittest_nets = neural_evolve.evolve(100)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 1: buy 1 unit at price 762.130005, total balance 9237.869995\n",
"day 3: buy 1 unit at price 782.520020, total balance 8455.349975\n",
"day 4: buy 1 unit at price 790.510010, total balance 7664.839965\n",
"day 5, sell 1 unit at price 785.309998, investment 3.041475 %, total balance 8450.149963,\n",
"day 9: buy 1 unit at price 758.489990, total balance 7691.659973\n",
"day 10: buy 1 unit at price 764.479980, total balance 6927.179993\n",
"day 11: buy 1 unit at price 771.229980, total balance 6155.950013\n",
"day 15: buy 1 unit at price 760.989990, total balance 5394.960023\n",
"day 16: buy 1 unit at price 761.679993, total balance 4633.280030\n",
"day 17: buy 1 unit at price 768.239990, total balance 3865.040040\n",
"day 21: buy 1 unit at price 750.500000, total balance 3114.540040\n",
"day 26, sell 1 unit at price 789.289978, investment 0.865148 %, total balance 3903.830018,\n",
"day 31: buy 1 unit at price 790.799988, total balance 3113.030030\n",
"day 37: buy 1 unit at price 791.549988, total balance 2321.480042\n",
"day 39: buy 1 unit at price 782.789978, total balance 1538.690064\n",
"day 40: buy 1 unit at price 771.820007, total balance 766.870057\n",
"day 43: buy 1 unit at price 794.020020, total balance -27.149963\n",
"day 44: buy 1 unit at price 806.150024, total balance -833.299987\n",
"day 45: buy 1 unit at price 806.650024, total balance -1639.950011\n",
"day 48: buy 1 unit at price 806.359985, total balance -2446.309996\n",
"day 49: buy 1 unit at price 807.880005, total balance -3254.190001\n",
"day 50: buy 1 unit at price 804.609985, total balance -4058.799986\n",
"day 52: buy 1 unit at price 802.174988, total balance -4860.974974\n",
"day 53: buy 1 unit at price 805.020020, total balance -5665.994994\n",
"day 54, sell 1 unit at price 819.309998, investment 3.643216 %, total balance -4846.684996,\n",
"day 55: buy 1 unit at price 823.869995, total balance -5670.554991\n",
"day 60: buy 1 unit at price 796.789978, total balance -6467.344969\n",
"day 61: buy 1 unit at price 795.695007, total balance -7263.039976\n",
"day 63: buy 1 unit at price 801.489990, total balance -8064.529966\n",
"day 65: buy 1 unit at price 806.969971, total balance -8871.499937\n",
"day 66: buy 1 unit at price 808.380005, total balance -9679.879942\n",
"day 67: buy 1 unit at price 809.559998, total balance -10489.439940\n",
"day 68: buy 1 unit at price 813.669983, total balance -11303.109923\n",
"day 69: buy 1 unit at price 819.239990, total balance -12122.349913\n",
"day 73, sell 1 unit at price 828.070007, investment 9.173492 %, total balance -11294.279906,\n",
"day 80: buy 1 unit at price 835.239990, total balance -12129.519896\n",
"day 84: buy 1 unit at price 831.909973, total balance -12961.429869\n",
"day 85, sell 1 unit at price 835.369995, investment 9.272972 %, total balance -12126.059874,\n",
"day 86, sell 1 unit at price 838.679993, investment 8.745772 %, total balance -11287.379881,\n",
"day 88: buy 1 unit at price 845.539978, total balance -12132.919859\n",
"day 89: buy 1 unit at price 845.619995, total balance -12978.539854\n",
"day 90: buy 1 unit at price 847.200012, total balance -13825.739866\n",
"day 92: buy 1 unit at price 852.119995, total balance -14677.859861\n",
"day 93: buy 1 unit at price 848.400024, total balance -15526.259885\n",
"day 94: buy 1 unit at price 830.460022, total balance -16356.719907\n",
"day 96: buy 1 unit at price 817.580017, total balance -17174.299924\n",
"day 97: buy 1 unit at price 814.429993, total balance -17988.729917\n",
"day 98: buy 1 unit at price 819.510010, total balance -18808.239927\n",
"day 99: buy 1 unit at price 820.919983, total balance -19629.159910\n",
"day 101, sell 1 unit at price 831.500000, investment 9.265563 %, total balance -18797.659910,\n",
"day 102: buy 1 unit at price 829.559998, total balance -19627.219908\n",
"day 103, sell 1 unit at price 838.549988, investment 10.092164 %, total balance -18788.669920,\n",
"day 104: buy 1 unit at price 834.570007, total balance -19623.239927\n",
"day 105: buy 1 unit at price 831.409973, total balance -20454.649900\n",
"day 107: buy 1 unit at price 824.669983, total balance -21279.319883\n",
"day 108: buy 1 unit at price 824.729980, total balance -22104.049863\n",
"day 109: buy 1 unit at price 823.349976, total balance -22927.399839\n",
"day 112: buy 1 unit at price 837.169983, total balance -23764.569822\n",
"day 116: buy 1 unit at price 843.190002, total balance -24607.759824\n",
"day 119: buy 1 unit at price 871.729980, total balance -25479.489804\n",
"day 125: buy 1 unit at price 931.659973, total balance -26411.149777\n",
"day 127: buy 1 unit at price 934.299988, total balance -27345.449765\n",
"day 129: buy 1 unit at price 928.780029, total balance -28274.229794\n",
"day 130: buy 1 unit at price 930.599976, total balance -29204.829770\n",
"day 133: buy 1 unit at price 943.000000, total balance -30147.829770\n",
"day 134: buy 1 unit at price 919.619995, total balance -31067.449765\n",
"day 137, sell 1 unit at price 941.859985, investment 22.599708 %, total balance -30125.589780,\n",
"day 139: buy 1 unit at price 954.960022, total balance -31080.549802\n",
"day 140: buy 1 unit at price 969.539978, total balance -32050.089780\n",
"day 141, sell 1 unit at price 971.469971, investment 29.443034 %, total balance -31078.619809,\n",
"day 142: buy 1 unit at price 975.880005, total balance -32054.499814\n",
"day 143: buy 1 unit at price 964.859985, total balance -33019.359799\n",
"day 145: buy 1 unit at price 975.599976, total balance -33994.959775\n",
"day 147: buy 1 unit at price 976.570007, total balance -34971.529782\n",
"day 148: buy 1 unit at price 980.940002, total balance -35952.469784\n",
"day 149: buy 1 unit at price 983.409973, total balance -36935.879757\n",
"day 151: buy 1 unit at price 942.900024, total balance -37878.779781\n",
"day 152: buy 1 unit at price 953.400024, total balance -38832.179805\n",
"day 153: buy 1 unit at price 950.760010, total balance -39782.939815\n",
"day 154: buy 1 unit at price 942.309998, total balance -40725.249813\n",
"day 156: buy 1 unit at price 957.369995, total balance -41682.619808\n",
"day 157, sell 1 unit at price 950.630005, investment 20.211181 %, total balance -40731.989803,\n",
"day 158: buy 1 unit at price 959.450012, total balance -41691.439815\n",
"day 159: buy 1 unit at price 957.090027, total balance -42648.529842\n",
"day 164: buy 1 unit at price 917.789978, total balance -43566.319820\n",
"day 165: buy 1 unit at price 908.729980, total balance -44475.049800\n",
"day 167: buy 1 unit at price 911.710022, total balance -45386.759822\n",
"day 168, sell 1 unit at price 906.690002, investment 14.546146 %, total balance -44480.069820,\n",
"day 169, sell 1 unit at price 918.590027, investment 17.348210 %, total balance -43561.479793,\n",
"day 170: buy 1 unit at price 928.799988, total balance -44490.279781\n",
"day 173, sell 1 unit at price 947.159973, investment 22.717728 %, total balance -43543.119808,\n",
"day 184: buy 1 unit at price 941.530029, total balance -44484.649837\n",
"day 186: buy 1 unit at price 930.830017, total balance -45415.479854\n",
"day 187: buy 1 unit at price 930.390015, total balance -46345.869869\n",
"day 190: buy 1 unit at price 929.359985, total balance -47275.229854\n",
"day 191: buy 1 unit at price 926.789978, total balance -48202.019832\n",
"day 194: buy 1 unit at price 914.390015, total balance -49116.409847\n",
"day 196: buy 1 unit at price 922.219971, total balance -50038.629818\n",
"day 198: buy 1 unit at price 910.979980, total balance -50949.609798\n",
"day 201: buy 1 unit at price 924.690002, total balance -51874.299800\n",
"day 202: buy 1 unit at price 927.000000, total balance -52801.299800\n",
"day 206, sell 1 unit at price 921.289978, investment 16.028558 %, total balance -51880.009822,\n",
"day 207: buy 1 unit at price 929.570007, total balance -52809.579829\n",
"day 208: buy 1 unit at price 939.330017, total balance -53748.909846\n",
"day 213: buy 1 unit at price 926.500000, total balance -54675.409846\n",
"day 218: buy 1 unit at price 920.289978, total balance -55595.699824\n",
"day 219: buy 1 unit at price 915.000000, total balance -56510.699824\n",
"day 222: buy 1 unit at price 932.450012, total balance -57443.149836\n",
"day 224: buy 1 unit at price 920.969971, total balance -58364.119807\n",
"day 227: buy 1 unit at price 949.500000, total balance -59313.619807\n",
"day 228: buy 1 unit at price 959.109985, total balance -60272.729792\n",
"day 229: buy 1 unit at price 953.270020, total balance -61225.999812\n",
"day 232: buy 1 unit at price 969.960022, total balance -62195.959834\n",
"day 238: buy 1 unit at price 989.679993, total balance -63185.639827\n",
"day 240: buy 1 unit at price 992.179993, total balance -64177.819820\n",
"day 242: buy 1 unit at price 984.450012, total balance -65162.269832\n",
"day 244: buy 1 unit at price 968.450012, total balance -66130.719844\n",
"day 247: buy 1 unit at price 972.559998, total balance -67103.279842\n",
"day 248: buy 1 unit at price 1019.270020, total balance -68122.549862\n",
"day 249: buy 1 unit at price 1017.109985, total balance -69139.659847\n",
"day 250: buy 1 unit at price 1016.640015, total balance -70156.299862\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = neural_evolve.buy(fittest_nets)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/23.abcd-strategy-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"def abcd(trend, skip_loop = 4, ma = 7):\n",
" ma = pd.Series(trend).rolling(ma).mean().values\n",
" x = []\n",
" for a in range(ma.shape[0]):\n",
" for b in range(a, ma.shape[0], skip_loop):\n",
" for c in range(b, ma.shape[0], skip_loop):\n",
" for d in range(c, ma.shape[0], skip_loop):\n",
" if ma[b] > ma[a] and \\\n",
" (ma[c] < ma[b] and ma[c] > ma[a]) \\\n",
" and ma[d] > ma[b]:\n",
" x.append([a,b,c,d])\n",
" x_np = np.array(x)\n",
" ac = x_np[:,0].tolist() + x_np[:,2].tolist()\n",
" bd = x_np[:,1].tolist() + x_np[:,3].tolist()\n",
" ac_set = set(ac)\n",
" bd_set = set(bd)\n",
" signal = np.zeros(len(trend))\n",
" buy = list(ac_set - bd_set)\n",
" sell = list(list(bd_set - ac_set))\n",
" signal[buy] = 1.0\n",
" signal[sell] = -1.0\n",
" return signal"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1.08 s, sys: 8 ms, total: 1.09 s\n",
"Wall time: 1.09 s\n"
]
}
],
"source": [
"%%time\n",
"signal = abcd(df['Close'])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"def buy_stock(\n",
" real_movement,\n",
" signal,\n",
" initial_money = 10000,\n",
" max_buy = 1,\n",
" max_sell = 1,\n",
"):\n",
" \"\"\"\n",
" real_movement = actual movement in the real world\n",
" delay = how much interval you want to delay to change our decision from buy to sell, vice versa\n",
" initial_state = 1 is buy, 0 is sell\n",
" initial_money = 10000, ignore what kind of currency\n",
" max_buy = max quantity for share to buy\n",
" max_sell = max quantity for share to sell\n",
" \"\"\"\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" states_money = []\n",
" current_inventory = 0\n",
" \n",
" def buy(i, initial_money, current_inventory):\n",
" shares = initial_money // real_movement[i]\n",
" if shares < 1:\n",
" print(\n",
" 'day %d: total balances %f, not enough money to buy a unit price %f'\n",
" % (i, initial_money, real_movement[i])\n",
" )\n",
" else:\n",
" if shares > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = shares\n",
" initial_money -= buy_units * real_movement[i]\n",
" current_inventory += buy_units\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (i, buy_units, buy_units * real_movement[i], initial_money)\n",
" )\n",
" states_buy.append(0)\n",
" return initial_money, current_inventory\n",
" \n",
" for i in range(real_movement.shape[0]):\n",
" state = signal[i]\n",
" if state == 1:\n",
" initial_money, current_inventory = buy(\n",
" i, initial_money, current_inventory\n",
" )\n",
" states_buy.append(i)\n",
" elif state == -1:\n",
" if current_inventory == 0:\n",
" print('day %d: cannot sell anything, inventory 0' % (i))\n",
" else:\n",
" if current_inventory > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = current_inventory\n",
" current_inventory -= sell_units\n",
" total_sell = sell_units * real_movement[i]\n",
" initial_money += total_sell\n",
" try:\n",
" invest = (\n",
" (real_movement[i] - real_movement[states_buy[-1]])\n",
" / real_movement[states_buy[-1]]\n",
" ) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (i, sell_units, total_sell, invest, initial_money)\n",
" )\n",
" states_sell.append(i)\n",
" states_money.append(initial_money)\n",
" \n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest, states_money"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 6: buy 1 units at price 762.559998, total balance 9237.440002\n",
"day 7: buy 1 units at price 754.020020, total balance 8483.419982\n",
"day 8: buy 1 units at price 736.080017, total balance 7747.339965\n",
"day 9: buy 1 units at price 758.489990, total balance 6988.849975\n",
"day 10: buy 1 units at price 764.479980, total balance 6224.369995\n",
"day 11: buy 1 units at price 771.229980, total balance 5453.140015\n",
"day 12: buy 1 units at price 760.539978, total balance 4692.600037\n",
"day 13: buy 1 units at price 769.200012, total balance 3923.400025\n",
"day 14: buy 1 units at price 768.270020, total balance 3155.130005\n",
"day 15: buy 1 units at price 760.989990, total balance 2394.140015\n",
"day 19: buy 1 units at price 758.039978, total balance 1636.100037\n",
"day 21: buy 1 units at price 750.500000, total balance 885.600037\n",
"day 22: buy 1 units at price 762.520020, total balance 123.080017\n",
"day 23: total balances 123.080017, not enough money to buy a unit price 759.109985\n",
"day 24: total balances 123.080017, not enough money to buy a unit price 771.190002\n",
"day 25: total balances 123.080017, not enough money to buy a unit price 776.419983\n",
"day 26: total balances 123.080017, not enough money to buy a unit price 789.289978\n",
"day 27: total balances 123.080017, not enough money to buy a unit price 789.270020\n",
"day 43: total balances 123.080017, not enough money to buy a unit price 794.020020\n",
"day 148, sell 1 units at price 980.940002, investment 23.540966 %, total balance 1104.020019,\n",
"day 149, sell 1 units at price 983.409973, investment 23.852038 %, total balance 2087.429992,\n",
"day 239, sell 1 units at price 992.000000, investment 24.933878 %, total balance 3079.429992,\n",
"day 240, sell 1 units at price 992.179993, investment 24.956546 %, total balance 4071.609985,\n",
"day 241, sell 1 units at price 992.809998, investment 25.035890 %, total balance 5064.419983,\n",
"day 242, sell 1 units at price 984.450012, investment 23.983021 %, total balance 6048.869995,\n",
"day 243, sell 1 units at price 988.200012, investment 24.455302 %, total balance 7037.070007,\n",
"day 244, sell 1 units at price 968.450012, investment 21.967959 %, total balance 8005.520019,\n",
"day 245, sell 1 units at price 970.539978, investment 22.231172 %, total balance 8976.059997,\n",
"day 248, sell 1 units at price 1019.270020, investment 28.368302 %, total balance 9995.330017,\n",
"day 249, sell 1 units at price 1017.109985, investment 28.096264 %, total balance 11012.440002,\n",
"day 250, sell 1 units at price 1016.640015, investment 28.037076 %, total balance 12029.080017,\n",
"day 251, sell 1 units at price 1025.500000, investment 29.152915 %, total balance 13054.580017,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest, states_money = buy_stock(df.Close, signal)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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NhtgrPQ5c+YsEhOTSEpqzfz585tVtg8k8KMg38n2X1MA2P7rUQrzXbVS78iRQyksLKyVugDefns63323pNbqK8/27Vt56qnH6qz+L7/8nMcee6jO6hdCCCGEEKIinnxj/0dbdFQDt6R+tfihnutX7ce/ib3P52Pdqv2MvrBnA7fqZHfeeU+9XKd377488cTUermWEEIIIYQQ9c2TXwCALVICvxbDn+3zeozAz+vxsf3Xowwd0aVW5vrNnv0hK1cux+ks5u67/8SYMWM5cuQwd975exYv/g7guO//9a/nadeuHTfeeAsAO3Zs54knHuXjj+czbdpT9O7dh2uuGc8777zJgQP7KSjI5/DhQ3To0JGnn36esLAw8vPzefbZp9i7dw9JSa1JTEwiLi6eP//5vuPaVlxczNSpT7Bv3x5sNjudO3fh6aefY8OGdbz22ku8886HAMyfP4dPPvkvUVHRDB8+ggUL5rJ48XeBdo8bdzVr1qyiuLiYhx9+nAEDBuJ2u3noofvIycnB6XTSt28/Hnzw0cAyuUIIIYQQQjSUQMYvqmUFfi16qGfpbJ+fP+tXG6xWK++99zHPP/9vXnhhGllZmRWWv+aa6/jsswWBNs2fP5errvodFsvJ20tqvY0nnniGjz6ah9vtZsmSrwB4990ZREe34uOP5/P008+xefOmMq+1du1qCgsLmDXrE95/fzYPPvjoSWV27drJhx++xxtvzOTttz8gLy/vuOM5OTmcemp/3n33Y26//S6mT38ZAJvNxhNPTOWddz7kww/n4PF4WLz4s8rfMCGEEEIIIeqYpyAfaHmBX6UZP6XUP4FrgK7AaVrr38zXewHvAwlABnCL1npnTY7VpxOzfX61mfW77LIrAOjcuSu9eim2bPmV7t3LH0batWs32rfvwJo1P9Kv32msWrWCe+/9S5llTz/9TKKjowHo2/dUDh06CMDGjeu4774HAWjVKoZRo84u8/wePXqyb99e/vWv5xk0aAhnnTXypDIbN65n+PARxMXFAXDppeP45puvAsfDwyMYMWIUAP36ncarr74IgNfrZfbsWaxZ8yNer4e8vDzCwsLKf6OEEEIIIYSoJ548M/BrYUM9g8n4LQRGAyemwaYDr2mtewGvAW/WwrF6U1a2z682s34nstlseL3HrutyHb+YzLXXXs+nn85j8eJFjB59DlHlfBIR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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"close = df['Close']\n",
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(states_money, color='r', lw=2.)\n",
"plt.plot(states_money, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(states_money, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/3.signal-rolling-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def buy_stock(\n",
" real_movement,\n",
" delay = 5,\n",
" initial_state = 1,\n",
" initial_money = 10000,\n",
" max_buy = 1,\n",
" max_sell = 1,\n",
"):\n",
" \"\"\"\n",
" real_movement = actual movement in the real world\n",
" delay = how much interval you want to delay to change our decision from buy to sell, vice versa\n",
" initial_state = 1 is buy, 0 is sell\n",
" initial_money = 1000, ignore what kind of currency\n",
" max_buy = max quantity for share to buy\n",
" max_sell = max quantity for share to sell\n",
" \"\"\"\n",
" starting_money = initial_money\n",
" delay_change_decision = delay\n",
" current_decision = 0\n",
" state = initial_state\n",
" current_val = real_movement[0]\n",
" states_sell = []\n",
" states_buy = []\n",
" current_inventory = 0\n",
"\n",
" def buy(i, initial_money, current_inventory):\n",
" shares = initial_money // real_movement[i]\n",
" if shares < 1:\n",
" print(\n",
" 'day %d: total balances %f, not enough money to buy a unit price %f'\n",
" % (i, initial_money, real_movement[i])\n",
" )\n",
" else:\n",
" if shares > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = shares\n",
" initial_money -= buy_units * real_movement[i]\n",
" current_inventory += buy_units\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (i, buy_units, buy_units * real_movement[i], initial_money)\n",
" )\n",
" states_buy.append(0)\n",
" return initial_money, current_inventory\n",
"\n",
" if state == 1:\n",
" initial_money, current_inventory = buy(\n",
" 0, initial_money, current_inventory\n",
" )\n",
"\n",
" for i in range(1, real_movement.shape[0], 1):\n",
" if real_movement[i] < current_val and state == 0:\n",
" if current_decision < delay_change_decision:\n",
" current_decision += 1\n",
" else:\n",
" state = 1\n",
" initial_money, current_inventory = buy(\n",
" i, initial_money, current_inventory\n",
" )\n",
" current_decision = 0\n",
" states_buy.append(i)\n",
" if real_movement[i] > current_val and state == 1:\n",
" if current_decision < delay_change_decision:\n",
" current_decision += 1\n",
" else:\n",
" state = 0\n",
"\n",
" if current_inventory == 0:\n",
" print('day %d: cannot sell anything, inventory 0' % (i))\n",
" else:\n",
" if current_inventory > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = current_inventory\n",
" current_inventory -= sell_units\n",
" total_sell = sell_units * real_movement[i]\n",
" initial_money += total_sell\n",
" try:\n",
" invest = (\n",
" (real_movement[i] - real_movement[states_buy[-1]])\n",
" / real_movement[states_buy[-1]]\n",
" ) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (i, sell_units, total_sell, invest, initial_money)\n",
" )\n",
"\n",
" current_decision = 0\n",
" states_sell.append(i)\n",
" current_val = real_movement[i]\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 units at price 768.700012, total balance 9231.299988\n",
"day 11, sell 1 units at price 771.229980, investment 0.329123 %, total balance 10002.529968,\n",
"day 20: buy 1 units at price 747.919983, total balance 9254.609985\n",
"day 26, sell 1 units at price 789.289978, investment 5.531340 %, total balance 10043.899963,\n",
"day 36: buy 1 units at price 789.909973, total balance 9253.989990\n",
"day 44, sell 1 units at price 806.150024, investment 2.055937 %, total balance 10060.140014,\n",
"day 57: buy 1 units at price 832.150024, total balance 9227.989990\n",
"day 67, sell 1 units at price 809.559998, investment -2.714658 %, total balance 10037.549988,\n",
"day 81: buy 1 units at price 830.630005, total balance 9206.919983\n",
"day 88, sell 1 units at price 845.539978, investment 1.795020 %, total balance 10052.459961,\n",
"day 97: buy 1 units at price 814.429993, total balance 9238.029968\n",
"day 103, sell 1 units at price 838.549988, investment 2.961580 %, total balance 10076.579956,\n",
"day 109: buy 1 units at price 823.349976, total balance 9253.229980\n",
"day 116, sell 1 units at price 843.190002, investment 2.409671 %, total balance 10096.419982,\n",
"day 134: buy 1 units at price 919.619995, total balance 9176.799987\n",
"day 139, sell 1 units at price 954.960022, investment 3.842895 %, total balance 10131.760009,\n",
"day 153: buy 1 units at price 950.760010, total balance 9180.999999\n",
"day 167, sell 1 units at price 911.710022, investment -4.107239 %, total balance 10092.710021,\n",
"day 182: buy 1 units at price 947.799988, total balance 9144.910033\n",
"day 194, sell 1 units at price 914.390015, investment -3.525002 %, total balance 10059.300048,\n",
"day 203: buy 1 units at price 921.280029, total balance 9138.020019\n",
"day 214, sell 1 units at price 929.080017, investment 0.846647 %, total balance 10067.100036,\n",
"day 224: buy 1 units at price 920.969971, total balance 9146.130065\n",
"day 230, sell 1 units at price 957.789978, investment 3.997960 %, total balance 10103.920043,\n",
"day 242: buy 1 units at price 984.450012, total balance 9119.470031\n",
"day 251, sell 1 units at price 1025.500000, investment 4.169840 %, total balance 10144.970031,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = buy_stock(df.Close, initial_state = 1, \n",
" delay = 4, initial_money = 10000)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"close = df['Close']\n",
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/4.policy-gradient-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"class Agent:\n",
"\n",
" LEARNING_RATE = 1e-4\n",
" LAYER_SIZE = 256\n",
" GAMMA = 0.9\n",
" OUTPUT_SIZE = 3\n",
"\n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.X = tf.placeholder(tf.float32, (None, self.state_size))\n",
" self.REWARDS = tf.placeholder(tf.float32, (None))\n",
" self.ACTIONS = tf.placeholder(tf.int32, (None))\n",
" feed_forward = tf.layers.dense(self.X, self.LAYER_SIZE, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_forward, self.OUTPUT_SIZE, activation = tf.nn.softmax)\n",
" input_y = tf.one_hot(self.ACTIONS, self.OUTPUT_SIZE)\n",
" loglike = tf.log((input_y * (input_y - self.logits) + (1 - input_y) * (input_y + self.logits)) + 1)\n",
" rewards = tf.tile(tf.reshape(self.REWARDS, (-1,1)), [1, self.OUTPUT_SIZE])\n",
" self.cost = -tf.reduce_mean(loglike * (rewards + 1)) \n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = self.LEARNING_RATE).minimize(self.cost)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def predict(self, inputs):\n",
" return self.sess.run(self.logits, feed_dict={self.X:inputs})\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
" \n",
" def discount_rewards(self, r):\n",
" discounted_r = np.zeros_like(r)\n",
" running_add = 0\n",
" for t in reversed(range(0, r.size)):\n",
" running_add = running_add * self.GAMMA + r[t]\n",
" discounted_r[t] = running_add\n",
" return discounted_r\n",
" \n",
" def get_predicted_action(self, sequence):\n",
" prediction = self.predict(np.array(sequence))[0]\n",
" return np.argmax(prediction)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.get_predicted_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" ep_history = []\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.get_predicted_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" if action == 1 and starting_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" starting_money -= close[t]\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" ep_history.append([state,action,starting_money,next_state])\n",
" state = next_state\n",
" ep_history = np.array(ep_history)\n",
" ep_history[:,2] = self.discount_rewards(ep_history[:,2])\n",
" cost, _ = self.sess.run([self.cost, self.optimizer], feed_dict={self.X:np.vstack(ep_history[:,0]),\n",
" self.REWARDS:ep_history[:,2],\n",
" self.ACTIONS:ep_history[:,1]})\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 10, total rewards: 1781.590144.3, cost: -3782.833740, total money: 7062.900203\n",
"epoch: 20, total rewards: 1808.720396.3, cost: -6238.727539, total money: 10819.470396\n",
"epoch: 30, total rewards: 644.675288.3, cost: -10399.220703, total money: 10644.675288\n",
"epoch: 40, total rewards: 1696.944943.3, cost: -9798.079102, total money: 11696.944943\n",
"epoch: 50, total rewards: 593.719845.3, cost: -13938.982422, total money: 10593.719845\n",
"epoch: 60, total rewards: 634.539913.3, cost: -14890.398438, total money: 9645.289913\n",
"epoch: 70, total rewards: 1586.160156.3, cost: -10411.115234, total money: 11586.160156\n",
"epoch: 80, total rewards: 368.749937.3, cost: -15986.910156, total money: 10368.749937\n",
"epoch: 90, total rewards: 733.844603.3, cost: -15352.789062, total money: 8857.304625\n",
"epoch: 100, total rewards: 645.715148.3, cost: -15976.339844, total money: 10645.715148\n",
"epoch: 110, total rewards: 994.814937.3, cost: -11198.958984, total money: 4471.054988\n",
"epoch: 120, total rewards: 1771.289852.3, cost: -6539.313477, total money: 5164.829891\n",
"epoch: 130, total rewards: 1643.744995.3, cost: -11630.438477, total money: 11643.744995\n",
"epoch: 140, total rewards: 1877.095029.3, cost: -7103.230957, total money: 9104.255063\n",
"epoch: 150, total rewards: 481.749932.3, cost: -18531.593750, total money: 10481.749932\n",
"epoch: 160, total rewards: 638.035152.3, cost: -16995.314453, total money: 10638.035152\n",
"epoch: 170, total rewards: 1188.049925.3, cost: -13348.065430, total money: 10263.189940\n",
"epoch: 180, total rewards: 633.885008.3, cost: -14666.952148, total money: 10633.885008\n",
"epoch: 190, total rewards: 1675.079952.3, cost: -9106.298828, total money: 5977.189998\n",
"epoch: 200, total rewards: 567.955136.3, cost: -17828.587891, total money: 10567.955136\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"agent = Agent(state_size = window_size,\n",
" window_size = window_size,\n",
" trend = close,\n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 12: buy 1 unit at price 760.539978, total balance 9239.460022\n",
"day 19, sell 1 unit at price 758.039978, investment -0.328714 %, total balance 9997.500000,\n",
"day 23: buy 1 unit at price 759.109985, total balance 9238.390015\n",
"day 26, sell 1 unit at price 789.289978, investment 3.975708 %, total balance 10027.679993,\n",
"day 27: buy 1 unit at price 789.270020, total balance 9238.409973\n",
"day 28, sell 1 unit at price 796.099976, investment 0.865351 %, total balance 10034.509949,\n",
"day 31: buy 1 unit at price 790.799988, total balance 9243.709961\n",
"day 33, sell 1 unit at price 796.419983, investment 0.710672 %, total balance 10040.129944,\n",
"day 35: buy 1 unit at price 791.260010, total balance 9248.869934\n",
"day 36: buy 1 unit at price 789.909973, total balance 8458.959961\n",
"day 37, sell 1 unit at price 791.549988, investment 0.036648 %, total balance 9250.509949,\n",
"day 38: buy 1 unit at price 785.049988, total balance 8465.459961\n",
"day 39: buy 1 unit at price 782.789978, total balance 7682.669983\n",
"day 40: buy 1 unit at price 771.820007, total balance 6910.849976\n",
"day 41, sell 1 unit at price 786.140015, investment -0.477264 %, total balance 7696.989991,\n",
"day 42, sell 1 unit at price 786.900024, investment 0.235658 %, total balance 8483.890015,\n",
"day 44: buy 1 unit at price 806.150024, total balance 7677.739991\n",
"day 46: buy 1 unit at price 804.789978, total balance 6872.950013\n",
"day 50: buy 1 unit at price 804.609985, total balance 6068.340028\n",
"day 51: buy 1 unit at price 806.070007, total balance 5262.270021\n",
"day 52, sell 1 unit at price 802.174988, investment 2.476400 %, total balance 6064.445009,\n",
"day 53, sell 1 unit at price 805.020020, investment 4.301523 %, total balance 6869.465029,\n",
"day 54, sell 1 unit at price 819.309998, investment 1.632447 %, total balance 7688.775027,\n",
"day 56: buy 1 unit at price 835.669983, total balance 6853.105044\n",
"day 57: buy 1 unit at price 832.150024, total balance 6020.955020\n",
"day 59, sell 1 unit at price 802.320007, investment -0.306909 %, total balance 6823.275027,\n",
"day 61: buy 1 unit at price 795.695007, total balance 6027.580020\n",
"day 63: buy 1 unit at price 801.489990, total balance 5226.090030\n",
"day 64, sell 1 unit at price 801.340027, investment -0.406403 %, total balance 6027.430057,\n",
"day 65: buy 1 unit at price 806.969971, total balance 5220.460086\n",
"day 71: buy 1 unit at price 818.979980, total balance 4401.480106\n",
"day 72: buy 1 unit at price 824.159973, total balance 3577.320133\n",
"day 73, sell 1 unit at price 828.070007, investment 2.729291 %, total balance 4405.390140,\n",
"day 74, sell 1 unit at price 831.659973, investment -0.479856 %, total balance 5237.050113,\n",
"day 78, sell 1 unit at price 829.280029, investment -0.344889 %, total balance 6066.330142,\n",
"day 79: buy 1 unit at price 823.210022, total balance 5243.120120\n",
"day 80: buy 1 unit at price 835.239990, total balance 4407.880130\n",
"day 81, sell 1 unit at price 830.630005, investment 4.390501 %, total balance 5238.510135,\n",
"day 83: buy 1 unit at price 827.780029, total balance 4410.730106\n",
"day 86, sell 1 unit at price 838.679993, investment 4.640108 %, total balance 5249.410099,\n",
"day 88, sell 1 unit at price 845.539978, investment 4.779609 %, total balance 6094.950077,\n",
"day 89, sell 1 unit at price 845.619995, investment 3.252829 %, total balance 6940.570072,\n",
"day 90: buy 1 unit at price 847.200012, total balance 6093.370060\n",
"day 92, sell 1 unit at price 852.119995, investment 3.392548 %, total balance 6945.490055,\n",
"day 93, sell 1 unit at price 848.400024, investment 3.059973 %, total balance 7793.890079,\n",
"day 94: buy 1 unit at price 830.460022, total balance 6963.430057\n",
"day 95, sell 1 unit at price 829.590027, investment -0.676448 %, total balance 7793.020084,\n",
"day 98: buy 1 unit at price 819.510010, total balance 6973.510074\n",
"day 101: buy 1 unit at price 831.500000, total balance 6142.010074\n",
"day 102: buy 1 unit at price 829.559998, total balance 5312.450076\n",
"day 103, sell 1 unit at price 838.549988, investment 1.301065 %, total balance 6151.000064,\n",
"day 105, sell 1 unit at price 831.409973, investment -1.863791 %, total balance 6982.410037,\n",
"day 106: buy 1 unit at price 827.880005, total balance 6154.530032\n",
"day 108, sell 1 unit at price 824.729980, investment -0.689984 %, total balance 6979.260012,\n",
"day 109: buy 1 unit at price 823.349976, total balance 6155.910036\n",
"day 110, sell 1 unit at price 824.320007, investment 0.586936 %, total balance 6980.230043,\n",
"day 111, sell 1 unit at price 823.559998, investment -0.954901 %, total balance 7803.790041,\n",
"day 113, sell 1 unit at price 836.820007, investment 0.875164 %, total balance 8640.610048,\n",
"day 114: buy 1 unit at price 838.210022, total balance 7802.400026\n",
"day 115: buy 1 unit at price 841.650024, total balance 6960.750002\n",
"day 116, sell 1 unit at price 843.190002, investment 1.849301 %, total balance 7803.940004,\n",
"day 117, sell 1 unit at price 862.760010, investment 4.786547 %, total balance 8666.700014,\n",
"day 118, sell 1 unit at price 872.299988, investment 4.066996 %, total balance 9539.000002,\n",
"day 119: buy 1 unit at price 871.729980, total balance 8667.270022\n",
"day 120, sell 1 unit at price 874.250000, investment 3.873341 %, total balance 9541.520022,\n",
"day 121: buy 1 unit at price 905.960022, total balance 8635.560000\n",
"day 123, sell 1 unit at price 916.440002, investment 5.128884 %, total balance 9552.000002,\n",
"day 124: buy 1 unit at price 927.039978, total balance 8624.960024\n",
"day 127: buy 1 unit at price 934.299988, total balance 7690.660036\n",
"day 128: buy 1 unit at price 932.169983, total balance 6758.490053\n",
"day 129, sell 1 unit at price 928.780029, investment 2.518876 %, total balance 7687.270082,\n",
"day 130: buy 1 unit at price 930.599976, total balance 6756.670106\n",
"day 131: buy 1 unit at price 932.219971, total balance 5824.450135\n",
"day 132: buy 1 unit at price 937.080017, total balance 4887.370118\n",
"day 133: buy 1 unit at price 943.000000, total balance 3944.370118\n",
"day 134, sell 1 unit at price 919.619995, investment -0.800395 %, total balance 4863.990113,\n",
"day 135: buy 1 unit at price 930.239990, total balance 3933.750123\n",
"day 136: buy 1 unit at price 934.010010, total balance 2999.740113\n",
"day 137, sell 1 unit at price 941.859985, investment 0.809162 %, total balance 3941.600098,\n",
"day 138, sell 1 unit at price 948.820007, investment 1.786157 %, total balance 4890.420105,\n",
"day 139: buy 1 unit at price 954.960022, total balance 3935.460083\n",
"day 140, sell 1 unit at price 969.539978, investment 4.184397 %, total balance 4905.000061,\n",
"day 141: buy 1 unit at price 971.469971, total balance 3933.530090\n",
"day 142: buy 1 unit at price 975.880005, total balance 2957.650085\n",
"day 143, sell 1 unit at price 964.859985, investment 3.501321 %, total balance 3922.510070,\n",
"day 145: buy 1 unit at price 975.599976, total balance 2946.910094\n",
"day 146, sell 1 unit at price 983.679993, investment 4.972892 %, total balance 3930.590087,\n",
"day 147: buy 1 unit at price 976.570007, total balance 2954.020080\n",
"day 148, sell 1 unit at price 980.940002, investment 4.023330 %, total balance 3934.960082,\n",
"day 149, sell 1 unit at price 983.409973, investment 5.715728 %, total balance 4918.370055,\n",
"day 150: buy 1 unit at price 949.830017, total balance 3968.540038\n",
"day 151: buy 1 unit at price 942.900024, total balance 3025.640014\n",
"day 153, sell 1 unit at price 950.760010, investment 1.793343 %, total balance 3976.400024,\n",
"day 154: buy 1 unit at price 942.309998, total balance 3034.090026\n",
"day 155: buy 1 unit at price 939.780029, total balance 2094.309997\n",
"day 156: buy 1 unit at price 957.369995, total balance 1136.940002\n",
"day 157, sell 1 unit at price 950.630005, investment -0.453424 %, total balance 2087.570007,\n",
"day 158: buy 1 unit at price 959.450012, total balance 1128.119995\n",
"day 159: buy 1 unit at price 957.090027, total balance 171.029968\n",
"day 161, sell 1 unit at price 952.270020, investment -1.976381 %, total balance 1123.299988,\n",
"day 164, sell 1 unit at price 917.789978, investment -5.952579 %, total balance 2041.089966,\n",
"day 165, sell 1 unit at price 908.729980, investment -6.854243 %, total balance 2949.819946,\n",
"day 166: buy 1 unit at price 898.700012, total balance 2051.119934\n",
"day 168, sell 1 unit at price 906.690002, investment -7.155658 %, total balance 2957.809936,\n",
"day 170: buy 1 unit at price 928.799988, total balance 2029.009948\n",
"day 172, sell 1 unit at price 943.830017, investment -0.631692 %, total balance 2972.839965,\n",
"day 173, sell 1 unit at price 947.159973, investment 0.451792 %, total balance 3919.999938,\n",
"day 175: buy 1 unit at price 953.419983, total balance 2966.579955\n",
"day 176, sell 1 unit at price 965.400024, investment 2.450364 %, total balance 3931.979979,\n",
"day 177, sell 1 unit at price 970.890015, investment 3.310348 %, total balance 4902.869994,\n",
"day 179, sell 1 unit at price 972.919983, investment 1.624240 %, total balance 5875.789977,\n",
"day 182, sell 1 unit at price 947.799988, investment -1.214240 %, total balance 6823.589965,\n",
"day 184: buy 1 unit at price 941.530029, total balance 5882.059936\n",
"day 185: buy 1 unit at price 930.500000, total balance 4951.559936\n",
"day 186, sell 1 unit at price 930.830017, investment -2.743735 %, total balance 5882.389953,\n",
"day 187: buy 1 unit at price 930.390015, total balance 4951.999938\n",
"day 188, sell 1 unit at price 923.650024, investment 2.776234 %, total balance 5875.649962,\n",
"day 189: buy 1 unit at price 927.960022, total balance 4947.689940\n",
"day 191, sell 1 unit at price 926.789978, investment -0.216409 %, total balance 5874.479918,\n",
"day 192, sell 1 unit at price 922.900024, investment -3.201103 %, total balance 6797.379942,\n",
"day 194, sell 1 unit at price 914.390015, investment -2.882544 %, total balance 7711.769957,\n",
"day 195, sell 1 unit at price 922.669983, investment -0.841485 %, total balance 8634.439940,\n",
"day 196: buy 1 unit at price 922.219971, total balance 7712.219969\n",
"day 198: buy 1 unit at price 910.979980, total balance 6801.239989\n",
"day 199, sell 1 unit at price 910.669983, investment -2.119545 %, total balance 7711.909972,\n",
"day 201: buy 1 unit at price 924.690002, total balance 6787.219970\n",
"day 202, sell 1 unit at price 927.000000, investment -0.103455 %, total balance 7714.219970,\n",
"day 203, sell 1 unit at price 921.280029, investment -0.101922 %, total balance 8635.499999,\n",
"day 204: buy 1 unit at price 915.890015, total balance 7719.609984\n",
"day 206: buy 1 unit at price 921.289978, total balance 6798.320006\n",
"day 207, sell 1 unit at price 929.570007, investment 2.040663 %, total balance 7727.890013,\n",
"day 208, sell 1 unit at price 939.330017, investment 1.583235 %, total balance 8667.220030,\n",
"day 210, sell 1 unit at price 928.450012, investment 1.371343 %, total balance 9595.670042,\n",
"day 213: buy 1 unit at price 926.500000, total balance 8669.170042\n",
"day 215: buy 1 unit at price 932.070007, total balance 7737.100035\n",
"day 217, sell 1 unit at price 925.109985, investment 0.414637 %, total balance 8662.210020,\n",
"day 218: buy 1 unit at price 920.289978, total balance 7741.920042\n",
"day 219: buy 1 unit at price 915.000000, total balance 6826.920042\n",
"day 221: buy 1 unit at price 931.580017, total balance 5895.340025\n",
"day 222, sell 1 unit at price 932.450012, investment 0.642203 %, total balance 6827.790037,\n",
"day 223, sell 1 unit at price 928.530029, investment -0.379797 %, total balance 7756.320066,\n",
"day 224: buy 1 unit at price 920.969971, total balance 6835.350095\n",
"day 225: buy 1 unit at price 924.859985, total balance 5910.490110\n",
"day 227, sell 1 unit at price 949.500000, investment 3.174002 %, total balance 6859.990110,\n",
"day 228, sell 1 unit at price 959.109985, investment 4.820763 %, total balance 7819.100095,\n",
"day 230: buy 1 unit at price 957.789978, total balance 6861.310117\n",
"day 233, sell 1 unit at price 978.890015, investment 5.078469 %, total balance 7840.200132,\n",
"day 234, sell 1 unit at price 977.000000, investment 6.083806 %, total balance 8817.200132,\n",
"day 235: buy 1 unit at price 972.599976, total balance 7844.600156\n",
"day 236: buy 1 unit at price 989.250000, total balance 6855.350156\n",
"day 237, sell 1 unit at price 987.830017, investment 6.808602 %, total balance 7843.180173,\n",
"day 240, sell 1 unit at price 992.179993, investment 3.590559 %, total balance 8835.360166,\n",
"day 243, sell 1 unit at price 988.200012, investment 1.603952 %, total balance 9823.560178,\n",
"day 245, sell 1 unit at price 970.539978, investment -1.891334 %, total balance 10794.100156,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/5.q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"\n",
"class Agent:\n",
" def __init__(self, state_size, window_size, trend, skip, batch_size):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.action_size = 3\n",
" self.batch_size = batch_size\n",
" self.memory = deque(maxlen = 1000)\n",
" self.inventory = []\n",
"\n",
" self.gamma = 0.95\n",
" self.epsilon = 0.5\n",
" self.epsilon_min = 0.01\n",
" self.epsilon_decay = 0.999\n",
"\n",
" tf.reset_default_graph()\n",
" self.sess = tf.InteractiveSession()\n",
" self.X = tf.placeholder(tf.float32, [None, self.state_size])\n",
" self.Y = tf.placeholder(tf.float32, [None, self.action_size])\n",
" feed = tf.layers.dense(self.X, 256, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed, self.action_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.GradientDescentOptimizer(1e-5).minimize(\n",
" self.cost\n",
" )\n",
" self.sess.run(tf.global_variables_initializer())\n",
"\n",
" def act(self, state):\n",
" if random.random() <= self.epsilon:\n",
" return random.randrange(self.action_size)\n",
" return np.argmax(\n",
" self.sess.run(self.logits, feed_dict = {self.X: state})[0]\n",
" )\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
"\n",
" def replay(self, batch_size):\n",
" mini_batch = []\n",
" l = len(self.memory)\n",
" for i in range(l - batch_size, l):\n",
" mini_batch.append(self.memory[i])\n",
" replay_size = len(mini_batch)\n",
" X = np.empty((replay_size, self.state_size))\n",
" Y = np.empty((replay_size, self.action_size))\n",
" states = np.array([a[0][0] for a in mini_batch])\n",
" new_states = np.array([a[3][0] for a in mini_batch])\n",
" Q = self.sess.run(self.logits, feed_dict = {self.X: states})\n",
" Q_new = self.sess.run(self.logits, feed_dict = {self.X: new_states})\n",
" for i in range(len(mini_batch)):\n",
" state, action, reward, next_state, done = mini_batch[i]\n",
" target = Q[i]\n",
" target[action] = reward\n",
" if not done:\n",
" target[action] += self.gamma * np.amax(Q_new[i])\n",
" X[i] = state\n",
" Y[i] = target\n",
" cost, _ = self.sess.run(\n",
" [self.cost, self.optimizer], feed_dict = {self.X: X, self.Y: Y}\n",
" )\n",
" if self.epsilon > self.epsilon_min:\n",
" self.epsilon *= self.epsilon_decay\n",
" return cost\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t] and t < (len(self.trend) - self.half_window):\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" self.memory.append((state, action, invest, \n",
" next_state, starting_money < initial_money))\n",
" state = next_state\n",
" batch_size = min(self.batch_size, len(self.memory))\n",
" cost = self.replay(batch_size)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 10, total rewards: 274.710201.3, cost: 0.810730, total money: 10274.710201\n",
"epoch: 20, total rewards: 161.429929.3, cost: 0.406487, total money: 10161.429929\n",
"epoch: 30, total rewards: 89.659849.3, cost: 0.225568, total money: 10089.659849\n",
"epoch: 40, total rewards: 121.209836.3, cost: 0.152499, total money: 10121.209836\n",
"epoch: 50, total rewards: 94.869810.3, cost: 0.120762, total money: 10094.869810\n",
"epoch: 60, total rewards: 123.609922.3, cost: 0.097353, total money: 10123.609922\n",
"epoch: 70, total rewards: 130.149901.3, cost: 0.131718, total money: 10130.149901\n",
"epoch: 80, total rewards: 55.369871.3, cost: 0.072531, total money: 10055.369871\n",
"epoch: 90, total rewards: 177.780026.3, cost: 0.062346, total money: 10177.780026\n",
"epoch: 100, total rewards: 151.249997.3, cost: 0.056566, total money: 10151.249997\n",
"epoch: 110, total rewards: 101.629942.3, cost: 0.050717, total money: 10101.629942\n",
"epoch: 120, total rewards: 138.329892.3, cost: 0.075178, total money: 10138.329892\n",
"epoch: 130, total rewards: 187.559812.3, cost: 0.039170, total money: 10187.559812\n",
"epoch: 140, total rewards: 125.699889.3, cost: 0.035156, total money: 10125.699889\n",
"epoch: 150, total rewards: 138.249876.3, cost: 0.403965, total money: 10138.249876\n",
"epoch: 160, total rewards: 141.329832.3, cost: 0.029966, total money: 10141.329832\n",
"epoch: 170, total rewards: 179.989928.3, cost: 0.027219, total money: 10179.989928\n",
"epoch: 180, total rewards: 191.619871.3, cost: 0.025002, total money: 10191.619871\n",
"epoch: 190, total rewards: 191.929868.3, cost: 0.149151, total money: 10191.929868\n",
"epoch: 200, total rewards: 113.759886.3, cost: 0.021398, total money: 10113.759886\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip, \n",
" batch_size = batch_size)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 4: buy 1 unit at price 790.510010, total balance 9209.489990\n",
"day 5, sell 1 unit at price 785.309998, investment -0.657805 %, total balance 9994.799988,\n",
"day 14: buy 1 unit at price 768.270020, total balance 9226.529968\n",
"day 16, sell 1 unit at price 761.679993, investment -0.857775 %, total balance 9988.209961,\n",
"day 22: buy 1 unit at price 762.520020, total balance 9225.689941\n",
"day 23, sell 1 unit at price 759.109985, investment -0.447206 %, total balance 9984.799926,\n",
"day 28: buy 1 unit at price 796.099976, total balance 9188.699950\n",
"day 29, sell 1 unit at price 797.070007, investment 0.121848 %, total balance 9985.769957,\n",
"day 32: buy 1 unit at price 794.200012, total balance 9191.569945\n",
"day 35: buy 1 unit at price 791.260010, total balance 8400.309935\n",
"day 36: buy 1 unit at price 789.909973, total balance 7610.399962\n",
"day 37, sell 1 unit at price 791.549988, investment -0.333672 %, total balance 8401.949950,\n",
"day 38, sell 1 unit at price 785.049988, investment -0.784827 %, total balance 9186.999938,\n",
"day 39, sell 1 unit at price 782.789978, investment -0.901368 %, total balance 9969.789916,\n",
"day 42: buy 1 unit at price 786.900024, total balance 9182.889892\n",
"day 43: buy 1 unit at price 794.020020, total balance 8388.869872\n",
"day 44: buy 1 unit at price 806.150024, total balance 7582.719848\n",
"day 45: buy 1 unit at price 806.650024, total balance 6776.069824\n",
"day 46: buy 1 unit at price 804.789978, total balance 5971.279846\n",
"day 48, sell 1 unit at price 806.359985, investment 2.472990 %, total balance 6777.639831,\n",
"day 49, sell 1 unit at price 807.880005, investment 1.745546 %, total balance 7585.519836,\n",
"day 50, sell 1 unit at price 804.609985, investment -0.191036 %, total balance 8390.129821,\n",
"day 51, sell 1 unit at price 806.070007, investment -0.071904 %, total balance 9196.199828,\n",
"day 53: buy 1 unit at price 805.020020, total balance 8391.179808\n",
"day 56, sell 1 unit at price 835.669983, investment 3.837027 %, total balance 9226.849791,\n",
"day 57, sell 1 unit at price 832.150024, investment 3.370103 %, total balance 10058.999815,\n",
"day 63: buy 1 unit at price 801.489990, total balance 9257.509825\n",
"day 66: buy 1 unit at price 808.380005, total balance 8449.129820\n",
"day 67, sell 1 unit at price 809.559998, investment 1.006876 %, total balance 9258.689818,\n",
"day 68, sell 1 unit at price 813.669983, investment 0.654392 %, total balance 10072.359801,\n",
"day 71: buy 1 unit at price 818.979980, total balance 9253.379821\n",
"day 72: buy 1 unit at price 824.159973, total balance 8429.219848\n",
"day 73: buy 1 unit at price 828.070007, total balance 7601.149841\n",
"day 74: buy 1 unit at price 831.659973, total balance 6769.489868\n",
"day 75: buy 1 unit at price 830.760010, total balance 5938.729858\n",
"day 81, sell 1 unit at price 830.630005, investment 1.422504 %, total balance 6769.359863,\n",
"day 82, sell 1 unit at price 829.080017, investment 0.596977 %, total balance 7598.439880,\n",
"day 85, sell 1 unit at price 835.369995, investment 0.881567 %, total balance 8433.809875,\n",
"day 87, sell 1 unit at price 843.250000, investment 1.393602 %, total balance 9277.059875,\n",
"day 88, sell 1 unit at price 845.539978, investment 1.779090 %, total balance 10122.599853,\n",
"day 92: buy 1 unit at price 852.119995, total balance 9270.479858\n",
"day 93, sell 1 unit at price 848.400024, investment -0.436555 %, total balance 10118.879882,\n",
"day 99: buy 1 unit at price 820.919983, total balance 9297.959899\n",
"day 101: buy 1 unit at price 831.500000, total balance 8466.459899\n",
"day 104, sell 1 unit at price 834.570007, investment 1.662772 %, total balance 9301.029906,\n",
"day 105, sell 1 unit at price 831.409973, investment -0.010827 %, total balance 10132.439879,\n",
"day 111: buy 1 unit at price 823.559998, total balance 9308.879881\n",
"day 113, sell 1 unit at price 836.820007, investment 1.610084 %, total balance 10145.699888,\n",
"day 116: buy 1 unit at price 843.190002, total balance 9302.509886\n",
"day 117: buy 1 unit at price 862.760010, total balance 8439.749876\n",
"day 118: buy 1 unit at price 872.299988, total balance 7567.449888\n",
"day 119, sell 1 unit at price 871.729980, investment 3.384762 %, total balance 8439.179868,\n",
"day 120: buy 1 unit at price 874.250000, total balance 7564.929868\n",
"day 121: buy 1 unit at price 905.960022, total balance 6658.969846\n",
"day 122, sell 1 unit at price 912.570007, investment 5.773332 %, total balance 7571.539853,\n",
"day 123, sell 1 unit at price 916.440002, investment 5.060187 %, total balance 8487.979855,\n",
"day 124, sell 1 unit at price 927.039978, investment 6.038316 %, total balance 9415.019833,\n",
"day 125: buy 1 unit at price 931.659973, total balance 8483.359860\n",
"day 126: buy 1 unit at price 927.130005, total balance 7556.229855\n",
"day 127: buy 1 unit at price 934.299988, total balance 6621.929867\n",
"day 128: buy 1 unit at price 932.169983, total balance 5689.759884\n",
"day 129, sell 1 unit at price 928.780029, investment 2.518876 %, total balance 6618.539913,\n",
"day 130, sell 1 unit at price 930.599976, investment -0.113775 %, total balance 7549.139889,\n",
"day 131: buy 1 unit at price 932.219971, total balance 6616.919918\n",
"day 133, sell 1 unit at price 943.000000, investment 1.711734 %, total balance 7559.919918,\n",
"day 134, sell 1 unit at price 919.619995, investment -1.571229 %, total balance 8479.539913,\n",
"day 136, sell 1 unit at price 934.010010, investment 0.197392 %, total balance 9413.549923,\n",
"day 137, sell 1 unit at price 941.859985, investment 1.034092 %, total balance 10355.409908,\n",
"day 139: buy 1 unit at price 954.960022, total balance 9400.449886\n",
"day 141, sell 1 unit at price 971.469971, investment 1.728863 %, total balance 10371.919857,\n",
"day 144: buy 1 unit at price 966.950012, total balance 9404.969845\n",
"day 145, sell 1 unit at price 975.599976, investment 0.894562 %, total balance 10380.569821,\n",
"day 149: buy 1 unit at price 983.409973, total balance 9397.159848\n",
"day 151: buy 1 unit at price 942.900024, total balance 8454.259824\n",
"day 154, sell 1 unit at price 942.309998, investment -4.179333 %, total balance 9396.569822,\n",
"day 157: buy 1 unit at price 950.630005, total balance 8445.939817\n",
"day 159, sell 1 unit at price 957.090027, investment 1.504932 %, total balance 9403.029844,\n",
"day 160: buy 1 unit at price 965.590027, total balance 8437.439817\n",
"day 161, sell 1 unit at price 952.270020, investment 0.172519 %, total balance 9389.709837,\n",
"day 162, sell 1 unit at price 927.330017, investment -3.962345 %, total balance 10317.039854,\n",
"day 173: buy 1 unit at price 947.159973, total balance 9369.879881\n",
"day 176, sell 1 unit at price 965.400024, investment 1.925762 %, total balance 10335.279905,\n",
"day 180: buy 1 unit at price 980.340027, total balance 9354.939878\n",
"day 184, sell 1 unit at price 941.530029, investment -3.958830 %, total balance 10296.469907,\n",
"day 185: buy 1 unit at price 930.500000, total balance 9365.969907\n",
"day 186: buy 1 unit at price 930.830017, total balance 8435.139890\n",
"day 187, sell 1 unit at price 930.390015, investment -0.011820 %, total balance 9365.529905,\n",
"day 189, sell 1 unit at price 927.960022, investment -0.308326 %, total balance 10293.489927,\n",
"day 197: buy 1 unit at price 926.960022, total balance 9366.529905\n",
"day 200, sell 1 unit at price 906.659973, investment -2.189959 %, total balance 10273.189878,\n",
"day 203: buy 1 unit at price 921.280029, total balance 9351.909849\n",
"day 205: buy 1 unit at price 913.809998, total balance 8438.099851\n",
"day 210, sell 1 unit at price 928.450012, investment 0.778263 %, total balance 9366.549863,\n",
"day 213, sell 1 unit at price 926.500000, investment 1.388692 %, total balance 10293.049863,\n",
"day 229: buy 1 unit at price 953.270020, total balance 9339.779843\n",
"day 232, sell 1 unit at price 969.960022, investment 1.750816 %, total balance 10309.739865,\n",
"day 234: buy 1 unit at price 977.000000, total balance 9332.739865\n",
"day 239, sell 1 unit at price 992.000000, investment 1.535312 %, total balance 10324.739865,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/6.evolution-strategy-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import time\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import random\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"seaborn==0.9.0\n",
"pandas==0.23.4\n",
"numpy==1.14.5\n",
"matplotlib==3.0.2\n"
]
}
],
"source": [
"import pkg_resources\n",
"import types\n",
"\n",
"\n",
"def get_imports():\n",
" for name, val in globals().items():\n",
" if isinstance(val, types.ModuleType):\n",
" name = val.__name__.split('.')[0]\n",
" elif isinstance(val, type):\n",
" name = val.__module__.split('.')[0]\n",
" poorly_named_packages = {'PIL': 'Pillow', 'sklearn': 'scikit-learn'}\n",
" if name in poorly_named_packages.keys():\n",
" name = poorly_named_packages[name]\n",
" yield name\n",
"\n",
"\n",
"imports = list(set(get_imports()))\n",
"requirements = []\n",
"for m in pkg_resources.working_set:\n",
" if m.project_name in imports and m.project_name != 'pip':\n",
" requirements.append((m.project_name, m.version))\n",
"\n",
"for r in requirements:\n",
" print('{}=={}'.format(*r))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class Deep_Evolution_Strategy:\n",
"\n",
" inputs = None\n",
"\n",
" def __init__(\n",
" self, weights, reward_function, population_size, sigma, learning_rate\n",
" ):\n",
" self.weights = weights\n",
" self.reward_function = reward_function\n",
" self.population_size = population_size\n",
" self.sigma = sigma\n",
" self.learning_rate = learning_rate\n",
"\n",
" def _get_weight_from_population(self, weights, population):\n",
" weights_population = []\n",
" for index, i in enumerate(population):\n",
" jittered = self.sigma * i\n",
" weights_population.append(weights[index] + jittered)\n",
" return weights_population\n",
"\n",
" def get_weights(self):\n",
" return self.weights\n",
"\n",
" def train(self, epoch = 100, print_every = 1):\n",
" lasttime = time.time()\n",
" for i in range(epoch):\n",
" population = []\n",
" rewards = np.zeros(self.population_size)\n",
" for k in range(self.population_size):\n",
" x = []\n",
" for w in self.weights:\n",
" x.append(np.random.randn(*w.shape))\n",
" population.append(x)\n",
" for k in range(self.population_size):\n",
" weights_population = self._get_weight_from_population(\n",
" self.weights, population[k]\n",
" )\n",
" rewards[k] = self.reward_function(weights_population)\n",
" rewards = (rewards - np.mean(rewards)) / (np.std(rewards) + 1e-7)\n",
" for index, w in enumerate(self.weights):\n",
" A = np.array([p[index] for p in population])\n",
" self.weights[index] = (\n",
" w\n",
" + self.learning_rate\n",
" / (self.population_size * self.sigma)\n",
" * np.dot(A.T, rewards).T\n",
" )\n",
" if (i + 1) % print_every == 0:\n",
" print(\n",
" 'iter %d. reward: %f'\n",
" % (i + 1, self.reward_function(self.weights))\n",
" )\n",
" print('time taken to train:', time.time() - lasttime, 'seconds')\n",
"\n",
"\n",
"class Model:\n",
" def __init__(self, input_size, layer_size, output_size):\n",
" self.weights = [\n",
" np.random.randn(input_size, layer_size),\n",
" np.random.randn(layer_size, output_size),\n",
" np.random.randn(1, layer_size),\n",
" ]\n",
"\n",
" def predict(self, inputs):\n",
" feed = np.dot(inputs, self.weights[0]) + self.weights[-1]\n",
" decision = np.dot(feed, self.weights[1])\n",
" return decision\n",
"\n",
" def get_weights(self):\n",
" return self.weights\n",
"\n",
" def set_weights(self, weights):\n",
" self.weights = weights"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"class Agent:\n",
"\n",
" POPULATION_SIZE = 15\n",
" SIGMA = 0.1\n",
" LEARNING_RATE = 0.03\n",
"\n",
" def __init__(self, model, window_size, trend, skip, initial_money):\n",
" self.model = model\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" self.initial_money = initial_money\n",
" self.es = Deep_Evolution_Strategy(\n",
" self.model.get_weights(),\n",
" self.get_reward,\n",
" self.POPULATION_SIZE,\n",
" self.SIGMA,\n",
" self.LEARNING_RATE,\n",
" )\n",
"\n",
" def act(self, sequence):\n",
" decision = self.model.predict(np.array(sequence))\n",
" return np.argmax(decision[0])\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])\n",
"\n",
" def get_reward(self, weights):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" self.model.weights = weights\n",
" state = self.get_state(0)\n",
" inventory = []\n",
" quantity = 0\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= close[t]\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" starting_money += self.trend[t]\n",
"\n",
" state = next_state\n",
" return ((starting_money - initial_money) / initial_money) * 100\n",
"\n",
" def fit(self, iterations, checkpoint):\n",
" self.es.train(iterations, print_every = checkpoint)\n",
"\n",
" def buy(self):\n",
" initial_money = self.initial_money\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self.act(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" state = next_state\n",
"\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"iter 10. reward: 8.610248\n",
"iter 20. reward: 12.257399\n",
"iter 30. reward: 7.689600\n",
"iter 40. reward: 18.719300\n",
"iter 50. reward: 16.883897\n",
"iter 60. reward: 18.100399\n",
"iter 70. reward: 17.280399\n",
"iter 80. reward: 15.865947\n",
"iter 90. reward: 17.435298\n",
"iter 100. reward: 22.108749\n",
"iter 110. reward: 21.537897\n",
"iter 120. reward: 21.986898\n",
"iter 130. reward: 22.303096\n",
"iter 140. reward: 27.540547\n",
"iter 150. reward: 24.151497\n",
"iter 160. reward: 26.339196\n",
"iter 170. reward: 26.184596\n",
"iter 180. reward: 25.859546\n",
"iter 190. reward: 28.623797\n",
"iter 200. reward: 30.171547\n",
"iter 210. reward: 29.712899\n",
"iter 220. reward: 28.880399\n",
"iter 230. reward: 29.221448\n",
"iter 240. reward: 26.622551\n",
"iter 250. reward: 21.736548\n",
"iter 260. reward: 32.192049\n",
"iter 270. reward: 31.077749\n",
"iter 280. reward: 30.869947\n",
"iter 290. reward: 30.829648\n",
"iter 300. reward: 32.587899\n",
"iter 310. reward: 32.627998\n",
"iter 320. reward: 32.198498\n",
"iter 330. reward: 31.940298\n",
"iter 340. reward: 32.789998\n",
"iter 350. reward: 33.619697\n",
"iter 360. reward: 32.738196\n",
"iter 370. reward: 34.456997\n",
"iter 380. reward: 34.972598\n",
"iter 390. reward: 34.632198\n",
"iter 400. reward: 32.573597\n",
"iter 410. reward: 35.826097\n",
"iter 420. reward: 33.999698\n",
"iter 430. reward: 35.530297\n",
"iter 440. reward: 35.589196\n",
"iter 450. reward: 32.944796\n",
"iter 460. reward: 36.473798\n",
"iter 470. reward: 38.662997\n",
"iter 480. reward: 37.648599\n",
"iter 490. reward: 37.361099\n",
"iter 500. reward: 37.407198\n",
"time taken to train: 33.66626238822937 seconds\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"window_size = 30\n",
"skip = 1\n",
"initial_money = 10000\n",
"\n",
"model = Model(input_size = window_size, layer_size = 500, output_size = 3)\n",
"agent = Agent(model = model, \n",
" window_size = window_size,\n",
" trend = close,\n",
" skip = skip,\n",
" initial_money = initial_money)\n",
"agent.fit(iterations = 500, checkpoint = 10)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 1: buy 1 unit at price 762.130005, total balance 9237.869995\n",
"day 3: buy 1 unit at price 782.520020, total balance 8455.349975\n",
"day 4, sell 1 unit at price 790.510010, investment 3.723775 %, total balance 9245.859985,\n",
"day 5, sell 1 unit at price 785.309998, investment 0.356538 %, total balance 10031.169983,\n",
"day 6: buy 1 unit at price 762.559998, total balance 9268.609985\n",
"day 10: buy 1 unit at price 764.479980, total balance 8504.130005\n",
"day 11: buy 1 unit at price 771.229980, total balance 7732.900025\n",
"day 12: buy 1 unit at price 760.539978, total balance 6972.360047\n",
"day 17: buy 1 unit at price 768.239990, total balance 6204.120057\n",
"day 18: buy 1 unit at price 770.840027, total balance 5433.280030\n",
"day 19: buy 1 unit at price 758.039978, total balance 4675.240052\n",
"day 20: buy 1 unit at price 747.919983, total balance 3927.320069\n",
"day 21: buy 1 unit at price 750.500000, total balance 3176.820069\n",
"day 24, sell 1 unit at price 771.190002, investment 1.131715 %, total balance 3948.010071,\n",
"day 25: buy 1 unit at price 776.419983, total balance 3171.590088\n",
"day 26, sell 1 unit at price 789.289978, investment 3.245343 %, total balance 3960.880066,\n",
"day 27: buy 1 unit at price 789.270020, total balance 3171.610046\n",
"day 29, sell 1 unit at price 797.070007, investment 3.350496 %, total balance 3968.680053,\n",
"day 30, sell 1 unit at price 797.849976, investment 4.905725 %, total balance 4766.530029,\n",
"day 31, sell 1 unit at price 790.799988, investment 2.936582 %, total balance 5557.330017,\n",
"day 32: buy 1 unit at price 794.200012, total balance 4763.130005\n",
"day 33: buy 1 unit at price 796.419983, total balance 3966.710022\n",
"day 34: buy 1 unit at price 794.559998, total balance 3172.150024\n",
"day 36: buy 1 unit at price 789.909973, total balance 2382.240051\n",
"day 37, sell 1 unit at price 791.549988, investment 2.686674 %, total balance 3173.790039,\n",
"day 40: buy 1 unit at price 771.820007, total balance 2401.970032\n",
"day 41: buy 1 unit at price 786.140015, total balance 1615.830017\n",
"day 42: buy 1 unit at price 786.900024, total balance 828.929993\n",
"day 44: buy 1 unit at price 806.150024, total balance 22.779969\n",
"day 45, sell 1 unit at price 806.650024, investment 6.412597 %, total balance 829.429993,\n",
"day 48, sell 1 unit at price 806.359985, investment 7.813670 %, total balance 1635.789978,\n",
"day 49, sell 1 unit at price 807.880005, investment 7.645570 %, total balance 2443.669983,\n",
"day 50, sell 1 unit at price 804.609985, investment 3.630767 %, total balance 3248.279968,\n",
"day 51: buy 1 unit at price 806.070007, total balance 2442.209961\n",
"day 52: buy 1 unit at price 802.174988, total balance 1640.034973\n",
"day 53: buy 1 unit at price 805.020020, total balance 835.014953\n",
"day 56, sell 1 unit at price 835.669983, investment 5.878845 %, total balance 1670.684936,\n",
"day 57, sell 1 unit at price 832.150024, investment 4.778395 %, total balance 2502.834960,\n",
"day 59: buy 1 unit at price 802.320007, total balance 1700.514953\n",
"day 61: buy 1 unit at price 795.695007, total balance 904.819946\n",
"day 62: buy 1 unit at price 798.530029, total balance 106.289917\n",
"day 69, sell 1 unit at price 819.239990, investment 2.865323 %, total balance 925.529907,\n",
"day 70, sell 1 unit at price 820.450012, investment 3.258409 %, total balance 1745.979919,\n",
"day 71: buy 1 unit at price 818.979980, total balance 926.999939\n",
"day 72: buy 1 unit at price 824.159973, total balance 102.839966\n",
"day 74, sell 1 unit at price 831.659973, investment 5.285412 %, total balance 934.499939,\n",
"day 76, sell 1 unit at price 831.330017, investment 7.710348 %, total balance 1765.829956,\n",
"day 77, sell 1 unit at price 828.640015, investment 5.406162 %, total balance 2594.469971,\n",
"day 78, sell 1 unit at price 829.280029, investment 5.385691 %, total balance 3423.750000,\n",
"day 79: buy 1 unit at price 823.210022, total balance 2600.539978\n",
"day 80: buy 1 unit at price 835.239990, total balance 1765.299988\n",
"day 81: buy 1 unit at price 830.630005, total balance 934.669983\n",
"day 83: buy 1 unit at price 827.780029, total balance 106.889954\n",
"day 85, sell 1 unit at price 835.369995, investment 3.624632 %, total balance 942.259949,\n",
"day 88: buy 1 unit at price 845.539978, total balance 96.719971\n",
"day 89, sell 1 unit at price 845.619995, investment 4.906520 %, total balance 942.339966,\n",
"day 90, sell 1 unit at price 847.200012, investment 5.612868 %, total balance 1789.539978,\n",
"day 92, sell 1 unit at price 852.119995, investment 5.850783 %, total balance 2641.659973,\n",
"day 93, sell 1 unit at price 848.400024, investment 5.743346 %, total balance 3490.059997,\n",
"day 95: buy 1 unit at price 829.590027, total balance 2660.469970\n",
"day 96: buy 1 unit at price 817.580017, total balance 1842.889953\n",
"day 98: buy 1 unit at price 819.510010, total balance 1023.379943\n",
"day 99: buy 1 unit at price 820.919983, total balance 202.459960\n",
"day 105, sell 1 unit at price 831.409973, investment 4.488525 %, total balance 1033.869933,\n",
"day 107: buy 1 unit at price 824.669983, total balance 209.199950\n",
"day 113, sell 1 unit at price 836.820007, investment 4.795058 %, total balance 1046.019957,\n",
"day 115: buy 1 unit at price 841.650024, total balance 204.369933\n",
"day 116, sell 1 unit at price 843.190002, investment 2.956119 %, total balance 1047.559935,\n",
"day 118: buy 1 unit at price 872.299988, total balance 175.259947\n",
"day 119, sell 1 unit at price 871.729980, investment 5.771939 %, total balance 1046.989927,\n",
"day 120: buy 1 unit at price 874.250000, total balance 172.739927\n",
"day 121, sell 1 unit at price 905.960022, investment 10.052113 %, total balance 1078.699949,\n",
"day 122, sell 1 unit at price 912.570007, investment 9.258419 %, total balance 1991.269956,\n",
"day 123, sell 1 unit at price 916.440002, investment 10.330712 %, total balance 2907.709958,\n",
"day 124, sell 1 unit at price 927.039978, investment 11.991102 %, total balance 3834.749936,\n",
"day 125, sell 1 unit at price 931.659973, investment 10.185207 %, total balance 4766.409909,\n",
"day 126, sell 1 unit at price 927.130005, investment 11.757612 %, total balance 5693.539914,\n",
"day 127, sell 1 unit at price 934.299988, investment 14.276275 %, total balance 6627.839902,\n",
"day 128, sell 1 unit at price 932.169983, investment 13.747236 %, total balance 7560.009885,\n",
"day 129: buy 1 unit at price 928.780029, total balance 6631.229856\n",
"day 130: buy 1 unit at price 930.599976, total balance 5700.629880\n",
"day 132: buy 1 unit at price 937.080017, total balance 4763.549863\n",
"day 133: buy 1 unit at price 943.000000, total balance 3820.549863\n",
"day 136: buy 1 unit at price 934.010010, total balance 2886.539853\n",
"day 137, sell 1 unit at price 941.859985, investment 14.732252 %, total balance 3828.399838,\n",
"day 139, sell 1 unit at price 954.960022, investment 15.799052 %, total balance 4783.359860,\n",
"day 140, sell 1 unit at price 969.539978, investment 15.195146 %, total balance 5752.899838,\n",
"day 141, sell 1 unit at price 971.469971, investment 11.368793 %, total balance 6724.369809,\n",
"day 142, sell 1 unit at price 975.880005, investment 11.624822 %, total balance 7700.249814,\n",
"day 143, sell 1 unit at price 964.859985, investment 3.884661 %, total balance 8665.109799,\n",
"day 144, sell 1 unit at price 966.950012, investment 3.906086 %, total balance 9632.059811,\n",
"day 145, sell 1 unit at price 975.599976, investment 4.110637 %, total balance 10607.659787,\n",
"day 146, sell 1 unit at price 983.679993, investment 4.313891 %, total balance 11591.339780,\n",
"day 147: buy 1 unit at price 976.570007, total balance 10614.769773\n",
"day 148, sell 1 unit at price 980.940002, investment 5.024571 %, total balance 11595.709775,\n",
"day 153, sell 1 unit at price 950.760010, investment -2.642923 %, total balance 12546.469785,\n",
"day 154: buy 1 unit at price 942.309998, total balance 11604.159787\n",
"day 155: buy 1 unit at price 939.780029, total balance 10664.379758\n",
"day 156: buy 1 unit at price 957.369995, total balance 9707.009763\n",
"day 158, sell 1 unit at price 959.450012, investment 1.818936 %, total balance 10666.459775,\n",
"day 160, sell 1 unit at price 965.590027, investment 2.746387 %, total balance 11632.049802,\n",
"day 161, sell 1 unit at price 952.270020, investment -0.532707 %, total balance 12584.319822,\n",
"day 163: buy 1 unit at price 940.489990, total balance 11643.829832\n",
"day 164: buy 1 unit at price 917.789978, total balance 10726.039854\n",
"day 166: buy 1 unit at price 898.700012, total balance 9827.339842\n",
"day 167: buy 1 unit at price 911.710022, total balance 8915.629820\n",
"day 168: buy 1 unit at price 906.690002, total balance 8008.939818\n",
"day 171: buy 1 unit at price 930.090027, total balance 7078.849791\n",
"day 172, sell 1 unit at price 943.830017, investment 0.355137 %, total balance 8022.679808,\n",
"day 174, sell 1 unit at price 955.989990, investment 4.162174 %, total balance 8978.669798,\n",
"day 175: buy 1 unit at price 953.419983, total balance 8025.249815\n",
"day 176, sell 1 unit at price 965.400024, investment 7.421833 %, total balance 8990.649839,\n",
"day 178, sell 1 unit at price 968.150024, investment 6.190565 %, total balance 9958.799863,\n",
"day 179, sell 1 unit at price 972.919983, investment 7.304589 %, total balance 10931.719846,\n",
"day 180, sell 1 unit at price 980.340027, investment 5.402703 %, total balance 11912.059873,\n",
"day 181, sell 1 unit at price 950.700012, investment -0.285286 %, total balance 12862.759885,\n",
"day 183: buy 1 unit at price 934.090027, total balance 11928.669858\n",
"day 185: buy 1 unit at price 930.500000, total balance 10998.169858\n",
"day 186: buy 1 unit at price 930.830017, total balance 10067.339841\n",
"day 187: buy 1 unit at price 930.390015, total balance 9136.949826\n",
"day 188: buy 1 unit at price 923.650024, total balance 8213.299802\n",
"day 192: buy 1 unit at price 922.900024, total balance 7290.399778\n",
"day 194: buy 1 unit at price 914.390015, total balance 6376.009763\n",
"day 195: buy 1 unit at price 922.669983, total balance 5453.339780\n",
"day 197: buy 1 unit at price 926.960022, total balance 4526.379758\n",
"day 202: buy 1 unit at price 927.000000, total balance 3599.379758\n",
"day 203: buy 1 unit at price 921.280029, total balance 2678.099729\n",
"day 204: buy 1 unit at price 915.890015, total balance 1762.209714\n",
"day 205: buy 1 unit at price 913.809998, total balance 848.399716\n",
"day 210, sell 1 unit at price 928.450012, investment -0.603798 %, total balance 1776.849728,\n",
"day 212, sell 1 unit at price 935.950012, investment 0.585708 %, total balance 2712.799740,\n",
"day 214: buy 1 unit at price 929.080017, total balance 1783.719723\n",
"day 215: buy 1 unit at price 932.070007, total balance 851.649716\n",
"day 216, sell 1 unit at price 935.090027, investment 0.457657 %, total balance 1786.739743,\n",
"day 217: buy 1 unit at price 925.109985, total balance 861.629758\n",
"day 222, sell 1 unit at price 932.450012, investment 0.221412 %, total balance 1794.079770,\n",
"day 223: buy 1 unit at price 928.530029, total balance 865.549741\n",
"day 227, sell 1 unit at price 949.500000, investment 2.798676 %, total balance 1815.049741,\n",
"day 228, sell 1 unit at price 959.109985, investment 3.923498 %, total balance 2774.159726,\n",
"day 229: buy 1 unit at price 953.270020, total balance 1820.889706\n",
"day 230, sell 1 unit at price 957.789978, investment 4.746329 %, total balance 2778.679684,\n",
"day 232, sell 1 unit at price 969.960022, investment 5.125347 %, total balance 3748.639706,\n",
"day 233, sell 1 unit at price 978.890015, investment 5.602183 %, total balance 4727.529721,\n",
"day 234, sell 1 unit at price 977.000000, investment 5.393743 %, total balance 5704.529721,\n",
"day 235: buy 1 unit at price 972.599976, total balance 4731.929745\n",
"day 236, sell 1 unit at price 989.250000, investment 7.377775 %, total balance 5721.179745,\n",
"day 237, sell 1 unit at price 987.830017, investment 7.854655 %, total balance 6709.009762,\n",
"day 238, sell 1 unit at price 989.679993, investment 8.302601 %, total balance 7698.689755,\n",
"day 239, sell 1 unit at price 992.000000, investment 6.772289 %, total balance 8690.689755,\n",
"day 241, sell 1 unit at price 992.809998, investment 6.516677 %, total balance 9683.499753,\n",
"day 242, sell 1 unit at price 984.450012, investment 6.414375 %, total balance 10667.949765,\n",
"day 243, sell 1 unit at price 988.200012, investment 6.426285 %, total balance 11656.149777,\n",
"day 244: buy 1 unit at price 968.450012, total balance 10687.699765\n",
"day 248, sell 1 unit at price 1019.270020, investment 6.923537 %, total balance 11706.969785,\n",
"day 249, sell 1 unit at price 1017.109985, investment 4.576394 %, total balance 12724.079770,\n",
"day 250, sell 1 unit at price 1016.640015, investment 4.975993 %, total balance 13740.719785,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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CC0SQgghhBBCNAbL78d/6BAYBi5n9PqcnHls2LCenJx5WJbFtm2bW1W2D9po4Dd06HA2btxAZWVlzG08Hg/Dho1oxFYJIYQQQgghGpq/pAQsC7N9KobLBdgjfT7xxILgNi+//HKrGzyoTZZ65uTMC9bxxtLYNb1vvvlfbrvtJgBWrlzOT386F4C9e/P51a9+1ihtuPfeu1i16psGO/65557Nxo3rG+z4QgghhBBCVMdXbAd0rg5pTdySxtUmA7/MzCymT58VHL0nUnMawScjI5N//vORRjnXzTf/VrKcQgghhBCiVfMVlwDgSm1bgV+bLPUEO+v3+uuvRF1X12xfWVkZd999B5s3b8TlctO3bz/uuuteAN566w0WL34Jn89HWloaN9xwM3379o95rF27dnLllXNZsuQDAE44YTQ5OfP45JOPOXDgAL/85XwmTz4ZgI8//oB///tBkpOTmTLlFP797wd5991PaN++fdgxP/30Yx599CFM04XP5+W6625i5MjRXH11DhdeOJcJEyaSn7+Hu+++g4KCAnr16oVlwdix45g9ew5/+MOdJCUlsW3bVvbs2c3gwcdy222/wzAM3n33bV566Xm8XruM9pe/vJbRo4+r9WcphBBCCCFEfQpm/NIk8GsTAlm/V199OayvX31k+7788gsOHSphwYKXADh48CAAq1Z9w4cfvse//vUoSUlJfPHFUv74x9/z0ENP1Oj4qampPPbYf/juu2+5/fZbmDz5ZPbtK+BPf7qHRx55kj59+rJw4bMx93/ssUe46abfMGTIUHw+H2VlpVW2+dvf/syIEaO4/PIrycvbxaWXXsDYseOC6zdu3MDf/vYgpmlyxRUXs3z5l4wZM46xY8dx6qmnYxgGW7du5ppr5vHKK2/W6PqEEEIIIYRoKL6SYkACvyqUUv8PmA30B47VWn/vLD8aeBpIBwqAS7XWP9ZlXWOLlvWrj759AwYMZPPmTdx//32MGDGK448/AYClSz9h/fofycm5HADLsigqOljj45988ukADB58LHv35lNeXs7atd9z9NGKPn36AjB16gz++c+/Rt1/1KjR/OMff2Hy5JMYN+54jjxyQJVtVq5cwbXX3ghA9+49GDVqTNj6iRMnk5ycDIBSih07tjNmDOzYsZ077/wN+fn5uN1u9u0roKBgL+npGTW+TiGEEEIIIeqbr8gJ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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/7.double-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Model:\n",
" def __init__(self, input_size, output_size, layer_size, learning_rate):\n",
" self.X = tf.placeholder(tf.float32, (None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" feed_forward = tf.layers.dense(self.X, layer_size, activation = tf.nn.relu)\n",
" self.logits = tf.layers.dense(feed_forward, output_size)\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 500\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.model = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.model_negative = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" self.trainable = tf.trainable_variables()\n",
" \n",
" def _assign(self):\n",
" for i in range(len(self.trainable)//2):\n",
" assign_op = self.trainable[i+len(self.trainable)//2].assign(self.trainable[i])\n",
" self.sess.run(assign_op)\n",
"\n",
" def _memorize(self, state, action, reward, new_state, done):\n",
" self.MEMORIES.append((state, action, reward, new_state, done))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" Q = self.predict(states)\n",
" Q_new = self.predict(new_states)\n",
" Q_new_negative = self.sess.run(self.model_negative.logits, feed_dict={self.model_negative.X:new_states})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, done_r = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not done_r:\n",
" target[action_r] += self.GAMMA * Q_new_negative[i, np.argmax(Q_new[i])]\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" return X, Y\n",
"\n",
" def predict(self, inputs):\n",
" return self.sess.run(self.model.logits, feed_dict={self.model.X:inputs})\n",
" \n",
" def get_predicted_action(self, sequence):\n",
" prediction = self.predict(np.array(sequence))[0]\n",
" return np.argmax(prediction)\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" state = next_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign()\n",
" \n",
" action = self._select_action(state)\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" \n",
" self._memorize(state, action, invest, next_state, starting_money < initial_money)\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" state = next_state\n",
" X, Y = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.model.cost, self.model.optimizer], \n",
" feed_dict={self.model.X: X, self.model.Y:Y})\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"epoch: 10, total rewards: 1241.885127.3, cost: 1.110860, total money: 1744.875178\n",
"epoch: 20, total rewards: 89.105106.3, cost: 0.649060, total money: 8097.275088\n",
"epoch: 30, total rewards: 719.079470.3, cost: 0.823131, total money: 9699.809450\n",
"epoch: 40, total rewards: 684.040043.3, cost: 1.931746, total money: 134.750004\n",
"epoch: 50, total rewards: 1744.829771.3, cost: 0.895153, total money: 11744.829771\n",
"epoch: 60, total rewards: 149.195010.3, cost: 1.097174, total money: 5196.854982\n",
"epoch: 70, total rewards: 1389.289786.3, cost: 0.860031, total money: 9399.319754\n",
"epoch: 80, total rewards: 529.019898.3, cost: 0.305593, total money: 10529.019898\n",
"epoch: 90, total rewards: 1285.264893.3, cost: 1.882383, total money: 9251.514893\n",
"epoch: 100, total rewards: 409.474970.3, cost: 0.146280, total money: 551.414972\n",
"epoch: 110, total rewards: 1074.725155.3, cost: 0.661549, total money: 2231.475154\n",
"epoch: 120, total rewards: 1713.854676.3, cost: 1.219318, total money: 11713.854676\n",
"epoch: 130, total rewards: 871.945621.3, cost: 1.460638, total money: 8947.665652\n",
"epoch: 140, total rewards: 1564.314818.3, cost: 1.133385, total money: 2767.354796\n",
"epoch: 150, total rewards: 855.729796.3, cost: 1.886093, total money: 10855.729796\n",
"epoch: 160, total rewards: 302.970157.3, cost: 0.642825, total money: 6320.700137\n",
"epoch: 170, total rewards: 512.139521.3, cost: 3.411159, total money: 1801.649470\n",
"epoch: 180, total rewards: 769.354739.3, cost: 0.379282, total money: 10769.354739\n",
"epoch: 190, total rewards: 332.274720.3, cost: 1.111366, total money: 10332.274720\n",
"epoch: 200, total rewards: 395.419923.3, cost: 0.270106, total money: 5401.389893\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 7: buy 1 unit at price 754.020020, total balance 9245.979980\n",
"day 9, sell 1 unit at price 758.489990, investment 0.592818 %, total balance 10004.469970,\n",
"day 10: buy 1 unit at price 764.479980, total balance 9239.989990\n",
"day 11: buy 1 unit at price 771.229980, total balance 8468.760010\n",
"day 12, sell 1 unit at price 760.539978, investment -0.515383 %, total balance 9229.299988,\n",
"day 13, sell 1 unit at price 769.200012, investment -0.263212 %, total balance 9998.500000,\n",
"day 17: buy 1 unit at price 768.239990, total balance 9230.260010\n",
"day 19, sell 1 unit at price 758.039978, investment -1.327712 %, total balance 9988.299988,\n",
"day 21: buy 1 unit at price 750.500000, total balance 9237.799988\n",
"day 22, sell 1 unit at price 762.520020, investment 1.601602 %, total balance 10000.320008,\n",
"day 26: buy 1 unit at price 789.289978, total balance 9211.030030\n",
"day 27, sell 1 unit at price 789.270020, investment -0.002529 %, total balance 10000.300050,\n",
"day 30: buy 1 unit at price 797.849976, total balance 9202.450074\n",
"day 33, sell 1 unit at price 796.419983, investment -0.179231 %, total balance 9998.870057,\n",
"day 41: buy 1 unit at price 786.140015, total balance 9212.730042\n",
"day 42, sell 1 unit at price 786.900024, investment 0.096676 %, total balance 9999.630066,\n",
"day 45: buy 1 unit at price 806.650024, total balance 9192.980042\n",
"day 46: buy 1 unit at price 804.789978, total balance 8388.190064\n",
"day 47, sell 1 unit at price 807.909973, investment 0.156195 %, total balance 9196.100037,\n",
"day 49, sell 1 unit at price 807.880005, investment 0.383954 %, total balance 10003.980042,\n",
"day 54: buy 1 unit at price 819.309998, total balance 9184.670044\n",
"day 55, sell 1 unit at price 823.869995, investment 0.556566 %, total balance 10008.540039,\n",
"day 61: buy 1 unit at price 795.695007, total balance 9212.845032\n",
"day 62, sell 1 unit at price 798.530029, investment 0.356295 %, total balance 10011.375061,\n",
"day 64: buy 1 unit at price 801.340027, total balance 9210.035034\n",
"day 65, sell 1 unit at price 806.969971, investment 0.702566 %, total balance 10017.005005,\n",
"day 66: buy 1 unit at price 808.380005, total balance 9208.625000\n",
"day 67: buy 1 unit at price 809.559998, total balance 8399.065002\n",
"day 68: buy 1 unit at price 813.669983, total balance 7585.395019\n",
"day 69, sell 1 unit at price 819.239990, investment 1.343426 %, total balance 8404.635009,\n",
"day 70, sell 1 unit at price 820.450012, investment 1.345177 %, total balance 9225.085021,\n",
"day 71, sell 1 unit at price 818.979980, investment 0.652598 %, total balance 10044.065001,\n",
"day 74: buy 1 unit at price 831.659973, total balance 9212.405028\n",
"day 76, sell 1 unit at price 831.330017, investment -0.039674 %, total balance 10043.735045,\n",
"day 79: buy 1 unit at price 823.210022, total balance 9220.525023\n",
"day 80, sell 1 unit at price 835.239990, investment 1.461349 %, total balance 10055.765013,\n",
"day 83: buy 1 unit at price 827.780029, total balance 9227.984984\n",
"day 84, sell 1 unit at price 831.909973, investment 0.498918 %, total balance 10059.894957,\n",
"day 97: buy 1 unit at price 814.429993, total balance 9245.464964\n",
"day 98, sell 1 unit at price 819.510010, investment 0.623751 %, total balance 10064.974974,\n",
"day 102: buy 1 unit at price 829.559998, total balance 9235.414976\n",
"day 103, sell 1 unit at price 838.549988, investment 1.083706 %, total balance 10073.964964,\n",
"day 104: buy 1 unit at price 834.570007, total balance 9239.394957\n",
"day 105, sell 1 unit at price 831.409973, investment -0.378642 %, total balance 10070.804930,\n",
"day 107: buy 1 unit at price 824.669983, total balance 9246.134947\n",
"day 108: buy 1 unit at price 824.729980, total balance 8421.404967\n",
"day 109, sell 1 unit at price 823.349976, investment -0.160065 %, total balance 9244.754943,\n",
"day 110, sell 1 unit at price 824.320007, investment -0.049710 %, total balance 10069.074950,\n",
"day 113: buy 1 unit at price 836.820007, total balance 9232.254943\n",
"day 114, sell 1 unit at price 838.210022, investment 0.166107 %, total balance 10070.464965,\n",
"day 117: buy 1 unit at price 862.760010, total balance 9207.704955\n",
"day 118, sell 1 unit at price 872.299988, investment 1.105751 %, total balance 10080.004943,\n",
"day 120: buy 1 unit at price 874.250000, total balance 9205.754943\n",
"day 123, sell 1 unit at price 916.440002, investment 4.825851 %, total balance 10122.194945,\n",
"day 125: buy 1 unit at price 931.659973, total balance 9190.534972\n",
"day 126: buy 1 unit at price 927.130005, total balance 8263.404967\n",
"day 127, sell 1 unit at price 934.299988, investment 0.283367 %, total balance 9197.704955,\n",
"day 128, sell 1 unit at price 932.169983, investment 0.543611 %, total balance 10129.874938,\n",
"day 132: buy 1 unit at price 937.080017, total balance 9192.794921\n",
"day 133, sell 1 unit at price 943.000000, investment 0.631748 %, total balance 10135.794921,\n",
"day 135: buy 1 unit at price 930.239990, total balance 9205.554931\n",
"day 138, sell 1 unit at price 948.820007, investment 1.997336 %, total balance 10154.374938,\n",
"day 139: buy 1 unit at price 954.960022, total balance 9199.414916\n",
"day 140, sell 1 unit at price 969.539978, investment 1.526761 %, total balance 10168.954894,\n",
"day 141: buy 1 unit at price 971.469971, total balance 9197.484923\n",
"day 143, sell 1 unit at price 964.859985, investment -0.680411 %, total balance 10162.344908,\n",
"day 153: buy 1 unit at price 950.760010, total balance 9211.584898\n",
"day 154, sell 1 unit at price 942.309998, investment -0.888764 %, total balance 10153.894896,\n",
"day 157: buy 1 unit at price 950.630005, total balance 9203.264891\n",
"day 158, sell 1 unit at price 959.450012, investment 0.927807 %, total balance 10162.714903,\n",
"day 161: buy 1 unit at price 952.270020, total balance 9210.444883\n",
"day 162: buy 1 unit at price 927.330017, total balance 8283.114866\n",
"day 163, sell 1 unit at price 940.489990, investment -1.237047 %, total balance 9223.604856,\n",
"day 164, sell 1 unit at price 917.789978, investment -1.028764 %, total balance 10141.394834,\n",
"day 171: buy 1 unit at price 930.090027, total balance 9211.304807\n",
"day 172, sell 1 unit at price 943.830017, investment 1.477275 %, total balance 10155.134824,\n",
"day 178: buy 1 unit at price 968.150024, total balance 9186.984800\n",
"day 179, sell 1 unit at price 972.919983, investment 0.492688 %, total balance 10159.904783,\n",
"day 180: buy 1 unit at price 980.340027, total balance 9179.564756\n",
"day 181: buy 1 unit at price 950.700012, total balance 8228.864744\n",
"day 182: buy 1 unit at price 947.799988, total balance 7281.064756\n",
"day 183: buy 1 unit at price 934.090027, total balance 6346.974729\n",
"day 185: buy 1 unit at price 930.500000, total balance 5416.474729\n",
"day 186, sell 1 unit at price 930.830017, investment -5.050290 %, total balance 6347.304746,\n",
"day 188: buy 1 unit at price 923.650024, total balance 5423.654722\n",
"day 189: buy 1 unit at price 927.960022, total balance 4495.694700\n",
"day 190, sell 1 unit at price 929.359985, investment -2.244665 %, total balance 5425.054685,\n",
"day 193, sell 1 unit at price 907.239990, investment -4.279384 %, total balance 6332.294675,\n",
"day 195, sell 1 unit at price 922.669983, investment -1.222585 %, total balance 7254.964658,\n",
"day 196, sell 1 unit at price 922.219971, investment -0.889847 %, total balance 8177.184629,\n",
"day 197, sell 1 unit at price 926.960022, investment 0.358361 %, total balance 9104.144651,\n",
"day 198, sell 1 unit at price 910.979980, investment -1.829825 %, total balance 10015.124631,\n",
"day 202: buy 1 unit at price 927.000000, total balance 9088.124631\n",
"day 205: buy 1 unit at price 913.809998, total balance 8174.314633\n",
"day 207, sell 1 unit at price 929.570007, investment 0.277239 %, total balance 9103.884640,\n",
"day 208, sell 1 unit at price 939.330017, investment 2.792705 %, total balance 10043.214657,\n",
"day 215: buy 1 unit at price 932.070007, total balance 9111.144650\n",
"day 217: buy 1 unit at price 925.109985, total balance 8186.034665\n",
"day 218: buy 1 unit at price 920.289978, total balance 7265.744687\n",
"day 219: buy 1 unit at price 915.000000, total balance 6350.744687\n",
"day 220: buy 1 unit at price 921.809998, total balance 5428.934689\n",
"day 221, sell 1 unit at price 931.580017, investment -0.052570 %, total balance 6360.514706,\n",
"day 222: buy 1 unit at price 932.450012, total balance 5428.064694\n",
"day 223: buy 1 unit at price 928.530029, total balance 4499.534665\n",
"day 224, sell 1 unit at price 920.969971, investment -0.447516 %, total balance 5420.504636,\n",
"day 225: buy 1 unit at price 924.859985, total balance 4495.644651\n",
"day 226: buy 1 unit at price 944.489990, total balance 3551.154661\n",
"day 228, sell 1 unit at price 959.109985, investment 4.218236 %, total balance 4510.264646,\n",
"day 229, sell 1 unit at price 953.270020, investment 4.182516 %, total balance 5463.534666,\n",
"day 230, sell 1 unit at price 957.789978, investment 3.903188 %, total balance 6421.324644,\n",
"day 231, sell 1 unit at price 951.679993, investment 2.062307 %, total balance 7373.004637,\n",
"day 232, sell 1 unit at price 969.960022, investment 4.461890 %, total balance 8342.964659,\n",
"day 235: buy 1 unit at price 972.599976, total balance 7370.364683\n",
"day 236, sell 1 unit at price 989.250000, investment 6.962137 %, total balance 8359.614683,\n",
"day 238: buy 1 unit at price 989.679993, total balance 7369.934690\n",
"day 241: buy 1 unit at price 992.809998, total balance 6377.124692\n",
"day 242, sell 1 unit at price 984.450012, investment 4.230857 %, total balance 7361.574704,\n",
"day 243: buy 1 unit at price 988.200012, total balance 6373.374692\n",
"day 244: buy 1 unit at price 968.450012, total balance 5404.924680\n",
"day 245, sell 1 unit at price 970.539978, investment -0.211803 %, total balance 6375.464658,\n",
"day 246: buy 1 unit at price 973.330017, total balance 5402.134641\n",
"day 247, sell 1 unit at price 972.559998, investment -1.729852 %, total balance 6374.694639,\n",
"day 248: buy 1 unit at price 1019.270020, total balance 5355.424619\n",
"day 249, sell 1 unit at price 1017.109985, investment 2.447597 %, total balance 6372.534604,\n",
"day 250: buy 1 unit at price 1016.640015, total balance 5355.894589\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/8.recurrent-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.X = tf.placeholder(tf.float32, (None, None, self.state_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, self.OUTPUT_SIZE))\n",
" cell = tf.nn.rnn_cell.LSTMCell(self.LAYER_SIZE, state_is_tuple = False)\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * self.LAYER_SIZE))\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" self.logits = tf.layers.dense(self.rnn[:,-1], self.OUTPUT_SIZE)\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = self.LEARNING_RATE).minimize(self.cost)\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" \n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.logits, feed_dict={self.X:states, self.hidden_layer:init_values})\n",
" Q_new = self.sess.run(self.logits, feed_dict={self.X:new_states, self.hidden_layer:init_values})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, 4, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" INIT_VAL = np.empty((replay_size, 2 * self.LAYER_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, dead_r, rnn_memory = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not dead_r:\n",
" target[action_r] += self.GAMMA * np.amax(Q_new[i])\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" INIT_VAL[i] = rnn_memory\n",
" return X, Y, INIT_VAL\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action, last_state = self.sess.run([self.logits,self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.logits,\n",
" self.last_state],\n",
" feed_dict={self.X:[self.INITIAL_FEATURES],\n",
" self.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" self.INITIAL_FEATURES = new_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" X, Y, INIT_VAL = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.cost, self.optimizer], \n",
" feed_dict={self.X: X, self.Y:Y,\n",
" self.hidden_layer: INIT_VAL})\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" \n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 449.400388.3, cost: 0.117951, total money: 7420.680355\n",
"epoch: 20, total rewards: 513.109983.3, cost: 0.187314, total money: 7552.130003\n",
"epoch: 30, total rewards: 1755.114813.3, cost: 0.337607, total money: 6759.834784\n",
"epoch: 40, total rewards: 545.719909.3, cost: 0.555657, total money: 9529.079894\n",
"epoch: 50, total rewards: 593.435182.3, cost: 0.399239, total money: 6611.165162\n",
"epoch: 60, total rewards: 285.174678.3, cost: 0.071772, total money: 6314.564631\n",
"epoch: 70, total rewards: 169.200014.3, cost: 0.796504, total money: 4264.030030\n",
"epoch: 80, total rewards: 520.019840.3, cost: 0.567794, total money: 6501.959842\n",
"epoch: 90, total rewards: 498.320189.3, cost: 0.245750, total money: 9481.210204\n",
"epoch: 100, total rewards: 1572.605044.3, cost: 1.142984, total money: 11572.605044\n",
"epoch: 110, total rewards: 297.584960.3, cost: 0.973414, total money: 10297.584960\n",
"epoch: 120, total rewards: 912.394901.3, cost: 2.032860, total money: 6987.034854\n",
"epoch: 130, total rewards: 22.109988.3, cost: 0.097879, total money: 10022.109988\n",
"epoch: 140, total rewards: 471.779909.3, cost: 0.532008, total money: 10471.779909\n",
"epoch: 150, total rewards: 215.255126.3, cost: 0.236825, total money: 10215.255126\n",
"epoch: 160, total rewards: 147.780093.3, cost: 0.432537, total money: 9174.450076\n",
"epoch: 170, total rewards: 203.309817.3, cost: 0.413111, total money: 10203.309817\n",
"epoch: 180, total rewards: 76.350403.3, cost: 0.132205, total money: 8084.520385\n",
"epoch: 190, total rewards: 173.749880.3, cost: 1.325852, total money: 10173.749880\n",
"epoch: 200, total rewards: 4.325196.3, cost: 0.500293, total money: 8987.685181\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 13: buy 1 unit at price 769.200012, total balance 9230.799988\n",
"day 14: buy 1 unit at price 768.270020, total balance 8462.529968\n",
"day 15, sell 1 unit at price 760.989990, investment -1.067346 %, total balance 9223.519958,\n",
"day 17: buy 1 unit at price 768.239990, total balance 8455.279968\n",
"day 18, sell 1 unit at price 770.840027, investment 0.334519 %, total balance 9226.119995,\n",
"day 19, sell 1 unit at price 758.039978, investment -1.327712 %, total balance 9984.159973,\n",
"day 29: buy 1 unit at price 797.070007, total balance 9187.089966\n",
"day 30: buy 1 unit at price 797.849976, total balance 8389.239990\n",
"day 33, sell 1 unit at price 796.419983, investment -0.081552 %, total balance 9185.659973,\n",
"day 34: buy 1 unit at price 794.559998, total balance 8391.099975\n",
"day 36, sell 1 unit at price 789.909973, investment -0.995175 %, total balance 9181.009948,\n",
"day 37, sell 1 unit at price 791.549988, investment -0.378827 %, total balance 9972.559936,\n",
"day 39: buy 1 unit at price 782.789978, total balance 9189.769958\n",
"day 40, sell 1 unit at price 771.820007, investment -1.401394 %, total balance 9961.589965,\n",
"day 46: buy 1 unit at price 804.789978, total balance 9156.799987\n",
"day 47: buy 1 unit at price 807.909973, total balance 8348.890014\n",
"day 49, sell 1 unit at price 807.880005, investment 0.383954 %, total balance 9156.770019,\n",
"day 50, sell 1 unit at price 804.609985, investment -0.408460 %, total balance 9961.380004,\n",
"day 51: buy 1 unit at price 806.070007, total balance 9155.309997\n",
"day 54, sell 1 unit at price 819.309998, investment 1.642536 %, total balance 9974.619995,\n",
"day 110: buy 1 unit at price 824.320007, total balance 9150.299988\n",
"day 111, sell 1 unit at price 823.559998, investment -0.092198 %, total balance 9973.859986,\n",
"day 128: buy 1 unit at price 932.169983, total balance 9041.690003\n",
"day 129: buy 1 unit at price 928.780029, total balance 8112.909974\n",
"day 130, sell 1 unit at price 930.599976, investment -0.168425 %, total balance 9043.509950,\n",
"day 131, sell 1 unit at price 932.219971, investment 0.370372 %, total balance 9975.729921,\n",
"day 173: buy 1 unit at price 947.159973, total balance 9028.569948\n",
"day 175, sell 1 unit at price 953.419983, investment 0.660924 %, total balance 9981.989931,\n",
"day 182: buy 1 unit at price 947.799988, total balance 9034.189943\n",
"day 183, sell 1 unit at price 934.090027, investment -1.446504 %, total balance 9968.279970,\n",
"day 197: buy 1 unit at price 926.960022, total balance 9041.319948\n",
"day 198, sell 1 unit at price 910.979980, investment -1.723919 %, total balance 9952.299928,\n",
"day 204: buy 1 unit at price 915.890015, total balance 9036.409913\n",
"day 205, sell 1 unit at price 913.809998, investment -0.227103 %, total balance 9950.219911,\n",
"day 207: buy 1 unit at price 929.570007, total balance 9020.649904\n",
"day 209, sell 1 unit at price 937.340027, investment 0.835872 %, total balance 9957.989931,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/9.double-recurrent-q-learning-agent.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from collections import deque\n",
"import random\n",
"\n",
"class Model:\n",
" def __init__(self, input_size, output_size, layer_size, learning_rate, name):\n",
" with tf.variable_scope(name):\n",
" self.X = tf.placeholder(tf.float32, (None, None, input_size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" cell = tf.nn.rnn_cell.LSTMCell(layer_size, state_is_tuple = False)\n",
" self.hidden_layer = tf.placeholder(tf.float32, (None, 2 * layer_size))\n",
" self.rnn,self.last_state = tf.nn.dynamic_rnn(inputs=self.X,cell=cell,\n",
" dtype=tf.float32,\n",
" initial_state=self.hidden_layer)\n",
" self.logits = tf.layers.dense(self.rnn[:,-1], output_size)\n",
" self.cost = tf.reduce_sum(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(self.cost)\n",
" \n",
"class Agent:\n",
"\n",
" LEARNING_RATE = 0.003\n",
" BATCH_SIZE = 32\n",
" LAYER_SIZE = 256\n",
" OUTPUT_SIZE = 3\n",
" EPSILON = 0.5\n",
" DECAY_RATE = 0.005\n",
" MIN_EPSILON = 0.1\n",
" GAMMA = 0.99\n",
" MEMORIES = deque()\n",
" COPY = 1000\n",
" T_COPY = 0\n",
" MEMORY_SIZE = 300\n",
" \n",
" def __init__(self, state_size, window_size, trend, skip):\n",
" self.state_size = state_size\n",
" self.window_size = window_size\n",
" self.half_window = window_size // 2\n",
" self.trend = trend\n",
" self.skip = skip\n",
" tf.reset_default_graph()\n",
" self.INITIAL_FEATURES = np.zeros((4, self.state_size))\n",
" self.model = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE,\n",
" 'real_model')\n",
" self.model_negative = Model(self.state_size, self.OUTPUT_SIZE, self.LAYER_SIZE, self.LEARNING_RATE,\n",
" 'negative_model')\n",
" self.sess = tf.InteractiveSession()\n",
" self.sess.run(tf.global_variables_initializer())\n",
" self.trainable = tf.trainable_variables()\n",
" \n",
" def _assign(self, from_name, to_name):\n",
" from_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=from_name)\n",
" to_w = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, scope=to_name)\n",
" for i in range(len(from_w)):\n",
" assign_op = to_w[i].assign(from_w[i])\n",
" self.sess.run(assign_op)\n",
"\n",
" def _memorize(self, state, action, reward, new_state, dead, rnn_state):\n",
" self.MEMORIES.append((state, action, reward, new_state, dead, rnn_state))\n",
" if len(self.MEMORIES) > self.MEMORY_SIZE:\n",
" self.MEMORIES.popleft()\n",
"\n",
" def _select_action(self, state):\n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action = self.get_predicted_action([state])\n",
" return action\n",
"\n",
" def _construct_memories(self, replay):\n",
" states = np.array([a[0] for a in replay])\n",
" new_states = np.array([a[3] for a in replay])\n",
" init_values = np.array([a[-1] for a in replay])\n",
" Q = self.sess.run(self.model.logits, feed_dict={self.model.X:states, \n",
" self.model.hidden_layer:init_values})\n",
" Q_new = self.sess.run(self.model.logits, feed_dict={self.model.X:new_states, \n",
" self.model.hidden_layer:init_values})\n",
" Q_new_negative = self.sess.run(self.model_negative.logits, \n",
" feed_dict={self.model_negative.X:new_states, \n",
" self.model_negative.hidden_layer:init_values})\n",
" replay_size = len(replay)\n",
" X = np.empty((replay_size, 4, self.state_size))\n",
" Y = np.empty((replay_size, self.OUTPUT_SIZE))\n",
" INIT_VAL = np.empty((replay_size, 2 * self.LAYER_SIZE))\n",
" for i in range(replay_size):\n",
" state_r, action_r, reward_r, new_state_r, dead_r, rnn_memory = replay[i]\n",
" target = Q[i]\n",
" target[action_r] = reward_r\n",
" if not dead_r:\n",
" target[action_r] += self.GAMMA * Q_new_negative[i, np.argmax(Q_new[i])]\n",
" X[i] = state_r\n",
" Y[i] = target\n",
" INIT_VAL[i] = rnn_memory\n",
" return X, Y, INIT_VAL\n",
" \n",
" def get_state(self, t):\n",
" window_size = self.window_size + 1\n",
" d = t - window_size + 1\n",
" block = self.trend[d : t + 1] if d >= 0 else -d * [self.trend[0]] + self.trend[0 : t + 1]\n",
" res = []\n",
" for i in range(window_size - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array(res)\n",
" \n",
" def buy(self, initial_money):\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" action, last_state = self.sess.run([self.model.logits,self.model.last_state],\n",
" feed_dict={self.model.X:[self.INITIAL_FEATURES],\n",
" self.model.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and initial_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" initial_money -= self.trend[t]\n",
" states_buy.append(t)\n",
" print('day %d: buy 1 unit at price %f, total balance %f'% (t, self.trend[t], initial_money))\n",
" \n",
" elif action == 2 and len(inventory):\n",
" bought_price = inventory.pop(0)\n",
" initial_money += self.trend[t]\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((close[t] - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell 1 unit at price %f, investment %f %%, total balance %f,'\n",
" % (t, close[t], invest, initial_money)\n",
" )\n",
" \n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" self.INITIAL_FEATURES = new_state\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest\n",
" \n",
" \n",
" def train(self, iterations, checkpoint, initial_money):\n",
" for i in range(iterations):\n",
" total_profit = 0\n",
" inventory = []\n",
" state = self.get_state(0)\n",
" starting_money = initial_money\n",
" init_value = np.zeros((1, 2 * self.LAYER_SIZE))\n",
" for k in range(self.INITIAL_FEATURES.shape[0]):\n",
" self.INITIAL_FEATURES[k,:] = state\n",
" for t in range(0, len(self.trend) - 1, self.skip):\n",
" if (self.T_COPY + 1) % self.COPY == 0:\n",
" self._assign('real_model', 'negative_model')\n",
" \n",
" if np.random.rand() < self.EPSILON:\n",
" action = np.random.randint(self.OUTPUT_SIZE)\n",
" else:\n",
" action, last_state = self.sess.run([self.model.logits,\n",
" self.model.last_state],\n",
" feed_dict={self.model.X:[self.INITIAL_FEATURES],\n",
" self.model.hidden_layer:init_value})\n",
" action, init_value = np.argmax(action[0]), last_state\n",
" \n",
" next_state = self.get_state(t + 1)\n",
" \n",
" if action == 1 and starting_money >= self.trend[t]:\n",
" inventory.append(self.trend[t])\n",
" starting_money -= self.trend[t]\n",
" \n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" total_profit += self.trend[t] - bought_price\n",
" starting_money += self.trend[t]\n",
" \n",
" invest = ((starting_money - initial_money) / initial_money)\n",
" new_state = np.append([self.get_state(t + 1)], self.INITIAL_FEATURES[:3, :], axis = 0)\n",
" \n",
" self._memorize(self.INITIAL_FEATURES, action, invest, new_state, \n",
" starting_money < initial_money, init_value[0])\n",
" self.INITIAL_FEATURES = new_state\n",
" batch_size = min(len(self.MEMORIES), self.BATCH_SIZE)\n",
" replay = random.sample(self.MEMORIES, batch_size)\n",
" X, Y, INIT_VAL = self._construct_memories(replay)\n",
" \n",
" cost, _ = self.sess.run([self.model.cost, self.model.optimizer], \n",
" feed_dict={self.model.X: X, self.model.Y:Y,\n",
" self.model.hidden_layer: INIT_VAL})\n",
" self.T_COPY += 1\n",
" self.EPSILON = self.MIN_EPSILON + (1.0 - self.MIN_EPSILON) * np.exp(-self.DECAY_RATE * i)\n",
" if (i+1) % checkpoint == 0:\n",
" print('epoch: %d, total rewards: %f.3, cost: %f, total money: %f'%(i + 1, total_profit, cost,\n",
" starting_money))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"WARNING:tensorflow:: Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"epoch: 10, total rewards: 1305.274912.3, cost: 0.402263, total money: 777.284860\n",
"epoch: 20, total rewards: 582.070375.3, cost: 0.782595, total money: 804.650331\n",
"epoch: 30, total rewards: 420.380369.3, cost: 1.481925, total money: 80.210326\n",
"epoch: 40, total rewards: 1502.554748.3, cost: 0.343374, total money: 2823.564757\n",
"epoch: 50, total rewards: 589.170222.3, cost: 0.370314, total money: 6597.640193\n",
"epoch: 60, total rewards: 1069.864985.3, cost: 0.733583, total money: 10052.755000\n",
"epoch: 70, total rewards: 900.360168.3, cost: 0.154633, total money: 8866.610168\n",
"epoch: 80, total rewards: 625.559509.3, cost: 0.573019, total money: 9652.999511\n",
"epoch: 90, total rewards: 966.905028.3, cost: 0.080430, total money: 6971.785033\n",
"epoch: 100, total rewards: 784.169802.3, cost: 0.568819, total money: 10784.169802\n",
"epoch: 110, total rewards: 658.149963.3, cost: 0.052230, total money: 9641.509948\n",
"epoch: 120, total rewards: 615.210201.3, cost: 0.802322, total money: 9595.940181\n",
"epoch: 130, total rewards: 623.289978.3, cost: 0.278659, total money: 10623.289978\n",
"epoch: 140, total rewards: 595.960078.3, cost: 0.094435, total money: 10595.960078\n",
"epoch: 150, total rewards: 594.979550.3, cost: 0.360762, total money: 1819.289547\n",
"epoch: 160, total rewards: 794.614687.3, cost: 1.058314, total money: 3118.034730\n",
"epoch: 170, total rewards: 1225.854981.3, cost: 0.226553, total money: 5322.584961\n",
"epoch: 180, total rewards: 1099.610169.3, cost: 0.275357, total money: 6189.200135\n",
"epoch: 190, total rewards: 857.554813.3, cost: 0.417154, total money: 7946.004825\n",
"epoch: 200, total rewards: 1049.100096.3, cost: 0.839669, total money: 3317.970090\n"
]
}
],
"source": [
"close = df.Close.values.tolist()\n",
"initial_money = 10000\n",
"window_size = 30\n",
"skip = 1\n",
"batch_size = 32\n",
"agent = Agent(state_size = window_size, \n",
" window_size = window_size, \n",
" trend = close, \n",
" skip = skip)\n",
"agent.train(iterations = 200, checkpoint = 10, initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 unit at price 768.700012, total balance 9231.299988\n",
"day 1, sell 1 unit at price 762.130005, investment -0.854691 %, total balance 9993.429993,\n",
"day 3: buy 1 unit at price 782.520020, total balance 9210.909973\n",
"day 4, sell 1 unit at price 790.510010, investment 1.021059 %, total balance 10001.419983,\n",
"day 5: buy 1 unit at price 785.309998, total balance 9216.109985\n",
"day 6, sell 1 unit at price 762.559998, investment -2.896945 %, total balance 9978.669983,\n",
"day 7: buy 1 unit at price 754.020020, total balance 9224.649963\n",
"day 8, sell 1 unit at price 736.080017, investment -2.379248 %, total balance 9960.729980,\n",
"day 13: buy 1 unit at price 769.200012, total balance 9191.529968\n",
"day 16, sell 1 unit at price 761.679993, investment -0.977642 %, total balance 9953.209961,\n",
"day 19: buy 1 unit at price 758.039978, total balance 9195.169983\n",
"day 20, sell 1 unit at price 747.919983, investment -1.335021 %, total balance 9943.089966,\n",
"day 24: buy 1 unit at price 771.190002, total balance 9171.899964\n",
"day 28: buy 1 unit at price 796.099976, total balance 8375.799988\n",
"day 29: buy 1 unit at price 797.070007, total balance 7578.729981\n",
"day 31: buy 1 unit at price 790.799988, total balance 6787.929993\n",
"day 32, sell 1 unit at price 794.200012, investment 2.983702 %, total balance 7582.130005,\n",
"day 33, sell 1 unit at price 796.419983, investment 0.040197 %, total balance 8378.549988,\n",
"day 35, sell 1 unit at price 791.260010, investment -0.728919 %, total balance 9169.809998,\n",
"day 36, sell 1 unit at price 789.909973, investment -0.112546 %, total balance 9959.719971,\n",
"day 38: buy 1 unit at price 785.049988, total balance 9174.669983\n",
"day 41: buy 1 unit at price 786.140015, total balance 8388.529968\n",
"day 42, sell 1 unit at price 786.900024, investment 0.235658 %, total balance 9175.429992,\n",
"day 43, sell 1 unit at price 794.020020, investment 1.002367 %, total balance 9969.450012,\n",
"day 44: buy 1 unit at price 806.150024, total balance 9163.299988\n",
"day 46, sell 1 unit at price 804.789978, investment -0.168709 %, total balance 9968.089966,\n",
"day 47: buy 1 unit at price 807.909973, total balance 9160.179993\n",
"day 49, sell 1 unit at price 807.880005, investment -0.003709 %, total balance 9968.059998,\n",
"day 51: buy 1 unit at price 806.070007, total balance 9161.989991\n",
"day 52: buy 1 unit at price 802.174988, total balance 8359.815003\n",
"day 54: buy 1 unit at price 819.309998, total balance 7540.505005\n",
"day 55, sell 1 unit at price 823.869995, investment 2.208243 %, total balance 8364.375000,\n",
"day 56: buy 1 unit at price 835.669983, total balance 7528.705017\n",
"day 57: buy 1 unit at price 832.150024, total balance 6696.554993\n",
"day 58, sell 1 unit at price 823.309998, investment 2.634713 %, total balance 7519.864991,\n",
"day 59, sell 1 unit at price 802.320007, investment -2.073695 %, total balance 8322.184998,\n",
"day 61, sell 1 unit at price 795.695007, investment -4.783584 %, total balance 9117.880005,\n",
"day 62, sell 1 unit at price 798.530029, investment -4.040136 %, total balance 9916.410034,\n",
"day 68: buy 1 unit at price 813.669983, total balance 9102.740051\n",
"day 69, sell 1 unit at price 819.239990, investment 0.684554 %, total balance 9921.980041,\n",
"day 76: buy 1 unit at price 831.330017, total balance 9090.650024\n",
"day 77: buy 1 unit at price 828.640015, total balance 8262.010009\n",
"day 79, sell 1 unit at price 823.210022, investment -0.976747 %, total balance 9085.220031,\n",
"day 81, sell 1 unit at price 830.630005, investment 0.240151 %, total balance 9915.850036,\n",
"day 86: buy 1 unit at price 838.679993, total balance 9077.170043\n",
"day 88: buy 1 unit at price 845.539978, total balance 8231.630065\n",
"day 89, sell 1 unit at price 845.619995, investment 0.827491 %, total balance 9077.250060,\n",
"day 91, sell 1 unit at price 848.780029, investment 0.383193 %, total balance 9926.030089,\n",
"day 95: buy 1 unit at price 829.590027, total balance 9096.440062\n",
"day 96, sell 1 unit at price 817.580017, investment -1.447704 %, total balance 9914.020079,\n",
"day 97: buy 1 unit at price 814.429993, total balance 9099.590086\n",
"day 101: buy 1 unit at price 831.500000, total balance 8268.090086\n",
"day 102: buy 1 unit at price 829.559998, total balance 7438.530088\n",
"day 104, sell 1 unit at price 834.570007, investment 2.472897 %, total balance 8273.100095,\n",
"day 105, sell 1 unit at price 831.409973, investment -0.010827 %, total balance 9104.510068,\n",
"day 106, sell 1 unit at price 827.880005, investment -0.202516 %, total balance 9932.390073,\n",
"day 108: buy 1 unit at price 824.729980, total balance 9107.660093\n",
"day 109, sell 1 unit at price 823.349976, investment -0.167328 %, total balance 9931.010069,\n",
"day 114: buy 1 unit at price 838.210022, total balance 9092.800047\n",
"day 117, sell 1 unit at price 862.760010, investment 2.928859 %, total balance 9955.560057,\n",
"day 121: buy 1 unit at price 905.960022, total balance 9049.600035\n",
"day 122: buy 1 unit at price 912.570007, total balance 8137.030028\n",
"day 124: buy 1 unit at price 927.039978, total balance 7209.990050\n",
"day 125: buy 1 unit at price 931.659973, total balance 6278.330077\n",
"day 130, sell 1 unit at price 930.599976, investment 2.719762 %, total balance 7208.930053,\n",
"day 131, sell 1 unit at price 932.219971, investment 2.153256 %, total balance 8141.150024,\n",
"day 132, sell 1 unit at price 937.080017, investment 1.083021 %, total balance 9078.230041,\n",
"day 133, sell 1 unit at price 943.000000, investment 1.217185 %, total balance 10021.230041,\n",
"day 137: buy 1 unit at price 941.859985, total balance 9079.370056\n",
"day 138, sell 1 unit at price 948.820007, investment 0.738966 %, total balance 10028.190063,\n",
"day 142: buy 1 unit at price 975.880005, total balance 9052.310058\n",
"day 143: buy 1 unit at price 964.859985, total balance 8087.450073\n",
"day 144: buy 1 unit at price 966.950012, total balance 7120.500061\n",
"day 145, sell 1 unit at price 975.599976, investment -0.028695 %, total balance 8096.100037,\n",
"day 146, sell 1 unit at price 983.679993, investment 1.950543 %, total balance 9079.780030,\n",
"day 147: buy 1 unit at price 976.570007, total balance 8103.210023\n",
"day 148: buy 1 unit at price 980.940002, total balance 7122.270021\n",
"day 150, sell 1 unit at price 949.830017, investment -1.770515 %, total balance 8072.100038,\n",
"day 151: buy 1 unit at price 942.900024, total balance 7129.200014\n",
"day 152, sell 1 unit at price 953.400024, investment -2.372588 %, total balance 8082.600038,\n",
"day 153: buy 1 unit at price 950.760010, total balance 7131.840028\n",
"day 154, sell 1 unit at price 942.309998, investment -3.938060 %, total balance 8074.150026,\n",
"day 155, sell 1 unit at price 939.780029, investment -0.330894 %, total balance 9013.930055,\n",
"day 156, sell 1 unit at price 957.369995, investment 0.695232 %, total balance 9971.300050,\n",
"day 159: buy 1 unit at price 957.090027, total balance 9014.210023\n",
"day 160: buy 1 unit at price 965.590027, total balance 8048.619996\n",
"day 161, sell 1 unit at price 952.270020, investment -0.503611 %, total balance 9000.890016,\n",
"day 162: buy 1 unit at price 927.330017, total balance 8073.559999\n",
"day 163: buy 1 unit at price 940.489990, total balance 7133.070009\n",
"day 165: buy 1 unit at price 908.729980, total balance 6224.340029\n",
"day 167: buy 1 unit at price 911.710022, total balance 5312.630007\n",
"day 169, sell 1 unit at price 918.590027, investment -4.867490 %, total balance 6231.220034,\n",
"day 170, sell 1 unit at price 928.799988, investment 0.158516 %, total balance 7160.020022,\n",
"day 173, sell 1 unit at price 947.159973, investment 0.709203 %, total balance 8107.179995,\n",
"day 174: buy 1 unit at price 955.989990, total balance 7151.190005\n",
"day 175: buy 1 unit at price 953.419983, total balance 6197.770022\n",
"day 176: buy 1 unit at price 965.400024, total balance 5232.369998\n",
"day 177, sell 1 unit at price 970.890015, investment 6.840320 %, total balance 6203.260013,\n",
"day 178: buy 1 unit at price 968.150024, total balance 5235.109989\n",
"day 179: buy 1 unit at price 972.919983, total balance 4262.190006\n",
"day 180: buy 1 unit at price 980.340027, total balance 3281.849979\n",
"day 181, sell 1 unit at price 950.700012, investment 4.276578 %, total balance 4232.549991,\n",
"day 182, sell 1 unit at price 947.799988, investment -0.856704 %, total balance 5180.349979,\n",
"day 184, sell 1 unit at price 941.530029, investment -1.247085 %, total balance 6121.880008,\n",
"day 185, sell 1 unit at price 930.500000, investment -3.615084 %, total balance 7052.380008,\n",
"day 186: buy 1 unit at price 930.830017, total balance 6121.549991\n",
"day 190: buy 1 unit at price 929.359985, total balance 5192.190006\n",
"day 191, sell 1 unit at price 926.789978, investment -4.272070 %, total balance 6118.979984,\n",
"day 192, sell 1 unit at price 922.900024, investment -5.141220 %, total balance 7041.880008,\n",
"day 193, sell 1 unit at price 907.239990, investment -7.456600 %, total balance 7949.119998,\n",
"day 196: buy 1 unit at price 922.219971, total balance 7026.900027\n",
"day 198: buy 1 unit at price 910.979980, total balance 6115.920047\n",
"day 199, sell 1 unit at price 910.669983, investment -2.165813 %, total balance 7026.590030,\n",
"day 200, sell 1 unit at price 906.659973, investment -2.442542 %, total balance 7933.250003,\n",
"day 201, sell 1 unit at price 924.690002, investment 0.267835 %, total balance 8857.940005,\n",
"day 204, sell 1 unit at price 915.890015, investment 0.538984 %, total balance 9773.830020,\n",
"day 205: buy 1 unit at price 913.809998, total balance 8860.020022\n",
"day 206, sell 1 unit at price 921.289978, investment 0.818549 %, total balance 9781.310000,\n",
"day 209: buy 1 unit at price 937.340027, total balance 8843.969973\n",
"day 210: buy 1 unit at price 928.450012, total balance 7915.519961\n",
"day 211, sell 1 unit at price 927.809998, investment -1.016710 %, total balance 8843.329959,\n",
"day 212: buy 1 unit at price 935.950012, total balance 7907.379947\n",
"day 214, sell 1 unit at price 929.080017, investment 0.067856 %, total balance 8836.459964,\n",
"day 216, sell 1 unit at price 935.090027, investment -0.091884 %, total balance 9771.549991,\n",
"day 217: buy 1 unit at price 925.109985, total balance 8846.440006\n",
"day 219, sell 1 unit at price 915.000000, investment -1.092841 %, total balance 9761.440006,\n",
"day 220: buy 1 unit at price 921.809998, total balance 8839.630008\n",
"day 221: buy 1 unit at price 931.580017, total balance 7908.049991\n",
"day 222: buy 1 unit at price 932.450012, total balance 6975.599979\n",
"day 226, sell 1 unit at price 944.489990, investment 2.460376 %, total balance 7920.089969,\n",
"day 227: buy 1 unit at price 949.500000, total balance 6970.589969\n",
"day 229, sell 1 unit at price 953.270020, investment 2.328303 %, total balance 7923.859989,\n",
"day 230: buy 1 unit at price 957.789978, total balance 6966.070011\n",
"day 231: buy 1 unit at price 951.679993, total balance 6014.390018\n",
"day 232: buy 1 unit at price 969.960022, total balance 5044.429996\n",
"day 233, sell 1 unit at price 978.890015, investment 4.980428 %, total balance 6023.320011,\n",
"day 234: buy 1 unit at price 977.000000, total balance 5046.320011\n",
"day 237, sell 1 unit at price 987.830017, investment 4.036863 %, total balance 6034.150028,\n",
"day 239, sell 1 unit at price 992.000000, investment 3.571767 %, total balance 7026.150028,\n",
"day 240, sell 1 unit at price 992.179993, investment 4.255632 %, total balance 8018.330021,\n",
"day 243, sell 1 unit at price 988.200012, investment 1.880489 %, total balance 9006.530033,\n",
"day 244, sell 1 unit at price 968.450012, investment -0.875127 %, total balance 9974.980045,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = agent.buy(initial_money = initial_money)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: agent/updated-NES-google.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize = (10, 5))\n",
"bins = np.linspace(-10, 10, 100)\n",
"\n",
"solution = np.random.randn(100)\n",
"w = np.random.randn(100)\n",
"\n",
"plt.hist(solution, bins, alpha = 0.5, label = 'solution', color = 'r')\n",
"plt.hist(w, bins, alpha = 0.5, label = 'random', color = 'y')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"iter 1000. w: 0.0952791586701015, solution: 0.5720518054873052, reward: -20.148099\n",
"iter 2000. w: 0.5750455468679501, solution: 0.5720518054873052, reward: -0.008058\n",
"iter 3000. w: 0.5751585748688035, solution: 0.5720518054873052, reward: -0.008793\n",
"iter 4000. w: 0.5665604300033952, solution: 0.5720518054873052, reward: -0.007711\n",
"iter 5000. w: 0.5619489293298067, solution: 0.5720518054873052, reward: -0.005604\n"
]
}
],
"source": [
"def f(w):\n",
" return -np.sum(np.square(solution - w))\n",
"\n",
"\n",
"npop = 50\n",
"sigma = 0.1\n",
"alpha = 0.001\n",
"\n",
"for i in range(5000):\n",
"\n",
" if (i + 1) % 1000 == 0:\n",
" print(\n",
" 'iter %d. w: %s, solution: %s, reward: %f'\n",
" % (i + 1, str(w[-1]), str(solution[-1]), f(w))\n",
" )\n",
" N = np.random.randn(npop, 100)\n",
" R = np.zeros(npop)\n",
" for j in range(npop):\n",
" w_try = w + sigma * N[j]\n",
" R[j] = f(w_try)\n",
"\n",
" A = (R - np.mean(R)) / np.std(R)\n",
" w = w + alpha / (npop * sigma) * np.dot(N.T, A)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"'''\n",
"I want to compare my first two individuals with my real w\n",
"'''\n",
"plt.figure(figsize=(10,5))\n",
"\n",
"sigma = 0.1\n",
"N = np.random.randn(npop, 100)\n",
"individuals = []\n",
"for j in range(2):\n",
" individuals.append(w + sigma * N[j])\n",
" \n",
" \n",
"plt.hist(w, bins, alpha=0.5, label='w',color='r')\n",
"plt.hist(individuals[0], bins, alpha=0.5, label='individual 1')\n",
"plt.hist(individuals[1], bins, alpha=0.5, label='individual 2')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2017-10-16 \n",
" 992.099976 \n",
" 993.906982 \n",
" 984.000000 \n",
" 992.000000 \n",
" 992.000000 \n",
" 910500 \n",
" \n",
" \n",
" 1 \n",
" 2017-10-17 \n",
" 990.289978 \n",
" 996.440002 \n",
" 988.590027 \n",
" 992.179993 \n",
" 992.179993 \n",
" 1290200 \n",
" \n",
" \n",
" 2 \n",
" 2017-10-18 \n",
" 991.770020 \n",
" 996.719971 \n",
" 986.974976 \n",
" 992.809998 \n",
" 992.809998 \n",
" 1057600 \n",
" \n",
" \n",
" 3 \n",
" 2017-10-19 \n",
" 986.000000 \n",
" 988.880005 \n",
" 978.390015 \n",
" 984.450012 \n",
" 984.450012 \n",
" 1313600 \n",
" \n",
" \n",
" 4 \n",
" 2017-10-20 \n",
" 989.440002 \n",
" 991.000000 \n",
" 984.580017 \n",
" 988.200012 \n",
" 988.200012 \n",
" 1183200 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2017-10-16 992.099976 993.906982 984.000000 992.000000 992.000000 \n",
"1 2017-10-17 990.289978 996.440002 988.590027 992.179993 992.179993 \n",
"2 2017-10-18 991.770020 996.719971 986.974976 992.809998 992.809998 \n",
"3 2017-10-19 986.000000 988.880005 978.390015 984.450012 984.450012 \n",
"4 2017-10-20 989.440002 991.000000 984.580017 988.200012 988.200012 \n",
"\n",
" Volume \n",
"0 910500 \n",
"1 1290200 \n",
"2 1057600 \n",
"3 1313600 \n",
"4 1183200 "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"google = pd.read_csv('/Users/huseinzolkepli/Desktop/GOOG.csv')\n",
"google.head()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"def get_state(data, t, n):\n",
" d = t - n + 1\n",
" block = data[d : t + 1] if d >= 0 else -d * [data[0]] + data[: t + 1]\n",
" res = []\n",
" for i in range(n - 1):\n",
" res.append(block[i + 1] - block[i])\n",
" return np.array([res])"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0., 0., 0., 0., 0., 0., 0., 0., 0.]])"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"close = google.Close.values.tolist()\n",
"get_state(close, 0, 10)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0. , 0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0. , 0.179993]])"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_state(close, 1, 10)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[0. , 0. , 0. , 0. , 0. , 0. ,\n",
" 0. , 0.179993, 0.630005]])"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_state(close, 2, 10)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"class Deep_Evolution_Strategy:\n",
" def __init__(\n",
" self, weights, reward_function, population_size, sigma, learning_rate\n",
" ):\n",
" self.weights = weights\n",
" self.reward_function = reward_function\n",
" self.population_size = population_size\n",
" self.sigma = sigma\n",
" self.learning_rate = learning_rate\n",
"\n",
" def _get_weight_from_population(self, weights, population):\n",
" weights_population = []\n",
" for index, i in enumerate(population):\n",
" jittered = self.sigma * i\n",
" weights_population.append(weights[index] + jittered)\n",
" return weights_population\n",
"\n",
" def get_weights(self):\n",
" return self.weights\n",
"\n",
" def train(self, epoch = 100, print_every = 1):\n",
" lasttime = time.time()\n",
" for i in range(epoch):\n",
" population = []\n",
" rewards = np.zeros(self.population_size)\n",
" for k in range(self.population_size):\n",
" x = []\n",
" for w in self.weights:\n",
" x.append(np.random.randn(*w.shape))\n",
" population.append(x)\n",
" for k in range(self.population_size):\n",
" weights_population = self._get_weight_from_population(\n",
" self.weights, population[k]\n",
" )\n",
" rewards[k] = self.reward_function(weights_population)\n",
" rewards = (rewards - np.mean(rewards)) / np.std(rewards)\n",
" for index, w in enumerate(self.weights):\n",
" A = np.array([p[index] for p in population])\n",
" self.weights[index] = (\n",
" w\n",
" + self.learning_rate\n",
" / (self.population_size * self.sigma)\n",
" * np.dot(A.T, rewards).T\n",
" )\n",
" if (i + 1) % print_every == 0:\n",
" print(\n",
" 'iter %d. reward: %f'\n",
" % (i + 1, self.reward_function(self.weights))\n",
" )\n",
" print('time taken to train:', time.time() - lasttime, 'seconds')"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(self, input_size, layer_size, output_size):\n",
" self.weights = [\n",
" np.random.randn(input_size, layer_size),\n",
" np.random.randn(layer_size, output_size),\n",
" np.random.randn(layer_size, 1),\n",
" np.random.randn(1, layer_size),\n",
" ]\n",
"\n",
" def predict(self, inputs):\n",
" feed = np.dot(inputs, self.weights[0]) + self.weights[-1]\n",
" decision = np.dot(feed, self.weights[1])\n",
" buy = np.dot(feed, self.weights[2])\n",
" return decision, buy\n",
"\n",
" def get_weights(self):\n",
" return self.weights\n",
"\n",
" def set_weights(self, weights):\n",
" self.weights = weights"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"window_size = 30\n",
"model = Model(window_size, 500, 3)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"data": {
"text/plain": [
"-89.2658852200001"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"initial_money = 10000\n",
"starting_money = initial_money\n",
"len_close = len(close) - 1\n",
"weight = model\n",
"skip = 1\n",
"\n",
"state = get_state(close, 0, window_size + 1)\n",
"inventory = []\n",
"quantity = 0\n",
"\n",
"max_buy = 5\n",
"max_sell = 5\n",
"\n",
"\n",
"def act(model, sequence):\n",
" decision, buy = model.predict(np.array(sequence))\n",
" return np.argmax(decision[0]), int(buy[0])\n",
"\n",
"\n",
"for t in range(0, len_close, skip):\n",
" action, buy = act(weight, state)\n",
" next_state = get_state(close, t + 1, window_size + 1)\n",
" if action == 1 and initial_money >= close[t]:\n",
" if buy < 0:\n",
" buy = 1\n",
" if buy > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = buy\n",
" total_buy = buy_units * close[t]\n",
" initial_money -= total_buy\n",
" inventory.append(total_buy)\n",
" quantity += buy_units\n",
" elif action == 2 and len(inventory) > 0:\n",
" if quantity > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = quantity\n",
" quantity -= sell_units\n",
" total_sell = sell_units * close[t]\n",
" initial_money += total_sell\n",
"\n",
" state = next_state\n",
"((initial_money - starting_money) / starting_money) * 100"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"import time\n",
"\n",
"\n",
"class Agent:\n",
"\n",
" POPULATION_SIZE = 15\n",
" SIGMA = 0.1\n",
" LEARNING_RATE = 0.03\n",
"\n",
" def __init__(\n",
" self, model, money, max_buy, max_sell, close, window_size, skip\n",
" ):\n",
" self.window_size = window_size\n",
" self.skip = skip\n",
" self.close = close\n",
" self.model = model\n",
" self.initial_money = money\n",
" self.max_buy = max_buy\n",
" self.max_sell = max_sell\n",
" self.es = Deep_Evolution_Strategy(\n",
" self.model.get_weights(),\n",
" self.get_reward,\n",
" self.POPULATION_SIZE,\n",
" self.SIGMA,\n",
" self.LEARNING_RATE,\n",
" )\n",
"\n",
" def act(self, sequence):\n",
" decision, buy = self.model.predict(np.array(sequence))\n",
" return np.argmax(decision[0]), int(buy[0])\n",
"\n",
" def get_reward(self, weights):\n",
" initial_money = self.initial_money\n",
" starting_money = initial_money\n",
" len_close = len(self.close) - 1\n",
"\n",
" self.model.weights = weights\n",
" state = get_state(self.close, 0, self.window_size + 1)\n",
" inventory = []\n",
" quantity = 0\n",
" for t in range(0, len_close, self.skip):\n",
" action, buy = self.act(state)\n",
" next_state = get_state(self.close, t + 1, self.window_size + 1)\n",
" if action == 1 and initial_money >= self.close[t]:\n",
" if buy < 0:\n",
" buy = 1\n",
" if buy > self.max_buy:\n",
" buy_units = self.max_buy\n",
" else:\n",
" buy_units = buy\n",
" total_buy = buy_units * self.close[t]\n",
" initial_money -= total_buy\n",
" inventory.append(total_buy)\n",
" quantity += buy_units\n",
" elif action == 2 and len(inventory) > 0:\n",
" if quantity > self.max_sell:\n",
" sell_units = self.max_sell\n",
" else:\n",
" sell_units = quantity\n",
" quantity -= sell_units\n",
" total_sell = sell_units * self.close[t]\n",
" initial_money += total_sell\n",
"\n",
" state = next_state\n",
" return ((initial_money - starting_money) / starting_money) * 100\n",
"\n",
" def fit(self, iterations, checkpoint):\n",
" self.es.train(iterations, print_every = checkpoint)\n",
"\n",
" def buy(self):\n",
" initial_money = self.initial_money\n",
" len_close = len(self.close) - 1\n",
" state = get_state(self.close, 0, self.window_size + 1)\n",
" starting_money = initial_money\n",
" states_sell = []\n",
" states_buy = []\n",
" inventory = []\n",
" quantity = 0\n",
" for t in range(0, len_close, self.skip):\n",
" action, buy = self.act(state)\n",
" next_state = get_state(self.close, t + 1, self.window_size + 1)\n",
" if action == 1 and initial_money >= self.close[t]:\n",
" if buy < 0:\n",
" buy = 1\n",
" if buy > self.max_buy:\n",
" buy_units = self.max_buy\n",
" else:\n",
" buy_units = buy\n",
" total_buy = buy_units * self.close[t]\n",
" initial_money -= total_buy\n",
" inventory.append(total_buy)\n",
" quantity += buy_units\n",
" states_buy.append(t)\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (t, buy_units, total_buy, initial_money)\n",
" )\n",
" elif action == 2 and len(inventory) > 0:\n",
" bought_price = inventory.pop(0)\n",
" if quantity > self.max_sell:\n",
" sell_units = self.max_sell\n",
" else:\n",
" sell_units = quantity\n",
" if sell_units < 1:\n",
" continue\n",
" quantity -= sell_units\n",
" total_sell = sell_units * self.close[t]\n",
" initial_money += total_sell\n",
" states_sell.append(t)\n",
" try:\n",
" invest = ((total_sell - bought_price) / bought_price) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (t, sell_units, total_sell, invest, initial_money)\n",
" )\n",
" state = next_state\n",
"\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" print(\n",
" '\\ntotal gained %f, total investment %f %%'\n",
" % (initial_money - starting_money, invest)\n",
" )\n",
" plt.figure(figsize = (20, 10))\n",
" plt.plot(close, label = 'true close', c = 'g')\n",
" plt.plot(\n",
" close, 'X', label = 'predict buy', markevery = states_buy, c = 'b'\n",
" )\n",
" plt.plot(\n",
" close, 'o', label = 'predict sell', markevery = states_sell, c = 'r'\n",
" )\n",
" plt.legend()\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": [
"model = Model(input_size = window_size, layer_size = 500, output_size = 3)\n",
"agent = Agent(\n",
" model = model,\n",
" money = 10000,\n",
" max_buy = 5,\n",
" max_sell = 5,\n",
" close = close,\n",
" window_size = window_size,\n",
" skip = 1,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"iter 10. reward: 36.181611\n",
"iter 20. reward: 50.767101\n",
"iter 30. reward: 65.467698\n",
"iter 40. reward: 71.316103\n",
"iter 50. reward: 82.881994\n",
"iter 60. reward: 84.293704\n",
"iter 70. reward: 78.501997\n",
"iter 80. reward: 94.488579\n",
"iter 90. reward: 86.526799\n",
"iter 100. reward: 85.882890\n",
"iter 110. reward: 86.063284\n",
"iter 120. reward: 90.334301\n",
"iter 130. reward: 85.850098\n",
"iter 140. reward: 91.399606\n",
"iter 150. reward: 87.862805\n",
"iter 160. reward: 97.226486\n",
"iter 170. reward: 86.767297\n",
"iter 180. reward: 97.016782\n",
"iter 190. reward: 97.843791\n",
"iter 200. reward: 89.146606\n",
"iter 210. reward: 96.508885\n",
"iter 220. reward: 97.765979\n",
"iter 230. reward: 98.256375\n",
"iter 240. reward: 99.942482\n",
"iter 250. reward: 94.536183\n",
"iter 260. reward: 96.916185\n",
"iter 270. reward: 93.193185\n",
"iter 280. reward: 100.844085\n",
"iter 290. reward: 100.994682\n",
"iter 300. reward: 101.523774\n",
"iter 310. reward: 102.090896\n",
"iter 320. reward: 102.176091\n",
"iter 330. reward: 92.306981\n",
"iter 340. reward: 105.409190\n",
"iter 350. reward: 103.159886\n",
"iter 360. reward: 99.091287\n",
"iter 370. reward: 108.475085\n",
"iter 380. reward: 102.349682\n",
"iter 390. reward: 110.289382\n",
"iter 400. reward: 103.371389\n",
"iter 410. reward: 110.951287\n",
"iter 420. reward: 111.561078\n",
"iter 430. reward: 112.275285\n",
"iter 440. reward: 113.112587\n",
"iter 450. reward: 110.838887\n",
"iter 460. reward: 111.243782\n",
"iter 470. reward: 112.924874\n",
"iter 480. reward: 111.705677\n",
"iter 490. reward: 110.903074\n",
"iter 500. reward: 112.986871\n",
"time taken to train: 60.56475520133972 seconds\n"
]
}
],
"source": [
"agent.fit(iterations = 500, checkpoint = 10)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 units at price 992.000000, total balance 9008.000000\n",
"day 1: buy 1 units at price 992.179993, total balance 8015.820007\n",
"day 2: buy 1 units at price 992.809998, total balance 7023.010009\n",
"day 3: buy 5 units at price 4922.250060, total balance 2100.759949\n",
"day 4, sell 5 units at price 4941.000060, investment 398.084683 %, total balance 7041.760009,\n",
"day 5: buy 5 units at price 4842.250060, total balance 2199.509949\n",
"day 7: buy 5 units at price 4866.650085, total balance -2667.140136\n",
"day 9, sell 5 units at price 5096.350100, investment 413.651770 %, total balance 2429.209964,\n",
"day 10: buy 5 units at price 5085.549925, total balance -2656.339961\n",
"day 12, sell 5 units at price 5127.500000, investment 416.463373 %, total balance 2471.160039,\n",
"day 13, sell 5 units at price 5127.899780, investment 4.177962 %, total balance 7599.059819,\n",
"day 14, sell 3 units at price 3097.439940, investment -36.033045 %, total balance 10696.499759,\n",
"day 22: buy 1 units at price 1020.909973, total balance 9675.589786\n",
"day 24: buy 1 units at price 1019.090027, total balance 8656.499759\n",
"day 25: buy 5 units at price 5091.900025, total balance 3564.599734\n",
"day 27: buy 5 units at price 5179.799805, total balance -1615.200071\n",
"day 29, sell 5 units at price 5271.049805, investment 416.308974 %, total balance 3655.849734,\n",
"day 30, sell 5 units at price 5237.050170, investment 413.894752 %, total balance 8892.899904,\n",
"day 33: buy 5 units at price 5050.849915, total balance 3842.049989\n",
"day 35: buy 5 units at price 5025.750120, total balance -1183.700131\n",
"day 42, sell 5 units at price 5245.750120, investment 3.021467 %, total balance 4062.049989,\n",
"day 43, sell 5 units at price 5320.949705, investment 2.725007 %, total balance 9382.999694,\n",
"day 44, sell 2 units at price 2154.280030, investment -57.348168 %, total balance 11537.279724,\n",
"day 45: buy 1 units at price 1070.680054, total balance 10466.599670\n",
"day 48: buy 1 units at price 1060.119995, total balance 9406.479675\n",
"day 51: buy 5 units at price 5240.700075, total balance 4165.779600\n",
"day 52: buy 5 units at price 5232.000120, total balance -1066.220520\n",
"day 56, sell 5 units at price 5511.149900, investment 9.658255 %, total balance 4444.929380,\n",
"day 57, sell 5 units at price 5534.699705, investment 416.933110 %, total balance 9979.629085,\n",
"day 58, sell 2 units at price 2212.520020, investment 108.704678 %, total balance 12192.149105,\n",
"day 59: buy 5 units at price 5513.049925, total balance 6679.099180\n",
"day 60: buy 5 units at price 5527.600100, total balance 1151.499080\n",
"day 62: buy 5 units at price 5608.800050, total balance -4457.300970\n",
"day 69, sell 5 units at price 5851.849975, investment 11.661608 %, total balance 1394.549005,\n",
"day 70, sell 5 units at price 5879.199830, investment 12.370025 %, total balance 7273.748835,\n",
"day 71, sell 5 units at price 5877.899780, investment 6.617931 %, total balance 13151.648615,\n",
"day 72: buy 5 units at price 5818.449705, total balance 7333.198910\n",
"day 73, sell 5 units at price 5849.699705, investment 5.827115 %, total balance 13182.898615,\n",
"day 78: buy 5 units at price 5242.899780, total balance 7939.998835\n",
"day 79: buy 5 units at price 5007.600100, total balance 2932.398735\n",
"day 80: buy 5 units at price 5188.900145, total balance -2256.501410\n",
"day 87, sell 5 units at price 5556.699830, investment -0.928901 %, total balance 3300.198420,\n",
"day 89: buy 1 units at price 1126.790039, total balance 2173.408381\n",
"day 90, sell 5 units at price 5718.750000, investment -1.713510 %, total balance 7892.158381,\n",
"day 93: buy 5 units at price 5347.600100, total balance 2544.558281\n",
"day 96: buy 5 units at price 5475.300295, total balance -2930.742014\n",
"day 98, sell 5 units at price 5630.000000, investment 7.383323 %, total balance 2699.257986,\n",
"day 99, sell 5 units at price 5800.200195, investment 15.827943 %, total balance 8499.458181,\n",
"day 100, sell 5 units at price 5822.500000, investment 12.210677 %, total balance 14321.958181,\n",
"day 101: buy 1 units at price 1138.170044, total balance 13183.788137\n",
"day 102, sell 2 units at price 2298.979980, investment 104.029136 %, total balance 15482.768117,\n",
"day 111: buy 5 units at price 5025.499880, total balance 10457.268237\n",
"day 113: buy 5 units at price 5158.950195, total balance 5298.318042\n",
"day 114: buy 5 units at price 5032.349855, total balance 265.968187\n",
"day 116, sell 5 units at price 5125.700075, investment 1.993835 %, total balance 5391.668262,\n",
"day 118: buy 1 units at price 1007.039978, total balance 4384.628284\n",
"day 119: buy 5 units at price 5077.250060, total balance -692.621776\n",
"day 126, sell 5 units at price 5360.399780, investment 3.904856 %, total balance 4667.778004,\n",
"day 128, sell 5 units at price 5364.799805, investment 6.606257 %, total balance 10032.577809,\n",
"day 129, sell 5 units at price 5337.249755, investment 429.993831 %, total balance 15369.827564,\n",
"day 131, sell 1 units at price 1021.179993, investment -79.887144 %, total balance 16391.007557,\n",
"day 132: buy 1 units at price 1040.040039, total balance 15350.967518\n",
"day 135, sell 1 units at price 1037.310059, investment -0.262488 %, total balance 16388.277577,\n",
"day 136: buy 5 units at price 5121.900025, total balance 11266.377552\n",
"day 137: buy 1 units at price 1023.719971, total balance 10242.657581\n",
"day 138: buy 5 units at price 5241.049805, total balance 5001.607776\n",
"day 139: buy 5 units at price 5273.950195, total balance -272.342419\n",
"day 141, sell 5 units at price 5413.800050, investment 5.699057 %, total balance 5141.457631,\n",
"day 142, sell 5 units at price 5487.849730, investment 436.069422 %, total balance 10629.307361,\n",
"day 144: buy 1 units at price 1100.199951, total balance 9529.107410\n",
"day 147: buy 1 units at price 1078.589966, total balance 8450.517444\n",
"day 148: buy 5 units at price 5331.799925, total balance 3118.717519\n",
"day 150: buy 5 units at price 5348.649900, total balance -2229.932381\n",
"day 159, sell 5 units at price 5698.300170, investment 8.724404 %, total balance 3468.367789,\n",
"day 161, sell 5 units at price 5619.299925, investment 6.548218 %, total balance 9087.667714,\n",
"day 162: buy 5 units at price 5604.349975, total balance 3483.317739\n",
"day 168: buy 1 units at price 1173.459961, total balance 2309.857778\n",
"day 170, sell 5 units at price 5849.199830, investment 431.648799 %, total balance 8159.057608,\n",
"day 171, sell 5 units at price 5788.300170, investment 436.654368 %, total balance 13947.357778,\n",
"day 172, sell 4 units at price 4621.919920, investment -13.314078 %, total balance 18569.277698,\n",
"day 173: buy 5 units at price 5624.050295, total balance 12945.227403\n",
"day 175: buy 5 units at price 5519.899900, total balance 7425.327503\n",
"day 176: buy 5 units at price 5571.099855, total balance 1854.227648\n",
"day 179: buy 5 units at price 5514.450075, total balance -3660.222427\n",
"day 184, sell 5 units at price 5769.500120, investment 7.868345 %, total balance 2109.277693,\n",
"day 187: buy 5 units at price 5919.299925, total balance -3810.022232\n",
"day 194, sell 5 units at price 6318.499755, investment 12.742776 %, total balance 2508.477523,\n",
"day 195, sell 5 units at price 6341.649780, investment 440.423192 %, total balance 8850.127303,\n",
"day 196, sell 5 units at price 6192.500000, investment 10.107479 %, total balance 15042.627303,\n",
"day 197, sell 5 units at price 6098.699950, investment 10.485698 %, total balance 21141.327253,\n",
"day 204: buy 5 units at price 6228.049925, total balance 14913.277328\n",
"day 205: buy 5 units at price 6245.499880, total balance 8667.777448\n",
"day 206: buy 5 units at price 6188.049925, total balance 2479.727523\n",
"day 207, sell 5 units at price 6175.050050, investment -0.850987 %, total balance 8654.777573,\n",
"day 208, sell 5 units at price 6210.499880, investment -0.560404 %, total balance 14865.277453,\n",
"day 209: buy 5 units at price 6071.900025, total balance 8793.377428\n",
"day 210: buy 5 units at price 6032.449950, total balance 2760.927478\n",
"day 211: buy 5 units at price 6004.799805, total balance -3243.872327\n",
"day 219, sell 5 units at price 6246.500245, investment 0.944568 %, total balance 3002.627918,\n",
"day 220, sell 5 units at price 6195.599975, investment 2.037253 %, total balance 9198.227893,\n",
"day 221, sell 5 units at price 6090.949705, investment 0.969751 %, total balance 15289.177598,\n",
"day 227: buy 1 units at price 1177.359985, total balance 14111.817613\n",
"day 229: buy 5 units at price 5876.649780, total balance 8235.167833\n",
"day 230: buy 5 units at price 5862.650145, total balance 2372.517688\n",
"day 231: buy 1 units at price 1156.050049, total balance 1216.467639\n",
"day 232: buy 1 units at price 1161.219971, total balance 55.247668\n",
"day 233, sell 5 units at price 5855.449830, investment -2.487177 %, total balance 5910.697498,\n",
"day 234, sell 5 units at price 5934.349975, investment 404.038701 %, total balance 11845.047473,\n",
"day 235: buy 5 units at price 5830.449830, total balance 6014.597643\n",
"day 238: buy 1 units at price 1180.489990, total balance 4834.107653\n",
"day 242, sell 5 units at price 6000.549925, investment 2.108347 %, total balance 10834.657578,\n",
"day 243, sell 5 units at price 6014.749755, investment 2.594383 %, total balance 16849.407333,\n",
"day 245, sell 4 units at price 4629.399904, investment 300.449782 %, total balance 21478.807237,\n",
"\n",
"total gained 11478.807237, total investment 114.788072 %\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJIAAAJHCAYAAADLzny5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzs3Xl8lOW9///XPVu2yTZJSEDZlXGrgqIgorSenkNrW49Cj1IrirYu9bjUYu2v59Sebnaxek61HttTN1zK97QKerBaW9tqVRAVRdxgEIGAZJ2ZJJNkMpnM3Pfvj0kCkUAmyyxJ3s/Hg0eTa+655pqQGx/z7uf6XIZlWYiIiIiIiIiIiAzElukFiIiIiIiIiIjI6KAgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkqIgSUREREREREREkuLI9AKSkAOcCtQC8QyvRURERERERERkLLADE4HXgc5knzQagqRTgZcyvQgRERERERERkTHoTODlZC8eDUFSLUBTUzumaWV6LcNWVuYmEGjL9DJEsp7uFZHk6F4RSY7uFZHk6F4RGdhYuU9sNoPS0gLozl2SNRqCpDiAaVpjIkgCxsz7EEk13SsiydG9IpIc3SsiydG9IjKwMXafDKqNkJpti4iIiIiIiIhIUhQkiYiIiIiIiIhIUkbD1jYRERERERERGSPi8RhNTY3EYtFML2VIGhpsmKaZ6WUkzWazk5fnxu0uxjCMYc+nIElERERERERE0qapqZHc3HwKCqpGJNhIN4fDRiw2OoIky7KIx2O0tjbT1NSIxzNh2HNqa5uIiIiIiIiIpE0sFqWgoGhUhkijjWEYOBxOSkrKiEYjIzKngiQRERERERERSSuFSOllGDZgZE6aU5AkIiIiIiIiIiJJUZAkIiIiIiIiIuNSW1sb3/72yrS93q23fo9nnnkqba+XCgqSRERERERERGRcam0N8cEH2zO9jFFFp7aJiIiIiIiIyLj0i1/8HL+/kW9/+yauv/4brFx5HcXFJbhcOSxe/Fk2b36Df//37wFw7bVXcvnlV3LaaafxyCOreP7554jHTebN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IiKSxeraG6jKr8AwjD7jbpcbgLautkwsS0TGKQVJIiIiIiIiWaw+3Ejlx7a1Abi7K5LUcFtE0klBkoiIiIiISJaKxDpp6mymqqCfIKm7R1KrKpJEssatt36PZ555Cr+/kZtuuv6w11533VXDfr377/8f7r//fwBYuDA9TcPV2l9ERERERCRLNYQbAfqtSMp35GEzbKpIknEhtHED/rVriAUDODxllC9ZStH8BZle1iGVl1dw++13HfaazZvfSNNqRpaCJBERERERkSxVF06c2FaZX3HQYzbDRoEzXz2SZMwLbdxA/cOrsKJRAGLBAPUPrwIYdpj05pubeOCB32C3O2hoqOO4447nW9+6hUDAz8qV11FcXILLlcN//ucvueeeO9m8+Q1M0+Szn/08F174ZSzL4u67/4v161+mvLwc0zSZM+cUamtruO66q3j88aeoq6vlxz/+Pk1NQXJzc/nWt27hD394EoArrriUe+99qHc9sViMn/zk++zc+SEA55//L5x77vkEgwF+/vMfU19fj81m46qr/pVTT503rPc+VAqSREREREREslR9uBGbYaMiv7zfxwudblUkyZjnX7umN0TqYUWj+NeuGZGqpPfff49Vq37L5MlTueWW/4+1a3/PokVns2dPNY899ksmTpzEk08+DsADD/wW04xx/fXXcMwxxxEMBti+3cejj/6e1tZWVqxYdtD8d9zxUxYtOpulSy/glVde5qGH7ueHP/wpjz/+uz4hEsA772whFArx4IOraWlp5u67f8G5557PnXfezuc+dy4LFy7C7/dzzTVfYdWq1cN+70OhIElERERERCRL1bU3UJ7rwWnr/6Ob21lAa5eCJBnbYsHAoMYHa/bsOUyZMg2Az3zmHNate4JFi86mtNTDxImTANi06TU++GA7b7yxCcOAcDjMhx/uYPfunSxa9CkcDgelpaXMn3/GQfO/9dabfO97twJw+ukLOf30hYdcy4wZM9mzp5pvfONa5s8/g6997bre16+urua++xL9kGKxGPv2fTQi73+wFCSJiIiIiIhkqfpwA5X9NNru4XYV8FFbTRpXJJJ+Dk9Zv6GRw1M2IvPb7fber03T6v0+JyendzweN7nmmutZtOhsHA4bfn+QvLxc7rnnLkzT6neu/WP7oxfLsti9exfTp8/ody3FxSU88sjvef31V3nllfVcfvnF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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"agent.buy()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"inputHidden": false,
"outputHidden": false
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernel_info": {
"name": "python3"
},
"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.6.8"
},
"nteract": {
"version": "0.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
================================================
FILE: dataset/AMD.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,12.930000,13.180000,12.900000,13.100000,13.100000,44388300
2018-05-24,13.060000,13.430000,13.030000,13.410000,13.410000,47785700
2018-05-25,13.400000,13.720000,13.360000,13.540000,13.540000,43850100
2018-05-29,13.450000,13.630000,13.260000,13.360000,13.360000,39578500
2018-05-30,13.480000,13.950000,13.480000,13.820000,13.820000,58186400
2018-05-31,13.740000,13.930000,13.690000,13.730000,13.730000,46797700
2018-06-01,13.980000,14.400000,13.920000,14.400000,14.400000,71677900
2018-06-04,14.760000,14.980000,14.520000,14.850000,14.850000,74546000
2018-06-05,14.850000,14.920000,14.630000,14.850000,14.850000,56122700
2018-06-06,15.070000,15.740000,15.040000,15.670000,15.670000,97089000
2018-06-07,15.830000,15.970000,14.850000,14.890000,14.890000,99860300
2018-06-08,14.520000,15.330000,14.310000,15.250000,15.250000,81930500
2018-06-11,15.210000,15.890000,15.010000,15.730000,15.730000,80737600
2018-06-12,15.840000,15.950000,15.430000,15.850000,15.850000,67002600
2018-06-13,15.810000,16.520000,15.780000,16.320000,16.320000,90227300
2018-06-14,16.620001,16.790001,15.580000,16.250000,16.250000,113048600
2018-06-15,16.059999,16.520000,15.820000,16.340000,16.340000,77612200
2018-06-18,16.180000,17.340000,16.129999,17.110001,17.110001,104317400
2018-06-19,16.850000,17.290001,16.309999,16.690001,16.690001,92542900
2018-06-20,16.830000,17.129999,16.370001,16.520000,16.520000,76280600
2018-06-21,16.650000,16.870001,15.460000,15.650000,15.650000,95638400
2018-06-22,15.780000,15.910000,15.560000,15.800000,15.800000,59257100
2018-06-25,15.640000,15.740000,14.540000,15.110000,15.110000,94418400
2018-06-26,15.320000,15.600000,15.100000,15.500000,15.500000,54213500
2018-06-27,15.650000,15.760000,14.960000,14.970000,14.970000,56014300
2018-06-28,14.850000,15.360000,14.750000,15.310000,15.310000,48716800
2018-06-29,15.410000,15.490000,14.980000,14.990000,14.990000,41527800
2018-07-02,14.800000,15.180000,14.740000,15.160000,15.160000,43398800
2018-07-03,15.210000,15.340000,14.960000,15.000000,15.000000,32094000
2018-07-05,15.130000,15.500000,15.020000,15.500000,15.500000,40703300
2018-07-06,15.520000,16.389999,15.480000,16.360001,16.360001,65101700
2018-07-09,16.730000,16.840000,16.170000,16.610001,16.610001,58525500
2018-07-10,16.590000,16.650000,16.309999,16.549999,16.549999,37093000
2018-07-11,16.150000,16.530001,16.020000,16.270000,16.270000,42544100
2018-07-12,16.410000,16.790001,16.379999,16.559999,16.559999,44188100
2018-07-13,16.680000,16.690001,16.219999,16.270000,16.270000,40614100
2018-07-16,16.420000,17.000000,16.410000,16.580000,16.580000,65275300
2018-07-17,16.500000,16.879999,16.480000,16.870001,16.870001,42313500
2018-07-18,16.940001,16.990000,16.549999,16.850000,16.850000,40881500
2018-07-19,16.709999,16.879999,16.549999,16.709999,16.709999,41267800
2018-07-20,16.660000,16.879999,16.440001,16.500000,16.500000,42879800
2018-07-23,16.469999,16.680000,15.900000,16.660000,16.660000,44940800
2018-07-24,16.750000,16.860001,16.110001,16.190001,16.190001,58201500
2018-07-25,16.299999,16.389999,15.720000,16.049999,16.049999,82604900
2018-07-26,17.160000,18.450001,16.830000,18.350000,18.350000,192661100
2018-07-27,19.070000,19.879999,18.309999,18.940001,18.940001,161903800
2018-07-30,19.400000,20.180000,19.309999,19.420000,19.420000,160823400
2018-07-31,19.350000,19.500000,18.270000,18.330000,18.330000,118403400
2018-08-01,18.340000,18.950001,18.320000,18.480000,18.480000,75495200
2018-08-02,18.170000,18.830000,18.000000,18.790001,18.790001,52867100
2018-08-03,18.940001,19.059999,18.370001,18.490000,18.490000,53232100
2018-08-06,18.889999,19.440001,18.459999,19.430000,19.430000,83579700
2018-08-07,19.530001,19.709999,19.080000,19.559999,19.559999,72822600
2018-08-08,19.459999,19.770000,19.260000,19.580000,19.580000,52081400
2018-08-09,19.580000,19.709999,19.080000,19.100000,19.100000,46536400
2018-08-10,19.090000,19.480000,18.850000,19.059999,19.059999,65821100
2018-08-13,19.160000,19.930000,19.120001,19.730000,19.730000,81262200
2018-08-14,19.969999,20.280001,19.629999,20.020000,20.020000,89195500
2018-08-15,19.860001,20.100000,19.200001,19.700001,19.700001,86355700
2018-08-16,19.860001,20.070000,19.250000,19.330000,19.330000,69733700
2018-08-17,19.120001,19.820000,18.730000,19.770000,19.770000,60616600
2018-08-20,19.790001,20.080000,19.350000,19.980000,19.980000,62983200
2018-08-21,19.980000,20.420000,19.860001,20.400000,20.400000,55629000
2018-08-22,20.280001,20.920000,20.209999,20.900000,20.900000,62002700
2018-08-23,21.190001,22.320000,21.139999,22.290001,22.290001,113444100
2018-08-24,22.910000,24.000000,22.670000,23.980000,23.980000,164328200
2018-08-27,24.940001,27.299999,24.629999,25.260000,25.260000,325058400
2018-08-28,25.510000,26.180000,24.040001,25.049999,25.049999,215771200
2018-08-29,24.360001,25.410000,24.010000,25.200001,25.200001,143223200
2018-08-30,25.290001,25.670000,24.760000,24.889999,24.889999,103607300
2018-08-31,24.889999,25.240000,24.719999,25.170000,25.170000,65206400
2018-09-04,25.620001,28.110001,25.570000,28.059999,28.059999,192541300
2018-09-05,29.410000,29.940001,26.840000,28.510000,28.510000,257349000
2018-09-06,28.120001,28.580000,27.190001,27.840000,27.840000,143942900
2018-09-07,26.959999,28.270000,26.799999,27.379999,27.379999,123348700
2018-09-10,28.150000,29.930000,27.840000,29.889999,29.889999,162253800
2018-09-11,30.020000,30.590000,29.370001,30.100000,30.100000,159902500
2018-09-12,29.910000,32.290001,29.450001,32.209999,32.209999,197889600
2018-09-13,33.160000,34.139999,29.870001,30.480000,30.480000,304147100
2018-09-14,31.430000,33.090000,30.540001,32.720001,32.720001,217762800
2018-09-17,31.750000,33.230000,31.600000,32.430000,32.430000,180410600
2018-09-18,32.990002,33.369999,31.200001,31.930000,31.930000,176673200
2018-09-19,31.520000,31.830000,30.510000,31.209999,31.209999,124287000
2018-09-20,32.099998,32.200001,30.639999,31.180000,31.180000,123116500
2018-09-21,31.190001,32.419998,30.910000,31.020000,31.020000,129792900
2018-09-24,31.129999,32.650002,30.910000,32.610001,32.610001,118332600
2018-09-25,33.180000,33.599998,32.189999,32.570000,32.570000,118570200
2018-09-26,32.400002,32.599998,31.719999,32.189999,32.189999,79347300
2018-09-27,31.860001,32.630001,31.389999,32.590000,32.590000,87934400
2018-09-28,32.240002,32.779999,29.980000,30.889999,30.889999,165453500
2018-10-01,30.690001,31.910000,30.250000,31.420000,31.420000,94742900
2018-10-02,30.730000,30.820000,28.650000,29.020000,29.020000,145276500
2018-10-03,29.040001,29.219999,26.540001,28.430000,28.430000,190137200
2018-10-04,27.990000,28.830000,27.370001,27.780001,27.780001,95831200
2018-10-05,28.070000,28.469999,26.930000,27.350000,27.350000,88008500
2018-10-08,26.730000,27.540001,25.959999,26.459999,26.459999,103789500
2018-10-09,26.150000,27.709999,26.000000,27.240000,27.240000,105461800
2018-10-10,27.379999,27.400000,24.910000,25.000000,25.000000,147682900
2018-10-11,24.740000,26.200001,24.549999,25.299999,25.299999,147013800
2018-10-12,26.770000,26.969999,25.670000,26.340000,26.340000,111059400
2018-10-15,26.379999,26.770000,25.750000,26.260000,26.260000,70523500
2018-10-16,26.629999,28.230000,26.170000,28.180000,28.180000,92529000
2018-10-17,28.410000,28.530001,26.920000,27.299999,27.299999,89466900
2018-10-18,27.080000,27.750000,26.400000,26.620001,26.620001,79623700
2018-10-19,27.030001,27.100000,23.600000,23.660000,23.660000,130799900
2018-10-22,24.459999,25.639999,24.090000,25.030001,25.030001,114158900
2018-10-23,24.180000,25.260000,23.850000,25.090000,25.090000,101763000
2018-10-24,25.040001,25.100000,22.750000,22.790001,22.790001,134489100
2018-10-25,17.920000,20.150000,17.719999,19.270000,19.270000,189173700
2018-10-26,18.490000,18.780001,17.049999,17.629999,17.629999,119689000
2018-10-29,18.209999,18.230000,16.270000,16.850000,16.850000,94479600
2018-10-30,16.379999,17.240000,16.170000,17.200001,17.200001,99049400
2018-10-31,17.870001,18.340000,17.120001,18.209999,18.209999,110463700
2018-11-01,18.410000,20.330000,18.080000,20.219999,20.219999,136896500
2018-11-02,20.590000,21.059999,19.469999,20.230000,20.230000,123788000
2018-11-05,20.120001,20.180000,18.879999,19.900000,19.900000,108016700
2018-11-06,19.500000,21.650000,19.480000,20.680000,20.680000,144995700
2018-11-07,21.420000,22.219999,21.070000,21.840000,21.840000,121115800
2018-11-08,21.770000,22.080000,20.969999,21.200001,21.200001,92387600
2018-11-09,20.770000,21.190001,20.110001,21.030001,21.030001,85900700
2018-11-12,20.680000,20.850000,18.799999,19.030001,19.030001,95948200
2018-11-13,19.280001,20.020000,18.969999,19.610001,19.610001,76126000
2018-11-14,20.180000,21.110001,19.760000,20.809999,20.809999,106344300
2018-11-15,20.719999,21.770000,20.420000,21.490000,21.490000,97715500
2018-11-16,19.870001,20.969999,19.719999,20.660000,20.660000,112376600
2018-11-19,20.400000,20.590000,19.090000,19.110001,19.110001,93578200
2018-11-20,17.400000,19.580000,17.180000,19.209999,19.209999,109869400
2018-11-21,20.049999,20.309999,18.500000,18.730000,18.730000,81585600
2018-11-23,18.610001,19.830000,18.559999,19.379999,19.379999,54611300
2018-11-26,19.959999,20.190001,19.110001,20.080000,20.080000,83211000
2018-11-27,19.770000,21.450001,19.730000,21.049999,21.049999,119230100
2018-11-28,21.820000,21.879999,20.180000,21.340000,21.340000,134425300
2018-11-29,21.190001,21.610001,20.730000,21.430000,21.430000,79853700
2018-11-30,21.299999,21.360001,20.520000,21.299999,21.299999,82370700
2018-12-03,22.480000,23.750000,22.370001,23.709999,23.709999,139607400
2018-12-04,23.350000,23.420000,21.070000,21.120001,21.120001,127392900
2018-12-06,20.219999,21.410000,20.059999,21.299999,21.299999,103434700
2018-12-07,21.299999,21.379999,19.170000,19.459999,19.459999,105764500
2018-12-10,19.350000,20.129999,19.270000,19.990000,19.990000,77984500
2018-12-11,20.709999,21.139999,19.690001,19.980000,19.980000,88027400
2018-12-12,20.320000,21.020000,19.709999,20.480000,20.480000,100340700
2018-12-13,20.629999,20.870001,19.760000,19.860001,19.860001,88108300
2018-12-14,19.580000,20.700001,19.520000,19.900000,19.900000,84713600
2018-12-17,20.010000,20.020000,18.639999,18.830000,18.830000,115437900
2018-12-18,19.150000,19.840000,18.879999,19.500000,19.500000,101512900
2018-12-19,19.440001,19.719999,18.000000,18.160000,18.160000,120644500
2018-12-20,18.110001,18.860001,17.340000,17.940001,17.940001,119394500
2018-12-21,18.120001,18.340000,16.760000,16.930000,16.930000,132246000
2018-12-24,16.520000,17.219999,16.370001,16.650000,16.650000,62933100
2018-12-26,16.879999,17.910000,16.030001,17.900000,17.900000,108811800
2018-12-27,17.430000,17.740000,16.440001,17.490000,17.490000,111373000
2018-12-28,17.530001,18.309999,17.139999,17.820000,17.820000,109214400
2018-12-31,18.150000,18.510000,17.850000,18.459999,18.459999,84732200
2019-01-02,18.010000,19.000000,17.980000,18.830000,18.830000,87148700
2019-01-03,18.420000,18.680000,16.940001,17.049999,17.049999,117073000
2019-01-04,17.549999,19.070000,17.430000,19.000000,19.000000,111878600
2019-01-07,19.440001,20.680000,19.000000,20.570000,20.570000,107157000
2019-01-08,21.190001,21.200001,19.680000,20.750000,20.750000,121271000
2019-01-09,20.889999,21.440001,20.070000,20.190001,20.190001,163944100
2019-01-10,19.760000,19.830000,18.900000,19.740000,19.740000,115629400
2019-01-11,19.469999,20.350000,19.190001,20.270000,20.270000,85110800
2019-01-14,19.959999,20.620001,19.750000,20.230000,20.230000,71350200
2019-01-15,20.440001,20.680000,20.260000,20.379999,20.379999,62785800
2019-01-16,20.400000,20.540001,19.709999,19.730000,19.730000,70849300
2019-01-17,19.490000,20.510000,19.020000,20.250000,20.250000,85018400
2019-01-18,20.370001,21.049999,20.020000,20.770000,20.770000,88131000
2019-01-22,20.480000,20.920000,19.700001,19.760000,19.760000,78513700
2019-01-23,20.030001,20.480000,19.549999,19.799999,19.799999,77811300
2019-01-24,20.059999,21.010000,20.040001,20.850000,20.850000,97433400
2019-01-25,20.990000,22.030001,20.790001,21.930000,21.930000,110239500
2019-01-28,20.320000,21.010000,20.020000,20.180000,20.180000,135164100
2019-01-29,20.260000,20.389999,19.049999,19.250000,19.250000,131202500
2019-01-30,21.490000,23.129999,21.370001,23.090000,23.090000,211421200
2019-01-31,23.020000,25.139999,22.830000,24.410000,24.410000,182575600
2019-02-01,24.610001,24.840000,24.070000,24.510000,24.510000,105356200
2019-02-04,24.430000,24.660000,24.070000,24.129999,24.129999,70843800
2019-02-05,23.420000,23.860001,22.980000,23.309999,23.309999,122226000
2019-02-06,23.629999,24.139999,23.219999,23.260000,23.260000,78684300
2019-02-07,22.990000,23.219999,22.320000,22.670000,22.670000,86723900
2019-02-08,22.330000,23.280001,22.270000,23.049999,23.049999,78129300
2019-02-11,23.049999,23.280001,22.660000,22.959999,22.959999,60578700
2019-02-12,23.430000,23.559999,22.750000,22.820000,22.820000,67595400
2019-02-13,22.980000,23.240000,22.709999,22.850000,22.850000,57544200
2019-02-14,22.740000,23.370001,22.590000,23.129999,23.129999,64441200
2019-02-15,23.580000,24.049999,23.200001,23.680000,23.680000,78644100
2019-02-19,23.629999,24.410000,23.610001,23.950001,23.950001,57517900
2019-02-20,24.139999,24.370001,23.900000,23.950001,23.950001,57091600
2019-02-21,24.040001,24.330000,23.850000,23.920000,23.920000,49608200
2019-02-22,24.049999,24.360001,23.879999,24.360001,24.360001,52650700
2019-02-25,25.010000,25.520000,24.680000,24.709999,24.709999,63221000
2019-02-26,24.650000,24.719999,24.150000,24.209999,24.209999,48470100
2019-02-27,24.110001,24.230000,23.209999,23.480000,23.480000,62649300
2019-02-28,23.209999,23.670000,23.110001,23.530001,23.530001,39384900
2019-03-01,23.969999,24.190001,23.450001,23.680000,23.680000,48084000
2019-03-04,23.889999,24.129999,23.010000,23.370001,23.370001,48147700
2019-03-05,23.340000,23.680000,23.010000,23.500000,23.500000,35462600
2019-03-06,23.469999,23.530001,22.400000,22.410000,22.410000,60479400
2019-03-07,22.330000,22.410000,21.730000,22.080000,22.080000,52087400
2019-03-08,21.350000,22.090000,21.040001,22.010000,22.010000,49967700
2019-03-11,22.150000,23.080000,21.980000,22.959999,22.959999,54420200
2019-03-12,23.100000,23.799999,22.780001,23.490000,23.490000,56410600
2019-03-13,23.660000,24.150000,23.350000,23.379999,23.379999,56705800
2019-03-14,23.370001,23.490000,22.799999,22.820000,22.820000,42818600
2019-03-15,23.100000,23.650000,23.010000,23.290001,23.290001,46519900
2019-03-18,23.299999,23.620001,23.040001,23.250000,23.250000,34731800
2019-03-19,23.600000,26.080000,23.590000,26.000000,26.000000,156052200
2019-03-20,26.490000,26.879999,25.309999,25.700001,25.700001,151292100
2019-03-21,25.780001,28.110001,25.709999,27.889999,27.889999,129610300
2019-03-22,27.540001,27.750000,26.330000,26.370001,26.370001,115323300
2019-03-25,26.290001,26.990000,25.540001,25.969999,25.969999,78438200
2019-03-26,26.690001,26.980000,25.459999,25.690001,25.690001,75754100
2019-03-27,25.700001,25.879999,24.549999,24.889999,24.889999,88585300
2019-03-28,25.100000,25.559999,24.650000,25.059999,25.059999,64667500
2019-03-29,25.580000,25.730000,25.250000,25.520000,25.520000,53502800
2019-04-01,26.420000,26.559999,25.830000,26.360001,26.360001,63000300
2019-04-02,26.510000,26.799999,26.090000,26.750000,26.750000,53358800
2019-04-03,28.020000,29.950001,27.879999,29.020000,29.020000,197650500
2019-04-04,28.879999,29.389999,28.610001,29.090000,29.090000,82191100
2019-04-05,29.639999,29.690001,28.799999,28.980000,28.980000,65662700
2019-04-08,28.690001,28.950001,28.180000,28.530001,28.530001,58002500
2019-04-09,28.240000,28.379999,27.190001,27.240000,27.240000,75539800
2019-04-10,27.459999,28.120001,27.320000,27.830000,27.830000,64368100
2019-04-11,27.809999,28.049999,27.459999,27.790001,27.790001,44801200
2019-04-12,28.209999,28.379999,27.660000,27.850000,27.850000,41048800
2019-04-15,27.799999,27.840000,26.959999,27.330000,27.330000,40812500
2019-04-16,27.719999,28.180000,27.490000,27.930000,27.930000,47340100
2019-04-17,28.209999,28.270000,27.219999,27.490000,27.490000,48240800
2019-04-18,27.600000,27.879999,27.340000,27.680000,27.680000,39880900
2019-04-22,27.620001,28.230000,27.389999,28.180000,28.180000,36477300
2019-04-23,28.180000,28.490000,27.790001,27.969999,27.969999,41777500
2019-04-24,28.100000,28.850000,27.930000,28.459999,28.459999,51784700
2019-04-25,28.670000,28.860001,27.360001,27.660000,27.660000,57329700
2019-04-26,27.660000,27.900000,27.049999,27.879999,27.879999,48827900
2019-04-29,27.900000,28.139999,27.500000,27.690001,27.690001,44532700
2019-04-30,27.590000,27.799999,26.940001,27.629999,27.629999,73165900
2019-05-01,28.950001,29.150000,26.780001,26.809999,26.809999,136066900
2019-05-02,26.940001,28.639999,26.610001,28.290001,28.290001,100514800
2019-05-03,28.299999,28.420000,27.660000,28.219999,28.219999,55503100
2019-05-06,26.719999,27.500000,26.450001,27.420000,27.420000,70344100
2019-05-07,27.200001,27.350000,26.209999,26.660000,26.660000,75868800
2019-05-08,26.410000,27.709999,26.270000,27.090000,27.090000,65967500
2019-05-09,26.700001,27.379999,26.030001,27.209999,27.209999,73150900
2019-05-10,27.030001,28.100000,26.930000,27.959999,27.959999,82930100
2019-05-13,26.980000,27.230000,26.100000,26.240000,26.240000,99017900
2019-05-14,26.530001,27.480000,26.150000,27.320000,27.320000,82980400
2019-05-15,26.870001,27.790001,26.730000,27.580000,27.580000,55689900
2019-05-16,27.370001,28.370001,27.270000,28.010000,28.010000,67330100
2019-05-17,27.690001,28.459999,27.400000,27.500000,27.500000,65385400
2019-05-20,26.980000,27.240000,26.490000,26.680000,26.680000,69757400
2019-05-21,27.180000,27.370001,26.930000,27.350000,27.350000,46079200
2019-05-22,27.120001,27.590000,27.070000,27.410000,27.410000,39957400
2019-05-23,26.990000,27.100000,26.030001,26.309999,26.309999,63165410
================================================
FILE: dataset/BTC-sentiment.csv
================================================
timestamp,close,positive,negative
2019-08-09T23:00:00,11860.074544270834,0.672895649396392,0.32710435060360804
2019-08-09T23:20:00,11872.02587890625,0.5951002465690001,0.404899753431
2019-08-09T23:40:00,11880.504557291666,0.5967015715902333,0.4032984284097667
2019-08-10T00:00:00,11918.873480902777,0.577972446366791,0.4220275536332089
2019-08-10T00:20:00,11937.581271701389,0.5853419523485952,0.41465804765140474
2019-08-10T00:40:00,11910.677734375,0.5242306480132202,0.47576935198677994
2019-08-10T01:00:00,11904.2208984375,0.6591064249015663,0.34089357509843377
2019-08-10T01:20:00,11888.665581597223,0.6301647610692034,0.3698352389307965
2019-08-10T01:40:00,11896.321180555555,0.5076873369870158,0.49231266301298415
2019-08-10T02:00:00,11840.427625868055,0.44154417133540674,0.5584558286645933
2019-08-10T02:20:00,11824.354383680555,0.6921190683962035,0.3078809316037964
2019-08-10T02:40:00,11811.5078125,0.5520865149257126,0.44791348507428747
2019-08-10T03:00:00,11814.022135416666,0.6486436760445364,0.3513563239554635
2019-08-10T03:20:00,11814.034505208334,0.5938786908786935,0.4061213091213065
2019-08-10T03:40:00,11800.455620659723,0.46793348737298585,0.5320665126270142
2019-08-10T04:00:00,11817.322265625,0.6528729511052616,0.34712704889473833
2019-08-10T04:20:00,11810.06220703125,0.6927590475558578,0.30724095244414223
2019-08-10T04:40:00,11808.473415798611,0.6221166226882595,0.3778833773117405
2019-08-10T05:00:00,11804.455512152777,0.6626195416594638,0.3373804583405362
2019-08-10T05:20:00,11832.654513888889,0.6552284018875003,0.34477159811249974
2019-08-10T05:40:00,11862.870008680555,0.6782426737680571,0.321757326231943
2019-08-10T06:00:00,11842.598046875,0.5877573939130807,0.41224260608691937
2019-08-10T06:20:00,11830.985568576389,0.6435594124509156,0.35644058754908453
2019-08-10T06:40:00,11819.560004340277,0.650339727903031,0.3496602720969691
2019-08-10T07:00:00,11821.251302083334,0.6423833371368259,0.35761666286317406
2019-08-10T07:20:00,11837.832248263889,0.6769147271440639,0.3230852728559362
2019-08-10T07:40:00,11831.2291015625,0.6523671453973767,0.34763285460262333
2019-08-10T08:00:00,11847.092339409723,0.6242978657705356,0.3757021342294644
2019-08-10T08:20:00,11860.499891493055,0.6816604139992111,0.31833958600078904
2019-08-10T08:40:00,11853.944227430555,0.6886029775775693,0.3113970224224307
2019-08-10T09:00:00,11854.416666666666,0.6619221403320443,0.3380778596679557
2019-08-10T09:20:00,11866.56708984375,0.49276923484657936,0.5072307651534207
2019-08-10T09:40:00,11878.548936631945,0.6324551456153391,0.367544854384661
2019-08-10T10:00:00,11881.569878472223,0.6745155013265913,0.3254844986734087
2019-08-10T10:20:00,11863.433268229166,0.6729489449466852,0.3270510550533148
2019-08-10T10:40:00,11864.763346354166,0.6646037057680267,0.33539629423197315
2019-08-10T11:00:00,11855.1240234375,0.652120254814023,0.3478797451859769
2019-08-10T11:20:00,11548.468858506945,0.6449511698587633,0.35504883014123667
2019-08-10T11:40:00,11404.045681423611,0.19822288491372791,0.8017771150862723
2019-08-10T12:00:00,11379.092122395834,0.6106330443094115,0.3893669556905886
2019-08-10T12:20:00,11372.661024305555,0.684582318142607,0.31541768185739316
2019-08-10T12:40:00,11414.57509765625,0.6739784203158583,0.3260215796841417
2019-08-10T13:00:00,11476.397786458334,0.5122779635805852,0.4877220364194148
2019-08-10T13:20:00,11460.401150173611,0.5995944235746562,0.4004055764253437
2019-08-10T13:40:00,11451.494466145834,0.40688145562970296,0.5931185443702972
2019-08-10T14:00:00,11456.026801215277,0.6781337542255548,0.32186624577444517
2019-08-10T14:20:00,11426.1630859375,0.631335461936906,0.368664538063094
2019-08-10T14:40:00,11413.129014756945,0.6214467965284589,0.378553203471541
2019-08-10T15:00:00,11416.041015625,0.6508698520753338,0.34913014792466635
2019-08-10T15:20:00,11432.755750868055,0.5618785826253185,0.43812141737468147
2019-08-10T15:40:00,11410.909939236111,0.5524372826728199,0.4475627173271801
2019-08-10T16:00:00,11401.2259765625,0.5376810695041971,0.46231893049580275
2019-08-10T16:20:00,11392.866536458334,0.6380488083153308,0.36195119168466916
2019-08-10T16:40:00,11368.657769097223,0.6491787688948025,0.35082123110519753
2019-08-10T17:00:00,11347.328884548611,0.6123678328389881,0.3876321671610119
2019-08-10T17:20:00,11398.531032986111,0.6743216891030781,0.32567831089692195
2019-08-10T17:40:00,11401.97197265625,0.6711219061934897,0.32887809380651023
2019-08-10T18:00:00,11385.302191840277,0.667910332241187,0.33208966775881293
2019-08-10T18:20:00,11368.152235243055,0.6877028110752175,0.31229718892478264
2019-08-10T18:40:00,11374.289930555555,0.6421495151175716,0.3578504848824283
2019-08-10T19:00:00,11361.828776041666,0.6651905829219482,0.33480941707805184
2019-08-10T19:20:00,11349.28291015625,0.6353849057818903,0.36461509421810967
2019-08-10T19:40:00,11344.813368055555,0.5802551243959988,0.4197448756040013
2019-08-10T20:00:00,11367.511176215277,0.6598421413837092,0.34015785861629083
2019-08-10T20:20:00,11376.683485243055,0.6901700620910418,0.30982993790895824
2019-08-10T20:40:00,11356.072374131945,0.6277910109477822,0.37220898905221783
2019-08-10T21:00:00,11332.16474609375,0.5748772842933609,0.42512271570663906
2019-08-10T21:20:00,11335.863389756945,0.6097175320856112,0.39028246791438886
2019-08-10T21:40:00,11332.8466796875,0.41341007586462647,0.5865899241353736
2019-08-10T22:00:00,11319.971137152777,0.6791769782431056,0.3208230217568943
2019-08-10T22:20:00,11298.448893229166,0.5369720459965348,0.463027954003465
2019-08-10T22:40:00,11315.787890625,0.6491861766678833,0.3508138233321167
2019-08-10T23:00:00,11345.858832465277,0.6605692536158401,0.33943074638416
2019-08-10T23:20:00,11343.282335069445,0.6610958589703089,0.33890414102969113
2019-08-10T23:40:00,11332.678927951389,0.6769499006582065,0.3230500993417934
2019-08-11T00:00:00,11310.861219618055,0.6757194457447895,0.3242805542552107
2019-08-11T00:20:00,11366.58095703125,0.5495295542377412,0.45047044576225886
2019-08-11T00:40:00,11425.075412326389,0.5495721618384806,0.4504278381615194
2019-08-11T01:00:00,11392.177625868055,0.6569360850440795,0.3430639149559205
2019-08-11T01:20:00,11391.202256944445,0.6387944193483925,0.3612055806516075
2019-08-11T01:40:00,11376.443250868055,0.5342728930646066,0.46572710693539354
2019-08-11T02:00:00,11382.28896484375,0.654112780824424,0.34588721917557586
2019-08-11T02:20:00,11386.936740451389,0.6347371785576235,0.3652628214423765
2019-08-11T02:40:00,11376.695638020834,0.6007389236995619,0.3992610763004379
2019-08-11T03:00:00,11387.851236979166,0.652357996303953,0.34764200369604703
2019-08-11T03:20:00,11404.256727430555,0.6584472946206366,0.34155270537936333
2019-08-11T03:40:00,11397.7041015625,0.6361597150913694,0.36384028490863063
2019-08-11T04:00:00,11407.205620659723,0.6434419807577798,0.3565580192422201
2019-08-11T04:20:00,11393.106770833334,0.6786527307775161,0.321347269222484
2019-08-11T04:40:00,11387.253363715277,0.47659807067248267,0.5234019293275174
2019-08-11T05:00:00,11376.687717013889,0.6075992572428865,0.39240074275711356
2019-08-11T05:20:00,11371.49091796875,0.6667653723922398,0.33323462760776035
2019-08-11T05:40:00,11377.342230902777,0.6510149226393858,0.3489850773606141
2019-08-11T06:00:00,11377.576714409723,0.5900247192571966,0.4099752807428035
2019-08-11T06:20:00,11384.317816840277,0.584004544651997,0.4159954553480031
2019-08-11T06:40:00,11355.543402777777,0.6099239410937645,0.39007605890623553
2019-08-11T07:00:00,11355.77001953125,0.6247484369695742,0.3752515630304257
2019-08-11T07:20:00,11353.465494791666,0.6070929228730317,0.39290707712696826
2019-08-11T07:40:00,11365.033420138889,0.5465993992486684,0.4534006007513317
2019-08-11T08:00:00,11377.826714409723,0.5562781576822704,0.4437218423177296
2019-08-11T08:20:00,11361.535481770834,0.4722174599328615,0.5277825400671385
2019-08-11T08:40:00,11331.27197265625,0.626879640620249,0.3731203593797511
2019-08-11T09:00:00,11251.542209201389,0.5745919248762765,0.4254080751237235
2019-08-11T09:20:00,11242.855577256945,0.6338213893038831,0.3661786106961168
2019-08-11T09:40:00,11293.3134765625,0.5675677468658742,0.4324322531341258
2019-08-11T10:00:00,11375.678927951389,0.662068755690373,0.3379312443096269
2019-08-11T10:20:00,11370.65,0.6528751953484073,0.34712480465159257
2019-08-11T10:40:00,11347.428927951389,0.599597773208383,0.40040222679161697
2019-08-11T11:00:00,11367.512261284723,0.38706937873298136,0.6129306212670186
2019-08-11T11:20:00,11374.599934895834,0.6438946415019184,0.35610535849808156
2019-08-11T11:40:00,11408.058919270834,0.16081816740881932,0.8391818325911806
2019-08-11T12:00:00,11449.3798828125,0.6823639956542296,0.3176360043457704
2019-08-11T12:20:00,11436.747721354166,0.6770972889952676,0.3229027110047324
2019-08-11T12:40:00,11446.329969618055,0.6925934466871058,0.30740655331289424
2019-08-11T13:00:00,11438.517795138889,0.654652478815902,0.34534752118409795
2019-08-11T13:20:00,11422.4033203125,0.6327927182404469,0.36720728175955303
2019-08-11T13:40:00,11401.083984375,0.6798617417015522,0.3201382582984478
2019-08-11T14:00:00,11389.884331597223,0.6052985343987611,0.3947014656012389
2019-08-11T14:20:00,11401.158854166666,0.570166067688104,0.4298339323118961
2019-08-11T14:40:00,11399.070963541666,0.5136693050712073,0.4863306949287925
2019-08-11T15:00:00,11402.946614583334,0.5796801649711361,0.42031983502886394
2019-08-11T15:20:00,11377.36298828125,0.5919218614141928,0.4080781385858073
2019-08-11T15:40:00,11371.596462673611,0.6310810207062723,0.3689189792937278
2019-08-11T16:00:00,11395.904513888889,0.6217371805101322,0.3782628194898679
2019-08-11T16:20:00,11419.927734375,0.6461206955537799,0.35387930444622007
2019-08-11T16:40:00,11420.288736979166,0.5300978440776618,0.4699021559223382
2019-08-11T17:00:00,11403.67509765625,0.6306025833631896,0.36939741663681025
2019-08-11T17:20:00,11396.848958333334,0.547456589821129,0.45254341017887106
2019-08-11T17:40:00,11388.457790798611,0.6536498289468671,0.3463501710531329
2019-08-11T18:00:00,11382.766710069445,0.6082083185010192,0.3917916814989807
2019-08-11T18:20:00,11402.794379340277,0.5628988213178285,0.43710117868217163
2019-08-11T18:40:00,11396.54404296875,0.43049449803380485,0.5695055019661952
2019-08-11T19:00:00,11395.010091145834,0.639117670357487,0.360882329642513
2019-08-11T19:20:00,11388.391167534723,0.6560616186341286,0.3439383813658712
2019-08-11T19:40:00,11386.055555555555,0.6757055424160328,0.3242944575839673
2019-08-11T20:00:00,11378.362196180555,0.5539835390589898,0.4460164609410101
2019-08-11T20:20:00,11421.919140625,0.6092714409461888,0.3907285590538111
2019-08-11T20:40:00,11421.776584201389,0.6781988311663134,0.32180116883368665
2019-08-11T21:00:00,11434.21875,0.6626951060952113,0.3373048939047888
2019-08-11T21:20:00,11476.744466145834,0.6350809690036068,0.3649190309963932
2019-08-11T21:40:00,11524.327690972223,0.3247190105646936,0.6752809894353065
2019-08-11T22:00:00,11511.52587890625,0.6511572743872109,0.3488427256127891
2019-08-11T22:20:00,11502.041015625,0.6762538431724938,0.3237461568275062
2019-08-11T22:40:00,11514.976671006945,0.5141931297456488,0.4858068702543512
2019-08-11T23:00:00,11531.945638020834,0.6313772789942997,0.36862272100570015
2019-08-11T23:20:00,11532.624565972223,0.6016062596191318,0.39839374038086817
2019-08-11T23:40:00,11551.14814453125,0.6236360480763794,0.3763639519236207
2019-08-12T00:00:00,11521.941080729166,0.6253381699666754,0.37466183003332465
2019-08-12T00:20:00,11502.863064236111,0.5719546518362717,0.4280453481637282
2019-08-12T00:40:00,11485.684353298611,0.6294134488120073,0.37058655118799255
2019-08-12T01:00:00,11488.705620659723,0.6794083484801265,0.32059165151987346
2019-08-12T01:20:00,11516.49697265625,0.5208981787238789,0.47910182127612094
2019-08-12T01:40:00,11486.148871527777,0.4094999078005231,0.590500092199477
2019-08-12T02:00:00,11488.198893229166,0.671080283782491,0.32891971621750915
2019-08-12T02:20:00,11471.236653645834,0.6679527549970672,0.332047245002933
2019-08-12T02:40:00,11461.664605034723,0.6869545472611236,0.31304545273887624
2019-08-12T03:00:00,11447.75390625,0.6403190453591587,0.3596809546408413
2019-08-12T03:20:00,11438.854383680555,0.5849811299997134,0.4150188700002866
2019-08-12T03:40:00,11452.5,0.6118184704602951,0.38818152953970486
2019-08-12T04:00:00,11453.569878472223,0.6297212525725702,0.37027874742742983
2019-08-12T04:20:00,11463.232421875,0.6813426637109852,0.3186573362890149
2019-08-12T04:40:00,11446.39384765625,0.6536365546454181,0.3463634453545818
2019-08-12T05:00:00,11440.851128472223,0.5398910600898461,0.4601089399101538
2019-08-12T05:20:00,11400.792100694445,0.5035652314928276,0.49643476850717244
2019-08-12T05:40:00,11403.041232638889,0.6071596274052669,0.3928403725947331
2019-08-12T06:00:00,11391.78896484375,0.6440912520510085,0.3559087479489917
2019-08-12T06:20:00,11387.051106770834,0.49408216522863796,0.5059178347713621
2019-08-12T06:40:00,11382.095486111111,0.6456520913335915,0.35434790866640853
2019-08-12T07:00:00,11364.397786458334,0.5844129665591042,0.4155870334408958
2019-08-12T07:20:00,11369.844618055555,0.6361426617503474,0.3638573382496526
2019-08-12T07:40:00,11398.74208984375,0.6590629697838333,0.34093703021616667
2019-08-12T08:00:00,11386.335503472223,0.6477999791225999,0.3522000208774
2019-08-12T08:20:00,11348.097873263889,0.6431414167709211,0.3568585832290789
2019-08-12T08:40:00,11353.737847222223,0.6615011707187288,0.3384988292812711
2019-08-12T09:00:00,11362.335503472223,0.6104913483678767,0.3895086516321233
2019-08-12T09:20:00,11378.998828125,0.6854220220481311,0.31457797795186887
2019-08-12T09:40:00,11376.811306423611,0.6715225557051585,0.3284774442948415
2019-08-12T10:00:00,11362.680989583334,0.6622198218374931,0.3377801781625069
2019-08-12T10:20:00,11380.706705729166,0.6414232069686598,0.35857679303134016
2019-08-12T10:40:00,11388.443467881945,0.6835843520518221,0.3164156479481779
2019-08-12T11:00:00,11367.816796875,0.6472069155613542,0.3527930844386457
2019-08-12T11:20:00,11343.722113715277,0.6590942729628322,0.3409057270371679
2019-08-12T11:40:00,11327.515625,0.6684264626591627,0.3315735373408374
2019-08-12T12:00:00,11362.027669270834,0.5877699982840787,0.4122300017159214
2019-08-12T12:20:00,11384.478841145834,0.6810240234120695,0.31897597658793064
2019-08-12T12:40:00,11398.3560546875,0.3431108147000487,0.6568891852999512
2019-08-12T13:00:00,11375.647786458334,0.4894574283406821,0.5105425716593177
2019-08-12T13:20:00,11369.760959201389,0.6570530608418301,0.34294693915816993
2019-08-12T13:40:00,11394.930013020834,0.6641049678741577,0.3358950321258421
2019-08-12T14:00:00,11380.068901909723,0.5628184209920828,0.43718157900791715
2019-08-12T14:20:00,11393.87607421875,0.48251707929705906,0.5174829207029409
2019-08-12T14:40:00,11385.921115451389,0.6079831361496497,0.3920168638503503
2019-08-12T15:00:00,11375.189887152777,0.6563552519079952,0.3436447480920048
2019-08-12T15:20:00,11375.322157118055,0.6331616932927264,0.36683830670727346
2019-08-12T15:40:00,11391.156792534723,0.5950923093252443,0.4049076906747557
2019-08-12T16:00:00,11399.801953125,0.633309515004878,0.366690484995122
2019-08-12T16:20:00,11395.595486111111,0.6457060433135906,0.35429395668640945
2019-08-12T16:40:00,11409.202256944445,0.5591611494061302,0.44083885059386996
2019-08-12T17:00:00,11424.571072048611,0.6197593405228927,0.3802406594771073
2019-08-12T17:20:00,11426.198676215277,0.6763167812618478,0.32368321873815226
2019-08-12T17:40:00,11406.51796875,0.6286722346068885,0.3713277653931115
2019-08-12T18:00:00,11404.352322048611,0.5115319976972041,0.48846800230279586
2019-08-12T18:20:00,11398.163519965277,0.6257554813739197,0.3742445186260802
2019-08-12T18:40:00,11413.278971354166,0.6378656952486648,0.3621343047513351
2019-08-12T19:00:00,11421.8134765625,0.5973654004046227,0.4026345995953772
2019-08-12T19:20:00,11426.74892578125,0.6115391612886458,0.3884608387113542
2019-08-12T19:40:00,11423.771158854166,0.6031121766413208,0.3968878233586792
2019-08-12T20:00:00,11452.396809895834,0.5385366074687161,0.4614633925312838
2019-08-12T20:20:00,11449.376736111111,0.4542962781325796,0.5457037218674204
2019-08-12T20:40:00,11440.247829861111,0.4990482904635068,0.5009517095364933
2019-08-12T21:00:00,11442.9650390625,0.6153896418548124,0.3846103581451876
2019-08-12T21:20:00,11424.958767361111,0.5218757491422692,0.4781242508577307
2019-08-12T21:40:00,11403.863606770834,0.6258322688382039,0.374167731161796
2019-08-12T22:00:00,11389.853298611111,0.6385406263433715,0.36145937365662845
2019-08-12T22:20:00,11420.267903645834,0.3822032629780549,0.617796737021945
2019-08-12T22:40:00,11421.151953125,0.6706924267223235,0.3293075732776765
2019-08-12T23:00:00,11405.87890625,0.5321807162637315,0.4678192837362684
2019-08-12T23:20:00,11394.993489583334,0.6515322129983447,0.34846778700165526
2019-08-12T23:40:00,11396.562174479166,0.6702444184949312,0.3297555815050688
2019-08-13T00:00:00,11386.675564236111,0.6376087190686965,0.36239128093130335
2019-08-13T00:20:00,11390.31396484375,0.656433236317971,0.3435667636820291
2019-08-13T00:40:00,11418.509006076389,0.6300882756647801,0.3699117243352198
2019-08-13T01:00:00,11425.298719618055,0.5936846794796631,0.4063153205203369
2019-08-13T01:20:00,11417.285373263889,0.6344587910902493,0.3655412089097507
2019-08-13T01:40:00,11414.825629340277,0.5885973876024824,0.41140261239751774
2019-08-13T02:00:00,11415.9611328125,0.6232328912938021,0.3767671087061978
2019-08-13T02:20:00,11414.3388671875,0.5080158921362159,0.491984107863784
2019-08-13T02:40:00,11397.362196180555,0.6054939302573688,0.39450606974263125
2019-08-13T03:00:00,11381.907660590277,0.5981995907128752,0.4018004092871248
2019-08-13T03:20:00,11381.373372395834,0.6041410039449,0.39585899605509994
2019-08-13T03:40:00,11381.59794921875,0.6227639641432441,0.3772360358567557
2019-08-13T04:00:00,11386.341037326389,0.5673000788531883,0.43269992114681166
2019-08-13T04:20:00,11372.684353298611,0.6154754580024837,0.3845245419975163
2019-08-13T04:40:00,11361.396484375,0.6555001794226949,0.3444998205773051
2019-08-13T05:00:00,11363.478841145834,0.6170534964633667,0.3829465035366333
2019-08-13T05:20:00,11369.023220486111,0.5584422192899314,0.44155778071006857
2019-08-13T05:40:00,11380.88798828125,0.66378368455584,0.3362163154441599
2019-08-13T06:00:00,11381.498806423611,0.6208091778422817,0.3791908221577183
2019-08-13T06:20:00,11375.743272569445,0.6362667243295514,0.3637332756704484
2019-08-13T06:40:00,11368.918836805555,0.6088606977056898,0.39113930229431026
2019-08-13T07:00:00,11360.1048828125,0.5781304175876052,0.42186958241239486
2019-08-13T07:20:00,11349.404513888889,0.5725347705496153,0.4274652294503847
2019-08-13T07:40:00,11372.202256944445,0.6690789812687885,0.3309210187312115
2019-08-13T08:00:00,11349.807725694445,0.5506707559522843,0.44932924404771557
2019-08-13T08:20:00,11334.747938368055,0.5475636768966059,0.452436323103394
2019-08-13T08:40:00,11339.99189453125,0.5888062805659351,0.4111937194340649
2019-08-13T09:00:00,11327.682183159723,0.6284692330424246,0.3715307669575753
2019-08-13T09:20:00,11299.879014756945,0.6480465537434921,0.3519534462565079
2019-08-13T09:40:00,11292.828993055555,0.6433289130369744,0.35667108696302563
2019-08-13T10:00:00,11295.584309895834,0.6116558223862982,0.3883441776137017
2019-08-13T10:20:00,11259.08193359375,0.6343773803276949,0.365622619672305
2019-08-13T10:40:00,11264.911241319445,0.6045441092614918,0.3954558907385082
2019-08-13T11:00:00,11271.285481770834,0.5917488903795041,0.4082511096204959
2019-08-13T11:20:00,11291.047743055555,0.6270154308360245,0.3729845691639755
2019-08-13T11:40:00,11285.030056423611,0.6614001471975195,0.3385998528024806
2019-08-13T12:00:00,11267.033984375,0.5997020296936002,0.40029797030639985
2019-08-13T12:20:00,11288.711046006945,0.6217492788226657,0.37825072117733416
2019-08-13T12:40:00,11274.071180555555,0.5852572858745833,0.4147427141254166
2019-08-13T13:00:00,11244.406792534723,0.5823822205562896,0.41761777944371037
2019-08-13T13:20:00,11205.04287109375,0.6250742403126983,0.3749257596873016
2019-08-13T13:40:00,11185.309027777777,0.5697763800243181,0.43022361997568204
2019-08-13T14:00:00,11089.408962673611,0.5875652613700966,0.4124347386299035
2019-08-13T14:20:00,11013.327690972223,0.650181183560554,0.349818816439446
2019-08-13T14:40:00,11004.953342013889,0.5419771494825585,0.4580228505174415
2019-08-13T15:00:00,10989.151953125,0.5910518061020651,0.408948193897935
2019-08-13T15:20:00,10985.026692708334,0.6630092475208966,0.3369907524791034
2019-08-13T15:40:00,10960.876736111111,0.6704077571858567,0.3295922428141435
2019-08-13T16:00:00,10975.355577256945,0.6596598515532603,0.34034014844673977
2019-08-13T16:20:00,10956.637912326389,0.6592742279339825,0.3407257720660174
2019-08-13T16:40:00,10892.023328993055,0.633758612209417,0.36624138779058313
2019-08-13T17:00:00,10849.48798828125,0.46963732733007474,0.5303626726699252
2019-08-13T17:20:00,10899.003363715277,0.4638991110236021,0.536100888976398
2019-08-13T17:40:00,10901.8955078125,0.5231334403701868,0.4768665596298132
2019-08-13T18:00:00,10896.616753472223,0.5060679081774209,0.49393209182257897
2019-08-13T18:20:00,10919.703450520834,0.6023811846973985,0.3976188153026014
2019-08-13T18:40:00,10942.492296006945,0.6613861882805943,0.33861381171940585
2019-08-13T19:00:00,10931.265625,0.6583488260660886,0.3416511739339113
2019-08-13T19:20:00,10938.12509765625,0.6777627073334098,0.3222372926665902
2019-08-13T19:40:00,10926.246744791666,0.6670229261643958,0.33297707383560404
2019-08-13T20:00:00,10957.206705729166,0.6592474272156832,0.3407525727843167
2019-08-13T20:20:00,10956.663194444445,0.4701140271025393,0.5298859728974608
2019-08-13T20:40:00,10942.324327256945,0.6088136690822006,0.3911863309177995
2019-08-13T21:00:00,10896.081271701389,0.6526086259159338,0.3473913740840662
2019-08-13T21:20:00,10878.505078125,0.5984884864141065,0.40151151358589343
2019-08-13T21:40:00,10894.5244140625,0.5858468110353678,0.41415318896463216
2019-08-13T22:00:00,10911.148871527777,0.6517440545616155,0.34825594543838445
2019-08-13T22:20:00,10875.351236979166,0.6408948807456714,0.3591051192543285
2019-08-13T22:40:00,10906.046657986111,0.6070251027841336,0.3929748972158663
2019-08-13T23:00:00,10918.7451171875,0.6641092373104258,0.3358907626895741
2019-08-13T23:20:00,10914.104383680555,0.6424595231161692,0.35754047688383084
2019-08-13T23:40:00,10898.773328993055,0.6538924739421303,0.34610752605786965
2019-08-14T00:00:00,10873.996636284723,0.6132870407444451,0.38671295925555504
2019-08-14T00:20:00,10839.976671006945,0.679415714675889,0.3205842853241109
2019-08-14T00:40:00,10811.24296875,0.6352162178387528,0.364783782161247
2019-08-14T01:00:00,10787.704427083334,0.6667575705678144,0.3332424294321857
2019-08-14T01:20:00,10669.369900173611,0.6772618370689663,0.3227381629310338
2019-08-14T01:40:00,10626.171006944445,0.663499853984217,0.3365001460157831
2019-08-14T02:00:00,10598.291015625,0.5839783775146445,0.4160216224853554
2019-08-14T02:20:00,10641.641015625,0.4963626271331116,0.5036373728668885
2019-08-14T02:40:00,10678.185763888889,0.6085323000086991,0.39146769999130077
2019-08-14T03:00:00,10664.284505208334,0.5850178563335919,0.414982143666408
2019-08-14T03:20:00,10652.567816840277,0.5786693343289557,0.42133066567104416
2019-08-14T03:40:00,10633.665364583334,0.5445778667121564,0.45542213328784353
2019-08-14T04:00:00,10648.1958984375,0.6380466950418269,0.3619533049581733
2019-08-14T04:20:00,10624.257921006945,0.503431721914356,0.496568278085644
2019-08-14T04:40:00,10603.869900173611,0.5316118327541259,0.46838816724587407
2019-08-14T05:00:00,10573.132052951389,0.572482802175557,0.4275171978244431
2019-08-14T05:20:00,10614.732313368055,0.6447251208433402,0.35527487915665973
2019-08-14T05:40:00,10622.78212890625,0.5339827512839717,0.46601724871602834
2019-08-14T06:00:00,10646.657769097223,0.6020114847659737,0.39798851523402645
2019-08-14T06:20:00,10646.678819444445,0.5045179979003855,0.49548200209961446
2019-08-14T06:40:00,10629.991102430555,0.6474735752909355,0.35252642470906453
2019-08-14T07:00:00,10639.841145833334,0.5615304233768255,0.43846957662317443
2019-08-14T07:20:00,10633.24521484375,0.5408644363829478,0.45913556361705227
2019-08-14T07:40:00,10607.752170138889,0.5771468309385042,0.42285316906149584
2019-08-14T08:00:00,10611.884440104166,0.5180131894689965,0.48198681053100334
2019-08-14T08:20:00,10578.325629340277,0.6507972358307423,0.34920276416925766
2019-08-14T08:40:00,10502.283311631945,0.40341333464791446,0.5965866653520855
2019-08-14T09:00:00,10474.62294921875,0.5144603350389285,0.4855396649610715
2019-08-14T09:20:00,10481.101236979166,0.6212257377445534,0.3787742622554465
2019-08-14T09:40:00,10513.264431423611,0.3472157087280547,0.6527842912719453
2019-08-14T10:00:00,10540.198784722223,0.6376548157062898,0.3623451842937102
2019-08-14T10:20:00,10572.214409722223,0.6300339382826192,0.3699660617173808
2019-08-14T10:40:00,10543.14501953125,0.5123722983833987,0.4876277016166012
2019-08-14T11:00:00,10514.2333984375,0.5105536952733631,0.48944630472663686
2019-08-14T11:20:00,10502.462239583334,0.6768515922736023,0.3231484077263977
2019-08-14T11:40:00,10544.894422743055,0.6404339243363617,0.3595660756636382
2019-08-14T12:00:00,10584.820963541666,0.5108466761339676,0.4891533238660325
2019-08-14T12:20:00,10653.50693359375,0.41516060336877764,0.5848393966312222
2019-08-14T12:40:00,10636.584309895834,0.52252995555138,0.47747004444862007
2019-08-14T13:00:00,10630.9609375,0.5960856891153969,0.403914310884603
2019-08-14T13:20:00,10636.311089409723,0.49714385228560004,0.5028561477144
2019-08-14T13:40:00,10606.923285590277,0.549213639938779,0.45078636006122086
2019-08-14T14:00:00,10555.8548828125,0.6202144785481931,0.37978552145180694
2019-08-14T14:20:00,10529.615559895834,0.5541000645435712,0.4458999354564288
2019-08-14T14:40:00,10502.307725694445,0.6038164189536659,0.39618358104633417
2019-08-14T15:00:00,10532.066840277777,0.6324756224418648,0.3675243775581353
2019-08-14T15:20:00,10515.2619140625,0.5939761793482323,0.4060238206517677
2019-08-14T15:40:00,10513.206705729166,0.4425083712449534,0.5574916287550467
================================================
FILE: dataset/FB.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,182.500000,186.910004,182.179993,186.899994,186.899994,16628100
2018-05-24,185.880005,186.800003,185.029999,185.929993,185.929993,12354700
2018-05-25,186.020004,186.330002,184.449997,184.919998,184.919998,10965100
2018-05-29,184.339996,186.809998,183.710007,185.740005,185.740005,16398900
2018-05-30,186.539993,188.000000,185.250000,187.669998,187.669998,13736900
2018-05-31,187.869995,192.720001,187.479996,191.779999,191.779999,30782600
2018-06-01,193.070007,194.550003,192.070007,193.990005,193.990005,17307200
2018-06-04,191.839996,193.979996,191.470001,193.279999,193.279999,18939800
2018-06-05,194.300003,195.000000,192.619995,192.940002,192.940002,15544300
2018-06-06,191.029999,192.529999,189.110001,191.339996,191.339996,22558900
2018-06-07,190.750000,190.970001,186.770004,188.179993,188.179993,21503200
2018-06-08,187.529999,189.479996,186.429993,189.100006,189.100006,12677100
2018-06-11,188.809998,192.600006,188.800003,191.539993,191.539993,12928900
2018-06-12,192.169998,193.279999,191.559998,192.399994,192.399994,11562700
2018-06-13,192.740005,194.500000,191.910004,192.410004,192.410004,15853800
2018-06-14,193.100006,197.279999,192.910004,196.809998,196.809998,19120900
2018-06-15,195.789993,197.070007,194.639999,195.850006,195.850006,21860900
2018-06-18,194.800003,199.580002,194.130005,198.309998,198.309998,16826000
2018-06-19,196.240005,197.960007,193.789993,197.490005,197.490005,19994000
2018-06-20,199.100006,203.550003,198.809998,202.000000,202.000000,28230900
2018-06-21,202.759995,203.389999,200.089996,201.500000,201.500000,19045700
2018-06-22,201.160004,202.240005,199.309998,201.740005,201.740005,17420200
2018-06-25,200.000000,200.000000,193.110001,196.350006,196.350006,25275100
2018-06-26,197.600006,199.100006,196.229996,199.000000,199.000000,17897600
2018-06-27,199.179993,200.750000,195.800003,195.839996,195.839996,18734400
2018-06-28,195.179993,197.339996,193.259995,196.229996,196.229996,18172400
2018-06-29,197.320007,197.600006,193.960007,194.320007,194.320007,15811600
2018-07-02,193.369995,197.449997,192.220001,197.360001,197.360001,13961600
2018-07-03,194.550003,195.399994,192.520004,192.729996,192.729996,13489500
2018-07-05,194.740005,198.649994,194.029999,198.449997,198.449997,19684200
2018-07-06,198.449997,203.639999,197.699997,203.229996,203.229996,19740100
2018-07-09,204.929993,205.800003,202.119995,204.740005,204.740005,18149400
2018-07-10,204.500000,204.910004,202.259995,203.539993,203.539993,13190100
2018-07-11,202.220001,204.500000,201.750000,202.539993,202.539993,12927400
2018-07-12,203.429993,207.080002,203.190002,206.919998,206.919998,15454700
2018-07-13,207.809998,208.429993,206.449997,207.320007,207.320007,11486800
2018-07-16,207.500000,208.720001,206.839996,207.229996,207.229996,11078200
2018-07-17,204.899994,210.460007,204.839996,209.990005,209.990005,15349900
2018-07-18,209.820007,210.990005,208.440002,209.360001,209.360001,15334900
2018-07-19,208.770004,209.990005,207.759995,208.089996,208.089996,11350400
2018-07-20,208.850006,211.500000,208.500000,209.940002,209.940002,16163900
2018-07-23,210.580002,211.619995,208.800003,210.910004,210.910004,16732000
2018-07-24,215.110001,216.199997,212.600006,214.669998,214.669998,28468700
2018-07-25,215.720001,218.619995,214.270004,217.500000,217.500000,58954200
2018-07-26,174.889999,180.130005,173.750000,176.259995,176.259995,169803700
2018-07-27,179.869995,179.929993,173.000000,174.889999,174.889999,60073700
2018-07-30,175.300003,175.300003,166.559998,171.059998,171.059998,65280800
2018-07-31,170.669998,174.240005,170.000000,172.580002,172.580002,40356500
2018-08-01,173.929993,175.080002,170.899994,171.649994,171.649994,34042100
2018-08-02,170.679993,176.789993,170.270004,176.369995,176.369995,32400000
2018-08-03,177.690002,178.850006,176.149994,177.779999,177.779999,24763400
2018-08-06,178.970001,185.789993,178.380005,185.690002,185.690002,49716200
2018-08-07,186.500000,188.300003,183.720001,183.809998,183.809998,33398600
2018-08-08,184.750000,186.850006,183.759995,185.179993,185.179993,22205200
2018-08-09,185.850006,186.570007,182.479996,183.089996,183.089996,19696700
2018-08-10,182.039993,182.100006,179.419998,180.259995,180.259995,21500400
2018-08-13,180.100006,182.610001,178.899994,180.050003,180.050003,17369400
2018-08-14,180.710007,181.990005,178.619995,181.110001,181.110001,19102000
2018-08-15,179.339996,180.869995,174.779999,179.529999,179.529999,33020200
2018-08-16,180.419998,180.500000,174.009995,174.699997,174.699997,31351800
2018-08-17,174.500000,176.220001,172.039993,173.800003,173.800003,24893200
2018-08-20,174.039993,174.570007,170.910004,172.500000,172.500000,21518000
2018-08-21,172.809998,174.169998,171.389999,172.619995,172.619995,19578500
2018-08-22,172.210007,174.240005,172.130005,173.639999,173.639999,16894100
2018-08-23,173.089996,175.550003,172.830002,172.899994,172.899994,18053600
2018-08-24,173.699997,174.820007,172.919998,174.649994,174.649994,14631600
2018-08-27,175.990005,178.669998,175.789993,177.460007,177.460007,17921900
2018-08-28,178.100006,178.240005,175.830002,176.259995,176.259995,15910700
2018-08-29,176.300003,176.789993,174.750000,175.899994,175.899994,18494100
2018-08-30,175.899994,179.789993,175.699997,177.639999,177.639999,24216500
2018-08-31,177.149994,177.619995,174.979996,175.729996,175.729996,18065200
2018-09-04,173.500000,173.889999,168.800003,171.160004,171.160004,29809000
2018-09-05,169.490005,171.130005,166.669998,167.179993,167.179993,31226700
2018-09-06,166.979996,166.979996,160.000000,162.529999,162.529999,41514800
2018-09-07,160.309998,164.630005,160.160004,163.039993,163.039993,24300600
2018-09-10,163.509995,165.009995,162.160004,164.179993,164.179993,20197700
2018-09-11,163.940002,167.190002,163.720001,165.940002,165.940002,20457100
2018-09-12,163.250000,164.490005,161.800003,162.000000,162.000000,24078100
2018-09-13,162.000000,163.320007,160.860001,161.360001,161.360001,25453800
2018-09-14,161.720001,162.839996,160.339996,162.320007,162.320007,21770400
2018-09-17,161.919998,162.059998,159.770004,160.580002,160.580002,21005300
2018-09-18,159.389999,161.759995,158.869995,160.300003,160.300003,22465200
2018-09-19,160.080002,163.440002,159.479996,163.059998,163.059998,19629000
2018-09-20,164.500000,166.449997,164.470001,166.020004,166.020004,18824200
2018-09-21,166.639999,167.250000,162.809998,162.929993,162.929993,45994800
2018-09-24,161.029999,165.699997,160.880005,165.410004,165.410004,19222800
2018-09-25,161.990005,165.589996,161.149994,164.910004,164.910004,27622800
2018-09-26,164.300003,169.300003,164.210007,166.949997,166.949997,25252200
2018-09-27,167.550003,171.770004,167.210007,168.839996,168.839996,27266900
2018-09-28,168.330002,168.789993,162.559998,164.460007,164.460007,34265600
2018-10-01,163.029999,165.880005,161.259995,162.440002,162.440002,26407700
2018-10-02,161.580002,162.279999,158.669998,159.330002,159.330002,36031000
2018-10-03,160.000000,163.660004,159.529999,162.429993,162.429993,23109500
2018-10-04,161.460007,161.460007,157.350006,158.850006,158.850006,25739600
2018-10-05,159.210007,160.899994,156.199997,157.330002,157.330002,25744000
2018-10-08,155.539993,158.339996,154.389999,157.250000,157.250000,24046000
2018-10-09,157.690002,160.589996,157.419998,157.899994,157.899994,18844400
2018-10-10,156.820007,157.690002,151.309998,151.380005,151.380005,30610000
2018-10-11,150.130005,154.809998,149.160004,153.350006,153.350006,35338900
2018-10-12,156.729996,156.889999,151.300003,153.740005,153.740005,25293500
2018-10-15,153.320007,155.570007,152.550003,153.520004,153.520004,15433500
2018-10-16,155.399994,159.460007,155.009995,158.779999,158.779999,19180100
2018-10-17,159.559998,160.490005,157.949997,159.419998,159.419998,17592000
2018-10-18,158.509995,158.660004,153.279999,154.919998,154.919998,21675100
2018-10-19,155.860001,157.350006,153.550003,154.050003,154.050003,19761300
2018-10-22,154.759995,157.339996,154.460007,154.779999,154.779999,15424700
2018-10-23,151.220001,154.770004,150.850006,154.389999,154.389999,19095000
2018-10-24,154.279999,154.649994,145.600006,146.039993,146.039993,27744600
2018-10-25,147.729996,152.210007,147.000000,150.949997,150.949997,22105700
2018-10-26,145.820007,149.000000,143.800003,145.369995,145.369995,31303300
2018-10-29,148.500000,148.830002,139.029999,142.089996,142.089996,31336800
2018-10-30,139.940002,146.639999,139.740005,146.220001,146.220001,50528300
2018-10-31,155.000000,156.399994,148.960007,151.789993,151.789993,60101300
2018-11-01,151.520004,152.750000,149.350006,151.750000,151.750000,25640800
2018-11-02,151.800003,154.130005,148.960007,150.350006,150.350006,24708700
2018-11-05,150.100006,150.190002,147.440002,148.679993,148.679993,15971200
2018-11-06,149.309998,150.970001,148.000000,149.940002,149.940002,16667100
2018-11-07,151.570007,153.009995,149.830002,151.529999,151.529999,21877400
2018-11-08,150.490005,150.940002,146.740005,147.869995,147.869995,24145800
2018-11-09,146.750000,147.759995,144.070007,144.960007,144.960007,17326900
2018-11-12,144.479996,145.039993,140.490005,141.550003,141.550003,18542100
2018-11-13,142.000000,144.880005,141.619995,142.160004,142.160004,15141700
2018-11-14,143.699997,145.580002,141.550003,144.220001,144.220001,22068400
2018-11-15,142.330002,144.839996,140.830002,143.850006,143.850006,30320300
2018-11-16,141.070007,141.770004,137.770004,139.529999,139.529999,37250600
2018-11-19,137.610001,137.750000,131.210007,131.550003,131.550003,44362700
2018-11-20,127.029999,134.160004,126.849998,132.429993,132.429993,41939500
2018-11-21,134.399994,137.190002,134.130005,134.820007,134.820007,25469700
2018-11-23,133.649994,134.500000,131.259995,131.729996,131.729996,11886100
2018-11-26,133.000000,137.000000,132.779999,136.380005,136.380005,24263600
2018-11-27,135.750000,136.610001,133.710007,135.000000,135.000000,20750300
2018-11-28,136.279999,136.789993,131.850006,136.759995,136.759995,29847500
2018-11-29,135.919998,139.990005,135.660004,138.679993,138.679993,24238700
2018-11-30,138.259995,140.970001,137.360001,140.610001,140.610001,25732600
2018-12-03,143.000000,143.679993,140.759995,141.089996,141.089996,24819200
2018-12-04,140.729996,143.389999,137.160004,137.929993,137.929993,30307400
2018-12-06,133.820007,139.699997,133.669998,139.630005,139.630005,28218100
2018-12-07,139.250000,140.869995,136.660004,137.419998,137.419998,21195500
2018-12-10,139.600006,143.050003,139.009995,141.850006,141.850006,26422200
2018-12-11,143.880005,143.880005,141.100006,142.080002,142.080002,20300300
2018-12-12,143.080002,147.190002,142.509995,144.500000,144.500000,23696900
2018-12-13,145.570007,145.850006,143.190002,145.009995,145.009995,18148600
2018-12-14,143.339996,146.009995,142.509995,144.059998,144.059998,21785800
2018-12-17,143.080002,144.919998,138.419998,140.190002,140.190002,24334000
2018-12-18,141.080002,145.929993,139.830002,143.660004,143.660004,24709100
2018-12-19,141.210007,144.910004,132.500000,133.240005,133.240005,57404900
2018-12-20,130.699997,135.570007,130.000000,133.399994,133.399994,40297900
2018-12-21,133.389999,134.899994,123.419998,124.949997,124.949997,56901500
2018-12-24,123.099998,129.740005,123.019997,124.059998,124.059998,22066000
2018-12-26,126.000000,134.240005,125.889999,134.179993,134.179993,39723400
2018-12-27,132.440002,134.990005,129.669998,134.520004,134.520004,31202500
2018-12-28,135.339996,135.919998,132.199997,133.199997,133.199997,22627600
2018-12-31,134.449997,134.639999,129.949997,131.089996,131.089996,24625300
2019-01-02,128.990005,137.509995,128.559998,135.679993,135.679993,28146200
2019-01-03,134.690002,137.169998,131.119995,131.740005,131.740005,22700800
2019-01-04,134.009995,138.000000,133.750000,137.949997,137.949997,29002100
2019-01-07,137.559998,138.869995,135.910004,138.050003,138.050003,20089300
2019-01-08,139.889999,143.139999,139.539993,142.529999,142.529999,26263800
2019-01-09,142.949997,144.699997,141.270004,144.229996,144.229996,22205900
2019-01-10,143.080002,144.559998,140.839996,144.199997,144.199997,16125000
2019-01-11,143.149994,145.360001,142.570007,143.800003,143.800003,12908000
2019-01-14,142.000000,146.570007,141.270004,145.389999,145.389999,20520300
2019-01-15,146.009995,150.679993,145.990005,148.949997,148.949997,24069000
2019-01-16,149.000000,149.649994,147.000000,147.539993,147.539993,18025700
2019-01-17,146.949997,149.000000,146.500000,148.300003,148.300003,15787900
2019-01-18,149.750000,152.429993,148.550003,150.039993,150.039993,31029600
2019-01-22,149.199997,151.529999,146.369995,147.570007,147.570007,22378700
2019-01-23,148.279999,148.800003,143.059998,144.300003,144.300003,20098400
2019-01-24,144.639999,146.440002,142.520004,145.830002,145.830002,20955500
2019-01-25,147.479996,149.830002,146.539993,149.009995,149.009995,22237200
2019-01-28,148.050003,148.960007,146.210007,147.470001,147.470001,15508500
2019-01-29,148.089996,148.100006,143.429993,144.190002,144.190002,17632100
2019-01-30,146.220001,150.949997,145.699997,150.419998,150.419998,44613200
2019-01-31,165.600006,171.679993,165.000000,166.690002,166.690002,77233600
2019-02-01,165.839996,169.100006,165.660004,165.710007,165.710007,30806500
2019-02-04,165.699997,169.300003,163.619995,169.250000,169.250000,20036000
2019-02-05,169.149994,171.979996,168.690002,171.160004,171.160004,22557000
2019-02-06,171.199997,172.470001,169.270004,170.490005,170.490005,13281200
2019-02-07,168.199997,169.240005,165.250000,166.380005,166.380005,17517600
2019-02-08,164.470001,167.369995,164.210007,167.330002,167.330002,12561400
2019-02-11,167.899994,168.300003,165.080002,165.789993,165.789993,12811200
2019-02-12,166.860001,168.339996,164.500000,165.039993,165.039993,16292300
2019-02-13,165.380005,166.220001,163.729996,164.070007,164.070007,14205100
2019-02-14,163.190002,164.869995,162.250000,163.949997,163.949997,12755200
2019-02-15,164.509995,164.699997,160.860001,162.500000,162.500000,15504400
2019-02-19,160.500000,164.149994,160.330002,162.289993,162.289993,14345400
2019-02-20,162.250000,163.720001,161.250000,162.559998,162.559998,11770700
2019-02-21,161.929993,162.240005,159.589996,160.039993,160.039993,15607800
2019-02-22,160.580002,162.410004,160.309998,161.889999,161.889999,15858500
2019-02-25,163.070007,166.070007,162.899994,164.619995,164.619995,18737100
2019-02-26,164.339996,166.240005,163.800003,164.130005,164.130005,13784100
2019-02-27,162.899994,163.929993,160.410004,162.809998,162.809998,12697500
2019-02-28,162.369995,163.500000,160.860001,161.449997,161.449997,11114200
2019-03-01,162.600006,163.130005,161.690002,162.279999,162.279999,11097800
2019-03-04,163.899994,167.500000,163.830002,167.369995,167.369995,18894700
2019-03-05,167.369995,171.880005,166.550003,171.259995,171.259995,28187900
2019-03-06,172.899994,173.570007,171.270004,172.509995,172.509995,21531700
2019-03-07,171.500000,171.740005,167.610001,169.130005,169.130005,18205400
2019-03-08,166.199997,169.619995,165.970001,169.600006,169.600006,13184800
2019-03-11,171.600006,174.300003,171.580002,172.070007,172.070007,18884000
2019-03-12,172.089996,173.800003,171.220001,171.919998,171.919998,12155300
2019-03-13,172.320007,174.029999,172.119995,173.369995,173.369995,11973300
2019-03-14,169.759995,171.149994,168.160004,170.169998,170.169998,18037400
2019-03-15,167.160004,167.580002,162.509995,165.979996,165.979996,37135400
2019-03-18,163.570007,163.899994,159.279999,160.470001,160.470001,37524200
2019-03-19,161.479996,163.820007,160.820007,161.570007,161.570007,25611500
2019-03-20,161.500000,166.119995,161.240005,165.440002,165.440002,20211500
2019-03-21,164.889999,166.389999,163.750000,166.080002,166.080002,16223000
2019-03-22,165.649994,167.419998,164.089996,164.339996,164.339996,16389200
2019-03-25,163.000000,166.539993,162.000000,166.289993,166.289993,12631200
2019-03-26,167.350006,169.449997,166.350006,167.679993,167.679993,15437900
2019-03-27,167.850006,168.940002,164.789993,165.869995,165.869995,10620300
2019-03-28,164.570007,166.720001,163.330002,165.550003,165.550003,10689200
2019-03-29,166.389999,167.190002,164.809998,166.690002,166.690002,13455500
2019-04-01,167.830002,168.899994,167.279999,168.699997,168.699997,10381500
2019-04-02,170.139999,174.899994,169.550003,174.199997,174.199997,23946500
2019-04-03,174.500000,177.960007,172.949997,173.539993,173.539993,27590100
2019-04-04,176.020004,178.000000,175.529999,176.020004,176.020004,17847700
2019-04-05,176.880005,177.000000,175.100006,175.720001,175.720001,9594100
2019-04-08,175.210007,175.500000,174.229996,174.929993,174.929993,7297400
2019-04-09,175.619995,179.190002,175.550003,177.580002,177.580002,19751000
2019-04-10,178.179993,178.789993,176.539993,177.820007,177.820007,11701500
2019-04-11,178.240005,178.399994,177.000000,177.509995,177.509995,8071000
2019-04-12,178.000000,179.630005,177.949997,179.100006,179.100006,12329800
2019-04-15,178.500000,180.500000,176.869995,179.649994,179.649994,10834800
2019-04-16,179.000000,180.169998,178.300003,178.869995,178.869995,11215200
2019-04-17,179.600006,180.740005,178.360001,178.779999,178.779999,9973700
2019-04-18,178.800003,178.880005,177.339996,178.279999,178.279999,11655600
2019-04-22,178.250000,181.669998,178.250000,181.440002,181.440002,13389900
2019-04-23,182.740005,184.220001,181.479996,183.779999,183.779999,19954800
2019-04-24,184.490005,185.139999,181.649994,182.580002,182.580002,37289900
2019-04-25,196.979996,198.479996,192.119995,193.259995,193.259995,54148800
2019-04-26,192.500000,192.899994,189.089996,191.490005,191.490005,22075000
2019-04-29,190.949997,195.410004,190.649994,194.779999,194.779999,19641300
2019-04-30,194.190002,197.389999,192.279999,193.399994,193.399994,23494700
2019-05-01,194.779999,196.179993,193.009995,193.029999,193.029999,15996600
2019-05-02,193.000000,194.000000,189.750000,192.529999,192.529999,13209500
2019-05-03,194.380005,196.160004,193.710007,195.470001,195.470001,14575400
2019-05-06,191.240005,194.279999,190.550003,193.880005,193.880005,13994900
2019-05-07,192.539993,192.899994,187.850006,189.770004,189.770004,16253000
2019-05-08,189.389999,190.720001,188.550003,189.539993,189.539993,12505700
2019-05-09,187.199997,189.770004,186.259995,188.649994,188.649994,12967000
2019-05-10,188.250000,190.000000,184.589996,188.339996,188.339996,12578500
2019-05-13,183.500000,185.429993,180.839996,181.539993,181.539993,16833300
2019-05-14,182.520004,183.490005,178.100006,180.729996,180.729996,17628100
2019-05-15,180.419998,187.279999,180.020004,186.270004,186.270004,16746900
2019-05-16,185.050003,188.580002,185.050003,186.990005,186.990005,12953100
2019-05-17,184.839996,187.580002,184.279999,185.300003,185.300003,10485400
2019-05-20,181.880005,184.229996,181.369995,182.720001,182.720001,10352000
2019-05-21,184.570007,185.699997,183.889999,184.820007,184.820007,7502800
2019-05-22,184.729996,186.740005,183.610001,185.320007,185.320007,9203300
2019-05-23,182.419998,183.899994,179.669998,180.460007,180.460007,10396877
================================================
FILE: dataset/FSV.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,71.050003,71.910004,71.050003,71.620003,71.106422,13000
2018-05-24,71.870003,71.919998,71.300003,71.449997,70.937630,28000
2018-05-25,71.760002,71.889999,71.528000,71.879997,71.364548,11900
2018-05-29,71.510002,71.510002,70.610001,70.800003,70.292305,17400
2018-05-30,71.419998,71.419998,70.480003,70.720001,70.212875,48300
2018-05-31,70.730003,70.860001,70.300003,70.389999,69.885231,13700
2018-06-01,70.489998,70.730003,70.050003,70.430000,69.924950,17700
2018-06-04,70.500000,70.739998,70.459999,70.639999,70.133446,8400
2018-06-05,70.919998,71.489998,70.629997,70.980003,70.471008,10800
2018-06-06,71.120003,72.169998,71.120003,71.790001,71.275200,12000
2018-06-07,72.250000,72.250000,71.662003,72.120003,71.602829,14900
2018-06-08,72.349998,72.519997,71.955002,72.419998,71.900681,11200
2018-06-11,72.620003,73.610001,72.269997,73.449997,72.923286,12500
2018-06-12,73.323997,73.680000,72.949997,73.510002,72.982864,11300
2018-06-13,74.290001,74.290001,73.550003,74.160004,73.628197,36400
2018-06-14,73.919998,74.709999,73.629997,74.250000,73.717560,11100
2018-06-15,74.370003,74.470001,73.690002,73.739998,73.211212,13000
2018-06-18,73.440002,74.098999,73.080002,73.980003,73.449493,10000
2018-06-19,73.220001,73.660004,73.089996,73.309998,72.784302,13000
2018-06-20,72.930000,74.250000,72.930000,74.089996,73.558701,29200
2018-06-21,73.739998,74.349998,73.739998,74.099998,73.568634,16900
2018-06-22,73.720001,74.599998,73.720001,74.269997,73.737419,15300
2018-06-25,73.879997,74.220001,73.815002,74.029999,73.499138,13500
2018-06-26,73.540001,74.540001,73.540001,74.339996,73.806908,20500
2018-06-27,73.959999,74.389999,73.650002,73.849998,73.320427,13900
2018-06-28,74.629997,75.300003,74.379997,75.059998,74.658226,11700
2018-06-29,75.050003,76.320000,75.050003,76.040001,75.632980,25700
2018-07-02,75.000000,77.930000,75.000000,77.930000,77.512863,10500
2018-07-03,77.129997,77.849998,75.830002,76.160004,75.752335,80400
2018-07-05,76.129997,77.620003,75.959999,77.050003,76.637581,48400
2018-07-06,77.680000,77.970001,77.300003,77.559998,77.144836,22800
2018-07-09,77.550003,78.730003,77.462997,78.370003,77.950508,53800
2018-07-10,78.665001,79.269997,78.260002,78.309998,77.890823,67100
2018-07-11,78.599998,78.980003,78.110001,78.629997,78.209114,67700
2018-07-12,78.809998,80.790001,78.489998,80.680000,80.248138,74400
2018-07-13,80.570000,80.570000,78.559998,78.820000,78.398102,20300
2018-07-16,78.849998,78.849998,77.959000,78.250000,77.831154,16000
2018-07-17,78.349998,78.629997,77.800003,77.940002,77.522812,21700
2018-07-18,77.290001,78.099998,77.279999,77.940002,77.522812,15200
2018-07-19,77.870003,78.690002,77.830002,78.055000,77.637192,13500
2018-07-20,78.070000,79.209999,77.639999,78.959999,78.537346,17800
2018-07-23,78.949997,78.949997,78.044998,78.519997,78.099701,10700
2018-07-24,78.550003,78.559998,77.790001,78.480003,78.059921,21600
2018-07-25,79.190002,85.269997,79.150002,83.959999,83.510582,44800
2018-07-26,84.949997,86.050003,83.250000,85.099998,84.644478,22700
2018-07-27,85.320000,85.320000,83.010002,84.050003,83.600105,20200
2018-07-30,83.040001,83.430000,81.940002,82.269997,81.829620,20900
2018-07-31,82.459999,83.620003,82.260002,83.180000,82.734756,23700
2018-08-01,82.540001,83.739998,81.800003,82.889999,82.446312,17800
2018-08-02,82.879997,83.190002,81.900002,83.120003,82.675087,43100
2018-08-03,83.379997,83.489998,81.849998,82.190002,81.750053,16700
2018-08-06,83.800003,83.800003,82.040001,83.010002,82.565674,7200
2018-08-07,82.849998,82.849998,81.070000,81.330002,80.894661,16600
2018-08-08,80.930000,82.809998,80.930000,82.570000,82.128021,18100
2018-08-09,83.040001,83.139999,82.160004,82.209999,81.769951,18500
2018-08-10,82.199997,83.160004,81.510002,82.440002,81.998726,42100
2018-08-13,82.449997,84.389999,80.820000,81.720001,81.282578,17100
2018-08-14,81.540001,82.790001,81.440002,82.269997,81.829620,13000
2018-08-15,82.260002,82.389999,81.580002,82.139999,81.700325,16500
2018-08-16,82.199997,82.980003,82.199997,82.480003,82.038513,30500
2018-08-17,82.629997,86.440002,82.629997,85.370003,84.913040,67100
2018-08-20,86.059998,86.059998,84.620003,85.000000,84.545013,25800
2018-08-21,85.690002,86.129997,85.129997,86.040001,85.579445,16300
2018-08-22,86.029999,86.305000,85.620003,86.059998,85.599342,20500
2018-08-23,86.050003,86.224998,85.550003,85.629997,85.171638,18100
2018-08-24,86.209999,86.889999,85.750000,86.489998,86.027039,25000
2018-08-27,87.239998,87.989998,86.269997,87.720001,87.250458,31100
2018-08-28,88.139999,88.430000,87.230003,87.540001,87.071419,24500
2018-08-29,87.550003,90.205002,86.860001,87.290001,86.822762,32300
2018-08-30,87.169998,87.309998,86.169998,86.430000,85.967361,15100
2018-08-31,86.199997,86.199997,85.250000,85.860001,85.400414,23600
2018-09-04,86.089996,86.089996,83.879997,85.750000,85.291008,28200
2018-09-05,85.120003,86.010002,85.120003,85.680000,85.221382,20600
2018-09-06,86.510002,87.190002,85.709999,87.190002,86.723305,17500
2018-09-07,86.610001,87.540001,86.430000,86.690002,86.225975,7300
2018-09-10,87.059998,87.565002,86.674004,87.279999,86.812813,22700
2018-09-11,87.290001,87.440002,85.440002,85.940002,85.479988,18600
2018-09-12,86.860001,86.860001,85.680000,86.250000,85.788330,24400
2018-09-13,86.570000,86.739998,85.279999,85.570000,85.111969,14600
2018-09-14,85.199997,86.070000,85.183998,85.400002,84.942871,17800
2018-09-17,84.599998,85.769997,84.580002,85.430000,84.972717,9100
2018-09-18,85.699997,86.620003,85.570000,86.169998,85.708755,21900
2018-09-19,86.430000,86.430000,84.739998,84.790001,84.336143,17400
2018-09-20,85.180000,85.910004,84.860001,85.139999,84.684265,10900
2018-09-21,85.379997,85.379997,84.339996,84.889999,84.435608,16500
2018-09-24,84.860001,85.199997,84.629997,84.690002,84.236679,19500
2018-09-25,84.750000,85.000000,84.538002,84.900002,84.445549,32800
2018-09-26,84.820000,84.970001,82.639999,83.120003,82.675087,25900
2018-09-27,83.110001,83.698997,82.699997,83.589996,83.277817,21600
2018-09-28,83.820000,85.260002,83.820000,84.660004,84.343834,38200
2018-10-01,85.199997,86.080002,83.709999,84.150002,83.835732,20700
2018-10-02,84.110001,84.120003,82.855003,83.139999,82.829498,15000
2018-10-03,83.150002,83.550003,82.580002,83.000000,82.690025,15200
2018-10-04,83.454002,83.454002,82.010002,82.769997,82.460884,23900
2018-10-05,82.599998,83.250000,82.010002,82.470001,82.162010,12200
2018-10-08,82.139999,82.139999,80.879997,80.879997,80.577942,15100
2018-10-09,80.669998,81.720001,80.620003,80.839996,80.538086,56000
2018-10-10,80.849998,80.849998,78.449997,78.449997,78.157021,31100
2018-10-11,78.430000,79.389999,78.184998,78.620003,78.326385,21600
2018-10-12,79.449997,79.860001,78.315002,78.680000,78.386162,16300
2018-10-15,78.639999,79.089996,78.000000,78.320000,78.027504,20300
2018-10-16,79.180000,80.230003,79.000000,79.830002,79.531868,88500
2018-10-17,79.639999,80.080002,79.135002,79.589996,79.292755,98200
2018-10-18,78.980003,80.349998,78.980003,79.629997,79.332603,32900
2018-10-19,80.290001,81.949997,80.269997,81.430000,81.125893,23300
2018-10-22,81.940002,82.510002,81.370003,81.559998,81.255402,27400
2018-10-23,81.080002,81.080002,78.089996,78.470001,78.176941,24100
2018-10-24,77.720001,78.739998,74.750000,75.820000,75.536835,78400
2018-10-25,76.540001,76.540001,73.989998,74.440002,74.161995,30400
2018-10-26,73.279999,73.639999,72.059998,72.330002,72.059875,33400
2018-10-29,72.320000,72.779999,70.970001,71.190002,70.924133,31700
2018-10-30,70.750000,71.669998,70.750000,71.500000,71.232971,29100
2018-10-31,72.489998,74.010002,72.099998,73.400002,73.125885,91300
2018-11-01,74.199997,75.339996,72.790001,75.010002,74.729866,133600
2018-11-02,75.500000,75.760002,74.720001,75.339996,75.058632,138300
2018-11-05,75.330002,75.660004,73.900002,74.300003,74.022522,47400
2018-11-06,74.389999,74.889999,73.949997,74.699997,74.421021,22800
2018-11-07,75.169998,75.360001,74.540001,74.970001,74.690018,38900
2018-11-08,75.540001,75.570000,74.949997,75.260002,74.978935,11300
2018-11-09,75.239998,75.239998,73.894997,74.500000,74.221764,17000
2018-11-12,74.455002,74.629997,73.964996,74.349998,74.072327,81200
2018-11-13,74.339996,75.290001,73.760002,74.320000,74.042442,278800
2018-11-14,74.360001,74.900002,74.360001,74.540001,74.261620,30100
2018-11-15,74.274002,74.300003,72.379997,72.559998,72.289017,72200
2018-11-16,72.430000,73.410004,72.040001,73.290001,73.016296,48300
2018-11-19,73.589996,73.650002,72.849998,73.250000,72.976440,67000
2018-11-20,72.209999,73.190002,71.910004,72.790001,72.518158,75900
2018-11-21,72.800003,73.970001,72.419998,73.900002,73.624008,102500
2018-11-23,73.440002,73.720001,72.000000,73.160004,72.886780,14100
2018-11-26,73.209999,74.660004,73.209999,74.199997,73.922882,33800
2018-11-27,74.040001,74.290001,73.610001,74.070000,73.793373,35100
2018-11-28,74.080002,74.650002,73.709999,74.410004,74.132111,27500
2018-11-29,74.690002,75.385002,73.860001,74.870003,74.590393,28600
2018-11-30,74.879997,75.849998,74.669998,75.639999,75.357513,24900
2018-12-03,76.860001,77.820000,75.639999,77.650002,77.360008,34700
2018-12-04,77.639999,78.279999,75.764999,76.269997,75.985153,69500
2018-12-06,75.809998,75.930000,73.790001,75.930000,75.646423,49100
2018-12-07,75.919998,76.650002,74.209999,74.820000,74.540573,21500
2018-12-10,74.970001,74.989998,72.800003,73.089996,72.817032,28800
2018-12-11,73.459999,73.480003,72.599998,72.650002,72.378685,20600
2018-12-12,73.519997,73.760002,72.800003,72.919998,72.647667,18200
2018-12-13,72.540001,72.919998,71.529999,71.639999,71.372452,19200
2018-12-14,71.419998,71.419998,69.870003,70.550003,70.286522,37900
2018-12-17,69.989998,70.139999,66.930000,67.139999,66.889259,45600
2018-12-18,67.489998,69.160004,67.400002,68.440002,68.184402,78500
2018-12-19,68.430000,70.050003,68.080002,68.320000,68.064850,42600
2018-12-20,68.639999,68.639999,65.339996,65.769997,65.524368,40600
2018-12-21,65.730003,67.199997,65.029999,65.959999,65.713661,78100
2018-12-24,65.775002,66.610001,65.529999,66.410004,66.161987,39200
2018-12-26,67.019997,67.190002,65.279999,66.550003,66.301460,50800
2018-12-27,65.910004,67.239998,64.870003,67.169998,66.919144,33100
2018-12-28,67.629997,68.779999,67.589996,68.139999,68.022232,47700
2018-12-31,68.199997,68.860001,67.849998,68.480003,68.361649,44200
2019-01-02,68.250000,68.339996,66.834999,67.230003,67.113808,35100
2019-01-03,67.250000,67.599998,65.550003,66.080002,65.965797,29900
2019-01-04,66.320000,69.290001,66.320000,69.290001,69.170250,48800
2019-01-07,69.610001,71.559998,69.344002,71.199997,71.076942,26500
2019-01-08,71.269997,72.230003,71.269997,71.870003,71.745789,17200
2019-01-09,71.860001,72.720001,71.230003,72.660004,72.534424,21600
2019-01-10,73.000000,73.400002,72.349998,73.029999,72.903778,15700
2019-01-11,73.260002,73.279999,72.199997,72.860001,72.734077,70700
2019-01-14,72.470001,73.419998,72.139999,73.349998,73.223228,182300
2019-01-15,74.430000,74.430000,73.239998,73.790001,73.662468,27400
2019-01-16,74.250000,74.480003,73.622002,74.239998,74.111687,18200
2019-01-17,74.599998,75.680000,74.485001,75.430000,75.299637,34700
2019-01-18,75.510002,76.769997,75.360001,76.379997,76.247993,24100
2019-01-22,75.330002,76.790001,74.370003,76.790001,76.657288,60400
2019-01-23,77.239998,77.970001,77.190002,77.739998,77.605637,35000
2019-01-24,77.940002,78.760002,77.940002,78.589996,78.454170,11100
2019-01-25,78.839996,80.720001,78.839996,80.459999,80.320938,37300
2019-01-28,80.360001,81.190002,79.834999,80.589996,80.450714,29600
2019-01-29,80.580002,81.830002,80.360001,80.769997,80.630402,25600
2019-01-30,81.139999,81.209999,80.004997,80.940002,80.800117,21300
2019-01-31,80.980003,81.949997,80.779999,81.279999,81.139526,37200
2019-02-01,81.279999,82.029999,80.980003,81.709999,81.568779,64700
2019-02-04,81.720001,82.330002,81.430000,82.190002,82.047951,49500
2019-02-05,81.889999,83.769997,81.889999,83.480003,83.335724,23100
2019-02-06,83.750000,84.760002,83.019997,83.779999,83.635201,57900
2019-02-07,83.400002,84.849998,83.000000,83.889999,83.745010,46100
2019-02-08,84.160004,84.870003,83.809998,84.709999,84.563599,57000
2019-02-11,85.059998,85.300003,84.419998,84.769997,84.623489,57500
2019-02-12,85.440002,87.440002,85.254997,87.129997,86.979408,44700
2019-02-13,87.610001,89.169998,87.610001,88.629997,88.476822,34300
2019-02-14,88.239998,88.389999,87.019997,87.839996,87.688179,28100
2019-02-15,87.910004,87.910004,87.110001,87.260002,87.109192,43200
2019-02-19,87.650002,87.650002,86.040001,86.800003,86.649986,47400
2019-02-20,86.410004,87.839996,86.220001,87.620003,87.468567,34100
2019-02-21,87.779999,87.900002,87.150002,87.580002,87.428635,23300
2019-02-22,88.029999,88.400002,87.459999,88.290001,88.137413,29600
2019-02-25,88.519997,88.930000,87.059998,87.110001,86.959450,19700
2019-02-26,87.120003,87.910004,86.720001,87.639999,87.488533,29600
2019-02-27,87.589996,87.589996,86.584999,87.199997,87.049286,18400
2019-02-28,86.949997,87.059998,86.379997,86.839996,86.689911,32800
2019-03-01,87.150002,87.150002,85.660004,86.500000,86.350502,38600
2019-03-04,86.410004,87.510002,86.160004,87.019997,86.869598,32900
2019-03-05,86.900002,88.070000,86.820000,87.940002,87.788017,23600
2019-03-06,87.489998,87.489998,86.639999,87.059998,86.909531,25500
2019-03-07,87.410004,87.410004,86.040001,86.779999,86.630020,34000
2019-03-08,86.540001,86.750000,85.199997,85.570000,85.422112,24000
2019-03-11,85.949997,86.980003,85.010002,86.739998,86.590088,24100
2019-03-12,86.889999,86.889999,85.900002,86.650002,86.500244,13500
2019-03-13,86.720001,87.099998,83.680000,84.260002,84.114372,62500
2019-03-14,84.320000,85.510002,83.959999,85.269997,85.122627,51900
2019-03-15,85.150002,85.550003,83.910004,84.400002,84.254135,34300
2019-03-18,84.879997,85.230003,83.699997,84.260002,84.114372,32700
2019-03-19,84.849998,85.059998,83.980003,83.980003,83.834862,21700
2019-03-20,83.690002,84.330002,83.220001,83.970001,83.824875,43400
2019-03-21,84.050003,85.440002,83.940002,85.370003,85.222458,26700
2019-03-22,84.910004,85.150002,84.019997,84.019997,83.874786,30500
2019-03-25,83.900002,85.269997,83.400002,85.220001,85.072716,34400
2019-03-26,85.820000,86.019997,84.849998,85.809998,85.661690,31200
2019-03-27,85.029999,86.970001,85.029999,86.790001,86.639999,28800
2019-03-28,86.800003,88.084999,86.650002,87.699997,87.699997,22400
2019-03-29,88.419998,89.669998,87.699997,89.339996,89.339996,40500
2019-04-01,89.360001,89.949997,88.199997,89.620003,89.620003,42500
2019-04-02,89.919998,89.919998,88.300003,88.720001,88.720001,27600
2019-04-03,89.320000,89.320000,88.260002,88.449997,88.449997,25100
2019-04-04,88.889999,88.889999,87.930000,88.190002,88.190002,29400
2019-04-05,88.285004,88.430000,87.629997,88.070000,88.070000,23700
2019-04-08,88.070000,88.495003,87.199997,87.739998,87.739998,18700
2019-04-09,87.930000,88.360001,87.830002,88.070000,88.070000,24700
2019-04-10,88.430000,89.660004,88.120003,89.209999,89.209999,20900
2019-04-11,89.529999,89.529999,88.139999,88.300003,88.300003,21000
2019-04-12,88.139999,89.639999,88.092003,89.589996,89.589996,18500
2019-04-15,89.129997,89.779999,89.129997,89.389999,89.389999,20700
2019-04-16,89.639999,89.879997,88.139999,88.209999,88.209999,17200
2019-04-17,88.830002,88.830002,85.410004,86.480003,86.480003,53800
2019-04-18,86.470001,87.470001,85.800003,87.050003,87.050003,17400
2019-04-22,86.589996,87.849998,86.589996,87.419998,87.419998,14500
2019-04-23,86.830002,88.110001,86.639999,88.110001,88.110001,21200
2019-04-24,83.769997,87.589996,83.769997,87.269997,87.269997,34800
2019-04-25,87.070000,87.839996,86.925003,87.669998,87.669998,18500
2019-04-26,87.650002,87.769997,86.699997,86.970001,86.970001,22500
2019-04-29,86.550003,86.669998,83.019997,86.360001,86.360001,22800
2019-04-30,87.014000,87.349998,86.410004,87.220001,87.220001,33700
2019-05-01,88.141998,88.141998,86.985001,87.129997,87.129997,43100
2019-05-02,87.180000,87.474998,86.610001,87.379997,87.379997,26600
2019-05-03,87.449997,88.120003,87.449997,87.940002,87.940002,35600
2019-05-06,86.970001,87.800003,86.970001,87.620003,87.620003,28600
2019-05-07,86.419998,86.699997,85.970001,86.599998,86.599998,29300
2019-05-08,87.010002,87.010002,85.930000,86.379997,86.379997,50800
2019-05-09,85.919998,86.150002,85.476997,85.790001,85.790001,37400
2019-05-10,86.070000,86.889999,85.510002,86.889999,86.889999,63800
2019-05-13,86.309998,86.455002,85.169998,86.040001,86.040001,24400
2019-05-14,85.800003,86.370003,85.610001,86.070000,86.070000,34400
2019-05-15,86.489998,87.680000,85.690002,86.970001,86.970001,46700
2019-05-16,87.730003,89.209999,87.540001,89.010002,89.010002,51300
2019-05-17,89.029999,89.519997,87.110001,87.790001,87.790001,29900
2019-05-20,85.930000,89.010002,85.930000,86.620003,86.620003,19000
2019-05-21,87.959999,88.010002,86.089996,86.290001,86.290001,51600
2019-05-22,86.269997,86.480003,85.260002,86.129997,86.129997,49400
2019-05-23,88.639999,93.860001,88.014999,93.500000,93.500000,115185
================================================
FILE: dataset/GOOG-year.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2016-11-02,778.200012,781.650024,763.450012,768.700012,768.700012,1872400
2016-11-03,767.250000,769.950012,759.030029,762.130005,762.130005,1943200
2016-11-04,750.659973,770.359985,750.560974,762.020020,762.020020,2134800
2016-11-07,774.500000,785.190002,772.549988,782.520020,782.520020,1585100
2016-11-08,783.400024,795.632996,780.190002,790.510010,790.510010,1350800
2016-11-09,779.940002,791.226990,771.669983,785.309998,785.309998,2607100
2016-11-10,791.169983,791.169983,752.179993,762.559998,762.559998,4745200
2016-11-11,756.539978,760.780029,750.380005,754.020020,754.020020,2431800
2016-11-14,755.599976,757.849976,727.539978,736.080017,736.080017,3631700
2016-11-15,746.969971,764.416016,746.969971,758.489990,758.489990,2384000
2016-11-16,755.200012,766.359985,750.510010,764.479980,764.479980,1465200
2016-11-17,766.919983,772.700012,764.229980,771.229980,771.229980,1304000
2016-11-18,771.369995,775.000000,760.000000,760.539978,760.539978,1547100
2016-11-21,762.609985,769.700012,760.599976,769.200012,769.200012,1330600
2016-11-22,772.630005,776.960022,767.000000,768.270020,768.270020,1593100
2016-11-23,767.729980,768.283020,755.250000,760.989990,760.989990,1477400
2016-11-25,764.260010,765.000000,760.520020,761.679993,761.679993,587400
2016-11-28,760.000000,779.530029,759.799988,768.239990,768.239990,2188200
2016-11-29,771.530029,778.500000,768.239990,770.840027,770.840027,1616600
2016-11-30,770.070007,772.989990,754.830017,758.039978,758.039978,2392900
2016-12-01,757.440002,759.849976,737.025024,747.919983,747.919983,3017900
2016-12-02,744.590027,754.000000,743.099976,750.500000,750.500000,1452500
2016-12-05,757.710022,763.900024,752.900024,762.520020,762.520020,1394200
2016-12-06,764.729980,768.830017,757.340027,759.109985,759.109985,1690700
2016-12-07,761.000000,771.359985,755.799988,771.190002,771.190002,1761000
2016-12-08,772.479980,778.179993,767.229980,776.419983,776.419983,1488100
2016-12-09,780.000000,789.429993,779.020996,789.289978,789.289978,1821900
2016-12-12,785.039978,791.250000,784.354980,789.270020,789.270020,2104100
2016-12-13,793.900024,804.380005,793.340027,796.099976,796.099976,2145200
2016-12-14,797.400024,804.000000,794.010010,797.070007,797.070007,1704200
2016-12-15,797.340027,803.000000,792.919983,797.849976,797.849976,1626500
2016-12-16,800.400024,800.856018,790.289978,790.799988,790.799988,2428300
2016-12-19,790.219971,797.659973,786.270020,794.200012,794.200012,1232100
2016-12-20,796.760010,798.650024,793.270020,796.419983,796.419983,951000
2016-12-21,795.840027,796.676025,787.099976,794.559998,794.559998,1211300
2016-12-22,792.359985,793.320007,788.580017,791.260010,791.260010,972200
2016-12-23,790.900024,792.739990,787.280029,789.909973,789.909973,623400
2016-12-27,790.679993,797.859985,787.656982,791.549988,791.549988,789100
2016-12-28,793.700012,794.229980,783.200012,785.049988,785.049988,1153800
2016-12-29,783.330017,785.929993,778.919983,782.789978,782.789978,742200
2016-12-30,782.750000,782.780029,770.409973,771.820007,771.820007,1770000
2017-01-03,778.809998,789.630005,775.799988,786.140015,786.140015,1657300
2017-01-04,788.359985,791.340027,783.159973,786.900024,786.900024,1073000
2017-01-05,786.080017,794.479980,785.020020,794.020020,794.020020,1335200
2017-01-06,795.260010,807.900024,792.203979,806.150024,806.150024,1640200
2017-01-09,806.400024,809.966003,802.830017,806.650024,806.650024,1272400
2017-01-10,807.859985,809.130005,803.510010,804.789978,804.789978,1176800
2017-01-11,805.000000,808.150024,801.369995,807.909973,807.909973,1065900
2017-01-12,807.140015,807.390015,799.169983,806.359985,806.359985,1353100
2017-01-13,807.479980,811.223999,806.690002,807.880005,807.880005,1099200
2017-01-17,807.080017,807.140015,800.369995,804.609985,804.609985,1355800
2017-01-18,805.809998,806.205017,800.989990,806.070007,806.070007,1294400
2017-01-19,805.119995,809.479980,801.799988,802.174988,802.174988,919300
2017-01-20,806.909973,806.909973,801.690002,805.020020,805.020020,1670000
2017-01-23,807.250000,820.869995,803.739990,819.309998,819.309998,1963600
2017-01-24,822.299988,825.900024,817.820984,823.869995,823.869995,1474000
2017-01-25,829.619995,835.770020,825.059998,835.669983,835.669983,1494500
2017-01-26,837.809998,838.000000,827.010010,832.150024,832.150024,2973900
2017-01-27,834.710022,841.950012,820.440002,823.309998,823.309998,2965800
2017-01-30,814.659973,815.840027,799.799988,802.320007,802.320007,3246600
2017-01-31,796.859985,801.250000,790.520020,796.789978,796.789978,2160600
2017-02-01,799.679993,801.190002,791.190002,795.695007,795.695007,2029700
2017-02-02,793.799988,802.700012,792.000000,798.530029,798.530029,1532100
2017-02-03,802.989990,806.000000,800.369995,801.489990,801.489990,1463400
2017-02-06,799.700012,801.669983,795.250000,801.340027,801.340027,1184500
2017-02-07,803.989990,810.500000,801.780029,806.969971,806.969971,1241200
2017-02-08,807.000000,811.840027,803.190002,808.380005,808.380005,1155300
2017-02-09,809.510010,810.659973,804.539978,809.559998,809.559998,989700
2017-02-10,811.700012,815.250000,809.780029,813.669983,813.669983,1135000
2017-02-13,816.000000,820.958984,815.489990,819.239990,819.239990,1213300
2017-02-14,819.000000,823.000000,816.000000,820.450012,820.450012,1053600
2017-02-15,819.359985,823.000000,818.469971,818.979980,818.979980,1313600
2017-02-16,819.929993,824.400024,818.979980,824.159973,824.159973,1287600
2017-02-17,823.020020,828.070007,821.655029,828.070007,828.070007,1611000
2017-02-21,828.659973,833.450012,828.349976,831.659973,831.659973,1262300
2017-02-22,828.659973,833.250000,828.640015,830.760010,830.760010,982900
2017-02-23,830.119995,832.460022,822.880005,831.330017,831.330017,1472800
2017-02-24,827.729980,829.000000,824.200012,828.640015,828.640015,1392200
2017-02-27,824.549988,830.500000,824.000000,829.280029,829.280029,1101500
2017-02-28,825.609985,828.539978,820.200012,823.210022,823.210022,2260800
2017-03-01,828.849976,836.255005,827.260010,835.239990,835.239990,1496500
2017-03-02,833.849976,834.510010,829.640015,830.630005,830.630005,942500
2017-03-03,830.559998,831.359985,825.750977,829.080017,829.080017,896400
2017-03-06,826.950012,828.880005,822.400024,827.780029,827.780029,1109000
2017-03-07,827.400024,833.409973,826.520020,831.909973,831.909973,1037600
2017-03-08,833.510010,838.150024,831.789978,835.369995,835.369995,989800
2017-03-09,836.000000,842.000000,834.210022,838.679993,838.679993,1261500
2017-03-10,843.280029,844.909973,839.500000,843.250000,843.250000,1704000
2017-03-13,844.000000,848.684998,843.250000,845.539978,845.539978,1223600
2017-03-14,843.640015,847.239990,840.799988,845.619995,845.619995,779900
2017-03-15,847.590027,848.630005,840.770020,847.200012,847.200012,1381500
2017-03-16,849.030029,850.849976,846.130005,848.780029,848.780029,977600
2017-03-17,851.609985,853.400024,847.109985,852.119995,852.119995,1712300
2017-03-20,850.010010,850.219971,845.150024,848.400024,848.400024,1231500
2017-03-21,851.400024,853.500000,829.020020,830.460022,830.460022,2463500
2017-03-22,831.909973,835.549988,827.179993,829.590027,829.590027,1401500
2017-03-23,821.000000,822.570007,812.257019,817.580017,817.580017,3487100
2017-03-24,820.080017,821.929993,808.890015,814.429993,814.429993,1981000
2017-03-27,806.950012,821.630005,803.369995,819.510010,819.510010,1894300
2017-03-28,820.409973,825.989990,814.026978,820.919983,820.919983,1620500
2017-03-29,825.000000,832.765015,822.380005,831.409973,831.409973,1786300
2017-03-30,833.500000,833.679993,829.000000,831.500000,831.500000,1055300
2017-03-31,828.969971,831.640015,827.390015,829.559998,829.559998,1401900
2017-04-03,829.219971,840.849976,829.219971,838.549988,838.549988,1671500
2017-04-04,831.359985,835.179993,829.036011,834.570007,834.570007,1045400
2017-04-05,835.510010,842.450012,830.719971,831.409973,831.409973,1555300
2017-04-06,832.400024,836.390015,826.460022,827.880005,827.880005,1254400
2017-04-07,827.960022,828.484985,820.513000,824.669983,824.669983,1057300
2017-04-10,825.390015,829.349976,823.770020,824.729980,824.729980,978900
2017-04-11,824.710022,827.427002,817.020020,823.349976,823.349976,1079700
2017-04-12,821.929993,826.659973,821.020020,824.320007,824.320007,900500
2017-04-13,822.140015,826.380005,821.440002,823.559998,823.559998,1122400
2017-04-17,825.010010,837.750000,824.469971,837.169983,837.169983,895000
2017-04-18,834.219971,838.929993,832.710022,836.820007,836.820007,836700
2017-04-19,839.789978,842.219971,836.289978,838.210022,838.210022,954200
2017-04-20,841.440002,845.200012,839.320007,841.650024,841.650024,959000
2017-04-21,842.880005,843.880005,840.599976,843.190002,843.190002,1323600
2017-04-24,851.200012,863.450012,849.859985,862.760010,862.760010,1372500
2017-04-25,865.000000,875.000000,862.809998,872.299988,872.299988,1672000
2017-04-26,874.229980,876.049988,867.747986,871.729980,871.729980,1237200
2017-04-27,873.599976,875.400024,870.380005,874.250000,874.250000,2026800
2017-04-28,910.659973,916.849976,905.770020,905.960022,905.960022,3219500
2017-05-01,901.940002,915.679993,901.450012,912.570007,912.570007,2116000
2017-05-02,909.619995,920.770020,909.453003,916.440002,916.440002,1587200
2017-05-03,914.859985,928.099976,912.543030,927.039978,927.039978,1499500
2017-05-04,926.070007,935.929993,924.590027,931.659973,931.659973,1422100
2017-05-05,933.539978,934.900024,925.200012,927.130005,927.130005,1911300
2017-05-08,926.119995,936.924988,925.260010,934.299988,934.299988,1329800
2017-05-09,936.950012,937.500000,929.530029,932.169983,932.169983,1581800
2017-05-10,931.979980,932.000000,925.159973,928.780029,928.780029,1173900
2017-05-11,925.320007,932.530029,923.030029,930.599976,930.599976,835000
2017-05-12,931.530029,933.440002,927.849976,932.219971,932.219971,1050600
2017-05-15,932.950012,938.250000,929.340027,937.080017,937.080017,1108100
2017-05-16,940.000000,943.109985,937.580017,943.000000,943.000000,969500
2017-05-17,935.669983,939.333008,918.140015,919.619995,919.619995,2362100
2017-05-18,921.000000,933.169983,918.750000,930.239990,930.239990,1596900
2017-05-19,931.469971,937.755005,931.000000,934.010010,934.010010,1393000
2017-05-22,935.000000,941.882996,935.000000,941.859985,941.859985,1120400
2017-05-23,947.919983,951.466980,942.575012,948.820007,948.820007,1270800
2017-05-24,952.979980,955.090027,949.500000,954.960022,954.960022,1024800
2017-05-25,957.330017,972.629028,955.469971,969.539978,969.539978,1660500
2017-05-26,969.700012,974.979980,965.030029,971.469971,971.469971,1252000
2017-05-30,970.309998,976.200012,969.489990,975.880005,975.880005,1466700
2017-05-31,975.020020,979.270020,960.179993,964.859985,964.859985,2448100
2017-06-01,968.950012,971.500000,960.010010,966.950012,966.950012,1410500
2017-06-02,969.460022,975.880005,966.000000,975.599976,975.599976,1751000
2017-06-05,976.549988,986.909973,975.099976,983.679993,983.679993,1252100
2017-06-06,983.159973,988.250000,975.140015,976.570007,976.570007,1814600
2017-06-07,980.000000,983.979980,975.940002,980.940002,980.940002,1453900
2017-06-08,982.349976,984.570007,977.200012,983.409973,983.409973,1471500
2017-06-09,984.500000,984.500000,935.630005,949.830017,949.830017,3309400
2017-06-12,939.559998,949.354980,915.232971,942.900024,942.900024,3763500
2017-06-13,951.909973,959.979980,944.090027,953.400024,953.400024,2013300
2017-06-14,959.919983,961.150024,942.250000,950.760010,950.760010,1489700
2017-06-15,933.969971,943.338989,924.440002,942.309998,942.309998,2133100
2017-06-16,940.000000,942.039978,931.594971,939.780029,939.780029,3094700
2017-06-19,949.960022,959.989990,949.049988,957.369995,957.369995,1533300
2017-06-20,957.520020,961.619995,950.010010,950.630005,950.630005,1126000
2017-06-21,953.640015,960.099976,950.760010,959.450012,959.450012,1202200
2017-06-22,958.700012,960.719971,954.549988,957.090027,957.090027,941400
2017-06-23,956.830017,966.000000,954.200012,965.590027,965.590027,1527900
2017-06-26,969.900024,973.309998,950.789978,952.270020,952.270020,1598400
2017-06-27,942.460022,948.289978,926.849976,927.330017,927.330017,2579900
2017-06-28,929.000000,942.750000,916.000000,940.489990,940.489990,2721400
2017-06-29,929.919983,931.260010,910.619995,917.789978,917.789978,3299200
2017-06-30,926.049988,926.049988,908.309998,908.729980,908.729980,2090200
2017-07-03,912.179993,913.940002,894.789978,898.700012,898.700012,1709800
2017-07-05,901.760010,914.510010,898.500000,911.710022,911.710022,1813900
2017-07-06,904.119995,914.943970,899.700012,906.690002,906.690002,1424500
2017-07-07,908.849976,921.539978,908.849976,918.590027,918.590027,1637800
2017-07-10,921.770020,930.380005,919.590027,928.799988,928.799988,1192800
2017-07-11,929.539978,931.429993,922.000000,930.090027,930.090027,1113200
2017-07-12,938.679993,946.299988,934.469971,943.830017,943.830017,1532100
2017-07-13,946.289978,954.450012,943.010010,947.159973,947.159973,1294700
2017-07-14,952.000000,956.909973,948.005005,955.989990,955.989990,1053800
2017-07-17,957.000000,960.739990,949.241028,953.419983,953.419983,1165500
2017-07-18,953.000000,968.039978,950.599976,965.400024,965.400024,1154000
2017-07-19,967.840027,973.039978,964.030029,970.890015,970.890015,1224500
2017-07-20,975.000000,975.900024,961.510010,968.150024,968.150024,1624500
2017-07-21,962.250000,973.229980,960.150024,972.919983,972.919983,1711000
2017-07-24,972.219971,986.200012,970.770020,980.340027,980.340027,3248300
2017-07-25,953.809998,959.700012,945.400024,950.700012,950.700012,4661000
2017-07-26,954.679993,955.000000,942.278992,947.799988,947.799988,2088300
2017-07-27,951.780029,951.780029,920.000000,934.090027,934.090027,3213000
2017-07-28,929.400024,943.830017,927.500000,941.530029,941.530029,1846400
2017-07-31,941.890015,943.590027,926.039978,930.500000,930.500000,1970100
2017-08-01,932.380005,937.447021,929.260010,930.830017,930.830017,1277700
2017-08-02,928.609985,932.599976,916.679993,930.390015,930.390015,1824400
2017-08-03,930.340027,932.239990,922.239990,923.650024,923.650024,1202500
2017-08-04,926.750000,930.307007,923.030029,927.960022,927.960022,1082300
2017-08-07,929.059998,931.700012,926.500000,929.359985,929.359985,1032200
2017-08-08,927.090027,935.814026,925.609985,926.789978,926.789978,1061600
2017-08-09,920.609985,925.979980,917.250000,922.900024,922.900024,1192100
2017-08-10,917.549988,919.260010,906.130005,907.239990,907.239990,1824000
2017-08-11,907.969971,917.780029,905.580017,914.390015,914.390015,1206800
2017-08-14,922.530029,924.668030,918.190002,922.669983,922.669983,1064500
2017-08-15,924.229980,926.549988,919.820007,922.219971,922.219971,883400
2017-08-16,925.289978,932.700012,923.445007,926.960022,926.960022,1006700
2017-08-17,925.780029,926.859985,910.979980,910.979980,910.979980,1277200
2017-08-18,910.309998,915.275024,907.153992,910.669983,910.669983,1342700
2017-08-21,910.000000,913.000000,903.400024,906.659973,906.659973,943400
2017-08-22,912.719971,925.859985,911.474976,924.690002,924.690002,1166700
2017-08-23,921.929993,929.929993,919.359985,927.000000,927.000000,1090200
2017-08-24,928.659973,930.840027,915.500000,921.280029,921.280029,1270300
2017-08-25,923.489990,925.554993,915.500000,915.890015,915.890015,1053400
2017-08-28,916.000000,919.244995,911.869995,913.809998,913.809998,1086500
2017-08-29,905.099976,923.330017,905.000000,921.289978,921.289978,1185600
2017-08-30,920.049988,930.818970,919.650024,929.570007,929.570007,1301200
2017-08-31,931.760010,941.979980,931.760010,939.330017,939.330017,1582600
2017-09-01,941.130005,942.479980,935.150024,937.340027,937.340027,947400
2017-09-05,933.080017,937.000000,921.960022,928.450012,928.450012,1326400
2017-09-06,930.150024,930.914978,919.270020,927.809998,927.809998,1527700
2017-09-07,931.729980,936.409973,923.619995,935.950012,935.950012,1212700
2017-09-08,936.489990,936.989990,924.880005,926.500000,926.500000,1011500
2017-09-11,934.250000,938.380005,926.919983,929.080017,929.080017,1267000
2017-09-12,932.590027,933.479980,923.861023,932.070007,932.070007,1134400
2017-09-13,930.659973,937.250000,929.859985,935.090027,935.090027,1102600
2017-09-14,931.250000,932.770020,924.000000,925.109985,925.109985,1397600
2017-09-15,924.659973,926.489990,916.359985,920.289978,920.289978,2505400
2017-09-18,920.010010,922.080017,910.599976,915.000000,915.000000,1306900
2017-09-19,917.419983,922.419983,912.549988,921.809998,921.809998,936700
2017-09-20,922.979980,933.880005,922.000000,931.580017,931.580017,1669800
2017-09-21,933.000000,936.530029,923.830017,932.450012,932.450012,1290600
2017-09-22,927.750000,934.729980,926.479980,928.530029,928.530029,1052700
2017-09-25,925.450012,926.400024,909.700012,920.969971,920.969971,1856800
2017-09-26,923.719971,930.820007,921.140015,924.859985,924.859985,1666900
2017-09-27,927.739990,949.900024,927.739990,944.489990,944.489990,2239400
2017-09-28,941.359985,950.690002,940.549988,949.500000,949.500000,1020300
2017-09-29,952.000000,959.786011,951.510010,959.109985,959.109985,1581000
2017-10-02,959.979980,962.539978,947.840027,953.270020,953.270020,1283400
2017-10-03,954.000000,958.000000,949.140015,957.789978,957.789978,888300
2017-10-04,957.000000,960.390015,950.690002,951.679993,951.679993,952400
2017-10-05,955.489990,970.909973,955.179993,969.960022,969.960022,1213800
2017-10-06,966.700012,979.460022,963.359985,978.890015,978.890015,1173900
2017-10-09,980.000000,985.424988,976.109985,977.000000,977.000000,891400
2017-10-10,980.000000,981.570007,966.080017,972.599976,972.599976,968400
2017-10-11,973.719971,990.710022,972.250000,989.250000,989.250000,1693300
2017-10-12,987.450012,994.119995,985.000000,987.830017,987.830017,1262400
2017-10-13,992.000000,997.210022,989.000000,989.679993,989.679993,1169800
2017-10-16,992.099976,993.906982,984.000000,992.000000,992.000000,910500
2017-10-17,990.289978,996.440002,988.590027,992.179993,992.179993,1290200
2017-10-18,991.770020,996.719971,986.974976,992.809998,992.809998,1057600
2017-10-19,986.000000,988.880005,978.390015,984.450012,984.450012,1313600
2017-10-20,989.440002,991.000000,984.580017,988.200012,988.200012,1183200
2017-10-23,989.520020,989.520020,966.119995,968.450012,968.450012,1478400
2017-10-24,970.000000,972.229980,961.000000,970.539978,970.539978,1212200
2017-10-25,968.369995,976.090027,960.520020,973.330017,973.330017,1211300
2017-10-26,980.000000,987.599976,972.200012,972.559998,972.559998,2042100
2017-10-27,1009.190002,1048.390015,1008.200012,1019.270020,1019.270020,5167700
2017-10-30,1014.000000,1024.969971,1007.500000,1017.109985,1017.109985,2085100
2017-10-31,1015.219971,1024.000000,1010.419983,1016.640015,1016.640015,1330700
2017-11-01,1017.210022,1029.670044,1016.950012,1025.500000,1025.500000,1373444
================================================
FILE: dataset/GOOG.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2017-10-02,959.979980,962.539978,947.840027,953.270020,953.270020,1283400
2017-10-03,954.000000,958.000000,949.140015,957.789978,957.789978,888300
2017-10-04,957.000000,960.390015,950.690002,951.679993,951.679993,952400
2017-10-05,955.489990,970.909973,955.179993,969.960022,969.960022,1213800
2017-10-06,966.700012,979.460022,963.359985,978.890015,978.890015,1173900
2017-10-09,980.000000,985.424988,976.109985,977.000000,977.000000,891400
2017-10-10,980.000000,981.570007,966.080017,972.599976,972.599976,968400
2017-10-11,973.719971,990.710022,972.250000,989.250000,989.250000,1693300
2017-10-12,987.450012,994.119995,985.000000,987.830017,987.830017,1262400
2017-10-13,992.000000,997.210022,989.000000,989.679993,989.679993,1169800
2017-10-16,992.099976,993.906982,984.000000,992.000000,992.000000,910500
2017-10-17,990.289978,996.440002,988.590027,992.179993,992.179993,1290200
2017-10-18,991.770020,996.719971,986.974976,992.809998,992.809998,1057600
2017-10-19,986.000000,988.880005,978.390015,984.450012,984.450012,1313600
2017-10-20,989.440002,991.000000,984.580017,988.200012,988.200012,1183200
2017-10-23,989.520020,989.520020,966.119995,968.450012,968.450012,1478400
2017-10-24,970.000000,972.229980,961.000000,970.539978,970.539978,1212200
2017-10-25,968.369995,976.090027,960.520020,973.330017,973.330017,1211300
2017-10-26,980.000000,987.599976,972.200012,972.559998,972.559998,2042100
2017-10-27,1009.190002,1048.390015,1008.200012,1019.270020,1019.270020,5167700
2017-10-30,1014.000000,1024.969971,1007.500000,1017.109985,1017.109985,2085100
2017-10-31,1015.219971,1024.000000,1010.419983,1016.640015,1016.640015,1330700
2017-11-01,1017.210022,1029.670044,1016.950012,1025.500000,1025.500000,1373444
================================================
FILE: dataset/INFY.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-07-13,9.560000,9.815000,9.550000,9.710000,9.423450,27224000
2018-07-16,9.865000,9.885000,9.770000,9.800000,9.510794,14771800
2018-07-17,9.785000,9.970000,9.760000,9.950000,9.656367,12135400
2018-07-18,9.880000,9.910000,9.830000,9.840000,9.549613,5833800
2018-07-19,9.720000,9.905000,9.720000,9.855000,9.564170,14995000
2018-07-20,9.950000,10.075000,9.945000,10.005000,9.709743,10394600
2018-07-23,10.025000,10.090000,9.995000,10.075000,9.777678,6873400
2018-07-24,10.175000,10.210000,10.130000,10.195000,9.894136,8553200
2018-07-25,10.220000,10.340000,10.205000,10.290000,9.986332,7539200
2018-07-26,10.255000,10.300000,10.220000,10.270000,9.966924,9587400
2018-07-27,10.300000,10.315000,10.115000,10.170000,9.869875,8674800
2018-07-30,10.100000,10.150000,9.940000,9.970000,9.675777,14123200
2018-07-31,10.055000,10.105000,10.035000,10.090000,9.792234,16554000
2018-08-01,10.125000,10.180000,10.100000,10.175000,9.874727,9094000
2018-08-02,10.090000,10.220000,10.060000,10.190000,9.889283,14119600
2018-08-03,10.175000,10.275000,10.130000,10.270000,9.966924,8424400
2018-08-06,10.215000,10.305000,10.160000,10.295000,9.991185,6577600
2018-08-07,10.325000,10.330000,10.150000,10.300000,9.996037,9157800
2018-08-08,10.300000,10.430000,10.265000,10.375000,10.068825,7491200
2018-08-09,10.425000,10.490000,10.410000,10.450000,10.141611,5629600
2018-08-10,10.355000,10.420000,10.335000,10.400000,10.093086,4435400
2018-08-13,10.435000,10.475000,10.395000,10.410000,10.102792,4827600
2018-08-14,10.405000,10.475000,10.385000,10.450000,10.141611,5472800
2018-08-15,10.390000,10.450000,10.300000,10.435000,10.127054,6000200
2018-08-16,10.500000,10.520000,10.455000,10.495000,10.185283,6288200
2018-08-17,10.490000,10.570000,10.465000,10.540000,10.228956,7209600
2018-08-20,10.250000,10.390000,10.145000,10.250000,9.947514,12304800
2018-08-21,10.295000,10.375000,10.225000,10.245000,9.942661,8231200
2018-08-22,10.245000,10.285000,10.205000,10.250000,9.947514,10869000
2018-08-23,10.300000,10.365000,10.180000,10.190000,9.889283,11189200
2018-08-24,10.215000,10.215000,10.090000,10.150000,9.850465,7687000
2018-08-27,10.325000,10.390000,10.260000,10.270000,9.966924,7388600
2018-08-28,10.350000,10.355000,10.305000,10.325000,10.020301,7254000
2018-08-29,10.220000,10.265000,10.160000,10.175000,9.874727,12943200
2018-08-30,10.180000,10.255000,10.135000,10.230000,9.928103,9159000
2018-08-31,10.310000,10.400000,10.300000,10.385000,10.078529,6992200
2018-09-04,10.430000,10.460000,10.280000,10.380000,10.073677,12184400
2018-09-05,10.190000,10.380000,10.170000,10.355000,10.049415,12774400
2018-09-06,10.295000,10.405000,10.285000,10.400000,10.093086,7225000
2018-09-07,10.390000,10.535000,10.365000,10.425000,10.117350,10373600
2018-09-10,10.380000,10.480000,10.300000,10.350000,10.044563,8940600
2018-09-11,10.360000,10.555000,10.350000,10.485000,10.175577,8671800
2018-09-12,10.570000,10.650000,10.530000,10.550000,10.238660,4392500
2018-09-13,10.600000,10.640000,10.470000,10.610000,10.296889,9522300
2018-09-14,10.520000,10.540000,10.270000,10.320000,10.015448,10702000
2018-09-17,10.210000,10.290000,10.200000,10.250000,9.947514,7260000
2018-09-18,10.180000,10.180000,10.080000,10.140000,9.840760,6657600
2018-09-19,10.200000,10.230000,9.990000,10.010000,9.714596,11042600
2018-09-20,10.080000,10.100000,9.970000,10.070000,9.772825,9811500
2018-09-21,10.040000,10.040000,9.890000,9.930000,9.636957,7935600
2018-09-24,10.040000,10.070000,9.930000,9.950000,9.656367,12798900
2018-09-25,10.060000,10.190000,10.030000,10.150000,9.850465,10763500
2018-09-26,10.060000,10.200000,10.030000,10.060000,9.763121,6388300
2018-09-27,10.100000,10.200000,10.070000,10.100000,9.801940,8822100
2018-09-28,10.220000,10.250000,10.120000,10.170000,9.869875,9329800
2018-10-01,10.340000,10.390000,10.300000,10.370000,10.063972,7440100
2018-10-02,10.320000,10.320000,10.200000,10.270000,9.966924,9053800
2018-10-03,10.120000,10.150000,10.010000,10.040000,9.743711,10073600
2018-10-04,9.810000,10.020000,9.800000,10.000000,9.704891,14905600
2018-10-05,10.020000,10.190000,10.010000,10.170000,9.869875,8296800
2018-10-08,9.970000,10.070000,9.920000,10.030000,9.734005,9091600
2018-10-09,9.970000,10.040000,9.930000,10.020000,9.724301,8825600
2018-10-10,9.810000,9.840000,9.630000,9.740000,9.452564,23251500
2018-10-11,9.530000,9.680000,9.460000,9.520000,9.239058,18729300
2018-10-12,9.650000,9.760000,9.570000,9.740000,9.452564,11524500
2018-10-15,9.850000,9.960000,9.790000,9.910000,9.617547,17032800
2018-10-16,9.950000,10.520000,9.910000,10.220000,9.918399,27500700
2018-10-17,10.060000,10.060000,9.740000,9.800000,9.510794,20694700
2018-10-18,9.780000,9.780000,9.350000,9.540000,9.258466,21337000
2018-10-19,9.600000,9.760000,9.540000,9.580000,9.297286,8651900
2018-10-22,9.570000,9.580000,9.400000,9.480000,9.200236,9586300
2018-10-23,9.240000,9.420000,9.220000,9.400000,9.122598,10275200
2018-10-24,9.300000,9.370000,9.050000,9.060000,8.792632,11702500
2018-10-25,9.080000,9.200000,9.050000,9.110000,8.934843,9126200
2018-10-26,8.990000,9.050000,8.850000,9.020000,8.846575,8647400
2018-10-29,9.080000,9.100000,8.880000,8.970000,8.797536,9618300
2018-10-30,9.160000,9.320000,9.100000,9.190000,9.013305,13429500
2018-10-31,9.450000,9.540000,9.410000,9.470000,9.287922,9089200
2018-11-01,9.390000,9.400000,9.210000,9.300000,9.121191,12112500
2018-11-02,9.340000,9.410000,9.230000,9.250000,9.072152,8302600
2018-11-05,9.290000,9.470000,9.290000,9.400000,9.219268,9240100
2018-11-06,9.440000,9.550000,9.390000,9.480000,9.297729,6901300
2018-11-07,9.620000,9.690000,9.580000,9.610000,9.425230,6291500
2018-11-08,9.610000,9.650000,9.460000,9.510000,9.327153,5057100
2018-11-09,9.410000,9.500000,9.370000,9.490000,9.307537,5318600
2018-11-12,9.420000,9.470000,9.270000,9.340000,9.160421,7691300
2018-11-13,9.370000,9.460000,9.330000,9.400000,9.219268,5937800
2018-11-14,9.410000,9.440000,9.160000,9.250000,9.072152,5406400
2018-11-15,9.270000,9.370000,9.160000,9.330000,9.150614,7020900
2018-11-16,9.280000,9.370000,9.250000,9.330000,9.150614,4709700
2018-11-19,9.330000,9.330000,9.210000,9.290000,9.111383,6507000
2018-11-20,9.180000,9.190000,9.050000,9.090000,8.915228,7108500
2018-11-21,8.990000,9.100000,8.950000,9.070000,8.895612,7539300
2018-11-23,9.050000,9.160000,9.050000,9.090000,8.915228,3158400
2018-11-26,9.070000,9.210000,9.060000,9.180000,9.003497,6051900
2018-11-27,9.250000,9.310000,9.190000,9.270000,9.091768,5458600
2018-11-28,9.630000,9.890000,9.560000,9.860000,9.670423,13928900
2018-11-29,9.790000,9.800000,9.660000,9.680000,9.493885,12415800
2018-11-30,9.800000,9.860000,9.750000,9.860000,9.670423,10463200
2018-12-03,9.910000,9.940000,9.860000,9.900000,9.709654,13191200
2018-12-04,9.940000,10.050000,9.830000,9.850000,9.660616,9518900
2018-12-06,9.770000,9.860000,9.710000,9.830000,9.641000,17177400
2018-12-07,9.830000,9.970000,9.650000,9.690000,9.503692,11353200
2018-12-10,9.550000,9.590000,9.430000,9.570000,9.386000,7731000
2018-12-11,9.650000,9.770000,9.620000,9.690000,9.503692,7952700
2018-12-12,9.770000,9.820000,9.660000,9.660000,9.474269,5453300
2018-12-13,9.930000,9.980000,9.850000,9.870000,9.680231,7971700
2018-12-14,9.990000,10.010000,9.870000,9.890000,9.699846,7799600
2018-12-17,9.820000,9.830000,9.540000,9.600000,9.415423,10520400
2018-12-18,9.680000,9.720000,9.500000,9.540000,9.356576,9742500
2018-12-19,9.490000,9.580000,9.380000,9.430000,9.248692,8175400
2018-12-20,9.510000,9.540000,9.140000,9.280000,9.101575,23548800
2018-12-21,9.210000,9.310000,9.100000,9.100000,8.925036,15286200
2018-12-24,9.190000,9.240000,9.070000,9.080000,8.905420,8590700
2018-12-26,9.150000,9.380000,9.120000,9.380000,9.199653,9004200
2018-12-27,9.300000,9.450000,9.280000,9.450000,9.268306,9856500
2018-12-28,9.480000,9.500000,9.380000,9.430000,9.248692,6818500
2018-12-31,9.470000,9.530000,9.390000,9.520000,9.336961,7229400
2019-01-02,9.500000,9.730000,9.470000,9.610000,9.425230,9818900
2019-01-03,9.550000,9.590000,9.470000,9.470000,9.287922,9404900
2019-01-04,9.520000,9.720000,9.500000,9.630000,9.444846,7119000
2019-01-07,9.700000,9.810000,9.660000,9.710000,9.523308,7732700
2019-01-08,9.820000,9.850000,9.720000,9.750000,9.562538,9391600
2019-01-09,9.760000,9.890000,9.740000,9.870000,9.680231,9634300
2019-01-10,9.780000,9.890000,9.700000,9.880000,9.690039,13956500
2019-01-11,10.180000,10.680000,10.120000,10.410000,10.209848,40526400
2019-01-14,10.180000,10.410000,10.130000,10.370000,10.170618,34162200
2019-01-15,10.570000,10.580000,10.460000,10.490000,10.288310,12153400
2019-01-16,10.570000,10.640000,10.550000,10.610000,10.406003,12048400
2019-01-17,10.540000,10.630000,10.500000,10.580000,10.376580,9581000
2019-01-18,10.600000,10.690000,10.580000,10.670000,10.464850,10168700
2019-01-22,10.640000,10.680000,10.470000,10.530000,10.327541,10437700
2019-01-23,10.560000,10.560000,10.430000,10.530000,10.327541,8108100
2019-01-24,10.530000,10.550000,10.430000,10.430000,10.285139,6627700
2019-01-25,10.510000,10.580000,10.410000,10.550000,10.403472,8839100
2019-01-28,10.490000,10.570000,10.440000,10.520000,10.373889,5192200
2019-01-29,10.490000,10.530000,10.420000,10.480000,10.334444,8271100
2019-01-30,10.460000,10.630000,10.420000,10.590000,10.442917,7026000
2019-01-31,10.680000,10.820000,10.680000,10.800000,10.650001,10354900
2019-02-01,10.850000,10.930000,10.810000,10.900000,10.748610,6651300
2019-02-04,10.830000,10.880000,10.790000,10.870000,10.719028,7449000
2019-02-05,10.850000,10.920000,10.830000,10.840000,10.689445,6926300
2019-02-06,10.910000,10.940000,10.850000,10.900000,10.748610,5478400
2019-02-07,10.860000,10.930000,10.800000,10.850000,10.699306,7116200
2019-02-08,10.830000,10.890000,10.810000,10.860000,10.709167,4103300
2019-02-11,10.860000,10.890000,10.790000,10.820000,10.669722,5929600
2019-02-12,10.850000,10.860000,10.760000,10.770000,10.620417,6300600
2019-02-13,10.850000,10.870000,10.770000,10.800000,10.650001,9532300
2019-02-14,10.650000,10.760000,10.620000,10.760000,10.610556,8443400
2019-02-15,10.680000,10.780000,10.640000,10.760000,10.610556,9269100
2019-02-19,10.470000,10.570000,10.380000,10.550000,10.403472,13443300
2019-02-20,10.620000,10.730000,10.620000,10.700000,10.551389,6693600
2019-02-21,10.600000,10.620000,10.490000,10.550000,10.403472,6913200
2019-02-22,10.560000,10.680000,10.550000,10.630000,10.482361,4644600
2019-02-25,10.830000,10.920000,10.780000,10.810000,10.659862,7781200
2019-02-26,10.700000,10.760000,10.620000,10.730000,10.580972,6343700
2019-02-27,10.610000,10.730000,10.570000,10.700000,10.551389,6812900
2019-02-28,10.690000,10.770000,10.650000,10.720000,10.571112,6815000
2019-03-01,10.790000,10.870000,10.740000,10.840000,10.689445,8012100
2019-03-04,10.850000,10.870000,10.660000,10.720000,10.571112,5650900
2019-03-05,10.720000,10.800000,10.650000,10.770000,10.620417,5576000
2019-03-06,10.700000,10.750000,10.680000,10.710000,10.561250,6026600
2019-03-07,10.650000,10.710000,10.480000,10.490000,10.344305,8304200
2019-03-08,10.410000,10.480000,10.360000,10.470000,10.324583,6145300
2019-03-11,10.480000,10.570000,10.460000,10.550000,10.403472,5497300
2019-03-12,10.530000,10.550000,10.460000,10.520000,10.373889,9129600
2019-03-13,10.530000,10.600000,10.480000,10.550000,10.403472,10809900
2019-03-14,10.520000,10.610000,10.480000,10.600000,10.452778,5964500
2019-03-15,10.690000,10.770000,10.690000,10.700000,10.551389,7108200
2019-03-18,10.700000,10.740000,10.680000,10.720000,10.571112,5828700
2019-03-19,10.800000,10.910000,10.790000,10.900000,10.748610,7204100
2019-03-20,10.970000,11.040000,10.880000,10.940000,10.788055,7616300
2019-03-21,10.940000,11.080000,10.940000,11.060000,10.906389,5108000
2019-03-22,11.050000,11.120000,10.860000,10.880000,10.728889,8525300
2019-03-25,10.860000,10.880000,10.770000,10.820000,10.669722,7322400
2019-03-26,10.860000,10.880000,10.770000,10.820000,10.669722,4427200
2019-03-27,10.790000,10.830000,10.670000,10.730000,10.580972,5644900
2019-03-28,10.910000,10.940000,10.830000,10.880000,10.728889,5429900
2019-03-29,10.930000,11.030000,10.920000,10.930000,10.778194,5862300
2019-04-01,11.070000,11.160000,11.030000,11.090000,10.935972,5765400
2019-04-02,11.160000,11.260000,11.100000,11.180000,11.024722,7661600
2019-04-03,11.200000,11.280000,11.160000,11.200000,11.044444,7516300
2019-04-04,11.090000,11.150000,11.000000,11.070000,10.916249,5658700
2019-04-05,11.170000,11.360000,11.150000,11.320000,11.162777,9160300
2019-04-08,11.280000,11.380000,11.270000,11.310000,11.152917,4759200
2019-04-09,11.230000,11.260000,11.140000,11.150000,10.995138,15865500
2019-04-10,11.120000,11.170000,11.040000,11.080000,10.926111,15151400
2019-04-11,11.050000,11.070000,10.900000,10.970000,10.817639,19697600
2019-04-12,10.600000,10.710000,10.450000,10.550000,10.403472,27590500
2019-04-15,10.610000,10.610000,10.500000,10.570000,10.423194,15949200
2019-04-16,10.560000,10.570000,10.360000,10.370000,10.225972,21431800
2019-04-17,10.420000,10.460000,10.370000,10.410000,10.265416,10317700
2019-04-18,10.450000,10.490000,10.340000,10.390000,10.245695,18307000
2019-04-22,10.440000,10.470000,10.390000,10.450000,10.304861,7392500
2019-04-23,10.480000,10.640000,10.480000,10.530000,10.383750,13314800
2019-04-24,10.620000,10.700000,10.560000,10.580000,10.433056,12134700
2019-04-25,10.570000,10.570000,10.400000,10.520000,10.373889,7030200
2019-04-26,10.640000,10.680000,10.560000,10.650000,10.502083,5366900
2019-04-29,10.690000,10.780000,10.660000,10.750000,10.600695,6956900
2019-04-30,10.820000,10.880000,10.750000,10.760000,10.610556,8432300
2019-05-01,10.810000,10.880000,10.760000,10.770000,10.620417,9212300
2019-05-02,10.640000,10.720000,10.470000,10.570000,10.423194,12516500
2019-05-03,10.560000,10.560000,10.070000,10.330000,10.186527,30580400
2019-05-06,10.310000,10.520000,10.310000,10.450000,10.304861,13121800
2019-05-07,10.440000,10.460000,10.290000,10.340000,10.196389,13262100
2019-05-08,10.420000,10.430000,10.260000,10.390000,10.245695,11854500
2019-05-09,10.340000,10.360000,10.190000,10.200000,10.058333,18123600
2019-05-10,10.230000,10.270000,10.110000,10.260000,10.117500,19016300
2019-05-13,10.170000,10.180000,10.040000,10.110000,9.969583,13309000
2019-05-14,10.150000,10.290000,10.130000,10.210000,10.068194,5885600
2019-05-15,10.230000,10.390000,10.190000,10.390000,10.245695,11611400
2019-05-16,10.480000,10.560000,10.470000,10.510000,10.364028,8502800
2019-05-17,10.400000,10.440000,10.150000,10.170000,10.028750,12427600
2019-05-20,10.310000,10.360000,10.150000,10.200000,10.058333,17155700
2019-05-21,10.200000,10.210000,10.120000,10.180000,10.038611,13841200
2019-05-22,10.190000,10.320000,10.180000,10.220000,10.078055,8639200
2019-05-23,10.080000,10.200000,10.010000,10.160000,10.018888,6115600
2019-05-24,10.270000,10.350000,10.230000,10.230000,10.087916,10594200
2019-05-28,10.400000,10.450000,10.300000,10.300000,10.156944,13101000
2019-05-29,10.330000,10.340000,10.230000,10.270000,10.127361,9885000
2019-05-30,10.380000,10.600000,10.370000,10.570000,10.423194,9560600
2019-05-31,10.500000,10.530000,10.410000,10.470000,10.324583,8501000
2019-06-03,10.560000,10.630000,10.410000,10.450000,10.304861,16517600
2019-06-04,10.500000,10.600000,10.420000,10.580000,10.433056,8956200
2019-06-05,10.560000,10.570000,10.430000,10.440000,10.294999,7705300
2019-06-06,10.460000,10.580000,10.460000,10.530000,10.383750,5068500
2019-06-07,10.520000,10.680000,10.520000,10.630000,10.482361,4587400
2019-06-10,10.760000,10.810000,10.730000,10.780000,10.630278,6059100
2019-06-11,10.840000,10.850000,10.720000,10.840000,10.689445,6582600
2019-06-12,10.820000,10.900000,10.770000,10.800000,10.650001,7234800
2019-06-13,10.630000,10.700000,10.540000,10.620000,10.620000,11253600
2019-06-14,10.590000,10.670000,10.570000,10.600000,10.600000,4910900
2019-06-17,10.520000,10.650000,10.470000,10.600000,10.600000,5351000
2019-06-18,10.790000,10.830000,10.740000,10.750000,10.750000,9545700
2019-06-19,10.780000,10.800000,10.590000,10.600000,10.600000,17172400
2019-06-20,10.790000,10.800000,10.680000,10.770000,10.770000,14996300
2019-06-21,10.720000,10.790000,10.680000,10.720000,10.720000,8959000
2019-06-24,10.720000,10.770000,10.650000,10.680000,10.680000,6824800
2019-06-25,10.700000,10.700000,10.610000,10.650000,10.650000,8018600
2019-06-26,10.660000,10.680000,10.600000,10.660000,10.660000,4425400
2019-06-27,10.590000,10.670000,10.520000,10.620000,10.620000,7636900
2019-06-28,10.640000,10.710000,10.630000,10.700000,10.700000,6315300
2019-07-01,10.700000,10.700000,10.620000,10.700000,10.700000,8902200
2019-07-02,10.730000,10.790000,10.720000,10.760000,10.760000,7007200
2019-07-03,10.690000,10.770000,10.670000,10.740000,10.740000,6879500
2019-07-05,10.570000,10.700000,10.540000,10.690000,10.690000,18833300
2019-07-08,10.600000,10.620000,10.550000,10.560000,10.560000,13564300
2019-07-09,10.540000,10.550000,10.370000,10.420000,10.420000,23515700
2019-07-10,10.550000,10.610000,10.440000,10.480000,10.480000,14954300
2019-07-11,10.570000,10.720000,10.530000,10.720000,10.720000,15798500
2019-07-12,11.340000,11.560000,11.270000,11.400000,11.400000,41385700
================================================
FILE: dataset/KNX.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-07-13,37.910000,38.630001,37.910000,37.910000,37.629288,1768500
2018-07-16,39.060001,39.139999,35.810001,36.360001,36.090759,6443500
2018-07-17,36.459999,36.860001,35.970001,36.279999,36.011356,3448800
2018-07-18,36.610001,37.580002,36.259998,37.500000,37.222321,3257200
2018-07-19,37.200001,38.130001,37.180000,37.990002,37.708694,2428500
2018-07-20,37.980000,38.200001,37.639999,37.980000,37.698772,2091800
2018-07-23,37.820000,38.259998,37.619999,38.240002,37.956844,1848700
2018-07-24,38.950001,39.119999,34.369999,34.840000,34.582024,6131100
2018-07-25,35.540001,35.900002,34.810001,35.810001,35.544838,4187200
2018-07-26,31.049999,32.290001,29.000000,32.250000,32.011204,20546000
2018-07-27,31.980000,32.299999,31.469999,32.090000,31.852381,5144500
2018-07-30,31.990000,32.759998,31.799999,32.209999,31.971493,2951100
2018-07-31,32.240002,33.090000,32.060001,32.549999,32.308971,3225200
2018-08-01,32.549999,32.630001,31.959999,32.090000,31.852381,3427700
2018-08-02,32.209999,33.380001,32.150002,33.270000,33.023647,4617000
2018-08-03,33.279999,33.279999,32.209999,32.419998,32.179935,3282000
2018-08-06,32.330002,32.860001,31.920000,32.700001,32.457867,2558700
2018-08-07,32.779999,33.459999,32.529999,33.439999,33.192387,1876600
2018-08-08,33.270000,33.400002,32.849998,32.980000,32.735790,1581300
2018-08-09,32.840000,33.400002,32.720001,32.790001,32.547199,1818700
2018-08-10,32.720001,33.380001,32.270000,33.220001,32.974014,1738800
2018-08-13,33.330002,33.480000,32.410000,32.580002,32.338757,2865000
2018-08-14,32.720001,33.270000,32.689999,32.770000,32.527348,1705600
2018-08-15,32.650002,32.700001,31.570000,32.380001,32.140240,1734900
2018-08-16,32.700001,32.900002,32.369999,32.700001,32.457867,1700900
2018-08-17,32.730000,33.020000,32.360001,32.900002,32.656387,1677500
2018-08-20,32.970001,33.580002,32.560001,33.540001,33.291645,2835500
2018-08-21,33.680000,34.080002,33.439999,33.509998,33.261868,2393400
2018-08-22,33.450001,33.500000,32.580002,32.770000,32.527348,1920800
2018-08-23,32.830002,33.049999,32.360001,32.700001,32.457867,1559300
2018-08-24,32.810001,33.160000,32.680000,32.810001,32.567055,888700
2018-08-27,33.099998,33.779999,33.000000,33.740002,33.490166,1934500
2018-08-28,33.869999,33.880001,33.389999,33.580002,33.331356,2569800
2018-08-29,33.599998,34.279999,33.410000,34.209999,33.956684,2601400
2018-08-30,34.169998,34.680000,33.689999,33.709999,33.519176,2322400
2018-08-31,33.680000,34.340000,33.509998,34.130001,33.936794,2122500
2018-09-04,34.000000,34.410000,33.619999,34.410000,34.215214,3660600
2018-09-05,34.259998,35.290001,34.029999,35.250000,35.050457,2425000
2018-09-06,35.099998,35.240002,34.799999,34.930000,34.732269,4373600
2018-09-07,34.799999,35.689999,34.799999,35.270000,35.070347,2026000
2018-09-10,35.580002,37.509998,35.389999,36.840000,36.631454,4462200
2018-09-11,36.770000,37.029999,36.070000,36.330002,36.124344,4345300
2018-09-12,36.230000,36.340000,35.730000,36.070000,35.865818,2350000
2018-09-13,36.320000,36.549999,35.910000,36.040001,35.835987,2045000
2018-09-14,36.060001,36.560001,35.939999,36.380001,36.174061,1378600
2018-09-17,36.480000,36.480000,35.459999,35.630001,35.428307,1849300
2018-09-18,35.919998,36.660000,35.529999,36.590000,36.382870,1803000
2018-09-19,36.580002,36.790001,36.349998,36.500000,36.293385,1788600
2018-09-20,36.630001,36.910000,36.139999,36.180000,35.975193,2553500
2018-09-21,36.230000,36.240002,35.000000,35.090000,34.891365,3324000
2018-09-24,34.900002,35.000000,34.220001,34.740002,34.543346,2124200
2018-09-25,34.810001,34.959999,34.250000,34.910000,34.712383,1525800
2018-09-26,35.000000,35.860001,34.700001,35.240002,35.040516,1816500
2018-09-27,35.419998,35.630001,34.840000,34.919998,34.722324,1952500
2018-09-28,34.509998,34.990002,34.320000,34.480000,34.284817,1874100
2018-10-01,34.869999,35.189999,34.599998,34.889999,34.692497,1822400
2018-10-02,35.099998,35.099998,33.150002,33.189999,33.002117,2314000
2018-10-03,33.240002,33.799999,32.869999,33.500000,33.310364,2390900
2018-10-04,33.509998,33.740002,32.639999,32.830002,32.644157,1615500
2018-10-05,32.840000,32.860001,31.629999,32.110001,31.928234,3305300
2018-10-08,32.070000,32.259998,31.639999,32.160000,31.977951,1675500
2018-10-09,32.110001,32.990002,32.009998,32.540001,32.355801,2296400
2018-10-10,32.410000,32.770000,31.670000,31.690001,31.510611,2352000
2018-10-11,31.680000,32.279999,30.680000,30.719999,30.546101,3726900
2018-10-12,31.070000,31.520000,30.770000,30.969999,30.794683,3017100
2018-10-15,30.920000,31.410000,30.639999,31.070000,30.894119,2133400
2018-10-16,31.469999,32.320000,31.180000,32.310001,32.127106,1960300
2018-10-17,32.410000,32.560001,30.990000,31.190001,31.013441,2147800
2018-10-18,31.049999,31.240000,29.690001,29.750000,29.581593,3346600
2018-10-19,30.139999,31.070000,29.920000,30.410000,30.237854,2827200
2018-10-22,30.100000,30.889999,30.000000,30.549999,30.377062,2048900
2018-10-23,30.070000,30.520000,29.670000,30.200001,30.029047,2316300
2018-10-24,33.990002,33.990002,30.480000,30.719999,30.546101,6106100
2018-10-25,31.450001,33.549999,31.190001,33.389999,33.200985,4700800
2018-10-26,32.880001,33.259998,31.809999,32.009998,31.828798,3329600
2018-10-29,32.529999,32.759998,30.969999,31.389999,31.212307,2003600
2018-10-30,31.360001,32.590000,31.110001,32.560001,32.375690,1857600
2018-10-31,32.950001,33.270000,31.920000,32.000000,31.818855,2221000
2018-11-01,32.130001,33.709999,31.549999,33.650002,33.459515,3066700
2018-11-02,33.900002,34.000000,32.900002,33.650002,33.459515,2108100
2018-11-05,33.779999,34.090000,33.020000,33.930000,33.737930,1931000
2018-11-06,33.759998,34.320000,33.490002,33.889999,33.698158,1680400
2018-11-07,34.029999,34.340000,33.099998,33.590000,33.399857,2010800
2018-11-08,34.310001,34.759998,33.480000,34.320000,34.125721,3230600
2018-11-09,34.189999,34.279999,33.230000,33.480000,33.290478,2107300
2018-11-12,33.450001,33.619999,32.820000,32.869999,32.683929,1396300
2018-11-13,32.880001,34.209999,32.869999,33.720001,33.529118,2119600
2018-11-14,34.049999,34.500000,33.279999,33.570000,33.379967,1175900
2018-11-15,33.340000,33.520000,32.200001,32.619999,32.435345,2460300
2018-11-16,32.320000,32.610001,31.280001,31.730000,31.550385,2587500
2018-11-19,31.490000,32.560001,31.490000,32.220001,32.037613,1954600
2018-11-20,32.279999,33.130001,31.360001,31.730000,31.550385,2181600
2018-11-21,31.930000,32.869999,31.639999,32.820000,32.634212,1755500
2018-11-23,32.500000,32.970001,32.189999,32.650002,32.465172,494100
2018-11-26,32.990002,34.060001,32.959999,34.060001,33.867195,1819200
2018-11-27,33.830002,34.180000,33.310001,33.360001,33.171158,1302400
2018-11-28,33.470001,34.840000,32.950001,34.820000,34.622894,1720100
2018-11-29,34.900002,35.490002,34.169998,34.349998,34.155548,1516900
2018-11-30,34.209999,35.060001,34.209999,34.660000,34.524101,1975700
2018-12-03,35.419998,35.500000,33.889999,33.959999,33.826847,1499300
2018-12-04,33.189999,33.450001,30.360001,30.610001,30.489981,4417700
2018-12-06,29.940001,30.740000,29.730000,30.709999,30.589588,3405500
2018-12-07,30.709999,31.190001,28.680000,28.820000,28.707001,4329900
2018-12-10,28.600000,28.850000,28.080000,28.650000,28.537666,2573400
2018-12-11,29.059999,29.450001,28.350000,28.540001,28.428099,2111100
2018-12-12,29.030001,29.240000,28.430000,28.490000,28.378292,2508900
2018-12-13,28.500000,28.580000,27.190001,27.320000,27.212881,3105500
2018-12-14,27.020000,27.400000,26.670000,26.879999,26.774605,3853900
2018-12-17,26.850000,26.950001,26.309999,26.780001,26.674999,2630100
2018-12-18,26.920000,27.620001,26.850000,27.110001,27.003704,3329000
2018-12-19,26.889999,27.639999,25.980000,26.059999,25.957821,2541100
2018-12-20,25.879999,26.110001,25.100000,25.260000,25.160959,3548900
2018-12-21,25.190001,25.450001,23.780001,23.980000,23.885977,6748200
2018-12-24,23.500000,24.430000,23.270000,24.030001,23.935781,1289900
2018-12-26,24.040001,25.030001,23.629999,25.010000,24.911938,2031900
2018-12-27,24.639999,25.100000,24.219999,25.100000,25.001585,1502800
2018-12-28,25.129999,25.400000,24.730000,25.070000,24.971703,1568500
2018-12-31,25.219999,25.330000,24.700001,25.070000,24.971703,1517200
2019-01-02,24.719999,26.250000,24.650000,25.840000,25.738684,2191700
2019-01-03,25.670000,25.940001,25.030001,25.209999,25.111153,1971300
2019-01-04,25.740000,26.600000,25.639999,26.540001,26.435940,2149300
2019-01-07,26.580000,27.660000,26.500000,27.379999,27.272646,2917300
2019-01-08,27.799999,28.639999,27.680000,28.629999,28.517742,2525300
2019-01-09,28.650000,29.730000,28.549999,29.580000,29.464020,3723300
2019-01-10,29.530001,29.530001,28.530001,28.840000,28.726921,2391000
2019-01-11,28.830000,29.110001,28.350000,28.650000,28.537666,1608000
2019-01-14,28.100000,29.469999,28.100000,29.230000,29.115391,2348400
2019-01-15,29.280001,29.400000,28.629999,28.840000,28.726921,1840400
2019-01-16,29.059999,29.540001,28.959999,29.170000,29.055626,1168600
2019-01-17,31.049999,32.090000,30.290001,31.700001,31.575708,6283500
2019-01-18,32.410000,33.139999,31.900000,32.639999,32.512020,4627600
2019-01-22,32.110001,32.299999,30.900000,30.969999,30.848568,3325000
2019-01-23,31.299999,31.510000,30.080000,30.440001,30.320648,2273200
2019-01-24,30.420000,30.629999,29.760000,29.809999,29.693117,2008700
2019-01-25,30.209999,31.020000,29.940001,30.780001,30.659315,2170800
2019-01-28,30.450001,30.480000,29.900000,30.080000,29.962059,2141300
2019-01-29,30.370001,32.200001,29.340000,32.110001,31.984100,3769300
2019-01-30,32.209999,33.419998,31.400000,33.369999,33.239159,4151600
2019-01-31,33.400002,33.400002,31.559999,31.750000,31.625511,3374600
2019-02-01,32.090000,32.590000,31.520000,32.230000,32.103630,1933400
2019-02-04,32.049999,32.270000,31.680000,32.250000,32.123554,1355500
2019-02-05,32.349998,32.889999,31.799999,31.879999,31.755001,1719200
2019-02-06,31.950001,32.320000,31.420000,31.469999,31.346609,1355300
2019-02-07,31.430000,32.150002,31.379999,31.700001,31.575708,1395400
2019-02-08,31.299999,31.760000,30.780001,31.100000,30.978060,2103700
2019-02-11,31.280001,31.440001,30.690001,31.420000,31.296806,1575100
2019-02-12,31.620001,32.700001,31.450001,32.360001,32.233120,1847700
2019-02-13,32.490002,33.680000,32.490002,33.490002,33.358692,2413800
2019-02-14,33.310001,34.299999,33.099998,34.009998,33.876648,2926300
2019-02-15,34.090000,34.130001,33.320000,33.529999,33.398533,3065800
2019-02-19,33.450001,34.480000,33.340000,34.200001,34.065907,2861900
2019-02-20,34.330002,35.299999,33.970001,34.720001,34.583866,3875700
2019-02-21,34.759998,34.770000,33.820000,34.189999,34.055943,1396000
2019-02-22,34.310001,34.459999,33.400002,33.599998,33.468254,1446800
2019-02-25,33.869999,34.630001,33.720001,33.930000,33.796963,1427000
2019-02-26,33.840000,34.220001,33.529999,33.680000,33.547947,819100
2019-02-27,33.720001,34.049999,33.400002,33.869999,33.737198,842400
2019-02-28,33.810001,33.950001,33.310001,33.630001,33.498142,999200
2019-03-01,34.000000,34.230000,33.470001,33.680000,33.607906,1096100
2019-03-04,33.919998,34.310001,33.320000,33.669998,33.597923,1364500
2019-03-05,33.700001,33.700001,32.830002,32.860001,32.789661,1108300
2019-03-06,32.950001,33.480000,32.770000,33.180000,33.108974,1586700
2019-03-07,32.980000,33.130001,32.619999,32.889999,32.819595,1775600
2019-03-08,32.430000,32.560001,31.750000,32.459999,32.390514,1760500
2019-03-11,32.360001,33.889999,32.340000,33.869999,33.797497,1961200
2019-03-12,33.860001,33.980000,33.180000,33.799999,33.727646,1483700
2019-03-13,34.049999,34.830002,33.770000,34.459999,34.386234,1529600
2019-03-14,34.400002,34.900002,34.130001,34.770000,34.695572,2083200
2019-03-15,34.820000,34.970001,33.580002,33.939999,33.867348,3955300
2019-03-18,34.189999,34.700001,34.009998,34.590000,34.515957,1105800
2019-03-19,34.380001,34.380001,32.680000,32.849998,32.779682,2526600
2019-03-20,32.799999,32.950001,30.990000,31.870001,31.801781,4073000
2019-03-21,31.840000,32.259998,31.580000,32.230000,32.161007,2844400
2019-03-22,32.060001,32.130001,31.160000,31.370001,31.302851,1802800
2019-03-25,31.330000,32.049999,31.100000,31.320000,31.252956,1843000
2019-03-26,31.620001,32.160000,31.559999,32.060001,31.991375,1897800
2019-03-27,32.130001,32.259998,31.299999,31.379999,31.312828,2092600
2019-03-28,31.379999,32.750000,31.290001,32.450001,32.380539,3897800
2019-03-29,32.610001,32.910000,32.279999,32.680000,32.610046,1914300
2019-04-01,32.990002,33.439999,32.799999,33.119999,33.049103,2025600
2019-04-02,32.990002,33.290001,32.349998,32.520000,32.450390,1398800
2019-04-03,32.540001,33.119999,32.500000,32.689999,32.620022,1430900
2019-04-04,32.549999,33.470001,32.520000,33.299999,33.228718,1670600
2019-04-05,33.290001,33.799999,33.189999,33.320000,33.248676,1189900
2019-04-08,32.930000,33.500000,32.750000,33.480000,33.408333,1133000
2019-04-09,33.250000,33.320000,32.840000,32.919998,32.849529,1556800
2019-04-10,32.959999,33.200001,32.669998,33.090000,33.019169,648400
2019-04-11,33.090000,33.820000,32.990002,33.700001,33.627865,1161600
2019-04-12,34.020000,34.389999,33.779999,34.080002,34.007050,1042800
2019-04-15,33.930000,34.029999,33.259998,33.529999,33.458225,1235200
2019-04-16,32.840000,33.720001,32.369999,33.580002,33.508121,2495800
2019-04-17,34.000000,34.730000,33.740002,34.549999,34.476044,2568000
2019-04-18,34.650002,35.349998,34.500000,34.720001,34.645679,2501900
2019-04-22,34.549999,34.910000,34.270000,34.700001,34.625721,1616100
2019-04-23,34.650002,35.049999,34.349998,35.000000,34.925079,3498300
2019-04-24,34.990002,36.810001,34.299999,36.150002,36.072620,4686400
2019-04-25,35.880001,36.119999,34.549999,34.720001,34.645679,2598800
2019-04-26,34.599998,35.610001,34.430000,35.240002,35.164566,1047500
2019-04-29,35.290001,35.520000,34.060001,34.110001,34.036983,1933700
2019-04-30,34.119999,34.150002,33.029999,33.349998,33.278610,2524500
2019-05-01,33.250000,33.250000,31.299999,31.360001,31.292871,3751300
2019-05-02,31.360001,32.290001,31.010000,32.259998,32.190945,1907500
2019-05-03,32.419998,33.529999,32.180000,33.299999,33.228718,1793600
2019-05-06,32.410000,33.450001,32.259998,33.279999,33.208759,2361000
2019-05-07,32.779999,33.090000,31.860001,32.040001,31.971416,1001000
2019-05-08,32.040001,32.490002,31.209999,31.270000,31.203064,1396400
2019-05-09,31.020000,31.510000,30.590000,31.340000,31.272915,1854700
2019-05-10,31.190001,31.740000,30.780001,31.480000,31.412615,944300
2019-05-13,30.500000,30.549999,29.170000,29.340000,29.277195,2738400
2019-05-14,29.459999,30.879999,29.430000,30.549999,30.484604,1437000
2019-05-15,30.360001,31.080000,30.219999,30.990000,30.923664,1587700
2019-05-16,31.139999,31.760000,31.100000,31.639999,31.572271,1783000
2019-05-17,31.420000,31.760000,30.850000,30.930000,30.863792,1598000
2019-05-20,30.400000,31.459999,30.150000,31.059999,30.993513,1070300
2019-05-21,31.500000,32.000000,31.120001,31.440001,31.372700,1590100
2019-05-22,31.219999,31.639999,30.600000,30.840000,30.773985,1191600
2019-05-23,30.270000,30.870001,29.930000,30.400000,30.334927,1657700
2019-05-24,30.590000,30.590000,29.469999,30.000000,29.935783,2216800
2019-05-28,29.830000,30.059999,29.360001,29.660000,29.596510,1983100
2019-05-29,29.320000,29.850000,28.969999,29.200001,29.137495,1853500
2019-05-30,29.219999,29.309999,27.980000,28.030001,27.969999,2948600
2019-05-31,27.430000,28.070000,27.030001,27.639999,27.639999,2361800
2019-06-03,27.540001,28.549999,27.530001,28.090000,28.090000,3066200
2019-06-04,28.600000,29.709999,28.600000,29.670000,29.670000,2052200
2019-06-05,30.030001,30.330000,29.530001,30.120001,30.120001,1936400
2019-06-06,29.940001,29.950001,29.020000,29.889999,29.889999,1473900
2019-06-07,30.000000,30.430000,29.889999,30.170000,30.170000,1272700
2019-06-10,30.420000,31.610001,30.370001,31.299999,31.299999,1975300
2019-06-11,31.740000,31.740000,30.980000,31.059999,31.059999,1323700
2019-06-12,30.910000,31.219999,30.559999,31.090000,31.090000,1730700
2019-06-13,31.160000,32.689999,31.129999,32.660000,32.660000,2759100
2019-06-14,32.520000,32.610001,31.750000,32.220001,32.220001,1644300
2019-06-17,32.130001,32.230000,31.370001,31.549999,31.549999,1717700
2019-06-18,31.600000,32.490002,31.420000,31.700001,31.700001,1292400
2019-06-19,31.600000,32.029999,31.500000,31.870001,31.870001,1250600
2019-06-20,32.340000,32.730000,32.029999,32.610001,32.610001,1395300
2019-06-21,32.450001,32.720001,31.820000,31.889999,31.889999,1669400
2019-06-24,31.889999,31.950001,29.900000,30.049999,30.049999,2932200
2019-06-25,29.990000,30.590000,29.440001,29.549999,29.549999,3074100
2019-06-26,29.790001,31.040001,29.610001,30.959999,30.959999,1668100
2019-06-27,31.059999,31.680000,30.760000,31.440001,31.440001,1168800
2019-06-28,31.680000,32.880001,31.670000,32.840000,32.840000,2573800
2019-07-01,33.320000,33.759998,32.650002,32.939999,32.939999,1576200
2019-07-02,32.860001,33.540001,32.439999,32.700001,32.700001,1624700
2019-07-03,32.799999,33.240002,32.680000,33.220001,33.220001,750300
2019-07-05,33.000000,33.680000,32.820000,33.590000,33.590000,897400
2019-07-08,33.250000,33.669998,33.070000,33.369999,33.369999,1442200
2019-07-09,33.060001,33.430000,32.959999,33.049999,33.049999,927500
2019-07-10,33.230000,33.330002,31.570000,31.670000,31.670000,1873800
2019-07-11,31.520000,32.230000,30.680000,31.490000,31.490000,1958800
2019-07-12,31.490000,33.580002,31.420000,33.529999,33.529999,2295600
================================================
FILE: dataset/MONDY.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-07-13,56.889999,56.889999,56.889999,56.889999,54.963757,0
2018-07-16,56.639999,56.639999,56.639999,56.639999,54.722221,320
2018-07-17,57.730000,57.730000,57.730000,57.730000,55.775318,538
2018-07-18,57.810001,57.810001,57.810001,57.810001,55.852608,522
2018-07-19,56.700001,57.279999,52.380001,52.380001,50.606461,2047
2018-07-20,52.380001,52.380001,52.380001,52.380001,50.606461,0
2018-07-23,52.380001,52.380001,52.380001,52.380001,50.606461,0
2018-07-24,57.349998,57.349998,57.290001,57.290001,55.350212,349
2018-07-25,57.290001,57.290001,57.290001,57.290001,55.350212,0
2018-07-26,57.310001,57.509998,53.080002,57.509998,55.562763,728
2018-07-27,57.590000,57.590000,57.590000,57.590000,55.640057,357
2018-07-30,57.869999,57.869999,57.669998,57.669998,55.717346,294
2018-07-31,58.549999,58.549999,58.549999,58.549999,56.567551,398
2018-08-01,58.299999,58.590000,58.299999,58.590000,56.606197,451
2018-08-02,57.189999,57.189999,57.189999,57.189999,55.253601,294
2018-08-03,58.496101,58.496101,58.496101,58.496101,56.515476,663
2018-08-06,58.496101,58.496101,58.496101,58.496101,56.515476,0
2018-08-07,60.619999,60.619999,60.490002,60.490002,58.441868,638
2018-08-08,58.000000,58.000000,58.000000,58.000000,56.036175,302
2018-08-09,60.270000,60.470001,60.270000,60.470001,58.422546,1523
2018-08-10,58.110001,58.400002,58.110001,58.400002,56.422630,766
2018-08-13,57.770000,57.770000,56.000000,56.000000,54.103893,457
2018-08-14,56.950001,57.330002,56.950001,57.330002,55.388863,844
2018-08-15,57.330002,57.330002,57.330002,57.330002,55.388863,0
2018-08-16,56.020000,56.049999,55.900002,55.900002,54.007278,839
2018-08-17,56.439999,56.439999,56.439999,56.439999,54.528992,183
2018-08-20,56.439999,56.439999,56.439999,56.439999,54.528992,0
2018-08-21,56.439999,56.439999,56.439999,56.439999,54.528992,0
2018-08-22,58.380001,58.380001,58.380001,58.380001,56.403309,430
2018-08-23,57.410000,57.410000,57.410000,57.410000,55.942810,369
2018-08-24,57.810001,58.009998,55.750000,55.750000,54.325233,2546
2018-08-27,59.209999,59.209999,55.290001,55.290001,53.876991,657
2018-08-28,58.720001,58.720001,58.720001,58.720001,57.219334,970
2018-08-29,59.000000,59.000000,59.000000,59.000000,57.492176,1111
2018-08-30,57.049999,57.049999,55.709999,55.709999,54.286255,594
2018-08-31,55.689999,57.970001,55.689999,57.970001,56.488503,823
2018-09-04,57.869999,58.070000,57.869999,58.070000,56.585945,541
2018-09-05,58.070000,58.070000,58.070000,58.070000,56.585945,0
2018-09-06,57.320000,57.320000,57.320000,57.320000,55.855110,1033
2018-09-07,56.650002,56.650002,53.849998,53.849998,52.473789,411
2018-09-10,53.849998,53.849998,53.849998,53.849998,52.473789,0
2018-09-11,54.090000,54.090000,54.090000,54.090000,52.707657,361
2018-09-12,56.450001,56.650002,54.000000,54.000000,52.619957,915
2018-09-13,54.759998,57.250000,54.759998,57.250000,55.786900,530
2018-09-14,56.162498,58.360001,56.162498,58.360001,56.868534,541
2018-09-17,58.389999,58.590000,58.389999,58.590000,57.092655,422
2018-09-18,57.919998,58.119999,57.919998,58.119999,56.634666,534
2018-09-19,58.349998,58.349998,58.349998,58.349998,56.858788,155
2018-09-20,58.869999,59.070000,58.869999,59.070000,57.560387,355
2018-09-21,59.119999,59.320000,59.119999,59.320000,57.803997,552
2018-09-24,59.320000,59.320000,59.320000,59.320000,57.803997,0
2018-09-25,59.320000,59.320000,59.320000,59.320000,57.803997,0
2018-09-26,58.689999,58.889999,58.689999,58.889999,57.384987,607
2018-09-27,58.540001,58.540001,58.540001,58.540001,57.043934,393
2018-09-28,58.540001,58.540001,58.540001,58.540001,57.043934,0
2018-10-01,57.830002,57.849998,57.650002,57.650002,56.176678,610
2018-10-02,57.330002,57.330002,57.330002,57.330002,55.864857,191
2018-10-03,57.230000,57.230000,57.230000,57.230000,55.767410,628
2018-10-04,54.630001,54.630001,54.630001,54.630001,53.233860,181
2018-10-05,54.660000,54.860001,54.660000,54.860001,53.457981,280
2018-10-08,51.759998,54.430000,51.560001,54.430000,53.038971,884
2018-10-09,54.430000,54.430000,54.430000,54.430000,53.038971,0
2018-10-10,47.779999,49.470001,47.779999,47.779999,46.558918,503
2018-10-11,47.529999,49.630001,46.470001,49.630001,48.361641,3604
2018-10-12,46.130001,46.130001,46.130001,46.130001,44.951088,2170
2018-10-15,48.000000,48.349998,48.000000,48.349998,47.114349,934
2018-10-16,49.500000,49.500000,49.500000,49.500000,48.234962,213
2018-10-17,49.500000,49.500000,48.790001,48.790001,47.543106,489
2018-10-18,47.372002,47.372002,47.372002,47.372002,46.161346,275
2018-10-19,48.990002,48.990002,48.990002,48.990002,47.737999,352
2018-10-22,46.090000,48.730000,46.090000,48.730000,47.484638,723
2018-10-23,47.480000,47.480000,45.310001,45.310001,44.152042,341
2018-10-24,45.310001,45.310001,45.310001,45.310001,44.152042,0
2018-10-25,47.500000,47.500000,45.910000,45.910000,44.736710,506
2018-10-26,45.910000,45.910000,45.910000,45.910000,44.736710,0
2018-10-29,45.910000,45.910000,45.910000,45.910000,44.736710,0
2018-10-30,45.509998,45.509998,45.509998,45.509998,44.346931,497
2018-10-31,47.049999,47.049999,46.790001,46.790001,45.594219,591
2018-11-01,47.049999,47.049999,47.049999,47.049999,45.847572,349
2018-11-02,47.490002,47.500000,47.490002,47.494999,46.281200,1008
2018-11-05,48.959999,48.959999,48.959999,48.959999,47.708763,455
2018-11-06,50.000000,50.000000,47.540001,47.540001,46.325054,963
2018-11-07,47.790001,47.790001,47.790001,47.790001,46.568665,288
2018-11-08,47.790001,47.790001,47.790001,47.790001,46.568665,0
2018-11-09,47.360001,47.360001,47.360001,47.360001,46.149654,268
2018-11-12,44.029999,46.230000,43.880001,43.880001,42.758591,1785
2018-11-13,46.689999,46.689999,46.689999,46.689999,45.496773,1146
2018-11-14,47.779999,47.779999,47.779999,47.779999,46.558918,2250
2018-11-15,47.700001,47.700001,47.700001,47.700001,46.480965,626
2018-11-16,47.700001,47.700001,47.700001,47.700001,46.480965,0
2018-11-19,47.700001,47.700001,47.700001,47.700001,46.480965,0
2018-11-20,47.700001,47.700001,47.700001,47.700001,46.480965,0
2018-11-21,45.430000,47.950001,45.430000,47.950001,46.724575,590
2018-11-23,47.950001,47.950001,47.950001,47.950001,46.724575,0
2018-11-26,46.470001,46.470001,46.470001,46.470001,45.282398,427
2018-11-27,44.721401,45.910000,44.721401,45.910000,44.736710,934
2018-11-28,43.810001,43.810001,43.810001,43.810001,42.690380,1041
2018-11-29,46.049999,46.049999,46.049999,46.049999,44.873131,640
2018-11-30,44.520000,44.520000,42.740002,42.740002,41.647724,658
2018-12-03,46.330002,46.330002,44.650002,46.259998,45.077763,1756
2018-12-04,44.080002,44.080002,44.080002,44.080002,42.953480,802
2018-12-06,41.750000,43.169998,41.750000,43.169998,42.066730,1655
2018-12-07,41.950001,42.450001,41.110001,41.110001,40.059380,2218
2018-12-10,40.830002,42.189999,39.970001,39.970001,38.948513,1240
2018-12-11,41.340000,42.549999,40.650002,42.549999,41.462578,22122
2018-12-12,43.980000,43.990002,43.980000,43.990002,42.865780,681
2018-12-13,42.230000,42.230000,42.230000,42.230000,41.150757,487
2018-12-14,42.060001,42.060001,40.150002,40.150002,39.123917,653
2018-12-17,39.599998,40.709999,39.490002,40.709999,39.669601,12561
2018-12-18,39.570000,39.570000,39.570000,39.570000,38.558735,659
2018-12-19,42.330002,42.330002,42.130001,42.130001,41.053314,833
2018-12-20,39.639999,42.369999,39.639999,42.369999,41.287178,634
2018-12-21,41.840000,41.840000,41.840000,41.840000,40.770725,682
2018-12-24,42.380001,42.380001,42.380001,42.380001,41.296925,433
2018-12-26,42.380001,42.380001,42.380001,42.380001,41.296925,0
2018-12-27,41.340000,41.340000,41.340000,41.340000,40.283501,437
2018-12-28,41.340000,41.340000,41.340000,41.340000,40.283501,0
2018-12-31,44.299999,44.310001,44.189999,44.189999,43.060665,1769
2019-01-02,43.169998,43.630001,43.169998,43.630001,42.514980,662
2019-01-03,43.130001,43.130001,43.130001,43.130001,42.027756,303
2019-01-04,43.584702,43.584702,43.584702,43.584702,42.470837,13482
2019-01-07,45.169998,45.169998,45.160000,45.160000,44.005875,768
2019-01-08,45.410000,45.410000,45.410000,45.410000,44.249489,500
2019-01-09,45.410000,45.410000,45.410000,45.410000,44.249489,0
2019-01-10,45.410000,45.410000,45.410000,45.410000,44.249489,0
2019-01-11,46.500000,46.799999,46.500000,46.599998,45.409073,22858
2019-01-14,46.599998,46.799999,46.599998,46.799999,45.603962,2155
2019-01-15,46.799999,46.799999,46.799999,46.799999,45.603962,0
2019-01-16,46.799999,46.799999,46.799999,46.799999,45.603962,269
2019-01-17,49.349998,49.349998,49.349998,49.349998,48.088795,793
2019-01-18,49.509998,49.549999,49.509998,49.549999,48.283684,506
2019-01-22,47.119999,49.980000,47.119999,49.980000,48.702694,5183
2019-01-23,49.950001,50.099998,47.279999,50.090000,48.809883,2687
2019-01-24,49.360001,49.570000,49.360001,49.570000,48.303173,7566
2019-01-25,48.540001,51.139999,48.540001,51.139999,49.833050,668
2019-01-28,51.000000,51.000000,51.000000,51.000000,49.696629,1144
2019-01-29,51.660000,51.660000,51.459999,51.660000,50.339760,562
2019-01-30,52.110001,52.310001,51.750000,51.750000,50.427460,1681
2019-01-31,50.669998,50.900002,50.400002,50.900002,49.599186,1109
2019-02-01,49.794998,49.794998,49.794998,49.794998,48.522423,352
2019-02-04,51.049999,51.259998,51.049999,51.259998,49.949982,772
2019-02-05,51.250000,51.250000,51.250000,51.250000,49.940239,5765
2019-02-06,51.250000,51.250000,51.250000,51.250000,49.940239,0
2019-02-07,46.560001,46.560001,46.560001,46.560001,45.370098,543
2019-02-08,49.259998,49.650002,49.259998,49.650002,48.381130,741
2019-02-11,49.650002,49.650002,49.650002,49.650002,48.381130,0
2019-02-12,50.029999,50.029999,50.029999,50.029999,48.751415,261
2019-02-13,50.720001,50.919998,50.720001,50.919998,49.618671,551
2019-02-14,50.919998,50.919998,50.919998,50.919998,49.618671,0
2019-02-15,50.919998,50.919998,50.919998,50.919998,49.618671,0
2019-02-19,50.919998,50.919998,50.919998,50.919998,49.618671,0
2019-02-20,49.930000,49.930000,49.930000,49.930000,48.653973,339
2019-02-21,51.230000,51.230000,51.230000,51.230000,49.920750,200
2019-02-22,51.650002,51.919998,50.404999,51.919998,50.593113,756
2019-02-25,51.919998,51.919998,51.919998,51.919998,50.593113,0
2019-02-26,51.209999,52.520000,51.209999,52.520000,51.177784,614
2019-02-27,50.220001,50.220001,50.220001,50.220001,48.936562,151
2019-02-28,46.790001,48.320000,46.790001,48.320000,47.085117,460
2019-03-01,48.320000,48.320000,48.320000,48.320000,47.085117,0
2019-03-04,48.650002,48.650002,47.430000,47.430000,46.217865,639
2019-03-05,47.430000,47.430000,47.430000,47.430000,46.217865,0
2019-03-06,47.430000,47.430000,47.430000,47.430000,46.217865,0
2019-03-07,49.330002,49.400002,48.029999,49.400002,48.137520,1703
2019-03-08,49.400002,49.400002,49.400002,49.400002,48.137520,0
2019-03-11,49.400002,49.400002,49.400002,49.400002,48.137520,0
2019-03-12,49.400002,49.400002,49.400002,49.400002,48.137520,0
2019-03-13,49.400002,49.400002,49.400002,49.400002,48.137520,0
2019-03-14,48.619999,48.619999,48.619999,48.619999,47.377449,238
2019-03-15,46.810001,48.970001,46.810001,48.970001,47.718510,21435
2019-03-18,48.639999,49.060001,48.639999,49.060001,47.806210,3681
2019-03-19,48.395000,49.830002,48.060001,48.060001,46.831764,3475
2019-03-20,48.139999,49.820000,48.139999,48.750000,47.504128,2702
2019-03-21,48.549999,48.750000,47.500000,48.750000,47.504128,1842
2019-03-22,46.450001,46.450001,46.450001,46.450001,45.262909,7506
2019-03-25,46.910000,46.910000,43.840000,46.759998,45.564983,1482
2019-03-26,44.930000,46.060001,44.930000,46.060001,44.882877,284
2019-03-27,46.060001,46.060001,46.060001,46.060001,44.882877,0
2019-03-28,46.529999,46.529999,46.529999,46.529999,45.340862,369
2019-03-29,46.529999,46.529999,46.529999,46.529999,45.340862,0
2019-04-01,48.150002,48.150002,46.880001,46.880001,45.681919,2118
2019-04-02,46.880001,46.880001,46.880001,46.880001,45.681919,0
2019-04-03,48.310001,48.310001,47.139999,47.139999,45.935276,841
2019-04-04,46.549999,46.599998,46.400002,46.400002,45.214188,18054
2019-04-05,47.755001,48.970001,47.755001,48.970001,47.718510,923
2019-04-08,48.025002,48.025002,48.025002,48.025002,46.797661,229
2019-04-09,49.160000,49.160000,48.689999,48.689999,47.445660,407
2019-04-10,47.200001,47.200001,47.200001,47.200001,45.993744,664
2019-04-11,45.820000,45.820000,45.820000,45.820000,45.820000,352
2019-04-12,45.820000,45.820000,45.820000,45.820000,45.820000,0
2019-04-15,49.500000,49.680000,48.000000,49.680000,49.680000,1399
2019-04-16,46.689999,46.689999,46.689999,46.689999,46.689999,363
2019-04-17,45.389999,45.709999,44.827202,45.709999,45.709999,10278
2019-04-18,47.099998,47.099998,45.904999,45.950001,45.950001,764
2019-04-22,44.480000,44.480000,44.480000,44.480000,44.480000,299
2019-04-23,47.209999,47.209999,47.209999,47.209999,47.209999,518
2019-04-24,44.935001,44.935001,44.935001,44.935001,44.935001,448
2019-04-25,46.180000,46.180000,46.180000,46.180000,46.180000,383
2019-04-26,43.700001,45.990002,43.700001,45.990002,45.990002,337
2019-04-29,45.119999,45.119999,45.119999,45.119999,45.119999,325
2019-04-30,44.834999,44.834999,44.834999,44.834999,44.834999,371
2019-05-01,44.500000,44.500000,44.500000,44.500000,44.500000,837
2019-05-02,45.500000,45.500000,45.500000,45.500000,45.500000,512
2019-05-03,45.500000,45.500000,45.500000,45.500000,45.500000,336
2019-05-06,45.500000,45.500000,45.500000,45.500000,45.500000,377
2019-05-07,44.110001,44.110001,43.500000,43.500000,43.500000,1538
2019-05-08,42.299999,42.299999,42.299999,42.299999,42.299999,555
2019-05-09,44.900002,44.900002,43.980000,43.980000,43.980000,557
2019-05-10,42.779999,45.259998,42.779999,45.259998,45.259998,410
2019-05-13,44.700001,44.700001,44.700001,44.700001,44.700001,523
2019-05-14,42.299999,42.299999,42.299999,42.299999,42.299999,485
2019-05-15,42.259998,42.259998,42.259998,42.259998,42.259998,487
2019-05-16,42.259998,42.259998,42.259998,42.259998,42.259998,0
2019-05-17,45.900002,45.900002,45.900002,45.900002,45.900002,210
2019-05-20,43.500000,44.540001,43.500000,44.540001,44.540001,625
2019-05-21,44.500000,44.500000,44.500000,44.500000,44.500000,381
2019-05-22,43.435001,43.930000,43.435001,43.930000,43.930000,325
2019-05-23,44.500000,44.500000,44.430000,44.430000,44.430000,969
2019-05-24,43.470001,43.470001,43.299999,43.299999,43.299999,1168
2019-05-28,43.270000,43.270000,43.270000,43.270000,43.270000,368
2019-05-29,42.189999,42.189999,42.189999,42.189999,42.189999,490
2019-05-30,43.669998,43.669998,42.959999,42.959999,42.959999,392
2019-05-31,42.959999,42.959999,42.959999,42.959999,42.959999,0
2019-06-03,42.959999,42.959999,42.959999,42.959999,42.959999,0
2019-06-04,44.070000,44.070000,41.860001,41.860001,41.860001,1808
2019-06-05,44.000000,44.340000,44.000000,44.340000,44.340000,779
2019-06-06,41.500000,41.500000,41.500000,41.500000,41.500000,502
2019-06-07,44.000000,44.500000,44.000000,44.250000,44.250000,4369
2019-06-10,44.259998,44.259998,44.259998,44.259998,44.259998,2461
2019-06-11,44.000000,44.099998,44.000000,44.099998,44.099998,3424
2019-06-12,44.500000,44.500000,44.250000,44.500000,44.500000,1681
2019-06-13,46.000000,46.000000,45.000000,45.750000,45.750000,1551
2019-06-14,43.460999,45.189999,43.460999,45.189999,45.189999,6990
2019-06-17,45.369999,45.369999,44.000000,44.750000,44.750000,1353
2019-06-18,45.130001,45.130001,44.250000,44.250000,44.250000,734
2019-06-19,45.750000,46.000000,44.450001,46.000000,46.000000,811
2019-06-20,45.849998,45.849998,45.849998,45.849998,45.849998,553
2019-06-21,45.750000,45.799999,45.750000,45.799999,45.799999,2475
2019-06-24,46.000000,46.000000,46.000000,46.000000,46.000000,719
2019-06-25,46.369999,46.369999,46.299999,46.299999,46.299999,985
2019-06-26,46.369999,46.369999,45.759998,45.759998,45.759998,1021
2019-06-27,45.759998,45.759998,45.759998,45.759998,45.759998,0
2019-06-28,46.509998,46.509998,46.509998,46.509998,46.509998,6919
2019-07-01,46.509998,46.509998,46.509998,46.509998,46.509998,0
2019-07-02,46.310001,46.310001,44.860001,45.584999,45.584999,517
2019-07-03,46.400002,46.400002,46.400002,46.400002,46.400002,1750
2019-07-05,46.349998,46.400002,46.349998,46.400002,46.400002,422
2019-07-08,46.400002,46.400002,46.400002,46.400002,46.400002,0
2019-07-09,43.779999,43.779999,43.779999,43.779999,43.779999,610
2019-07-10,44.775002,45.770000,44.700001,45.770000,45.770000,2156
2019-07-11,42.860001,42.860001,42.860001,42.860001,42.860001,306
2019-07-12,44.984402,46.509998,44.984402,45.450001,45.450001,492057
================================================
FILE: dataset/MTDR.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,31.610001,32.000000,30.870001,31.059999,31.059999,1499700
2018-05-24,30.510000,30.879999,29.770000,29.790001,29.790001,1831300
2018-05-25,28.820000,29.100000,28.200001,28.670000,28.670000,2599900
2018-05-29,28.370001,28.879999,28.020000,28.480000,28.480000,1868700
2018-05-30,28.790001,29.260000,28.580000,29.059999,29.059999,1941900
2018-05-31,28.760000,29.309999,28.040001,28.070000,28.070000,2092000
2018-06-01,28.070000,28.270000,25.570000,26.400000,26.400000,3859100
2018-06-04,26.450001,26.650000,25.530001,25.780001,25.780001,2426600
2018-06-05,25.570000,26.120001,25.469999,25.930000,25.930000,1845400
2018-06-06,26.200001,26.270000,25.650000,25.910000,25.910000,1948100
2018-06-07,26.040001,27.129999,26.040001,26.930000,26.930000,1887700
2018-06-08,26.930000,27.150000,25.719999,25.969999,25.969999,2083700
2018-06-11,25.879999,26.309999,25.670000,25.910000,25.910000,1346700
2018-06-12,25.910000,26.760000,25.709999,26.629999,26.629999,2097000
2018-06-13,26.530001,26.990000,26.370001,26.610001,26.610001,1487000
2018-06-14,27.030001,27.080000,26.270000,26.430000,26.430000,1385400
2018-06-15,26.209999,26.410000,25.799999,26.129999,26.129999,3438400
2018-06-18,26.190001,26.850000,26.180000,26.299999,26.299999,1562200
2018-06-19,25.799999,27.750000,25.790001,27.690001,27.690001,2623000
2018-06-20,27.950001,28.580000,27.700001,28.440001,28.440001,2600100
2018-06-21,28.070000,28.430000,26.870001,27.020000,27.020000,2158200
2018-06-22,28.389999,28.600000,27.620001,27.860001,27.860001,2175900
2018-06-25,27.900000,28.030001,27.219999,27.400000,27.400000,1367100
2018-06-26,27.520000,28.920000,27.290001,28.809999,28.809999,2166000
2018-06-27,29.190001,30.299999,29.120001,30.059999,30.059999,2816500
2018-06-28,30.139999,30.379999,29.680000,30.139999,30.139999,2197500
2018-06-29,30.480000,31.410000,30.000000,30.049999,30.049999,2761400
2018-07-02,29.760000,29.770000,29.000000,29.209999,29.209999,1384700
2018-07-03,30.049999,30.299999,29.280001,29.650000,29.650000,1132100
2018-07-05,29.830000,30.020000,29.190001,29.879999,29.879999,1599100
2018-07-06,29.629999,31.389999,29.580000,30.940001,30.940001,2125700
2018-07-09,31.350000,32.619999,31.270000,32.520000,32.520000,2248800
2018-07-10,32.919998,33.430000,32.700001,32.990002,32.990002,1932700
2018-07-11,32.369999,33.180000,31.620001,31.730000,31.730000,1928400
2018-07-12,31.879999,32.259998,31.209999,31.930000,31.930000,1773300
2018-07-13,31.870001,32.599998,31.709999,31.809999,31.809999,943400
2018-07-16,31.049999,31.770000,30.910000,31.670000,31.670000,1013800
2018-07-17,31.520000,32.259998,31.340000,32.020000,32.020000,693200
2018-07-18,31.709999,32.040001,31.030001,31.740000,31.740000,1187700
2018-07-19,31.440001,32.400002,31.420000,32.330002,32.330002,1222300
2018-07-20,32.410000,32.720001,31.809999,31.980000,31.980000,1304300
2018-07-23,31.990000,32.299999,31.709999,31.940001,31.940001,1221200
2018-07-24,32.480000,32.869999,32.209999,32.349998,32.349998,1098400
2018-07-25,32.330002,32.910000,31.920000,32.830002,32.830002,1171200
2018-07-26,32.970001,33.349998,32.759998,32.980000,32.980000,978700
2018-07-27,32.770000,33.599998,32.700001,32.820000,32.820000,1240500
2018-07-30,33.349998,33.860001,33.099998,33.529999,33.529999,1815300
2018-07-31,33.470001,33.720001,32.820000,33.500000,33.500000,1345700
2018-08-01,33.049999,33.410000,32.580002,33.189999,33.189999,1568000
2018-08-02,32.150002,34.439999,31.700001,32.779999,32.779999,3111200
2018-08-03,32.669998,33.080002,31.090000,31.139999,31.139999,2989500
2018-08-06,31.290001,31.860001,31.000000,31.330000,31.330000,1450000
2018-08-07,31.590000,32.529999,31.420000,31.980000,31.980000,1902600
2018-08-08,31.750000,31.980000,31.090000,31.570000,31.570000,1681000
2018-08-09,31.600000,32.410000,31.549999,32.009998,32.009998,1537200
2018-08-10,31.950001,32.849998,31.889999,32.720001,32.720001,1065600
2018-08-13,32.650002,32.840000,31.400000,31.420000,31.420000,1409000
2018-08-14,31.820000,32.330002,31.400000,31.650000,31.650000,1176200
2018-08-15,30.900000,31.370001,29.370001,29.790001,29.790001,1948800
2018-08-16,30.030001,30.450001,29.870001,30.090000,30.090000,991800
2018-08-17,30.219999,31.480000,30.219999,30.590000,30.590000,1029300
2018-08-20,30.559999,31.020000,30.389999,30.520000,30.520000,700900
2018-08-21,31.000000,31.940001,30.910000,31.670000,31.670000,1416600
2018-08-22,32.000000,32.669998,31.889999,32.560001,32.560001,858000
2018-08-23,32.310001,32.520000,31.990000,32.200001,32.200001,899500
2018-08-24,32.590000,33.009998,32.400002,32.610001,32.610001,654200
2018-08-27,32.650002,32.939999,32.560001,32.580002,32.580002,828000
2018-08-28,32.630001,32.900002,32.009998,32.230000,32.230000,722500
2018-08-29,32.459999,32.970001,32.259998,32.830002,32.830002,945200
2018-08-30,32.849998,33.669998,32.820000,33.520000,33.520000,1031900
2018-08-31,33.299999,33.430000,32.570000,32.740002,32.740002,991900
2018-09-04,32.900002,33.080002,31.889999,31.980000,31.980000,972100
2018-09-05,31.750000,31.850000,31.080000,31.809999,31.809999,1168600
2018-09-06,31.860001,31.910000,31.150000,31.290001,31.290001,1264200
2018-09-07,30.969999,31.200001,30.530001,30.820000,30.820000,1103400
2018-09-10,31.059999,31.360001,30.740000,30.850000,30.850000,824500
2018-09-11,30.690001,32.410000,30.690001,32.080002,32.080002,1062500
2018-09-12,32.599998,33.570000,32.470001,33.459999,33.459999,1332900
2018-09-13,32.470001,32.939999,30.809999,31.129999,31.129999,3468900
2018-09-14,30.990000,31.459999,30.730000,31.049999,31.049999,1830600
2018-09-17,31.150000,31.690001,30.629999,30.879999,30.879999,1261000
2018-09-18,31.230000,31.870001,31.129999,31.740000,31.740000,1311600
2018-09-19,31.850000,32.669998,31.820000,32.419998,32.419998,1039000
2018-09-20,32.639999,32.820000,31.850000,32.110001,32.110001,813900
2018-09-21,32.150002,32.669998,31.870001,32.520000,32.520000,2323100
2018-09-24,33.209999,33.680000,32.389999,33.189999,33.189999,1279300
2018-09-25,32.650002,33.509998,32.430000,32.860001,32.860001,1635200
2018-09-26,32.480000,33.099998,32.020000,32.060001,32.060001,1021200
2018-09-27,32.570000,33.240002,32.209999,33.009998,33.009998,1269000
2018-09-28,32.880001,33.549999,32.880001,33.049999,33.049999,1029800
2018-10-01,33.279999,33.450001,32.680000,33.000000,33.000000,1028200
2018-10-02,33.099998,33.720001,32.939999,33.110001,33.110001,972900
2018-10-03,33.279999,34.240002,33.029999,34.220001,34.220001,968900
2018-10-04,34.040001,34.910000,33.849998,33.910000,33.910000,1554300
2018-10-05,33.860001,34.220001,33.080002,33.509998,33.509998,1034600
2018-10-08,33.130001,33.330002,32.509998,32.849998,32.849998,903400
2018-10-09,33.049999,34.090000,32.950001,33.630001,33.630001,969200
2018-10-10,33.660000,33.750000,31.790001,32.160000,32.160000,1684600
2018-10-11,31.750000,31.790001,30.270000,30.299999,30.299999,2048400
2018-10-12,30.980000,31.190001,30.129999,31.100000,31.100000,1460000
2018-10-15,31.360001,31.770000,30.629999,31.559999,31.559999,850500
2018-10-16,31.770000,32.220001,31.459999,32.070000,32.070000,959300
2018-10-17,31.809999,32.130001,31.309999,31.980000,31.980000,1143400
2018-10-18,31.500000,32.160000,31.260000,31.690001,31.690001,1279900
2018-10-19,31.840000,32.529999,31.389999,31.740000,31.740000,1265600
2018-10-22,31.620001,31.730000,30.930000,31.510000,31.510000,858400
2018-10-23,30.820000,30.879999,29.440001,29.790001,29.790001,1893500
2018-10-24,30.059999,30.370001,27.870001,27.879999,27.879999,1762400
2018-10-25,28.330000,29.059999,27.820000,28.850000,28.850000,1260400
2018-10-26,28.280001,29.370001,27.719999,28.840000,28.840000,1089000
2018-10-29,28.940001,29.110001,27.379999,27.879999,27.879999,1834600
2018-10-30,27.530001,28.889999,27.219999,28.840000,28.840000,1399200
2018-10-31,29.299999,29.610001,28.750000,28.840000,28.840000,2103100
2018-11-01,29.350000,30.000000,28.090000,28.920000,28.920000,3087600
2018-11-02,28.969999,29.020000,27.230000,27.379999,27.379999,3000500
2018-11-05,28.389999,28.389999,27.520000,28.129999,28.129999,1918200
2018-11-06,28.170000,28.340000,27.410000,27.549999,27.549999,1018700
2018-11-07,28.299999,28.790001,27.990000,28.690001,28.690001,1377400
2018-11-08,28.610001,28.760000,26.700001,26.990000,26.990000,1534200
2018-11-09,26.410000,26.750000,25.660000,26.559999,26.559999,1969100
2018-11-12,26.900000,26.940001,24.760000,24.790001,24.790001,1675800
2018-11-13,24.650000,25.080000,23.740000,23.830000,23.830000,2076100
2018-11-14,24.400000,24.910000,23.840000,23.900000,23.900000,1851800
2018-11-15,23.680000,24.850000,23.660000,24.680000,24.680000,1370900
2018-11-16,24.530001,25.480000,24.450001,24.709999,24.709999,2441700
2018-11-19,24.000000,24.750000,23.910000,24.450001,24.450001,1645000
2018-11-20,23.879999,23.889999,22.600000,22.990000,22.990000,2149300
2018-11-21,23.580000,23.790001,23.180000,23.389999,23.389999,1063900
2018-11-23,22.230000,23.040001,22.200001,22.299999,22.299999,738200
2018-11-26,22.799999,23.379999,22.530001,22.740000,22.740000,1646100
2018-11-27,22.639999,22.799999,21.889999,21.940001,21.940001,1653900
2018-11-28,22.139999,22.730000,21.430000,22.730000,22.730000,1846800
2018-11-29,22.820000,23.600000,22.750000,23.340000,23.340000,1959500
2018-11-30,22.969999,23.200001,22.379999,22.799999,22.799999,2318500
2018-12-03,23.930000,24.660000,23.760000,24.360001,24.360001,2709400
2018-12-04,24.360001,24.430000,23.340000,23.370001,23.370001,2100600
2018-12-06,22.799999,22.799999,21.340000,21.740000,21.740000,2257900
2018-12-07,22.200001,22.400000,21.250000,21.290001,21.290001,2365500
2018-12-10,20.879999,21.410000,19.430000,19.690001,19.690001,2600900
2018-12-11,19.760000,20.150000,18.980000,19.080000,19.080000,3237900
2018-12-12,19.370001,19.900000,18.980000,19.090000,19.090000,3078400
2018-12-13,18.940001,19.280001,18.340000,18.570000,18.570000,2852600
2018-12-14,18.309999,18.430000,17.219999,17.370001,17.370001,3092700
2018-12-17,17.200001,17.510000,16.670000,16.780001,16.780001,2342600
2018-12-18,16.870001,17.250000,16.370001,16.490000,16.490000,2793400
2018-12-19,16.520000,17.010000,15.930000,16.139999,16.139999,2146800
2018-12-20,15.710000,16.270000,15.610000,15.640000,15.640000,2391400
2018-12-21,15.560000,15.560000,14.570000,14.760000,14.760000,5661400
2018-12-24,14.470000,14.750000,14.000000,14.120000,14.120000,1167100
2018-12-26,14.340000,15.940000,13.970000,15.890000,15.890000,3433800
2018-12-27,15.500000,15.840000,15.070000,15.830000,15.830000,2380700
2018-12-28,15.920000,16.020000,15.440000,15.490000,15.490000,1809500
2018-12-31,15.650000,15.830000,15.240000,15.530000,15.530000,1730900
2019-01-02,15.080000,16.110001,14.800000,16.070000,16.070000,2266300
2019-01-03,16.090000,16.430000,15.480000,15.930000,15.930000,2089900
2019-01-04,16.370001,17.160000,16.100000,17.030001,17.030001,3369500
2019-01-07,17.049999,18.450001,16.780001,18.260000,18.260000,3888100
2019-01-08,18.650000,19.010000,18.219999,18.900000,18.900000,3145300
2019-01-09,19.270000,19.799999,18.780001,19.760000,19.760000,2722500
2019-01-10,19.410000,20.030001,19.230000,19.780001,19.780001,2355100
2019-01-11,19.389999,19.480000,18.980000,19.340000,19.340000,2266100
2019-01-14,18.950001,19.280001,18.469999,18.950001,18.950001,1899000
2019-01-15,19.170000,19.620001,18.980000,19.430000,19.430000,1913900
2019-01-16,19.219999,19.820000,19.219999,19.510000,19.510000,1581100
2019-01-17,19.270000,19.469999,18.920000,19.410000,19.410000,1785900
2019-01-18,19.700001,19.940001,19.299999,19.920000,19.920000,1552000
2019-01-22,19.600000,19.600000,18.730000,18.809999,18.809999,2052300
2019-01-23,19.030001,19.129999,18.320000,18.520000,18.520000,1795000
2019-01-24,18.459999,18.799999,18.320000,18.719999,18.719999,1353000
2019-01-25,18.830000,19.549999,18.799999,19.290001,19.290001,1976600
2019-01-28,19.040001,19.040001,18.410000,18.889999,18.889999,1834900
2019-01-29,19.080000,19.410000,18.730000,19.240000,19.240000,2004100
2019-01-30,19.309999,19.900000,19.020000,19.860001,19.860001,1984900
2019-01-31,20.070000,20.180000,19.280001,19.500000,19.500000,2414600
2019-02-01,19.570000,19.820000,19.350000,19.660000,19.660000,1611400
2019-02-04,19.400000,19.590000,19.209999,19.580000,19.580000,927100
2019-02-05,19.530001,19.629999,18.840000,18.870001,18.870001,1731900
2019-02-06,18.690001,18.980000,18.500000,18.590000,18.590000,1553500
2019-02-07,18.389999,18.430000,17.200001,17.540001,17.540001,2794500
2019-02-08,17.450001,17.680000,16.740000,17.260000,17.260000,2808200
2019-02-11,17.100000,17.459999,16.840000,17.410000,17.410000,1507800
2019-02-12,17.780001,18.049999,17.360001,17.639999,17.639999,1761500
2019-02-13,17.790001,18.230000,17.660000,17.870001,17.870001,2321200
2019-02-14,17.830000,18.420000,17.650000,18.219999,18.219999,1484400
2019-02-15,18.500000,19.320000,18.389999,19.309999,19.309999,2972500
2019-02-19,19.350000,19.540001,18.650000,18.700001,18.700001,1733800
2019-02-20,18.700001,19.020000,18.459999,18.940001,18.940001,1868600
2019-02-21,18.889999,18.990000,18.000000,18.059999,18.059999,2098300
2019-02-22,18.280001,18.820000,18.209999,18.700001,18.700001,2014500
2019-02-25,18.520000,18.959999,18.420000,18.850000,18.850000,2277300
2019-02-26,18.930000,19.320000,17.809999,17.910000,17.910000,4242400
2019-02-27,19.340000,19.879999,18.299999,18.990000,18.990000,5300300
2019-02-28,19.059999,19.209999,18.570000,18.600000,18.600000,3536000
2019-03-01,18.780001,19.160000,17.870001,18.030001,18.030001,3544400
2019-03-04,18.219999,18.320000,17.629999,17.990000,17.990000,2658600
2019-03-05,18.040001,18.350000,17.600000,18.320000,18.320000,2244000
2019-03-06,18.180000,18.180000,17.320000,17.469999,17.469999,2802900
2019-03-07,17.510000,17.629999,17.110001,17.180000,17.180000,1525100
2019-03-08,17.000000,17.000000,16.379999,16.700001,16.700001,1805000
2019-03-11,16.930000,17.340000,16.709999,17.170000,17.170000,1623100
2019-03-12,17.320000,18.250000,17.209999,18.190001,18.190001,3135000
2019-03-13,18.510000,19.059999,18.299999,18.600000,18.600000,3540400
2019-03-14,18.540001,18.830000,18.480000,18.530001,18.530001,1879000
2019-03-15,18.219999,18.860001,18.180000,18.690001,18.690001,3377500
2019-03-18,18.690001,19.200001,18.639999,19.129999,19.129999,3175600
2019-03-19,19.320000,19.480000,18.959999,19.059999,19.059999,3023300
2019-03-20,18.959999,20.080000,18.900000,19.650000,19.650000,2775600
2019-03-21,19.590000,20.260000,19.520000,20.000000,20.000000,2815100
2019-03-22,19.629999,19.690001,18.590000,18.910000,18.910000,2727300
2019-03-25,18.799999,18.940001,18.260000,18.840000,18.840000,1872500
2019-03-26,19.280001,19.980000,19.170000,19.510000,19.510000,2142600
2019-03-27,19.549999,19.959999,19.350000,19.620001,19.620001,2107500
2019-03-28,19.440001,20.030001,19.400000,19.690001,19.690001,3751900
2019-03-29,20.049999,20.129999,19.139999,19.330000,19.330000,2271100
2019-04-01,19.590000,19.740000,19.320000,19.600000,19.600000,1413200
2019-04-02,19.610001,19.930000,19.290001,19.459999,19.459999,2247900
2019-04-03,19.520000,19.660000,17.930000,17.969999,17.969999,3014600
2019-04-04,17.920000,18.660000,17.910000,18.480000,18.480000,3069100
2019-04-05,18.540001,19.770000,18.540001,19.540001,19.540001,2691000
2019-04-08,19.639999,20.379999,19.639999,19.940001,19.940001,2536900
2019-04-09,19.920000,20.320000,19.610001,19.950001,19.950001,3005600
2019-04-10,20.219999,20.350000,19.850000,20.280001,20.280001,1947400
2019-04-11,20.070000,20.180000,18.750000,19.420000,19.420000,3460600
2019-04-12,20.500000,21.000000,20.410000,20.950001,20.950001,3636400
2019-04-15,20.780001,21.059999,20.500000,20.820000,20.820000,2207400
2019-04-16,20.950001,21.200001,20.590000,21.049999,21.049999,1503000
2019-04-17,21.250000,21.299999,20.760000,20.930000,20.930000,1458200
2019-04-18,20.850000,21.070000,20.700001,20.820000,20.820000,1523100
2019-04-22,21.200001,21.930000,20.930000,21.889999,21.889999,2105100
2019-04-23,21.780001,22.250000,21.389999,21.799999,21.799999,1741000
2019-04-24,22.000000,22.010000,21.190001,21.200001,21.200001,1594600
2019-04-25,21.200001,21.370001,20.719999,20.730000,20.730000,1418400
2019-04-26,20.400000,20.450001,19.450001,19.719999,19.719999,2245600
2019-04-29,19.620001,19.930000,19.350000,19.780001,19.780001,1470700
2019-04-30,20.049999,20.100000,19.299999,19.690001,19.690001,1680800
2019-05-01,19.750000,19.900000,18.740000,18.740000,18.740000,3363700
2019-05-02,18.549999,18.799999,17.760000,18.440001,18.440001,3526200
2019-05-03,18.709999,19.230000,18.389999,19.150000,19.150000,1924400
2019-05-06,18.570000,19.620001,18.450001,19.480000,19.480000,1713700
2019-05-07,19.059999,19.180000,18.590000,19.020000,19.020000,1733000
2019-05-08,19.090000,19.860001,19.080000,19.650000,19.650000,2025300
2019-05-09,19.430000,20.090000,19.240000,19.930000,19.930000,1972500
2019-05-10,19.750000,20.020000,19.230000,19.920000,19.920000,1598300
2019-05-13,19.680000,19.959999,19.270000,19.330000,19.330000,2206800
2019-05-14,19.490000,20.280001,19.370001,20.010000,20.010000,2359500
2019-05-15,19.719999,20.820000,19.620001,20.620001,20.620001,1477800
2019-05-16,20.780001,21.190001,20.540001,20.799999,20.799999,1627700
2019-05-17,20.440001,20.590000,19.990000,20.000000,20.000000,1246600
2019-05-20,19.990000,20.260000,19.850000,20.010000,20.010000,1166200
2019-05-21,20.170000,20.750000,19.990000,20.709999,20.709999,1096500
2019-05-22,20.549999,20.750000,19.629999,19.660000,19.660000,1844400
2019-05-23,19.110001,19.110001,17.730000,17.799999,17.799999,2256823
================================================
FILE: dataset/SINA.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,89.540001,92.650002,89.339996,90.220001,90.220001,846200
2018-05-24,91.160004,92.150002,90.120003,90.620003,90.620003,819100
2018-05-25,91.150002,91.690002,90.709999,90.949997,90.949997,550900
2018-05-29,90.389999,91.870003,88.589996,89.989998,89.989998,1271300
2018-05-30,90.300003,90.730003,89.620003,89.970001,89.970001,883600
2018-05-31,90.330002,91.389999,90.150002,90.820000,90.820000,1300400
2018-06-01,91.129997,92.690002,90.820000,92.239998,92.239998,713700
2018-06-04,92.510002,93.660004,92.510002,93.330002,93.330002,843900
2018-06-05,93.779999,94.620003,93.339996,94.430000,94.430000,1115800
2018-06-06,94.760002,94.769997,91.900002,92.389999,92.389999,924100
2018-06-07,92.870003,93.629997,91.750000,93.209999,93.209999,604400
2018-06-08,92.720001,95.440002,92.360001,94.980003,94.980003,927800
2018-06-11,95.260002,95.790001,92.529999,93.099998,93.099998,781900
2018-06-12,93.709999,95.430000,93.709999,94.150002,94.150002,710900
2018-06-13,94.790001,95.459999,94.190002,94.639999,94.639999,628300
2018-06-14,94.570000,96.709999,93.269997,96.260002,96.260002,568300
2018-06-15,95.790001,95.790001,94.360001,94.580002,94.580002,658400
2018-06-18,93.669998,93.669998,91.809998,92.150002,92.150002,805700
2018-06-19,90.040001,90.470001,88.309998,89.139999,89.139999,1323600
2018-06-20,89.989998,90.580002,89.110001,90.019997,90.019997,799500
2018-06-21,89.779999,89.779999,87.839996,88.000000,88.000000,1123000
2018-06-22,89.279999,89.290001,87.300003,88.809998,88.809998,998400
2018-06-25,87.230003,87.489998,85.029999,85.309998,85.309998,1093400
2018-06-26,85.629997,86.019997,84.529999,85.330002,85.330002,942900
2018-06-27,85.449997,85.970001,81.449997,81.580002,81.580002,1168700
2018-06-28,80.500000,83.779999,79.690002,83.129997,83.129997,1271100
2018-06-29,83.809998,85.269997,83.500000,84.690002,84.690002,1035500
2018-07-02,83.150002,84.180000,82.160004,83.989998,83.989998,799400
2018-07-03,85.209999,85.290001,83.459999,83.790001,83.790001,470200
2018-07-05,83.790001,84.290001,81.919998,83.059998,83.059998,918300
2018-07-06,83.000000,84.470001,82.169998,84.300003,84.300003,626200
2018-07-09,85.029999,85.860001,83.720001,84.919998,84.919998,401900
2018-07-10,85.220001,85.220001,84.199997,84.680000,84.680000,656700
2018-07-11,83.599998,84.900002,83.180000,83.570000,83.570000,467800
2018-07-12,84.500000,84.839996,83.750000,84.500000,84.500000,497400
2018-07-13,84.279999,84.940002,83.580002,84.070000,84.070000,285500
2018-07-16,83.919998,84.300003,83.230003,83.949997,83.949997,632300
2018-07-17,83.360001,85.339996,83.220001,84.870003,84.870003,477300
2018-07-18,84.889999,85.440002,83.470001,83.989998,83.989998,387600
2018-07-19,83.570000,84.209999,82.589996,82.940002,82.940002,488100
2018-07-20,83.599998,84.480003,82.980003,83.260002,83.260002,392100
2018-07-23,83.260002,83.589996,82.459999,83.110001,83.110001,510800
2018-07-24,84.110001,85.400002,82.769997,83.110001,83.110001,701100
2018-07-25,83.500000,84.669998,83.150002,84.660004,84.660004,786000
2018-07-26,83.629997,84.989998,83.400002,84.230003,84.230003,524300
2018-07-27,84.120003,84.489998,82.930000,83.510002,83.510002,1004600
2018-07-30,83.220001,83.220001,80.000000,80.690002,80.690002,1320800
2018-07-31,80.559998,80.709999,79.620003,80.480003,80.480003,1054000
2018-08-01,79.510002,81.900002,79.510002,80.260002,80.260002,635400
2018-08-02,79.320000,80.070000,78.709999,79.900002,79.900002,474000
2018-08-03,80.050003,80.370003,79.309998,79.620003,79.620003,382400
2018-08-06,79.110001,80.459999,79.080002,79.989998,79.989998,585600
2018-08-07,80.809998,81.199997,79.239998,80.529999,80.529999,1024700
2018-08-08,85.000000,85.050003,74.360001,74.879997,74.879997,3154700
2018-08-09,75.489998,76.209999,74.790001,75.059998,75.059998,1381600
2018-08-10,75.489998,75.489998,73.529999,74.730003,74.730003,1671000
2018-08-13,74.919998,75.279999,71.029999,71.300003,71.300003,1363900
2018-08-14,71.070000,71.839996,69.599998,70.190002,70.190002,945500
2018-08-15,68.000000,69.150002,67.470001,68.709999,68.709999,1542200
2018-08-16,69.470001,69.839996,68.379997,68.430000,68.430000,989200
2018-08-17,68.209999,69.230003,67.760002,69.010002,69.010002,756600
2018-08-20,69.500000,70.790001,69.500000,70.389999,70.389999,566200
2018-08-21,70.919998,71.669998,69.919998,70.290001,70.290001,775700
2018-08-22,70.489998,71.400002,70.080002,70.889999,70.889999,587700
2018-08-23,71.260002,71.930000,69.339996,69.510002,69.510002,909800
2018-08-24,70.260002,70.489998,69.570000,69.849998,69.849998,302000
2018-08-27,70.709999,72.360001,70.709999,71.589996,71.589996,465600
2018-08-28,72.339996,72.940002,71.010002,72.070000,72.070000,711800
2018-08-29,72.410004,72.870003,71.070000,72.000000,72.000000,579200
2018-08-30,71.330002,71.610001,69.160004,69.650002,69.650002,646800
2018-08-31,69.660004,71.500000,69.500000,70.959999,70.959999,570800
2018-09-04,70.250000,70.570000,69.120003,70.370003,70.370003,754200
2018-09-05,69.559998,69.690002,66.120003,66.779999,66.779999,1126100
2018-09-06,67.000000,67.800003,66.110001,66.720001,66.720001,584800
2018-09-07,66.000000,68.169998,65.580002,65.769997,65.769997,823900
2018-09-10,65.870003,65.959999,64.309998,65.139999,65.139999,758500
2018-09-11,64.050003,65.879997,63.220001,64.519997,64.519997,801400
2018-09-12,64.500000,65.930000,63.200001,65.360001,65.360001,656500
2018-09-13,66.209999,67.790001,66.209999,66.809998,66.809998,808000
2018-09-14,67.309998,67.480003,65.540001,66.110001,66.110001,490700
2018-09-17,65.360001,66.580002,64.639999,64.809998,64.809998,519900
2018-09-18,64.919998,66.220001,64.220001,65.720001,65.720001,593200
2018-09-19,66.139999,69.029999,66.089996,68.239998,68.239998,814700
2018-09-20,68.940002,70.959999,68.800003,70.599998,70.599998,945700
2018-09-21,72.000000,72.379997,70.180000,70.360001,70.360001,650400
2018-09-24,69.220001,69.400002,68.000000,68.540001,68.540001,557100
2018-09-25,68.339996,69.300003,68.209999,68.889999,68.889999,350800
2018-09-26,68.910004,71.150002,68.910004,70.059998,70.059998,627200
2018-09-27,70.510002,70.519997,68.739998,69.720001,69.720001,394200
2018-09-28,69.239998,70.489998,68.750000,69.480003,69.480003,716300
2018-10-01,69.559998,71.029999,69.559998,70.129997,70.129997,469300
2018-10-02,69.129997,69.519997,66.610001,67.180000,67.180000,817800
2018-10-03,67.690002,68.040001,67.279999,67.559998,67.559998,462100
2018-10-04,67.220001,67.220001,64.099998,65.040001,65.040001,951900
2018-10-05,65.120003,65.120003,62.610001,64.250000,64.250000,1339100
2018-10-08,62.500000,65.050003,61.810001,64.150002,64.150002,1159800
2018-10-09,63.939999,64.360001,62.270000,62.639999,62.639999,1440000
2018-10-10,62.099998,62.130001,59.110001,59.180000,59.180000,1613600
2018-10-11,58.400002,59.799999,57.849998,59.009998,59.009998,1689400
2018-10-12,60.660000,62.689999,60.520000,62.500000,62.500000,909700
2018-10-15,61.029999,63.279999,61.029999,62.419998,62.419998,617900
2018-10-16,62.500000,63.900002,62.299999,63.840000,63.840000,529100
2018-10-17,63.910000,64.410004,62.119999,63.000000,63.000000,721300
2018-10-18,62.439999,62.439999,60.560001,60.709999,60.709999,811400
2018-10-19,62.320000,62.910000,59.540001,59.849998,59.849998,462200
2018-10-22,61.709999,63.639999,61.070000,62.270000,62.270000,794700
2018-10-23,60.090000,62.220001,58.990002,61.299999,61.299999,661100
2018-10-24,61.049999,61.509998,58.189999,58.209999,58.209999,900200
2018-10-25,58.840000,60.200001,57.639999,59.650002,59.650002,612000
2018-10-26,57.959999,61.950001,57.689999,61.369999,61.369999,626000
2018-10-29,61.910000,61.910000,58.189999,59.049999,59.049999,713700
2018-10-30,58.650002,59.470001,56.669998,58.799999,58.799999,873300
2018-10-31,59.660000,63.439999,58.779999,63.310001,63.310001,829500
2018-11-01,63.330002,68.059998,62.419998,67.360001,67.360001,1081700
2018-11-02,67.760002,68.959999,65.870003,66.230003,66.230003,956100
2018-11-05,64.919998,65.760002,64.010002,65.120003,65.120003,1091800
2018-11-06,64.839996,67.870003,64.309998,65.750000,65.750000,1109700
2018-11-07,65.750000,66.580002,64.489998,65.410004,65.410004,396700
2018-11-08,64.620003,64.870003,63.009998,64.230003,64.230003,699100
2018-11-09,63.250000,63.250000,60.689999,61.820000,61.820000,618200
2018-11-12,61.680000,62.009998,60.110001,61.099998,61.099998,524500
2018-11-13,61.750000,62.900002,60.840000,61.669998,61.669998,573800
2018-11-14,62.400002,64.330002,61.299999,62.220001,62.220001,798800
2018-11-15,62.910000,65.900002,62.299999,64.949997,64.949997,762900
2018-11-16,64.209999,65.230003,62.790001,64.959999,64.959999,455400
2018-11-19,63.549999,63.939999,60.500000,60.840000,60.840000,888700
2018-11-20,59.020000,60.840000,57.840000,59.939999,59.939999,728200
2018-11-21,61.419998,63.119999,61.360001,62.369999,62.369999,1008800
2018-11-23,61.299999,62.080002,60.549999,60.740002,60.740002,280800
2018-11-26,61.549999,63.250000,61.250000,62.450001,62.450001,908600
2018-11-27,62.049999,62.450001,61.000000,61.900002,61.900002,749100
2018-11-28,64.849998,66.800003,60.299999,63.009998,63.009998,1872200
2018-11-29,62.279999,63.320000,61.529999,62.599998,62.599998,813000
2018-11-30,62.380001,65.330002,61.799999,64.769997,64.769997,652600
2018-12-03,67.720001,68.610001,66.949997,67.000000,67.000000,630800
2018-12-04,67.309998,68.199997,65.250000,65.489998,65.489998,854000
2018-12-06,63.209999,64.940002,62.630001,64.320000,64.320000,745800
2018-12-07,64.099998,65.419998,63.040001,63.220001,63.220001,463800
2018-12-10,62.900002,64.320000,62.150002,62.820000,62.820000,521200
2018-12-11,63.889999,65.430000,62.720001,62.770000,62.770000,618900
2018-12-12,64.169998,65.470001,63.279999,64.440002,64.440002,604000
2018-12-13,65.050003,65.500000,61.939999,61.990002,61.990002,543100
2018-12-14,61.070000,63.779999,60.470001,62.130001,62.130001,975800
2018-12-17,62.139999,62.139999,59.340000,59.619999,59.619999,827500
2018-12-18,60.099998,60.820000,58.770000,58.810001,58.810001,535000
2018-12-19,58.770000,59.759998,55.189999,55.439999,55.439999,784400
2018-12-20,55.340000,56.270000,53.560001,54.310001,54.310001,878500
2018-12-21,54.209999,55.720001,53.000000,53.270000,53.270000,869000
2018-12-24,52.889999,54.599998,52.169998,53.660000,53.660000,391800
2018-12-26,54.040001,55.139999,52.450001,55.080002,55.080002,631300
2018-12-27,53.869999,54.590000,52.639999,54.169998,54.169998,1189400
2018-12-28,54.450001,55.869999,53.990002,54.580002,54.580002,580900
2018-12-31,55.430000,55.970001,53.240002,53.639999,53.639999,496800
2019-01-02,52.759998,55.139999,51.759998,54.750000,54.750000,474800
2019-01-03,53.930000,54.189999,52.700001,53.299999,53.299999,499700
2019-01-04,54.810001,58.410000,54.419998,57.680000,57.680000,568200
2019-01-07,58.099998,59.919998,58.020000,59.639999,59.639999,559400
2019-01-08,59.150002,60.169998,56.660000,57.849998,57.849998,1180700
2019-01-09,59.680000,60.290001,57.930000,60.139999,60.139999,804600
2019-01-10,59.889999,60.020000,58.419998,59.959999,59.959999,567000
2019-01-11,59.669998,59.720001,58.070000,58.700001,58.700001,570000
2019-01-14,57.889999,57.889999,56.259998,56.410000,56.410000,764000
2019-01-15,56.830002,58.509998,56.770000,57.000000,57.000000,627500
2019-01-16,57.299999,59.430000,57.299999,59.060001,59.060001,584200
2019-01-17,58.400002,59.880001,57.889999,59.299999,59.299999,595800
2019-01-18,59.840000,62.340000,59.840000,61.720001,61.720001,580800
2019-01-22,60.549999,61.200001,55.150002,55.900002,55.900002,1130200
2019-01-23,56.720001,57.029999,54.200001,54.509998,54.509998,861900
2019-01-24,54.500000,55.450001,54.029999,54.610001,54.610001,1283300
2019-01-25,55.750000,59.700001,55.630001,58.930000,58.930000,1052400
2019-01-28,58.000000,58.970001,57.029999,58.939999,58.939999,681000
2019-01-29,59.230000,59.660000,58.070000,58.590000,58.590000,693700
2019-01-30,59.459999,59.459999,56.840000,58.060001,58.060001,647300
2019-01-31,58.549999,61.639999,58.439999,61.419998,61.419998,971600
2019-02-01,60.689999,61.389999,59.500000,60.740002,60.740002,434200
2019-02-04,60.490002,60.950001,59.730000,59.959999,59.959999,312000
2019-02-05,60.380001,60.580002,59.630001,60.029999,60.029999,448700
2019-02-06,60.139999,61.040001,59.650002,59.900002,59.900002,540900
2019-02-07,59.500000,59.660000,56.930000,57.369999,57.369999,690600
2019-02-08,57.619999,58.939999,57.040001,58.779999,58.779999,553300
2019-02-11,59.830002,60.450001,58.700001,59.820000,59.820000,688900
2019-02-12,60.169998,62.029999,60.060001,61.639999,61.639999,787000
2019-02-13,62.000000,63.959999,62.000000,62.230000,62.230000,1028300
2019-02-14,62.070000,62.200001,60.099998,61.040001,61.040001,991700
2019-02-15,61.070000,61.490002,59.889999,60.400002,60.400002,512000
2019-02-19,60.299999,61.840000,59.520000,61.340000,61.340000,657200
2019-02-20,61.610001,64.459999,61.450001,62.950001,62.950001,647400
2019-02-21,63.040001,63.500000,61.840000,62.970001,62.970001,575000
2019-02-22,63.500000,65.800003,63.139999,65.610001,65.610001,828600
2019-02-25,68.519997,70.830002,67.800003,68.989998,68.989998,1331900
2019-02-26,66.800003,68.900002,66.800003,68.830002,68.830002,830800
2019-02-27,68.150002,69.080002,67.410004,67.750000,67.750000,356300
2019-02-28,67.669998,68.860001,66.830002,67.370003,67.370003,550800
2019-03-01,68.160004,68.879997,66.730003,67.349998,67.349998,694500
2019-03-04,68.120003,69.489998,65.779999,67.239998,67.239998,802900
2019-03-05,63.500000,65.660004,62.330002,64.510002,64.510002,1492600
2019-03-06,64.610001,65.139999,61.910000,62.639999,62.639999,1366300
2019-03-07,62.490002,62.500000,58.459999,58.770000,58.770000,1180700
2019-03-08,56.160000,57.959999,55.270000,56.959999,56.959999,1617600
2019-03-11,58.169998,58.730000,57.599998,58.570000,58.570000,864100
2019-03-12,59.200001,59.200001,57.669998,58.200001,58.200001,553300
2019-03-13,58.279999,58.680000,57.669998,58.139999,58.139999,678700
2019-03-14,57.939999,58.049999,56.970001,57.700001,57.700001,607700
2019-03-15,58.049999,59.169998,57.950001,58.090000,58.090000,659900
2019-03-18,58.200001,58.980000,57.730000,58.209999,58.209999,522400
2019-03-19,58.599998,58.959999,58.150002,58.540001,58.540001,530400
2019-03-20,58.160000,58.939999,57.200001,58.439999,58.439999,424500
2019-03-21,57.939999,59.150002,57.900002,59.139999,59.139999,362400
2019-03-22,58.220001,58.630001,57.580002,57.759998,57.759998,938300
2019-03-25,57.700001,58.869999,57.080002,58.580002,58.580002,396600
2019-03-26,58.790001,59.459999,57.900002,58.549999,58.549999,1102400
2019-03-27,58.590000,58.990002,57.910000,57.910000,57.910000,1711700
2019-03-28,57.580002,58.049999,56.549999,56.820000,56.820000,746900
2019-03-29,57.930000,59.470001,57.599998,59.240002,59.240002,765000
2019-04-01,60.000000,62.500000,59.770000,61.680000,61.680000,1182600
2019-04-02,61.529999,62.369999,61.119999,61.700001,61.700001,1089000
2019-04-03,63.259998,64.360001,62.770000,63.160000,63.160000,1098700
2019-04-04,62.869999,64.870003,62.520000,64.839996,64.839996,989500
2019-04-05,64.839996,66.660004,64.699997,66.320000,66.320000,866800
2019-04-08,65.430000,66.489998,65.430000,66.480003,66.480003,465500
2019-04-09,66.300003,66.449997,64.360001,64.589996,64.589996,899600
2019-04-10,64.650002,64.970001,63.189999,64.459999,64.459999,584000
2019-04-11,64.080002,64.720001,63.430000,63.919998,63.919998,545700
2019-04-12,64.690002,65.250000,63.880001,64.430000,64.430000,425600
2019-04-15,63.820000,64.360001,62.880001,63.779999,63.779999,658000
2019-04-16,64.309998,64.889999,63.360001,63.730000,63.730000,747900
2019-04-17,61.200001,65.449997,61.060001,64.739998,64.739998,1032300
2019-04-18,64.300003,65.180000,63.700001,65.110001,65.110001,522400
2019-04-22,64.570000,65.260002,64.169998,64.820000,64.820000,301400
2019-04-23,65.139999,65.680000,64.470001,64.820000,64.820000,358800
2019-04-24,64.699997,64.849998,63.599998,64.419998,64.419998,612600
2019-04-25,63.869999,64.559998,62.939999,63.009998,63.009998,600300
2019-04-26,63.570000,63.570000,62.310001,62.660000,62.660000,803900
2019-04-29,62.099998,63.549999,62.099998,63.279999,63.279999,434100
2019-04-30,62.889999,63.910000,62.759998,62.939999,62.939999,846100
2019-05-01,63.220001,63.950001,62.910000,63.349998,63.349998,303500
2019-05-02,63.049999,63.169998,62.000000,62.070000,62.070000,1138900
2019-05-03,62.590000,63.340000,62.139999,62.900002,62.900002,804900
2019-05-06,60.080002,60.560001,58.700001,59.919998,59.919998,1831200
2019-05-07,60.110001,60.189999,57.150002,57.980000,57.980000,989800
2019-05-08,58.529999,58.810001,56.830002,57.590000,57.590000,2106500
2019-05-09,56.500000,57.340000,55.250000,57.000000,57.000000,1249000
2019-05-10,56.779999,57.650002,55.009998,55.730000,55.730000,964700
2019-05-13,53.889999,54.660000,53.110001,54.439999,54.439999,836500
2019-05-14,56.020000,56.349998,53.930000,53.990002,53.990002,1041400
2019-05-15,53.730000,54.299999,53.090000,53.930000,53.930000,657200
2019-05-16,54.000000,54.549999,53.209999,53.480000,53.480000,812700
2019-05-17,52.000000,52.009998,48.799999,49.099998,49.099998,1734400
2019-05-20,47.810001,48.279999,47.000000,47.099998,47.099998,1009100
2019-05-21,47.709999,48.860001,47.259998,48.779999,48.779999,1218800
2019-05-22,48.680000,48.709999,47.080002,47.330002,47.330002,947700
2019-05-23,42.000000,42.974998,40.349998,42.360001,42.360001,2667771
================================================
FILE: dataset/TMUS.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-07-13,61.240002,61.810001,60.970001,61.680000,61.680000,3079300
2018-07-16,61.509998,62.090000,61.509998,61.630001,61.630001,1695100
2018-07-17,61.439999,61.990002,61.099998,61.209999,61.209999,1779700
2018-07-18,61.419998,61.490002,60.490002,60.520000,60.520000,1916800
2018-07-19,60.259998,60.380001,59.230000,59.410000,59.410000,2738600
2018-07-20,59.410000,59.610001,59.070000,59.250000,59.250000,2102600
2018-07-23,59.130001,59.230000,58.320000,58.360001,58.360001,2462100
2018-07-24,58.480000,59.099998,57.889999,58.779999,58.779999,2519700
2018-07-25,58.779999,59.320000,58.509998,58.830002,58.830002,2194900
2018-07-26,59.099998,59.799999,58.889999,59.369999,59.369999,2548000
2018-07-27,59.470001,60.669998,59.290001,59.610001,59.610001,2325100
2018-07-30,59.500000,60.740002,59.500000,59.820000,59.820000,2324200
2018-07-31,59.869999,60.200001,59.480000,60.000000,60.000000,2495700
2018-08-01,59.950001,60.169998,59.139999,59.360001,59.360001,4099300
2018-08-02,61.110001,62.240002,60.000000,62.180000,62.180000,6327000
2018-08-03,61.110001,62.259998,61.110001,61.549999,61.549999,2603300
2018-08-06,61.590000,66.400002,61.580002,66.300003,66.300003,14881000
2018-08-07,66.309998,66.339996,65.129997,65.330002,65.330002,4777600
2018-08-08,65.309998,65.650002,64.459999,65.500000,65.500000,3106500
2018-08-09,65.519997,65.739998,64.839996,64.970001,64.970001,2295400
2018-08-10,64.639999,65.199997,64.059998,64.980003,64.980003,2241600
2018-08-13,64.940002,65.800003,64.529999,65.699997,65.699997,3222200
2018-08-14,65.779999,66.440002,65.660004,65.959999,65.959999,3311900
2018-08-15,65.519997,65.900002,65.040001,65.410004,65.410004,2408500
2018-08-16,65.680000,66.209999,65.550003,65.980003,65.980003,2549400
2018-08-17,65.870003,66.059998,65.550003,65.900002,65.900002,3088400
2018-08-20,65.739998,66.239998,65.500000,65.839996,65.839996,2621400
2018-08-21,65.769997,66.639999,65.769997,66.510002,66.510002,1973900
2018-08-22,66.279999,66.410004,65.519997,65.809998,65.809998,1750200
2018-08-23,65.500000,65.900002,65.180000,65.209999,65.209999,1564500
2018-08-24,65.449997,65.930000,65.169998,65.410004,65.410004,1945600
2018-08-27,65.199997,65.940002,65.199997,65.800003,65.800003,1629300
2018-08-28,65.849998,66.089996,65.410004,65.589996,65.589996,1697800
2018-08-29,65.739998,66.489998,65.510002,65.980003,65.980003,2411700
2018-08-30,65.570000,66.360001,65.330002,66.010002,66.010002,1965700
2018-08-31,66.129997,66.379997,65.699997,66.040001,66.040001,2375200
2018-09-04,65.739998,66.300003,65.529999,65.769997,65.769997,2103900
2018-09-05,65.629997,66.029999,65.430000,65.709999,65.709999,3141100
2018-09-06,65.500000,65.959999,65.370003,65.519997,65.519997,2277400
2018-09-07,65.330002,65.639999,64.070000,64.389999,64.389999,2843100
2018-09-10,64.980003,65.800003,64.589996,65.559998,65.559998,2171600
2018-09-11,65.559998,66.019997,65.239998,65.910004,65.910004,1375400
2018-09-12,66.000000,68.320000,65.620003,67.919998,67.919998,5019900
2018-09-13,68.000000,68.709999,67.370003,68.480003,68.480003,3797300
2018-09-14,68.580002,68.650002,67.900002,68.250000,68.250000,3161700
2018-09-17,68.029999,68.180000,67.320000,67.419998,67.419998,2757300
2018-09-18,67.430000,68.580002,67.080002,68.489998,68.489998,4113100
2018-09-19,68.610001,68.870003,67.720001,68.349998,68.349998,2847100
2018-09-20,68.779999,69.150002,68.339996,69.129997,69.129997,1875200
2018-09-21,69.339996,69.769997,68.889999,69.070000,69.070000,4046100
2018-09-24,68.699997,69.339996,68.500000,68.919998,68.919998,2749300
2018-09-25,69.510002,69.550003,68.559998,69.449997,69.449997,2610800
2018-09-26,69.470001,69.489998,68.690002,68.790001,68.790001,2577700
2018-09-27,69.080002,70.629997,68.870003,70.489998,70.489998,3661000
2018-09-28,70.449997,70.879997,69.980003,70.180000,70.180000,3703800
2018-10-01,70.709999,70.940002,69.970001,70.250000,70.250000,2684400
2018-10-02,70.160004,70.580002,69.570000,69.720001,69.720001,2272300
2018-10-03,69.820000,69.980003,68.750000,68.980003,68.980003,5562000
2018-10-04,68.529999,68.989998,68.260002,68.949997,68.949997,2890600
2018-10-05,68.949997,69.730003,68.120003,68.589996,68.589996,2933600
2018-10-08,68.589996,69.239998,68.029999,68.820000,68.820000,3656400
2018-10-09,68.769997,69.349998,68.239998,68.459999,68.459999,3237200
2018-10-10,68.540001,69.050003,66.550003,66.629997,66.629997,6295500
2018-10-11,66.750000,67.709999,66.010002,66.209999,66.209999,5098300
2018-10-12,67.269997,68.599998,66.839996,68.379997,68.379997,3870600
2018-10-15,68.120003,68.660004,67.580002,67.620003,67.620003,3014000
2018-10-16,67.680000,69.129997,67.559998,68.940002,68.940002,2422300
2018-10-17,68.959999,69.660004,68.580002,69.080002,69.080002,2662700
2018-10-18,69.230003,69.690002,68.330002,68.769997,68.769997,2954400
2018-10-19,69.529999,70.139999,69.209999,69.750000,69.750000,4744300
2018-10-22,69.849998,70.209999,69.419998,69.510002,69.510002,2647300
2018-10-23,69.080002,69.769997,67.790001,69.279999,69.279999,3113000
2018-10-24,69.050003,69.370003,65.589996,65.709999,65.709999,5758800
2018-10-25,66.339996,67.000000,65.099998,66.320000,66.320000,6795200
2018-10-26,64.550003,65.559998,64.279999,65.110001,65.110001,7111300
2018-10-29,66.139999,66.660004,63.480000,64.910004,64.910004,4654800
2018-10-30,64.529999,65.489998,63.610001,63.919998,63.919998,6077300
2018-10-31,67.370003,69.599998,67.250000,68.550003,68.550003,9212400
2018-11-01,68.959999,69.599998,68.610001,68.879997,68.879997,4194700
2018-11-02,69.389999,69.449997,67.550003,68.510002,68.510002,2606400
2018-11-05,68.959999,69.669998,68.570000,68.889999,68.889999,2743100
2018-11-06,68.849998,69.279999,68.269997,68.769997,68.769997,3891400
2018-11-07,69.239998,70.779999,69.050003,70.339996,70.339996,3639600
2018-11-08,70.070000,70.750000,69.519997,69.750000,69.750000,2763700
2018-11-09,69.419998,69.699997,67.980003,68.680000,68.680000,2263600
2018-11-12,68.690002,69.160004,67.779999,67.889999,67.889999,2471500
2018-11-13,68.540001,69.410004,68.260002,68.410004,68.410004,4005100
2018-11-14,68.660004,69.220001,67.550003,68.120003,68.120003,3665500
2018-11-15,67.860001,68.360001,67.550003,68.080002,68.080002,2826800
2018-11-16,67.230003,69.699997,67.000000,69.139999,69.139999,5257200
2018-11-19,68.529999,69.599998,67.919998,68.000000,68.000000,3387500
2018-11-20,67.739998,67.779999,66.209999,66.570000,66.570000,5081100
2018-11-21,66.790001,67.510002,66.629997,66.779999,66.779999,3274200
2018-11-23,66.389999,67.459999,66.080002,67.070000,67.070000,1215200
2018-11-26,67.760002,67.889999,67.180000,67.489998,67.489998,3285100
2018-11-27,67.239998,68.120003,66.940002,67.489998,67.489998,2393800
2018-11-28,67.750000,68.980003,67.510002,68.919998,68.919998,3272000
2018-11-29,68.400002,68.940002,68.080002,68.680000,68.680000,2814600
2018-11-30,68.879997,69.209999,68.080002,68.449997,68.449997,3470700
2018-12-03,68.500000,69.019997,66.970001,67.800003,67.800003,3641200
2018-12-04,67.459999,68.540001,65.470001,66.570000,66.570000,5329700
2018-12-06,65.680000,67.550003,65.019997,67.300003,67.300003,4899100
2018-12-07,66.680000,68.470001,65.370003,65.690002,65.690002,3340800
2018-12-10,65.669998,65.959999,64.339996,65.730003,65.730003,3012500
2018-12-11,66.620003,67.339996,65.440002,65.529999,65.529999,2475300
2018-12-12,66.769997,67.080002,66.059998,66.099998,66.099998,3279600
2018-12-13,66.209999,66.849998,65.470001,66.360001,66.360001,3209600
2018-12-14,65.830002,66.690002,65.389999,65.650002,65.650002,2872700
2018-12-17,65.730003,65.940002,64.279999,64.809998,64.809998,3999300
2018-12-18,64.809998,65.629997,63.950001,64.779999,64.779999,4068400
2018-12-19,64.639999,66.570000,64.480003,64.870003,64.870003,4204100
2018-12-20,64.620003,65.309998,63.410000,64.260002,64.260002,5126900
2018-12-21,64.580002,65.370003,61.700001,61.930000,61.930000,7669100
2018-12-24,61.509998,61.720001,59.959999,60.799999,60.799999,2581800
2018-12-26,60.919998,63.029999,59.959999,63.009998,63.009998,5088100
2018-12-27,62.349998,62.660000,60.889999,62.650002,62.650002,4353500
2018-12-28,62.700001,63.750000,62.610001,63.240002,63.240002,4098300
2018-12-31,63.320000,63.650002,62.410000,63.610001,63.610001,3112500
2019-01-02,62.869999,65.330002,62.549999,65.260002,65.260002,4418600
2019-01-03,64.550003,66.239998,64.110001,65.019997,65.019997,3390700
2019-01-04,65.879997,67.559998,65.550003,67.489998,67.489998,5490200
2019-01-07,67.370003,68.610001,67.010002,68.440002,68.440002,4786900
2019-01-08,68.669998,68.680000,67.370003,67.769997,67.769997,6052700
2019-01-09,68.650002,68.669998,67.120003,67.720001,67.720001,4498600
2019-01-10,67.440002,68.860001,67.220001,67.959999,67.959999,3230800
2019-01-11,67.830002,69.059998,67.400002,69.000000,69.000000,4177300
2019-01-14,68.410004,68.519997,67.419998,67.910004,67.910004,2691000
2019-01-15,67.809998,68.559998,66.699997,67.139999,67.139999,5366700
2019-01-16,67.510002,67.610001,66.379997,66.690002,66.690002,3261000
2019-01-17,66.720001,66.750000,65.639999,66.250000,66.250000,3357400
2019-01-18,67.110001,68.050003,66.370003,66.959999,66.959999,4766500
2019-01-22,66.750000,67.190002,66.199997,66.830002,66.830002,2971200
2019-01-23,66.800003,67.849998,66.570000,67.800003,67.800003,1979500
2019-01-24,67.720001,68.660004,67.220001,68.660004,68.660004,2849800
2019-01-25,68.930000,69.269997,68.199997,68.480003,68.480003,4940400
2019-01-28,67.870003,68.489998,67.059998,67.620003,67.620003,2958100
2019-01-29,67.660004,67.940002,66.629997,67.779999,67.779999,2340100
2019-01-30,67.739998,68.690002,67.089996,68.320000,68.320000,2318300
2019-01-31,68.410004,70.120003,68.029999,69.620003,69.620003,5816100
2019-02-01,69.459999,69.779999,69.080002,69.629997,69.629997,3117900
2019-02-04,69.410004,69.629997,68.879997,69.410004,69.410004,1926200
2019-02-05,69.699997,69.699997,66.800003,66.849998,66.849998,5001100
2019-02-06,66.800003,67.300003,66.540001,66.940002,66.940002,4334500
2019-02-07,68.000000,68.459999,65.559998,68.279999,68.279999,7554600
2019-02-08,67.639999,68.470001,66.949997,68.379997,68.379997,4129500
2019-02-11,68.169998,69.180000,68.000000,68.440002,68.440002,2644100
2019-02-12,69.000000,69.669998,68.500000,69.599998,69.599998,2630700
2019-02-13,69.610001,69.959999,68.860001,69.070000,69.070000,4742400
2019-02-14,69.099998,70.519997,69.010002,70.500000,70.500000,3200300
2019-02-15,70.650002,72.070000,70.430000,72.050003,72.050003,5711300
2019-02-19,72.010002,72.860001,71.760002,72.519997,72.519997,3672800
2019-02-20,72.459999,73.080002,72.169998,72.750000,72.750000,4476900
2019-02-21,72.570000,73.760002,72.389999,73.410004,73.410004,4561200
2019-02-22,73.800003,74.059998,72.970001,73.199997,73.199997,2522000
2019-02-25,73.370003,73.529999,72.620003,73.050003,73.050003,2400400
2019-02-26,71.440002,72.970001,71.250000,72.529999,72.529999,2915400
2019-02-27,72.129997,72.529999,71.769997,72.120003,72.120003,2742600
2019-02-28,72.080002,72.699997,71.919998,72.209999,72.209999,3072600
2019-03-01,72.389999,72.599998,71.779999,72.339996,72.339996,1883600
2019-03-04,72.239998,72.339996,71.279999,71.650002,71.650002,2439400
2019-03-05,71.750000,71.980003,71.279999,71.410004,71.410004,1725600
2019-03-06,71.410004,71.599998,69.989998,70.779999,70.779999,4375400
2019-03-07,70.620003,71.379997,70.519997,71.320000,71.320000,2309300
2019-03-08,70.930000,71.250000,70.180000,70.650002,70.650002,3573400
2019-03-11,70.830002,71.580002,70.410004,71.470001,71.470001,2493100
2019-03-12,71.470001,72.129997,71.250000,71.699997,71.699997,2773200
2019-03-13,72.120003,72.480003,71.680000,72.250000,72.250000,1920400
2019-03-14,72.250000,72.440002,71.940002,72.339996,72.339996,1653300
2019-03-15,72.760002,73.500000,72.099998,73.459999,73.459999,2806200
2019-03-18,73.279999,73.910004,72.949997,73.680000,73.680000,2945300
2019-03-19,74.000000,74.059998,72.410004,72.589996,72.589996,4188100
2019-03-20,72.800003,72.930000,72.010002,72.059998,72.059998,3136200
2019-03-21,72.080002,72.739998,71.989998,72.260002,72.260002,2329200
2019-03-22,71.930000,72.470001,71.809998,71.900002,71.900002,3265900
2019-03-25,71.849998,72.410004,71.639999,72.309998,72.309998,1972400
2019-03-26,72.580002,73.360001,72.370003,73.339996,73.339996,2857200
2019-03-27,73.389999,73.790001,71.959999,72.239998,72.239998,4989700
2019-03-28,71.980003,72.250000,68.919998,69.150002,69.150002,5866500
2019-03-29,69.330002,69.489998,68.160004,69.099998,69.099998,5051900
2019-04-01,69.540001,70.040001,69.269997,69.970001,69.970001,3808300
2019-04-02,69.809998,70.160004,69.220001,69.730003,69.730003,3913300
2019-04-03,69.820000,70.019997,68.699997,69.000000,69.000000,3077500
2019-04-04,69.080002,70.129997,69.000000,70.050003,70.050003,3037100
2019-04-05,70.480003,70.750000,70.050003,70.349998,70.349998,3483100
2019-04-08,70.139999,71.239998,69.769997,71.230003,71.230003,4035400
2019-04-09,70.959999,71.660004,70.269997,71.419998,71.419998,2866800
2019-04-10,71.550003,72.330002,71.190002,72.160004,72.160004,2629900
2019-04-11,72.150002,73.010002,71.839996,73.000000,73.000000,2535700
2019-04-12,73.190002,73.879997,72.870003,73.709999,73.709999,2858700
2019-04-15,73.709999,73.860001,73.190002,73.790001,73.790001,2194500
2019-04-16,74.000000,74.269997,73.519997,74.099998,74.099998,2834500
2019-04-17,72.720001,74.309998,71.300003,72.459999,72.459999,7576000
2019-04-18,73.220001,73.779999,72.570000,73.750000,73.750000,2746800
2019-04-22,73.760002,73.860001,73.010002,73.720001,73.720001,1912400
2019-04-23,73.559998,74.000000,73.050003,73.750000,73.750000,2180400
2019-04-24,73.389999,73.870003,72.720001,73.330002,73.330002,2373500
2019-04-25,72.699997,73.580002,72.510002,72.709999,72.709999,3365800
2019-04-26,74.730003,74.730003,72.599998,72.919998,72.919998,3561900
2019-04-29,72.940002,73.820000,72.500000,73.599998,73.599998,2631300
2019-04-30,73.470001,73.739998,72.550003,72.989998,72.989998,3064900
2019-05-01,73.139999,74.110001,73.040001,73.580002,73.580002,2941100
2019-05-02,73.779999,73.949997,72.660004,73.610001,73.610001,2269300
2019-05-03,73.709999,74.779999,73.400002,74.739998,74.739998,2588800
2019-05-06,73.879997,74.510002,73.339996,74.459999,74.459999,1875700
2019-05-07,73.800003,74.449997,73.540001,74.000000,74.000000,2594800
2019-05-08,73.959999,73.959999,72.480003,72.629997,72.629997,2849200
2019-05-09,72.300003,74.400002,72.250000,74.250000,74.250000,3319800
2019-05-10,74.000000,75.320000,73.540001,75.230003,75.230003,3360500
2019-05-13,74.379997,74.739998,73.250000,73.419998,73.419998,3476800
2019-05-14,73.419998,73.870003,73.040001,73.599998,73.599998,2987100
2019-05-15,73.370003,74.779999,73.050003,74.629997,74.629997,3798200
2019-05-16,74.480003,77.129997,74.250000,75.379997,75.379997,4946400
2019-05-17,75.389999,76.320000,75.019997,75.370003,75.370003,3619000
2019-05-20,79.870003,80.930000,75.720001,78.290001,78.290001,20102700
2019-05-21,78.160004,78.290001,76.779999,77.150002,77.150002,6339000
2019-05-22,76.489998,77.129997,76.139999,76.349998,76.349998,3287300
2019-05-23,76.260002,77.000000,75.250000,76.010002,76.010002,3887000
2019-05-24,76.500000,77.449997,75.629997,77.269997,77.269997,3579500
2019-05-28,77.550003,77.980003,75.889999,75.910004,75.910004,5391300
2019-05-29,75.820000,76.650002,75.290001,76.129997,76.129997,3540700
2019-05-30,76.040001,76.570000,75.019997,76.029999,76.029999,4111900
2019-05-31,74.809998,75.250000,73.279999,73.440002,73.440002,5147800
2019-06-03,73.620003,74.639999,73.370003,74.199997,74.199997,2941000
2019-06-04,74.629997,75.739998,74.519997,75.690002,75.690002,3144700
2019-06-05,75.940002,76.550003,75.669998,76.290001,76.290001,1970200
2019-06-06,76.139999,76.440002,74.610001,75.949997,75.949997,2671000
2019-06-07,76.550003,77.139999,76.309998,77.029999,77.029999,2256600
2019-06-10,77.059998,77.379997,76.379997,76.669998,76.669998,3096000
2019-06-11,77.129997,77.459999,74.629997,75.459999,75.459999,3822500
2019-06-12,75.830002,75.900002,74.650002,75.379997,75.379997,3296200
2019-06-13,75.169998,75.279999,74.010002,74.449997,74.449997,4279700
2019-06-14,74.669998,78.000000,74.279999,74.900002,74.900002,4813600
2019-06-17,75.080002,75.430000,74.540001,75.269997,75.269997,2929000
2019-06-18,75.940002,77.129997,75.550003,76.440002,76.440002,4995900
2019-06-19,76.339996,78.500000,76.339996,78.279999,78.279999,3377800
2019-06-20,79.110001,79.260002,77.150002,77.930000,77.930000,3339500
2019-06-21,77.709999,77.750000,75.199997,75.699997,75.699997,5223900
2019-06-24,76.019997,76.550003,75.379997,75.540001,75.540001,2123000
2019-06-25,75.470001,75.500000,74.449997,74.580002,74.580002,2593900
2019-06-26,74.279999,74.400002,72.769997,73.040001,73.040001,4393300
2019-06-27,73.449997,73.720001,72.919998,73.290001,73.290001,2319600
2019-06-28,73.290001,74.489998,72.900002,74.139999,74.139999,4117800
2019-07-01,74.669998,74.669998,73.919998,74.150002,74.150002,2226100
2019-07-02,74.400002,75.779999,73.919998,75.480003,75.480003,2871700
2019-07-03,75.889999,77.029999,75.599998,75.820000,75.820000,2080900
2019-07-05,75.830002,76.430000,75.629997,76.230003,76.230003,1318500
2019-07-08,76.370003,76.389999,75.430000,75.629997,75.629997,1667300
2019-07-09,75.349998,75.830002,75.080002,75.150002,75.150002,3553000
2019-07-10,77.959999,78.949997,77.570000,78.629997,78.629997,14441200
2019-07-11,78.730003,78.879997,76.949997,78.260002,78.260002,10108700
2019-07-12,78.199997,79.730003,78.010002,79.449997,79.449997,63065600
================================================
FILE: dataset/TSLA.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-03-23,311.250000,311.250000,300.450012,301.540009,301.540009,6654900
2018-03-26,307.339996,307.589996,291.359985,304.179993,304.179993,8375200
2018-03-27,304.000000,304.269989,277.179993,279.179993,279.179993,13872000
2018-03-28,264.579987,268.679993,252.100006,257.779999,257.779999,21001400
2018-03-29,256.489990,270.959991,248.210007,266.130005,266.130005,15170700
2018-04-02,256.260010,260.329987,244.589996,252.479996,252.479996,16114000
2018-04-03,269.820007,273.350006,254.490005,267.529999,267.529999,18844400
2018-04-04,252.779999,288.369995,252.000000,286.940002,286.940002,19896700
2018-04-05,289.339996,306.260010,288.200012,305.720001,305.720001,19121100
2018-04-06,301.000000,309.279999,295.500000,299.299988,299.299988,13520300
2018-04-09,300.369995,309.500000,289.209991,289.660004,289.660004,10249800
2018-04-10,298.970001,307.100006,293.679993,304.700012,304.700012,10989800
2018-04-11,300.739990,308.980011,299.660004,300.929993,300.929993,7482900
2018-04-12,302.320007,303.950012,293.679993,294.079987,294.079987,7608800
2018-04-13,303.600006,303.950012,295.980011,300.339996,300.339996,7327200
2018-04-16,299.000000,299.660004,289.010010,291.209991,291.209991,6338500
2018-04-17,288.869995,292.170013,282.510010,287.690002,287.690002,7000000
2018-04-18,291.079987,300.239990,288.160004,293.350006,293.350006,6557700
2018-04-19,291.079987,301.010010,288.549988,300.079987,300.079987,6090600
2018-04-20,295.170013,299.980011,289.750000,290.239990,290.239990,5627900
2018-04-23,291.290009,291.619995,282.329987,283.369995,283.369995,4893400
2018-04-24,285.000000,287.089996,278.459991,283.459991,283.459991,5685300
2018-04-25,283.500000,285.160004,277.250000,280.690002,280.690002,4013600
2018-04-26,278.750000,285.790009,276.500000,285.480011,285.480011,4356000
2018-04-27,285.369995,294.470001,283.829987,294.079987,294.079987,4364600
2018-04-30,293.609985,298.730011,292.500000,293.899994,293.899994,4228200
2018-05-01,293.510010,300.820007,293.220001,299.920013,299.920013,4625600
2018-05-02,298.570007,306.850006,297.779999,301.149994,301.149994,8970400
2018-05-03,278.790009,288.040009,275.230011,284.450012,284.450012,17352100
2018-05-04,283.000000,296.859985,279.519989,294.089996,294.089996,8569400
2018-05-07,297.500000,305.959991,295.170013,302.769989,302.769989,8678200
2018-05-08,300.799988,307.750000,299.000000,301.970001,301.970001,5930000
2018-05-09,300.410004,307.010010,300.049988,306.850006,306.850006,5727400
2018-05-10,307.500000,312.989990,304.109985,305.019989,305.019989,5651600
2018-05-11,307.700012,308.880005,299.079987,301.059998,301.059998,4679600
2018-05-14,303.320007,304.940002,291.619995,291.970001,291.970001,7286800
2018-05-15,285.010010,286.959991,280.500000,284.179993,284.179993,9519200
2018-05-16,283.829987,288.809998,281.559998,286.480011,286.480011,5674000
2018-05-17,285.899994,289.190002,283.970001,284.540009,284.540009,4420600
2018-05-18,284.649994,284.649994,274.000000,276.820007,276.820007,7251900
2018-05-21,281.329987,291.489990,281.299988,284.489990,284.489990,9182600
2018-05-22,287.760010,288.000000,273.420013,275.010010,275.010010,8945800
2018-05-23,277.760010,279.910004,274.000000,279.070007,279.070007,5953100
2018-05-24,278.399994,281.109985,274.890015,277.850006,277.850006,4176700
2018-05-25,277.630005,279.640015,275.609985,278.850006,278.850006,3875100
2018-05-29,278.510010,286.500000,276.149994,283.760010,283.760010,5666600
2018-05-30,283.290009,295.010010,281.600006,291.720001,291.720001,7489700
2018-05-31,287.209991,290.369995,282.929993,284.730011,284.730011,5919700
2018-06-01,285.859985,291.950012,283.839996,291.820007,291.820007,5424400
2018-06-04,294.339996,299.000000,293.549988,296.739990,296.739990,4797800
2018-06-05,297.700012,297.799988,286.739990,291.130005,291.130005,5995200
2018-06-06,300.500000,322.170013,297.480011,319.500000,319.500000,18767300
2018-06-07,316.149994,330.000000,313.579987,316.089996,316.089996,14345300
2018-06-08,319.000000,324.480011,317.149994,317.660004,317.660004,8205200
2018-06-11,322.510010,334.660004,322.500000,332.100006,332.100006,13183500
2018-06-12,344.700012,354.970001,338.000000,342.769989,342.769989,22347400
2018-06-13,346.709991,347.200012,339.799988,344.779999,344.779999,9469800
2018-06-14,347.630005,358.750000,346.600006,357.720001,357.720001,10981000
2018-06-15,353.839996,364.670013,351.250000,358.170013,358.170013,10848300
2018-06-18,355.399994,373.730011,354.500000,370.829987,370.829987,12073200
2018-06-19,365.160004,370.000000,346.250000,352.549988,352.549988,12761900
2018-06-20,358.040009,364.380005,352.000000,362.220001,362.220001,8383700
2018-06-21,362.000000,366.209991,346.269989,347.510010,347.510010,7967100
2018-06-22,351.540009,352.250000,332.000000,333.630005,333.630005,10266100
2018-06-25,330.119995,338.470001,327.500000,333.010010,333.010010,6931300
2018-06-26,336.049988,343.549988,325.799988,342.000000,342.000000,7452500
2018-06-27,345.000000,350.790009,339.500000,344.500000,344.500000,8333700
2018-06-28,348.660004,357.019989,346.109985,349.929993,349.929993,8398000
2018-06-29,353.329987,353.859985,342.410004,342.950012,342.950012,6492400
2018-07-02,360.070007,364.779999,329.850006,335.070007,335.070007,18759800
2018-07-03,331.750000,332.489990,309.690002,310.859985,310.859985,12282600
2018-07-05,313.760010,314.390015,296.220001,309.160004,309.160004,17476400
2018-07-06,304.950012,312.070007,302.000000,308.899994,308.899994,8865500
2018-07-09,311.989990,318.519989,308.000000,318.510010,318.510010,7596800
2018-07-10,324.559998,327.679993,319.200012,322.470001,322.470001,9471500
2018-07-11,315.799988,321.940002,315.070007,318.959991,318.959991,4884100
2018-07-12,321.429993,323.230011,312.769989,316.709991,316.709991,5721200
2018-07-13,315.579987,319.579987,309.250000,318.869995,318.869995,5869800
2018-07-16,311.709991,315.160004,306.250000,310.100006,310.100006,7818700
2018-07-17,308.809998,324.739990,308.500000,322.690002,322.690002,6996200
2018-07-18,325.000000,325.500000,316.250000,323.850006,323.850006,5624200
2018-07-19,316.329987,323.540009,314.010010,320.230011,320.230011,5915300
2018-07-20,321.230011,323.239990,311.709991,313.579987,313.579987,5162200
2018-07-23,301.839996,305.500000,292.859985,303.200012,303.200012,10992900
2018-07-24,304.420013,307.720001,292.549988,297.429993,297.429993,9590800
2018-07-25,296.739990,309.619995,294.500000,308.739990,308.739990,7075400
2018-07-26,304.850006,310.700012,303.640015,306.649994,306.649994,4630500
2018-07-27,307.250000,307.690002,295.339996,297.179993,297.179993,5703300
2018-07-30,295.899994,296.100006,286.130005,290.170013,290.170013,6814100
2018-07-31,292.250000,298.320007,289.070007,298.140015,298.140015,5076900
2018-08-01,297.989990,303.000000,293.000000,300.839996,300.839996,10129400
2018-08-02,328.440002,349.989990,323.160004,349.540009,349.540009,23215000
2018-08-03,347.809998,355.000000,342.529999,348.170013,348.170013,13656500
2018-08-06,345.459991,354.980011,341.820007,341.989990,341.989990,8564300
2018-08-07,343.839996,387.459991,339.149994,379.570007,379.570007,30875800
2018-08-08,369.089996,382.640015,367.119995,370.339996,370.339996,24571200
2018-08-09,365.549988,367.010010,345.730011,352.450012,352.450012,17103700
2018-08-10,354.000000,360.000000,346.000000,355.489990,355.489990,11552000
2018-08-13,361.130005,363.190002,349.019989,356.410004,356.410004,10450200
2018-08-14,358.450012,359.200012,347.100006,347.640015,347.640015,6986400
2018-08-15,341.910004,344.489990,332.140015,338.690002,338.690002,9101300
2018-08-16,339.910004,342.279999,333.820007,335.450012,335.450012,6064000
2018-08-17,323.500000,326.769989,303.529999,305.500000,305.500000,18958600
2018-08-20,291.700012,308.500000,288.200012,308.440002,308.440002,17402300
2018-08-21,310.609985,324.790009,309.000000,321.899994,321.899994,13172200
2018-08-22,320.869995,323.880005,314.670013,321.640015,321.640015,5946000
2018-08-23,319.140015,327.320007,318.100006,320.100006,320.100006,5147300
2018-08-24,320.700012,323.850006,319.399994,322.820007,322.820007,3602600
2018-08-27,318.000000,322.440002,308.809998,319.269989,319.269989,13079300
2018-08-28,318.410004,318.880005,311.190002,311.859985,311.859985,7649100
2018-08-29,310.269989,311.850006,303.690002,305.010010,305.010010,7447400
2018-08-30,302.260010,304.600006,297.720001,303.149994,303.149994,7216700
2018-08-31,302.000000,305.309998,298.600006,301.660004,301.660004,5375100
2018-09-04,296.940002,298.190002,288.000000,288.950012,288.950012,8350500
2018-09-05,285.049988,286.779999,277.179993,280.739990,280.739990,7720800
2018-09-06,284.799988,291.170013,278.880005,280.950012,280.950012,7480800
2018-09-07,260.100006,268.350006,252.250000,263.239990,263.239990,22491900
2018-09-10,273.260010,286.029999,271.000000,285.500000,285.500000,14283500
2018-09-11,279.470001,282.000000,273.549988,279.440002,279.440002,9170000
2018-09-12,281.440002,292.500000,278.649994,290.540009,290.540009,10015400
2018-09-13,288.019989,295.000000,285.179993,289.459991,289.459991,6340300
2018-09-14,288.760010,297.329987,286.519989,295.200012,295.200012,6765600
2018-09-17,290.040009,300.869995,288.130005,294.839996,294.839996,6887600
2018-09-18,296.690002,302.640015,275.500000,284.959991,284.959991,16547500
2018-09-19,280.510010,300.000000,280.500000,299.019989,299.019989,8294900
2018-09-20,303.559998,305.980011,293.329987,298.329987,298.329987,7349400
2018-09-21,297.700012,300.579987,295.369995,299.100006,299.100006,5050500
2018-09-24,298.480011,303.000000,293.579987,299.679993,299.679993,4843000
2018-09-25,300.000000,304.600006,296.500000,300.989990,300.989990,4481700
2018-09-26,301.910004,313.890015,301.109985,309.579987,309.579987,7843200
2018-09-27,312.899994,314.959991,306.910004,307.519989,307.519989,8509100
2018-09-28,270.260010,278.000000,260.559998,264.769989,264.769989,33649700
2018-10-01,305.769989,311.440002,301.049988,310.700012,310.700012,21777600
2018-10-02,313.950012,316.839996,299.149994,301.019989,301.019989,11743500
2018-10-03,303.329987,304.600006,291.570007,294.799988,294.799988,7995000
2018-10-04,293.950012,294.000000,277.670013,281.829987,281.829987,9814200
2018-10-05,274.649994,274.880005,260.000000,261.950012,261.950012,17944500
2018-10-08,264.519989,267.760010,249.000000,250.559998,250.559998,13472700
2018-10-09,255.250000,266.769989,253.300003,262.799988,262.799988,12060600
2018-10-10,264.609985,265.510010,247.770004,256.880005,256.880005,12815300
2018-10-11,257.529999,262.250000,249.029999,252.229996,252.229996,8167700
2018-10-12,261.000000,261.989990,252.009995,258.779999,258.779999,7201400
2018-10-15,259.059998,263.279999,254.539993,259.589996,259.589996,6200000
2018-10-16,265.700012,277.380005,262.239990,276.589996,276.589996,9526400
2018-10-17,282.399994,282.700012,265.799988,271.779999,271.779999,8655500
2018-10-18,269.290009,271.000000,263.000000,263.910004,263.910004,5421200
2018-10-19,267.390015,269.660004,253.500000,260.000000,260.000000,9375500
2018-10-22,260.679993,261.859985,252.589996,260.950012,260.950012,5600300
2018-10-23,263.869995,297.929993,262.100006,294.140015,294.140015,19027800
2018-10-24,301.049988,304.440002,285.730011,288.500000,288.500000,20058300
2018-10-25,317.220001,321.000000,301.010010,314.859985,314.859985,20840700
2018-10-26,308.250000,339.899994,306.649994,330.899994,330.899994,27425500
2018-10-29,337.470001,347.160004,326.500000,334.850006,334.850006,14486000
2018-10-30,328.390015,337.899994,322.260010,329.899994,329.899994,9126700
2018-10-31,332.540009,342.000000,329.100006,337.320007,337.320007,7624300
2018-11-01,338.260010,347.839996,334.730011,344.279999,344.279999,8000100
2018-11-02,343.739990,349.200012,340.910004,346.410004,346.410004,7808000
2018-11-05,340.500000,343.959991,330.140015,341.399994,341.399994,7831000
2018-11-06,339.070007,348.799988,336.089996,341.059998,341.059998,6762900
2018-11-07,343.339996,351.179993,340.799988,348.160004,348.160004,7374500
2018-11-08,348.500000,357.579987,348.440002,351.399994,351.399994,7090700
2018-11-09,349.000000,354.000000,345.230011,350.510010,350.510010,5098800
2018-11-12,348.369995,349.779999,330.339996,331.279999,331.279999,6941500
2018-11-13,333.160004,344.700012,332.200012,338.730011,338.730011,5448600
2018-11-14,342.700012,347.109985,337.149994,344.000000,344.000000,5040300
2018-11-15,342.329987,348.579987,339.040009,348.440002,348.440002,4625700
2018-11-16,345.190002,355.700012,345.119995,354.309998,354.309998,7206200
2018-11-19,356.339996,366.750000,352.880005,353.470001,353.470001,9708900
2018-11-20,341.750000,349.799988,333.549988,347.489990,347.489990,8004700
2018-11-21,352.000000,353.100006,337.399994,338.190002,338.190002,4686800
2018-11-23,334.350006,337.500000,325.549988,325.829987,325.829987,4202600
2018-11-26,325.000000,346.220001,325.000000,346.000000,346.000000,7992100
2018-11-27,340.049988,346.959991,335.500000,343.920013,343.920013,6358300
2018-11-28,345.989990,348.279999,342.209991,347.869995,347.869995,4127600
2018-11-29,347.000000,347.500000,339.549988,341.170013,341.170013,3080700
2018-11-30,341.829987,351.600006,338.260010,350.480011,350.480011,5629100
2018-12-03,360.000000,366.000000,352.000000,358.489990,358.489990,8306500
2018-12-04,356.049988,368.679993,352.000000,359.700012,359.700012,8461900
2018-12-06,356.010010,367.380005,350.760010,363.059998,363.059998,7842500
2018-12-07,369.000000,379.489990,357.649994,357.970001,357.970001,11511200
2018-12-10,360.000000,365.980011,353.119995,365.149994,365.149994,6613500
2018-12-11,369.910004,372.170013,360.230011,366.760010,366.760010,6308800
2018-12-12,369.420013,371.910004,365.160004,366.600006,366.600006,5027000
2018-12-13,370.149994,377.440002,366.750000,376.790009,376.790009,7365900
2018-12-14,375.000000,377.869995,364.329987,365.709991,365.709991,6337600
2018-12-17,362.000000,365.700012,343.880005,348.420013,348.420013,7674000
2018-12-18,350.540009,351.549988,333.690002,337.029999,337.029999,7100000
2018-12-19,337.600006,347.010010,329.739990,332.970001,332.970001,8274200
2018-12-20,327.049988,330.290009,311.869995,315.380005,315.380005,9071900
2018-12-21,317.399994,323.470001,312.440002,319.769989,319.769989,8016800
2018-12-24,313.500000,314.500000,295.200012,295.390015,295.390015,5559900
2018-12-26,300.000000,326.970001,294.089996,326.089996,326.089996,8163100
2018-12-27,319.839996,322.170013,301.500000,316.130005,316.130005,8575100
2018-12-28,323.100006,336.239990,318.410004,333.869995,333.869995,9939000
2018-12-31,337.790009,339.209991,325.260010,332.799988,332.799988,6302300
2019-01-02,306.100006,315.130005,298.799988,310.119995,310.119995,11658600
2019-01-03,307.000000,309.399994,297.380005,300.359985,300.359985,6965200
2019-01-04,306.000000,318.000000,302.730011,317.690002,317.690002,7394100
2019-01-07,321.720001,336.739990,317.750000,334.959991,334.959991,7551200
2019-01-08,341.959991,344.010010,327.019989,335.350006,335.350006,7008500
2019-01-09,335.500000,343.500000,331.470001,338.529999,338.529999,5432900
2019-01-10,334.399994,345.390015,331.790009,344.970001,344.970001,6056400
2019-01-11,342.089996,348.410004,338.769989,347.260010,347.260010,5039100
2019-01-14,342.380005,342.500000,334.000000,334.399994,334.399994,5247300
2019-01-15,335.000000,348.799988,334.500000,344.429993,344.429993,6056600
2019-01-16,344.779999,352.000000,343.500000,346.049988,346.049988,4691700
2019-01-17,346.209991,351.500000,344.149994,347.309998,347.309998,3676700
2019-01-18,323.000000,327.130005,299.730011,302.260010,302.260010,24150800
2019-01-22,304.820007,308.000000,295.500000,298.920013,298.920013,12066700
2019-01-23,292.500000,294.500000,281.690002,287.589996,287.589996,12530000
2019-01-24,283.029999,293.679993,279.279999,291.510010,291.510010,8012200
2019-01-25,294.390015,298.519989,289.549988,297.040009,297.040009,7249600
2019-01-28,292.910004,297.459991,287.750000,296.380005,296.380005,6423300
2019-01-29,295.269989,298.559998,291.799988,297.459991,297.459991,4621700
2019-01-30,300.450012,309.000000,298.489990,308.769989,308.769989,11250300
2019-01-31,301.000000,311.559998,294.000000,307.019989,307.019989,12569200
2019-02-01,305.420013,316.100006,303.500000,312.209991,312.209991,7283400
2019-02-04,312.980011,315.299988,301.880005,312.890015,312.890015,7352100
2019-02-05,312.489990,322.440002,312.250000,321.350006,321.350006,6742800
2019-02-06,319.589996,324.239990,315.619995,317.220001,317.220001,5038500
2019-02-07,313.299988,314.700012,303.000000,307.510010,307.510010,6520600
2019-02-08,306.829987,307.450012,298.500000,305.799988,305.799988,5844200
2019-02-11,311.600006,318.600006,310.500000,312.839996,312.839996,7129700
2019-02-12,316.200012,318.190002,309.619995,311.809998,311.809998,5517600
2019-02-13,312.350006,312.750000,305.570007,308.170013,308.170013,5141600
2019-02-14,303.380005,306.769989,301.000000,303.769989,303.769989,5200800
2019-02-15,304.500000,308.000000,303.899994,307.880005,307.880005,3904900
2019-02-19,306.559998,311.540009,305.470001,305.640015,305.640015,4168400
2019-02-20,304.410004,306.299988,299.000000,302.559998,302.559998,7142100
2019-02-21,301.809998,303.239990,290.500000,291.230011,291.230011,8909200
2019-02-22,294.489990,296.500000,292.100006,294.709991,294.709991,5740600
2019-02-25,297.910004,302.899994,297.000000,298.769989,298.769989,6626500
2019-02-26,292.220001,302.010010,288.769989,297.859985,297.859985,8582500
2019-02-27,301.779999,316.299988,300.549988,314.739990,314.739990,11183900
2019-02-28,318.920013,320.000000,310.809998,319.880005,319.880005,10520700
2019-03-01,306.940002,307.130005,291.899994,294.790009,294.790009,22911400
2019-03-04,298.119995,299.000000,282.779999,285.359985,285.359985,17096800
2019-03-05,282.000000,284.000000,270.100006,276.540009,276.540009,18764700
2019-03-06,276.480011,281.510010,274.390015,276.239990,276.239990,10335500
2019-03-07,278.839996,284.700012,274.250000,276.589996,276.589996,9442500
2019-03-08,276.910004,285.589996,275.890015,284.140015,284.140015,8819600
2019-03-11,283.519989,291.279999,280.500000,290.920013,290.920013,7392300
2019-03-12,286.489990,288.070007,281.059998,283.359985,283.359985,7504100
2019-03-13,283.899994,291.989990,282.700012,288.959991,288.959991,6844700
2019-03-14,292.450012,295.390015,288.290009,289.959991,289.959991,7103400
2019-03-15,283.510010,283.720001,274.399994,275.429993,275.429993,14785500
2019-03-18,276.000000,278.049988,267.299988,269.489990,269.489990,10281000
2019-03-19,267.500000,273.299988,263.459991,267.470001,267.470001,11800600
2019-03-20,269.690002,274.970001,266.299988,273.600006,273.600006,6908200
2019-03-21,272.600006,276.450012,268.450012,274.019989,274.019989,5947100
2019-03-22,272.579987,272.799988,264.000000,264.529999,264.529999,8732600
================================================
FILE: dataset/TWTR.csv
================================================
Date,Open,High,Low,Close,Adj Close,Volume
2018-05-23,32.700001,33.430000,32.599998,33.419998,33.419998,13407500
2018-05-24,33.439999,33.759998,33.119999,33.520000,33.520000,14491900
2018-05-25,33.540001,33.990002,33.310001,33.630001,33.630001,10424400
2018-05-29,33.419998,34.830002,33.349998,34.040001,34.040001,22086700
2018-05-30,34.200001,34.660000,34.080002,34.360001,34.360001,14588200
2018-05-31,34.389999,34.970001,34.250000,34.700001,34.700001,14433200
2018-06-01,35.139999,36.689999,35.090000,36.650002,36.650002,29583100
2018-06-04,36.450001,37.980000,35.950001,37.880001,37.880001,32632800
2018-06-05,39.529999,40.160000,39.189999,39.799999,39.799999,66122200
2018-06-06,39.419998,40.230000,39.209999,40.099998,40.099998,147805700
2018-06-07,40.139999,40.160000,38.639999,39.700001,39.700001,41573400
2018-06-08,39.490002,41.259998,39.419998,41.209999,41.209999,34538900
2018-06-11,41.419998,41.689999,40.660000,41.419998,41.419998,24605300
2018-06-12,42.470001,44.330002,42.410000,43.490002,43.490002,51155000
2018-06-13,44.240002,44.549999,43.419998,44.070000,44.070000,35169200
2018-06-14,44.549999,46.799999,44.500000,46.759998,46.759998,50949100
2018-06-15,46.619999,47.790001,45.639999,45.799999,45.799999,51489600
2018-06-18,45.340000,46.259998,44.500000,46.000000,46.000000,26025600
2018-06-19,45.189999,45.709999,43.570000,44.950001,44.950001,39252000
2018-06-20,45.560001,46.919998,45.439999,46.130001,46.130001,31230200
2018-06-21,46.360001,46.869999,44.200001,45.240002,45.240002,32200300
2018-06-22,45.580002,46.009998,44.500000,45.880001,45.880001,28628900
2018-06-25,45.470001,45.520000,43.330002,44.169998,44.169998,31379300
2018-06-26,44.360001,45.320000,43.509998,44.840000,44.840000,20194100
2018-06-27,45.500000,46.220001,43.680000,43.700001,43.700001,25875500
2018-06-28,43.650002,44.840000,42.490002,44.790001,44.790001,18911200
2018-06-29,45.049999,45.200001,43.560001,43.669998,43.669998,24392900
2018-07-02,43.060001,45.000000,42.750000,44.980000,44.980000,16703600
2018-07-03,45.360001,45.480000,43.799999,43.889999,43.889999,14237500
2018-07-05,44.070000,45.110001,43.549999,45.060001,45.060001,16172000
2018-07-06,44.910000,46.750000,44.610001,46.650002,46.650002,23740700
2018-07-09,46.740002,46.900002,42.080002,44.139999,44.139999,107582400
2018-07-10,44.200001,45.259998,43.630001,43.750000,43.750000,38467400
2018-07-11,42.630001,44.099998,42.220001,43.869999,43.869999,35100100
2018-07-12,44.799999,45.340000,44.360001,45.259998,45.259998,27078500
2018-07-13,45.279999,45.320000,43.930000,44.490002,44.490002,16426700
2018-07-16,44.299999,44.730000,43.910000,44.259998,44.259998,13012800
2018-07-17,43.590000,45.259998,43.150002,44.709999,44.709999,20122300
2018-07-18,44.189999,44.750000,42.740002,43.340000,43.340000,26536800
2018-07-19,43.270000,43.869999,43.110001,43.439999,43.439999,13366800
2018-07-20,43.500000,44.130001,43.230000,43.419998,43.419998,10437700
2018-07-23,43.450001,43.849998,42.400002,43.310001,43.310001,15251200
2018-07-24,43.770000,43.799999,41.590000,42.169998,42.169998,22433900
2018-07-25,42.349998,44.389999,42.349998,44.220001,44.220001,25140700
2018-07-26,42.869999,43.410000,42.139999,42.939999,42.939999,30018700
2018-07-27,37.250000,37.470001,33.900002,34.119999,34.119999,122752800
2018-07-30,34.169998,34.259998,31.070000,31.379999,31.379999,77852400
2018-07-31,31.950001,32.480000,31.070000,31.870001,31.870001,64392200
2018-08-01,32.250000,32.590000,31.459999,31.910000,31.910000,33231700
2018-08-02,31.580000,32.869999,31.340000,32.820000,32.820000,27088000
2018-08-03,32.580002,32.990002,31.799999,31.959999,31.959999,26317000
2018-08-06,31.820000,33.040001,31.450001,32.980000,32.980000,27512400
2018-08-07,33.099998,33.610001,32.549999,32.669998,32.669998,24635600
2018-08-08,32.750000,32.779999,31.809999,31.840000,31.840000,22539400
2018-08-09,31.850000,32.380001,31.610001,31.959999,31.959999,17637600
2018-08-10,31.650000,32.250000,31.469999,32.009998,32.009998,16073900
2018-08-13,32.040001,33.619999,32.020000,32.799999,32.799999,44134600
2018-08-14,33.400002,33.430000,32.520000,33.189999,33.189999,26442600
2018-08-15,32.810001,33.230000,31.950001,32.380001,32.380001,26433400
2018-08-16,32.700001,33.150002,32.419998,32.830002,32.830002,20873200
2018-08-17,32.740002,33.090000,32.340000,32.730000,32.730000,14874600
2018-08-20,32.790001,32.939999,32.200001,32.599998,32.599998,16535700
2018-08-21,32.750000,34.139999,32.599998,33.689999,33.689999,29575700
2018-08-22,33.450001,34.169998,33.349998,33.810001,33.810001,18576300
2018-08-23,33.900002,34.740002,33.720001,33.880001,33.880001,25746300
2018-08-24,34.000000,34.490002,33.930000,34.279999,34.279999,15214000
2018-08-27,34.660000,36.000000,34.480000,35.889999,35.889999,28306300
2018-08-28,35.980000,36.040001,34.889999,35.490002,35.490002,22281600
2018-08-29,35.410000,35.599998,34.810001,35.349998,35.349998,17697200
2018-08-30,35.270000,36.150002,35.209999,35.639999,35.639999,19217200
2018-08-31,35.570000,35.720001,34.590000,35.180000,35.180000,19073900
2018-09-04,34.750000,35.130001,34.480000,34.840000,34.840000,13567600
2018-09-05,34.650002,34.700001,32.509998,32.730000,32.730000,36051100
2018-09-06,32.860001,32.950001,30.620001,30.809999,30.809999,36023600
2018-09-07,30.309999,31.389999,29.820000,30.490000,30.490000,31484200
2018-09-10,30.500000,30.600000,29.950001,30.540001,30.540001,17805800
2018-09-11,30.440001,31.440001,30.350000,30.889999,30.889999,16000100
2018-09-12,30.610001,30.830000,29.250000,29.750000,29.750000,29845200
2018-09-13,30.100000,30.570000,29.860001,30.389999,30.389999,18522500
2018-09-14,30.450001,30.770000,30.059999,30.120001,30.120001,13474700
2018-09-17,29.049999,29.280001,28.430000,28.860001,28.860001,30592300
2018-09-18,28.840000,29.629999,28.750000,29.219999,29.219999,15856800
2018-09-19,29.150000,29.559999,28.820000,29.520000,29.520000,16023500
2018-09-20,29.700001,30.020000,29.240000,29.850000,29.850000,15373600
2018-09-21,29.860001,29.950001,28.490000,28.500000,28.500000,43122600
2018-09-24,28.330000,29.120001,27.930000,28.600000,28.600000,20249000
2018-09-25,28.750000,29.240000,28.440001,29.110001,29.110001,16130300
2018-09-26,29.200001,29.450001,28.799999,29.010000,29.010000,12742100
2018-09-27,29.059999,29.690001,28.879999,29.420000,29.420000,14830500
2018-09-28,29.250000,29.280001,28.410000,28.459999,28.459999,22719600
2018-10-01,28.510000,28.700001,28.000000,28.309999,28.309999,20538900
2018-10-02,28.139999,28.620001,27.910000,28.190001,28.190001,17714400
2018-10-03,28.379999,29.120001,28.250000,29.010000,29.010000,19358700
2018-10-04,28.750000,28.760000,27.870001,28.230000,28.230000,21120400
2018-10-05,28.340000,28.959999,27.969999,28.389999,28.389999,28996100
2018-10-08,28.209999,28.940001,27.719999,28.450001,28.450001,22114400
2018-10-09,28.700001,29.570000,28.340000,29.270000,29.270000,22749300
2018-10-10,29.120001,29.120001,26.760000,26.790001,26.790001,40399400
2018-10-11,26.350000,27.580000,26.190001,27.000000,27.000000,33065300
2018-10-12,28.090000,28.170000,27.260000,27.990000,27.990000,27127500
2018-10-15,27.850000,29.049999,27.590000,28.610001,28.610001,20225200
2018-10-16,29.100000,29.889999,28.840000,29.870001,29.870001,18443000
2018-10-17,29.950001,30.139999,28.959999,29.549999,29.549999,19379400
2018-10-18,29.400000,30.240000,28.980000,29.290001,29.290001,24174300
2018-10-19,29.330000,29.790001,28.680000,28.830000,28.830000,20112900
2018-10-22,29.049999,29.280001,28.309999,29.180000,29.180000,21719400
2018-10-23,28.480000,29.020000,28.070000,28.770000,28.770000,26503600
2018-10-24,28.850000,29.770000,27.309999,27.540001,27.540001,37910200
2018-10-25,31.320000,33.669998,30.760000,31.799999,31.799999,79251000
2018-10-26,31.200001,33.139999,30.940001,32.360001,32.360001,47747000
2018-10-29,32.459999,33.750000,31.620001,32.389999,32.389999,40899900
2018-10-30,31.770000,34.549999,31.299999,33.860001,33.860001,43678200
2018-10-31,34.369999,35.639999,34.349998,34.750000,34.750000,33063700
2018-11-01,34.599998,34.910000,33.820000,34.619999,34.619999,27498000
2018-11-02,34.869999,35.349998,33.849998,34.299999,34.299999,23994800
2018-11-05,34.259998,34.279999,33.369999,34.020000,34.020000,18214300
2018-11-06,33.959999,34.810001,33.840000,34.419998,34.419998,15508300
2018-11-07,34.750000,35.119999,34.380001,34.990002,34.990002,16802100
2018-11-08,34.880001,34.990002,33.869999,34.180000,34.180000,15146400
2018-11-09,33.750000,34.419998,33.389999,34.080002,34.080002,16034700
2018-11-12,34.000000,34.099998,31.780001,32.009998,32.009998,18147500
2018-11-13,32.240002,32.849998,31.469999,32.490002,32.490002,17206300
2018-11-14,32.889999,33.849998,32.750000,32.910000,32.910000,19448700
2018-11-15,32.790001,33.360001,32.619999,33.150002,33.150002,16824800
2018-11-16,32.830002,33.919998,32.599998,33.669998,33.669998,17904100
2018-11-19,33.560001,33.599998,31.840000,31.980000,31.980000,15745000
2018-11-20,29.969999,31.740000,29.940001,31.059999,31.059999,20927600
2018-11-21,31.670000,32.080002,31.100000,31.610001,31.610001,16466900
2018-11-23,31.299999,31.959999,31.110001,31.120001,31.120001,5813900
2018-11-26,31.600000,32.869999,31.520000,32.820000,32.820000,17096000
2018-11-27,32.439999,33.099998,32.360001,32.610001,32.610001,10727400
2018-11-28,33.000000,33.000000,31.719999,32.730000,32.730000,19073300
2018-11-29,32.459999,32.540001,29.870001,31.299999,31.299999,50505700
2018-11-30,31.150000,31.549999,30.110001,31.450001,31.450001,25833200
2018-12-03,32.240002,33.849998,32.209999,33.660000,33.660000,24027100
2018-12-04,33.279999,34.160000,32.500000,32.560001,32.560001,22472000
2018-12-06,32.459999,32.970001,31.110001,32.959999,32.959999,25922800
2018-12-07,32.840000,34.369999,32.669998,32.830002,32.830002,29497100
2018-12-10,32.730000,33.639999,32.259998,33.430000,33.430000,19971100
2018-12-11,34.130001,35.750000,33.880001,34.450001,34.450001,30118600
2018-12-12,34.970001,37.139999,34.849998,36.250000,36.250000,32608500
2018-12-13,36.400002,36.490002,35.299999,35.889999,35.889999,22831600
2018-12-14,35.250000,36.619999,35.049999,35.869999,35.869999,19528500
2018-12-17,35.680000,35.700001,33.200001,33.430000,33.430000,23880900
2018-12-18,33.630001,34.169998,33.080002,33.740002,33.740002,18885100
2018-12-19,33.709999,34.700001,32.660000,32.930000,32.930000,24784300
2018-12-20,32.590000,32.720001,28.510000,29.290001,29.290001,51983000
2018-12-21,29.309999,29.760000,27.040001,27.309999,27.309999,38714100
2018-12-24,26.549999,27.270000,26.260000,26.450001,26.450001,18208300
2018-12-26,27.000000,28.700001,26.799999,28.660000,28.660000,35529600
2018-12-27,28.139999,28.920000,27.260000,28.680000,28.680000,31987700
2018-12-28,28.930000,29.139999,27.840000,28.430000,28.430000,21820500
2018-12-31,28.600000,29.129999,28.340000,28.740000,28.740000,15975000
2019-01-02,28.260000,28.990000,27.870001,28.809999,28.809999,15053700
2019-01-03,28.379999,29.180000,27.940001,27.990000,27.990000,19031000
2019-01-04,28.389999,30.100000,28.309999,29.950001,29.950001,23412600
2019-01-07,30.200001,31.379999,29.770000,31.340000,31.340000,19917800
2019-01-08,31.700001,32.049999,30.910000,31.799999,31.799999,18915200
2019-01-09,31.799999,32.400002,31.540001,32.250000,32.250000,14554400
2019-01-10,33.080002,33.500000,32.259998,33.090000,33.090000,30504500
2019-01-11,32.849998,33.200001,32.430000,32.869999,32.869999,17732300
2019-01-14,32.380001,32.750000,32.119999,32.369999,32.369999,9523000
2019-01-15,32.509998,33.349998,32.450001,33.020000,33.020000,13548200
2019-01-16,33.099998,33.299999,32.439999,32.470001,32.470001,10130200
2019-01-17,32.470001,33.090000,32.389999,32.849998,32.849998,12059700
2019-01-18,33.049999,33.889999,32.770000,33.270000,33.270000,16776800
2019-01-22,32.970001,33.349998,31.930000,32.250000,32.250000,17780800
2019-01-23,32.259998,32.450001,30.719999,30.969999,30.969999,21084400
2019-01-24,30.940001,31.730000,30.910000,31.610001,31.610001,12470400
2019-01-25,31.990000,33.619999,31.980000,32.900002,32.900002,22513700
2019-01-28,32.650002,33.200001,32.119999,33.130001,33.130001,21750800
2019-01-29,33.330002,33.549999,31.459999,31.639999,31.639999,18849800
2019-01-30,32.040001,32.380001,31.420000,32.259998,32.259998,17142500
2019-01-31,33.070000,33.689999,32.790001,33.560001,33.560001,21211300
2019-02-01,33.560001,34.090000,32.959999,33.189999,33.189999,18816600
2019-02-04,33.340000,34.180000,33.240002,33.939999,33.939999,14244100
2019-02-05,34.290001,34.570000,33.919998,34.369999,34.369999,17610200
2019-02-06,35.049999,35.250000,33.750000,34.160000,34.160000,34058000
2019-02-07,31.170000,31.730000,30.309999,30.799999,30.799999,69764100
2019-02-08,30.469999,30.740000,29.420000,30.010000,30.010000,40669800
2019-02-11,30.170000,30.440001,29.660000,30.230000,30.230000,28838200
2019-02-12,30.440001,30.799999,30.230000,30.389999,30.389999,20315300
2019-02-13,30.570000,31.840000,30.549999,31.120001,31.120001,29683300
2019-02-14,30.860001,31.280001,30.600000,30.959999,30.959999,15321100
2019-02-15,31.200001,31.799999,30.969999,31.230000,31.230000,17591500
2019-02-19,31.230000,32.110001,31.150000,31.650000,31.650000,14391700
2019-02-20,31.709999,31.930000,31.209999,31.370001,31.370001,16871100
2019-02-21,31.360001,31.480000,30.600000,30.760000,30.760000,13944900
2019-02-22,30.809999,31.730000,30.809999,31.709999,31.709999,15413400
2019-02-25,31.990000,32.709999,31.879999,31.990000,31.990000,15061300
2019-02-26,31.889999,31.959999,30.990000,31.010000,31.010000,17519100
2019-02-27,30.950001,31.000000,29.900000,30.410000,30.410000,24639100
2019-02-28,30.250000,30.790001,30.010000,30.780001,30.780001,15242900
2019-03-01,31.170000,31.190001,30.280001,30.620001,30.620001,12360700
2019-03-04,30.780001,31.260000,30.070000,30.500000,30.500000,15920400
2019-03-05,30.500000,31.230000,30.389999,31.030001,31.030001,13073500
2019-03-06,30.940001,31.340000,30.590000,30.799999,30.799999,10938600
2019-03-07,30.760000,30.840000,30.010000,30.120001,30.120001,15770300
2019-03-08,29.639999,30.209999,29.410000,30.040001,30.040001,11964300
2019-03-11,30.240000,30.910000,30.240000,30.870001,30.870001,16013200
2019-03-12,31.150000,31.410000,30.889999,31.160000,31.160000,12324300
2019-03-13,31.309999,31.480000,31.040001,31.299999,31.299999,10201300
2019-03-14,31.280001,31.549999,30.940001,31.030001,31.030001,12090600
2019-03-15,31.040001,31.410000,30.709999,31.219999,31.219999,17522700
2019-03-18,31.250000,31.580000,30.840000,31.080000,31.080000,13172600
2019-03-19,31.150000,31.500000,30.879999,31.270000,31.270000,15557400
2019-03-20,31.240000,32.650002,31.160000,32.570000,32.570000,22373800
2019-03-21,32.310001,32.689999,32.029999,32.610001,32.610001,13346900
2019-03-22,32.500000,34.209999,32.340000,33.020000,33.020000,28034700
2019-03-25,32.830002,33.299999,32.279999,32.590000,32.590000,15272300
2019-03-26,32.980000,33.860001,32.919998,33.060001,33.060001,17252300
2019-03-27,32.930000,33.450001,31.950001,32.279999,32.279999,13669400
2019-03-28,32.290001,32.930000,31.730000,32.869999,32.869999,17750600
2019-03-29,33.099998,33.240002,32.470001,32.880001,32.880001,13529300
2019-04-01,33.160000,33.680000,32.700001,33.439999,33.439999,12499700
2019-04-02,33.439999,33.889999,33.230000,33.750000,33.750000,11638000
2019-04-03,34.000000,34.759998,33.810001,34.380001,34.380001,18041000
2019-04-04,34.700001,35.139999,33.900002,34.419998,34.419998,14604100
2019-04-05,34.549999,34.799999,34.369999,34.720001,34.720001,9571700
2019-04-08,34.790001,35.060001,34.509998,34.860001,34.860001,10655000
2019-04-09,34.840000,35.389999,34.810001,35.139999,35.139999,13889700
2019-04-10,35.259998,35.270000,34.509998,34.750000,34.750000,11648800
2019-04-11,34.750000,34.869999,34.410000,34.580002,34.580002,10982700
2019-04-12,34.669998,34.830002,34.110001,34.369999,34.369999,12713800
2019-04-15,34.380001,35.029999,34.340000,34.709999,34.709999,10248400
2019-04-16,34.840000,34.990002,34.230000,34.459999,34.459999,9396300
2019-04-17,34.730000,34.900002,34.200001,34.480000,34.480000,9023000
2019-04-18,34.669998,34.860001,34.320000,34.400002,34.400002,9806100
2019-04-22,34.400002,34.619999,33.820000,34.389999,34.389999,19704300
2019-04-23,36.930000,40.529999,36.910000,39.770000,39.770000,104262500
2019-04-24,39.860001,39.950001,38.799999,39.290001,39.290001,30266900
2019-04-25,39.259998,40.130001,38.189999,38.480000,38.480000,26044800
2019-04-26,38.590000,39.340000,38.180000,38.669998,38.669998,15270500
2019-04-29,38.630001,39.970001,38.630001,39.779999,39.779999,19680000
2019-04-30,39.790001,40.919998,39.650002,39.910000,39.910000,22912000
2019-05-01,40.000000,40.070000,39.259998,39.290001,39.290001,14962600
2019-05-02,39.240002,40.000000,38.840000,39.950001,39.950001,13419100
2019-05-03,40.480000,40.820000,39.959999,40.799999,40.799999,15577100
2019-05-06,39.689999,40.439999,39.450001,40.230000,40.230000,14517400
2019-05-07,39.900002,40.150002,38.119999,38.619999,38.619999,19283100
2019-05-08,38.450001,39.150002,38.330002,38.580002,38.580002,9168400
2019-05-09,38.110001,39.020000,37.820000,38.790001,38.790001,10010700
2019-05-10,38.680000,39.160000,37.860001,38.450001,38.450001,12259000
2019-05-13,37.500000,37.639999,36.369999,36.590000,36.590000,16829700
2019-05-14,37.040001,37.520000,36.599998,36.930000,36.930000,11125100
2019-05-15,36.669998,38.139999,36.639999,37.900002,37.900002,11523100
2019-05-16,38.110001,38.720001,38.049999,38.299999,38.299999,10104400
2019-05-17,37.830002,38.130001,37.470001,37.500000,37.500000,9090300
2019-05-20,37.119999,37.730000,36.919998,37.150002,37.150002,9411900
2019-05-21,37.470001,37.860001,37.330002,37.470001,37.470001,8861400
2019-05-22,37.410000,39.320000,37.240002,38.580002,38.580002,21093500
2019-05-23,38.150002,38.290001,36.799999,37.189999,37.189999,18096372
================================================
FILE: dataset/eur-myr.csv
================================================
Historical EUR to MYR Exchange Rates,Unnamed: 1
02-11-17,4.926
01-11-17,4.9232
31-10-17,4.9255
30-10-17,4.9239
29-10-17,4.9251
28-10-17,4.9251
27-10-17,4.9325
26-10-17,5.0033
25-10-17,4.9782
24-10-17,4.98
23-10-17,4.9788
22-10-17,4.9794
21-10-17,4.9794
20-10-17,4.9947
19-10-17,4.9835
18-10-17,4.9576
17-10-17,4.9717
16-10-17,4.9764
15-10-17,4.9899
14-10-17,4.9899
13-10-17,4.987
12-10-17,5.0071
11-10-17,4.9793
10-10-17,4.9729
09-10-17,4.9701
08-10-17,4.9701
07-10-17,4.9701
06-10-17,4.9613
05-10-17,4.9747
04-10-17,4.9776
================================================
FILE: dataset/oil.csv
================================================
"Date","Price","Open","High","Low","Vol.","Change %"
"Nov 02, 2017","54.27","54.26","54.39","54.22","0","0.06"
"Nov 01, 2017","54.24","54.59","55.22","53.89","0","-0.26"
"Oct 31, 2017","54.38","54.08","54.85","53.93","497.30K","0.42"
"Oct 30, 2017","54.15","54.16","54.46","53.75","565.04K","0.46"
"Oct 27, 2017","53.90","52.80","54.20","52.25","730.92K","2.39"
"Oct 26, 2017","52.64","52.19","52.86","51.91","594.65K","0.88"
"Oct 25, 2017","52.18","52.56","52.57","51.89","681.74K","-0.55"
"Oct 24, 2017","52.47","51.89","52.62","51.55","709.55K","1.10"
"Oct 23, 2017","51.90","52.07","52.30","51.68","583.56K","0.84"
"Oct 20, 2017","51.47","51.42","51.73","50.70","32.96K","0.35"
"Oct 19, 2017","51.29","52.05","52.17","51.07","127.41K","-1.44"
"Oct 18, 2017","52.04","51.94","52.33","51.69","152.62K","0.31"
"Oct 17, 2017","51.88","51.93","52.25","51.21","471.61K","0.02"
"Oct 16, 2017","51.87","51.43","52.37","51.35","520.73K","0.82"
"Oct 13, 2017","51.45","50.73","51.72","50.70","667.50K","1.68"
"Oct 12, 2017","50.60","51.00","51.13","50.15","729.27K","-1.36"
"Oct 11, 2017","51.30","50.94","51.42","50.61","651.95K","0.75"
"Oct 10, 2017","50.92","49.55","51.06","49.54","664.84K","2.70"
"Oct 09, 2017","49.58","49.25","49.79","49.13","505.08K","0.59"
"Oct 06, 2017","49.29","50.75","50.82","49.10","743.11K","-2.95"
"Oct 05, 2017","50.79","49.88","51.22","49.85","654.39K","1.62"
"Oct 04, 2017","49.98","50.16","50.67","49.76","598.84K","-0.87"
"Oct 03, 2017","50.42","50.59","50.73","50.14","462.74K","-0.32"
"Oct 02, 2017","50.58","51.64","51.71","50.07","600.93K","-2.11"
"","","","","","",""
"","Highest:55.22","Lowest:49.10","Difference:6.12","Average:51.82","Change %:5.03"
================================================
FILE: dataset/usd-myr.csv
================================================
Historical USD to MYR Exchange Rates,Unnamed: 1
02-11-17,4.226
01-11-17,4.232
31-10-17,4.231
30-10-17,4.238
29-10-17,4.241
28-10-17,4.241
27-10-17,4.24
26-10-17,4.2283
25-10-17,4.233
24-10-17,4.2325
23-10-17,4.23
22-10-17,4.224
21-10-17,4.224
20-10-17,4.2245
19-10-17,4.221
18-10-17,4.21
17-10-17,4.2195
16-10-17,4.2155
15-10-17,4.22
14-10-17,4.22
13-10-17,4.2095
12-10-17,4.217
11-10-17,4.211
10-10-17,4.2215
09-10-17,4.232
08-10-17,4.236
07-10-17,4.236
06-10-17,4.2345
05-10-17,4.2295
04-10-17,4.2235
================================================
FILE: deep-learning/1.lstm.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0812 10:02:17.549519 140290267916096 deprecation.py:323] From :12: LSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.LSTMCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 10:02:17.551540 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:02:17.552432 140290267916096 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0812 10:02:19.808033 140290267916096 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0812 10:02:19.816455 140290267916096 deprecation.py:323] From :27: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0812 10:02:20.147778 140290267916096 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 10:02:20.154457 140290267916096 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:961: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 10:02:20.564182 140290267916096 deprecation.py:323] From :29: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:10<00:00, 4.33it/s, acc=97.2, cost=0.00221]\n",
"W0812 10:03:39.929984 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.33it/s, acc=97.4, cost=0.00193]\n",
"W0812 10:04:50.024182 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.34it/s, acc=97.2, cost=0.00212]\n",
"W0812 10:05:59.904235 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.30it/s, acc=97.3, cost=0.00195]\n",
"W0812 10:07:10.197728 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.31it/s, acc=97.2, cost=0.00208]\n",
"W0812 10:08:20.024446 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.31it/s, acc=97.1, cost=0.00224]\n",
"W0812 10:09:30.567560 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.30it/s, acc=97, cost=0.00229] \n",
"W0812 10:10:40.653531 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.23it/s, acc=97.5, cost=0.00168]\n",
"W0812 10:11:50.874499 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:10<00:00, 4.32it/s, acc=97.3, cost=0.00193]\n",
"W0812 10:13:01.677561 140290267916096 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:09<00:00, 4.28it/s, acc=97.8, cost=0.00115]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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j3V187zY8rdly6dcuHABAD8/P+67rwuPPfY4t99+V6nOkbl3727GjRvNffc9wAsvDCy1+xXiZuHj48M778zg4Ye7MG3aW4waNdbTJd0Utm//Fn//AJo3v773dSHykoAnhBBl3IkTx+nfvy87d/5C9+49efPNtwkIKJkhtE0mE3Xr1itwLqykpET++utPNmxYx6ZN61i7djXh4eF07fowjz7anVatbi3RETxTU1N47rk+REVVYMaM2TfVaKFClKb27TvwxBNPMnv2TB55pBv/+ldDT5dU7m3fvo327W8r1R/MRPklE50IIUQZtm7d/7jzzvYcOLCfuXM/YtasuSUW7q4kNDSMDh1u55133uXPPw+xePFKbrvtdlasWMqDD3amVatbePPN8Rw8aCn2+9Z1nWHDBnP69EnmzVtIaGhYsd+HEOKisWMnEhwczMsvD0XTZAC5khQbG8uxY0fp2PEOT5ciygkJeEIIUQalp6cxZEh/XnjhGczm+mzb9iOPPNLN02W5mUwm7rvvAebP/5h9+44wa9ZcatWqxYwZ07jttlbcdddtvP/+TM6ePVMs97dw4Yds2rSekSNf59Zb5RBuIUpaWFg448ZNYteuX1m06PKplETx+frrrwHk+DtRbCTgCSFEGbN3727uvrsDq1at4KWX/svGjVupVq3sTjUSEBBI9+49WbVqPb//bmHixMmYTF6MGzeKpk0b8MgjD7Js2eJ8I3deiz///IMxY17l7rs7M3DgkGKuXghRmG7dnqBDhzuYOHEs586d9XQ55dZXX31FVFQFzOb6ni5FlBMS8ErI9u3f8uSTj9GnT09OnIj1dDmXSUtLY9myRf+4zeLFC3jqqW48/XQP+vd/lqNHj5RSdULcnDRNY9asd+nSpTM2m4116zbzyiujMBpvnMOlK1SowPPPD2Dr1m3s2LGHl19+hTNnTjNs2CAaNqxD795PsmnTBqxW61XdXnp6Gs899zRhYeHMmjWv0BFDhRDFT1EU3n57GjZbNqNGyfD9JUHTNL7++ms6drxDjisWxUY+KUvIhg1refbZfixcuJxq1Wpc9fXyDk9ektLT01i+fHGh6w8dsrBhw1rmz1/MokUruOuuzsyePaNUahPiZnTu3Fm6dXuICRPGcP/9D7Jt24+0bdve02UVSa1adRgx4lV+/nkPn3++jT59+rJr1688+2wMjRrV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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/10.lstm-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * 2 * size_layer)\n",
" )\n",
" _, last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" rnn_cells_dec = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)], state_is_tuple = False\n",
" )\n",
" drop_dec = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_dec, output_keep_prob = forget_bias\n",
" )\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop_dec, self.X, initial_state = last_state, dtype = tf.float32\n",
" )\n",
" \n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0813 21:47:16.666563 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:47:16.753933 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:47:16.834197 140095600830272 deprecation.py:323] From :41: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.11it/s, acc=97.9, cost=0.00101] \n",
"W0813 21:48:54.353741 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:48:54.437589 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=98.3, cost=0.00069] \n",
"W0813 21:50:34.225154 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:50:34.305581 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.06it/s, acc=97.7, cost=0.00117] \n",
"W0813 21:52:13.825603 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:52:13.908980 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:37<00:00, 3.08it/s, acc=98.4, cost=0.000614]\n",
"W0813 21:53:52.767824 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:53:52.849310 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.03it/s, acc=98.2, cost=0.000755]\n",
"W0813 21:55:32.572073 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:55:32.654169 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.07it/s, acc=98.3, cost=0.000681]\n",
"W0813 21:57:12.073868 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 21:57:12.156364 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.01it/s, acc=97.7, cost=0.00126] \n",
"W0813 21:58:51.933507 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0813 21:58:52.153095 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.04it/s, acc=98.5, cost=0.000589]\n",
"W0813 22:00:31.650501 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:00:31.732362 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.01it/s, acc=98.4, cost=0.000625]\n",
"W0813 22:02:11.445839 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:02:11.528598 140095600830272 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.08it/s, acc=96.8, cost=0.0027] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/11.bidirectional-lstm-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
"\n",
" backward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.backward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.forward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * 2 * size_layer)\n",
" )\n",
" _, last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward,\n",
" drop_backward,\n",
" self.X,\n",
" initial_state_fw = self.forward_hidden_layer,\n",
" initial_state_bw = self.backward_hidden_layer,\n",
" dtype = tf.float32,\n",
" )\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" backward_rnn_cells_decoder = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells_decoder = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" drop_backward_decoder = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells_decoder, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward_decoder = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells_decoder, output_keep_prob = forget_bias\n",
" )\n",
" self.outputs, self.last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward_decoder, drop_backward_decoder, self.X, \n",
" initial_state_fw = last_state[0],\n",
" initial_state_bw = last_state[1],\n",
" dtype = tf.float32\n",
" )\n",
" self.outputs = tf.concat(self.outputs, 2)\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" ) \n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0813 22:30:03.664880 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:30:03.666436 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:30:03.827417 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:30:03.828239 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0813 22:30:03.988492 140106178451264 deprecation.py:323] From :67: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.03it/s, acc=96.4, cost=0.00318] \n",
"W0813 22:32:35.430384 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:32:35.431268 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:32:35.592414 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:32:35.593283 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:30<00:00, 2.00it/s, acc=98.1, cost=0.000912]\n",
"W0813 22:35:08.073616 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:35:08.074523 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:35:08.237059 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:35:08.237945 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:31<00:00, 1.99it/s, acc=98.2, cost=0.000814]\n",
"W0813 22:37:40.822348 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:37:40.823194 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:37:40.984025 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:37:40.984853 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:31<00:00, 1.98it/s, acc=98.2, cost=0.000732]\n",
"W0813 22:40:14.461846 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:40:14.462596 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:40:14.624744 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:40:14.625597 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:28<00:00, 2.04it/s, acc=98.6, cost=0.000437]\n",
"W0813 22:42:44.319911 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:42:44.320685 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:42:44.481708 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:42:44.482524 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:30<00:00, 2.00it/s, acc=98.8, cost=0.000304]\n",
"W0813 22:45:16.281273 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:45:16.282183 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:45:16.443265 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:45:16.444107 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:31<00:00, 1.99it/s, acc=98.5, cost=0.000517]\n",
"W0813 22:47:49.574930 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:47:49.575763 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:47:49.735839 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:47:49.736666 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:31<00:00, 1.99it/s, acc=96.9, cost=0.00272] \n",
"W0813 22:50:22.981087 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:50:22.982089 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:50:23.141866 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:50:23.142687 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:31<00:00, 1.99it/s, acc=98.2, cost=0.000705]\n",
"W0813 22:52:55.940449 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:52:55.941309 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:52:56.101360 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0813 22:52:56.102182 140106178451264 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:27<00:00, 2.03it/s, acc=98.6, cost=0.000453]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/12.lstm-seq2seq-vae.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" lambda_coeff = 0.5\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * 2 * size_layer)\n",
" )\n",
" _, last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" \n",
" self.z_mean = tf.layers.dense(last_state, size)\n",
" self.z_log_sigma = tf.layers.dense(last_state, size)\n",
" \n",
" epsilon = tf.random_normal(tf.shape(self.z_log_sigma))\n",
" self.z_vector = self.z_mean + tf.exp(self.z_log_sigma)\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" rnn_cells_dec = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)], state_is_tuple = False\n",
" )\n",
" drop_dec = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_dec, output_keep_prob = forget_bias\n",
" )\n",
" x = tf.concat([tf.expand_dims(self.z_vector, axis=0), self.X], axis = 1)\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop_dec, self.X, initial_state = last_state, dtype = tf.float32\n",
" )\n",
" \n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.lambda_coeff = lambda_coeff\n",
" \n",
" self.kl_loss = -0.5 * tf.reduce_sum(1.0 + 2 * self.z_log_sigma - self.z_mean ** 2 - \n",
" tf.exp(2 * self.z_log_sigma), 1)\n",
" self.kl_loss = tf.scalar_mul(self.lambda_coeff, self.kl_loss)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits) + self.kl_loss)\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_x = np.random.binomial(1, 0.5, batch_x.shape) * batch_x\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0816 15:26:45.502804 139658996016960 deprecation.py:323] From :13: LSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.LSTMCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0816 15:26:45.505823 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:26:45.507445 139658996016960 deprecation.py:323] From :17: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0816 15:26:45.829126 139658996016960 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0816 15:26:45.832581 139658996016960 deprecation.py:323] From :28: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0816 15:26:46.024316 139658996016960 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 15:26:46.031064 139658996016960 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:961: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 15:26:46.507349 139658996016960 deprecation.py:323] From :31: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"W0816 15:26:46.696353 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:26:46.879564 139658996016960 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1205: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.80it/s, acc=97, cost=0.00235] \n",
"W0816 15:28:35.363878 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:28:35.471002 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:46<00:00, 2.82it/s, acc=96.9, cost=0.00305]\n",
"W0816 15:30:22.970038 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:30:23.075726 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.77it/s, acc=95.1, cost=0.00633]\n",
"W0816 15:32:11.926008 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:32:12.031505 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.86it/s, acc=95.9, cost=0.00422]\n",
"W0816 15:34:00.252120 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0816 15:34:00.478516 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.75it/s, acc=96.3, cost=0.00351]\n",
"W0816 15:35:49.588577 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:35:49.693055 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.79it/s, acc=96.2, cost=0.00384]\n",
"W0816 15:37:38.517486 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:37:38.625684 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.79it/s, acc=95.6, cost=0.00472]\n",
"W0816 15:39:27.256033 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:39:27.363451 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.78it/s, acc=96.1, cost=0.00394]\n",
"W0816 15:41:15.619689 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:41:15.724680 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.82it/s, acc=97.3, cost=0.00223]\n",
"W0816 15:43:04.145420 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0816 15:43:04.251741 139658996016960 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:45<00:00, 2.82it/s, acc=96.6, cost=0.00292]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/13.gru-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * size_layer)\n",
" )\n",
" _, last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" rnn_cells_dec = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)], state_is_tuple = False\n",
" )\n",
" drop_dec = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_dec, output_keep_prob = forget_bias\n",
" )\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop_dec, self.X, initial_state = last_state, dtype = tf.float32\n",
" )\n",
" \n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0816 17:29:50.622041 140611410274112 deprecation.py:323] From :12: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0816 17:29:50.624857 140611410274112 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0816 17:29:50.941864 140611410274112 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0816 17:29:50.945153 140611410274112 deprecation.py:323] From :27: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0816 17:29:51.137009 140611410274112 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 17:29:51.144164 140611410274112 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 17:29:51.155159 140611410274112 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 17:29:51.387444 140611410274112 deprecation.py:323] From :41: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.15it/s, acc=97.7, cost=0.00125] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:37<00:00, 3.07it/s, acc=98.1, cost=0.000968]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:34<00:00, 3.14it/s, acc=97.3, cost=0.00201] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.12it/s, acc=97.8, cost=0.00113] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.15it/s, acc=97.6, cost=0.00147] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.11it/s, acc=98.2, cost=0.000856]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:35<00:00, 3.14it/s, acc=97.7, cost=0.00139] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.11it/s, acc=97.1, cost=0.002] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:36<00:00, 3.13it/s, acc=97.8, cost=0.00111] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:37<00:00, 3.06it/s, acc=97.4, cost=0.00152] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/14.bidirectional-gru-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
"\n",
" backward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.backward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * size_layer)\n",
" )\n",
" self.forward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * size_layer)\n",
" )\n",
" _, last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward,\n",
" drop_backward,\n",
" self.X,\n",
" initial_state_fw = self.forward_hidden_layer,\n",
" initial_state_bw = self.backward_hidden_layer,\n",
" dtype = tf.float32,\n",
" )\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" backward_rnn_cells_decoder = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells_decoder = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" drop_backward_decoder = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells_decoder, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward_decoder = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells_decoder, output_keep_prob = forget_bias\n",
" )\n",
" self.outputs, self.last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward_decoder, drop_backward_decoder, self.X, \n",
" initial_state_fw = last_state[0],\n",
" initial_state_bw = last_state[1],\n",
" dtype = tf.float32\n",
" )\n",
" self.outputs = tf.concat(self.outputs, 2)\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" ) \n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0816 18:33:46.362064 140384958228288 deprecation.py:323] From :12: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0816 18:33:46.364130 140384958228288 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0816 18:33:46.687459 140384958228288 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0816 18:33:46.692470 140384958228288 deprecation.py:323] From :42: bidirectional_dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.Bidirectional(keras.layers.RNN(cell))`, which is equivalent to this API\n",
"W0816 18:33:46.693083 140384958228288 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn.py:464: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0816 18:33:46.884588 140384958228288 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 18:33:46.891244 140384958228288 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 18:33:46.900250 140384958228288 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 18:33:47.374557 140384958228288 deprecation.py:323] From :67: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [02:28<00:00, 2.02it/s, acc=97.7, cost=0.00125] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:26<00:00, 2.05it/s, acc=98.3, cost=0.000708]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.01it/s, acc=98.1, cost=0.000848]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:27<00:00, 2.03it/s, acc=98.5, cost=0.000662]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:30<00:00, 2.01it/s, acc=97.4, cost=0.0017] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.01it/s, acc=97.7, cost=0.00127] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:30<00:00, 1.99it/s, acc=98.3, cost=0.000625]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.01it/s, acc=98.2, cost=0.000883]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.01it/s, acc=98.5, cost=0.000547]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:29<00:00, 2.00it/s, acc=96.9, cost=0.00229] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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d3m3e86Sm/qCRKk/SEh9YdcMKxlOcbyIP3/wdypH9M13OG1KfUFCu9IXTNNoMTAWtcNE0LbtUTtqY1nW94EbgGNs214fLLfRsiwsy9o3Mro3CFi5u3U7imNv98EH73PggcMYMuQAAE488WRuvXUa9fXbAKiq2i+dBALMm/cKH330AY899ggADQ0N9OnTl/r6et5/fxG33XZXum1FRQUAq1ev4pprrqS6upp4PM6mTRvZuPFzBgyoIpVKceON1zFq1GjGjz96l2J/8MHZpFIpbr/9Zp5++k+cfvqZe7QtRERERHZFYayAI/sdwWur3+SHQ79DeUHrO8Ai0jZXDf02MB04zrbtZc2qHwfOA663LOsooBh4dw/r2syY/kfkHLXrrIqLS5qVePz2t7cwcGBVVml9fX2r67jmmis5//yLmTjxa7iuy7HHHkUymaSycl8efngOCxe+y/z5b3PPPTOYOXPWLsUXj8f55je/zU03Xa9EUERERDrcVweO49XVb/DnT//CacN/mO9wRDq1tvjC3AP4XxJ7wrKsfwa3yqDucuBrlmV9AtwNTLZt293Dui5rxIjDWLp0McuXLwPghRfmMnSoRUlJac72EyZMZNash9IXjqmpqWHNmtWUlJRw6KFfYs6c2em2NTU1ANTV1dG//wAAnnvuWZLJJACbN2+moaGBMWPGcd5551NWVsaaNaspLS2loaGBVCqVM4b169elE0/XdfnHP/7OAQd0vfPyRUREpPPrW9qHr1VN4PU1b+sH5kV2YI9HBG3b7r2dunXAsW1Z15X16tWLq666lqlTr8RxHCoqenH11de12v6ii37J3XffyZQpkzAMg0SigAsv/CUDBgzk6quvY/r0aUyefCqmGeO4407gjDOmcOGFl3DFFb+ivLycMWPG07NnTwA2bFjPtGnX4zgOjuMwdux4Row4DNM0Of74b3HmmT+mvLwH9947MyuGFSuW87vf3Q54uK7L0KEWv/jFpe25mURERERadeKQY3ln/ULmLH6aS474GaaR/wsFinRGRhe9xO5g4LPmF4tZt245/frtn7egIPtiMZLRGV6bjqYvfktIfUGi1B8kpL6w+95cO5+HP5rDGQefyrj+e/8vkKkvSGg3LxYzBFjWor5NIxMRERERybMj+41iSI9BPLPkeb5IfZHvcEQ6JSWCIiIiItKlmIbJqcO+R13TNp777P/yHY5Ip6REUERERES6nEE9qpgw4Ej+sep11tSty3c4Ip2OEkERERER6ZK+c+A3KYoV8vjiZ+ii18UQ2W1KBEVERESkSypLlPKdA77J4pqlLNiwKN/hiHQqSgRFREREpMs6auAYqsoG8OSSuTQ6yXyHI9JpKBEUERERkS4rvHBMTeMW/rLs7/kOR6TTUCKYZ6+88jKnn34KZ511GitWLMt3OC3U1tbyyCMP7bCd53lcdNHPOOmkYzogKhEREZGdd2DFYI7sN4q/rfgHG+qr8x2OSKegRDDPnnnmSc4++zweeGA2gwYN3unlHMdpv6Ai6upqmT37Dzts96c//ZF+/fp1QEQiIiIiu+57B55I3Izz+CfP6sIxIkA83wHk09bXX2PLvFfaZd09j5pIj/ETttvmzjtvZdGihaxYsZynnnqcGTPu4803X+e++36H67pUVPTi0kuvoKpqPxYsmM8dd9yCZR3M4sU25577U0aOPJwZM25j6dJPSCaTHH74aC644GJisRjV1Ru4/fabWbVqJQDHHnsCkyefxUsvvcjjjz9KKtUEwM9//gtGjz4S13WZPv0mFix4h0SigJKSYu65ZybTp0+jrq6OKVNOo6ioiHvvndnieaxcuYK//e0lrrjiGubN+0fbb0wRERGRPdSzsAffGnIsTy15jvc3fsRh+x6S75BE8qpbJ4L5duGFv2TxYptJkyYzYcLRbN68ieuvv5oZM37PkCEHMHfu00ydehX33++fmvnZZ59y6aVXcOihXwLgxhuvY+TIUVx++a9xXZepU6/iueee5eSTv8+11/6aceMmcMMNNwNQU1MDwJgxYznuuBMwDIMVK5Zx0UU/46mnnmfJksUsXDifWbMexzRNtm7dCsAll1zGOedM5sEHZ+d8Dq7rMm3a9VxyyWXE4+pOIiIi0nl9veoo3ljzDk8sfpbhvYaSiCXyHZJI3nTrPfce4yfscNSuI33wwfsceOAwhgw5AIATTzyZW2+dRn39NgCqqvZLJ4EA8+a9wkcffcBjjz0CQENDA3369KW+vp7331/EbbfdlW5bUVEBwOrVq7jmmiuprq4mHo+zadNGNm78nAEDqkilUtx443WMGjWa8eOP3qmYH330YUaOHMXQoRZr165pk+0gIiIi0h5iZowfDfsuM/55P39d8QrfGqJrG0j31a0Twb1NcXFJsxKP3/72FgYOrMoqra+vb3Ud11xzJeeffzETJ34N13U59tijSCaTVFbuy8MPz2HhwneZP/9t7rlnBjNnztphTO+9t5AlSz7hxRefw3EcamtrOeWU7/DQQ49SWlq2O09TREREpN0M32coI3sfxl+W/50j+42isrhXvkMSyQtdLKYTGTHiMJYuXczy5csAeOGFuQwdalFSUpqz/YQJE5k166H0hWNqampYs2Y1JSUlHHrol5gzJ3M6Z3hqaF1dHf37DwDgueeeJZn0f09n8+bNNDQ0MGbMOM4773zKyspYs2Y1paWlNDQ0kEqlcsZw00238+STz/HEE3/m7rv/h/Lycp544s9KAkVERKTT+sFB3wbgqSVz8xyJSP5oRLAT6dWrF1dddS1Tp16J4zhUVPTi6quva7X9RRf9krvvvpMpUyZhGAaJRAEXXvhLBgwYyNVXX8f06dOYPPlUaY/RtgAAIABJREFUTDPGccedwBlnTOHCCy/hiit+RXl5OWPGjKdnz54AbNiwnmnTrsdxHBzHYezY8YwYcRimaXL88d/izDN/THl5j5wXixERERHZm1QW9+KE/b/B3M/+wsebPmH4PkPzHZJIhzO66OVzBwOfbdxYh+tmnt+6dcvp12//vAUFEI+bpFJuXmPojDrDa9PRevcup7q6Nt9hSCegviBR6g8SUl9oX01OE9e/dStxM84VR15MzIzlO6RWqS9IaFf6gmkaVFaWAQwBlrWob9PIRERERET2AolYglOGncy6+g28vOq1fIcj0uGUCIqIiIhIt3Ro5cGMqBzO85/9H1sat+Y7HJEOpURQRERERLolwzA4Zeh3SLkpnl76fL7DEelQSgRFREREpNvqU9KbbwyayNvrFrC0Zlm+wxHpMEoERURERKRb++bgY6go7MmcxU/jerqon3QPSgRFREREpFsrjBXwg4NOYlXdGuatfivf4Yh0CCWCefbKKy9z+umncNZZp7FixbJ8h9NCbW0tjzzyUKv1a9eu4atfHcOUKaelb1u21HRghCIiIiJ7blSfLzO04gDmfvoX6pq25TsckXanH5TPs2eeeZKzzz6Pb3zj2F1aznEcYrH2/72burpaZs/+A6effmarbcrKynjwwdntHouIiIhIezEMg1OHfY//fud2/rz0RSYN/2G+QxJpV0oE8+jOO29l0aKFrFixnKeeepwZM+7jzTdf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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/15.gru-seq2seq-vae.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" lambda_coeff = 0.5\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * size_layer)\n",
" )\n",
" _, last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" \n",
" self.z_mean = tf.layers.dense(last_state, size)\n",
" self.z_log_sigma = tf.layers.dense(last_state, size)\n",
" \n",
" epsilon = tf.random_normal(tf.shape(self.z_log_sigma))\n",
" self.z_vector = self.z_mean + tf.exp(self.z_log_sigma)\n",
" \n",
" with tf.variable_scope('decoder', reuse = False):\n",
" rnn_cells_dec = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)], state_is_tuple = False\n",
" )\n",
" drop_dec = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_dec, output_keep_prob = forget_bias\n",
" )\n",
" x = tf.concat([tf.expand_dims(self.z_vector, axis=0), self.X], axis = 1)\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop_dec, self.X, initial_state = last_state, dtype = tf.float32\n",
" )\n",
" \n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.lambda_coeff = lambda_coeff\n",
" \n",
" self.kl_loss = -0.5 * tf.reduce_sum(1.0 + 2 * self.z_log_sigma - self.z_mean ** 2 - \n",
" tf.exp(2 * self.z_log_sigma), 1)\n",
" self.kl_loss = tf.scalar_mul(self.lambda_coeff, self.kl_loss)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits) + self.kl_loss)\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_x = np.random.binomial(1, 0.5, batch_x.shape) * batch_x\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0816 23:54:04.861056 140552998012736 deprecation.py:323] From :13: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0816 23:54:04.862557 140552998012736 deprecation.py:323] From :17: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0816 23:54:05.179484 140552998012736 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0816 23:54:05.182720 140552998012736 deprecation.py:323] From :28: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0816 23:54:05.374030 140552998012736 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 23:54:05.380675 140552998012736 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 23:54:05.389776 140552998012736 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0816 23:54:05.536239 140552998012736 deprecation.py:323] From :31: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"W0816 23:54:05.986564 140552998012736 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_grad.py:1205: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.73it/s, acc=96, cost=0.00448] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:49<00:00, 2.74it/s, acc=95.6, cost=0.00512]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.76it/s, acc=96.2, cost=0.0037] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.75it/s, acc=95.5, cost=0.00715]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.78it/s, acc=96.6, cost=0.0041] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.75it/s, acc=97.3, cost=0.00204]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:47<00:00, 2.81it/s, acc=62, cost=7.74] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.80it/s, acc=95, cost=0.00699] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.76it/s, acc=96.8, cost=0.00279]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:48<00:00, 2.75it/s, acc=97.1, cost=0.00215]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/16.attention-is-all-you-need.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def layer_norm(inputs, epsilon=1e-8):\n",
" mean, variance = tf.nn.moments(inputs, [-1], keep_dims=True)\n",
" normalized = (inputs - mean) / (tf.sqrt(variance + epsilon))\n",
"\n",
" params_shape = inputs.get_shape()[-1:]\n",
" gamma = tf.get_variable('gamma', params_shape, tf.float32, tf.ones_initializer())\n",
" beta = tf.get_variable('beta', params_shape, tf.float32, tf.zeros_initializer())\n",
" \n",
" outputs = gamma * normalized + beta\n",
" return outputs\n",
"\n",
"def multihead_attn(queries, keys, q_masks, k_masks, future_binding, num_units, num_heads):\n",
" \n",
" T_q = tf.shape(queries)[1] \n",
" T_k = tf.shape(keys)[1] \n",
"\n",
" Q = tf.layers.dense(queries, num_units, name='Q') \n",
" K_V = tf.layers.dense(keys, 2*num_units, name='K_V') \n",
" K, V = tf.split(K_V, 2, -1) \n",
"\n",
" Q_ = tf.concat(tf.split(Q, num_heads, axis=2), axis=0) \n",
" K_ = tf.concat(tf.split(K, num_heads, axis=2), axis=0) \n",
" V_ = tf.concat(tf.split(V, num_heads, axis=2), axis=0) \n",
"\n",
" align = tf.matmul(Q_, tf.transpose(K_, [0,2,1])) \n",
" align = align / np.sqrt(K_.get_shape().as_list()[-1]) \n",
"\n",
" paddings = tf.fill(tf.shape(align), float('-inf')) \n",
"\n",
" key_masks = k_masks \n",
" key_masks = tf.tile(key_masks, [num_heads, 1]) \n",
" key_masks = tf.tile(tf.expand_dims(key_masks, 1), [1, T_q, 1]) \n",
" align = tf.where(tf.equal(key_masks, 0), paddings, align) \n",
"\n",
" if future_binding:\n",
" lower_tri = tf.ones([T_q, T_k]) \n",
" lower_tri = tf.linalg.LinearOperatorLowerTriangular(lower_tri).to_dense() \n",
" masks = tf.tile(tf.expand_dims(lower_tri,0), [tf.shape(align)[0], 1, 1]) \n",
" align = tf.where(tf.equal(masks, 0), paddings, align) \n",
" \n",
" align = tf.nn.softmax(align) \n",
" query_masks = tf.to_float(q_masks) \n",
" query_masks = tf.tile(query_masks, [num_heads, 1]) \n",
" query_masks = tf.tile(tf.expand_dims(query_masks, -1), [1, 1, T_k]) \n",
" align *= query_masks\n",
" \n",
" outputs = tf.matmul(align, V_) \n",
" outputs = tf.concat(tf.split(outputs, num_heads, axis=0), axis=2) \n",
" outputs += queries \n",
" outputs = layer_norm(outputs) \n",
" return outputs\n",
"\n",
"\n",
"def pointwise_feedforward(inputs, hidden_units, activation=None):\n",
" outputs = tf.layers.dense(inputs, 4*hidden_units, activation=activation)\n",
" outputs = tf.layers.dense(outputs, hidden_units, activation=None)\n",
" outputs += inputs\n",
" outputs = layer_norm(outputs)\n",
" return outputs\n",
"\n",
"\n",
"def learned_position_encoding(inputs, mask, embed_dim):\n",
" T = tf.shape(inputs)[1]\n",
" outputs = tf.range(tf.shape(inputs)[1]) # (T_q)\n",
" outputs = tf.expand_dims(outputs, 0) # (1, T_q)\n",
" outputs = tf.tile(outputs, [tf.shape(inputs)[0], 1]) # (N, T_q)\n",
" outputs = embed_seq(outputs, T, embed_dim, zero_pad=False, scale=False)\n",
" return tf.expand_dims(tf.to_float(mask), -1) * outputs\n",
"\n",
"\n",
"def sinusoidal_position_encoding(inputs, mask, repr_dim):\n",
" T = tf.shape(inputs)[1]\n",
" pos = tf.reshape(tf.range(0.0, tf.to_float(T), dtype=tf.float32), [-1, 1])\n",
" i = np.arange(0, repr_dim, 2, np.float32)\n",
" denom = np.reshape(np.power(10000.0, i / repr_dim), [1, -1])\n",
" enc = tf.expand_dims(tf.concat([tf.sin(pos / denom), tf.cos(pos / denom)], 1), 0)\n",
" return tf.tile(enc, [tf.shape(inputs)[0], 1, 1]) * tf.expand_dims(tf.to_float(mask), -1)\n",
"\n",
"def label_smoothing(inputs, epsilon=0.1):\n",
" C = inputs.get_shape().as_list()[-1]\n",
" return ((1 - epsilon) * inputs) + (epsilon / C)\n",
"\n",
"class Attention:\n",
" def __init__(self, size_layer, embedded_size, learning_rate, size, output_size,\n",
" num_blocks = 2,\n",
" num_heads = 8,\n",
" min_freq = 50):\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" \n",
" encoder_embedded = tf.layers.dense(self.X, embedded_size)\n",
" encoder_embedded = tf.nn.dropout(encoder_embedded, keep_prob = 0.8)\n",
" x_mean = tf.reduce_mean(self.X, axis = 2)\n",
" en_masks = tf.sign(x_mean)\n",
" encoder_embedded += sinusoidal_position_encoding(self.X, en_masks, embedded_size)\n",
" \n",
" for i in range(num_blocks):\n",
" with tf.variable_scope('encoder_self_attn_%d'%i,reuse=tf.AUTO_REUSE):\n",
" encoder_embedded = multihead_attn(queries = encoder_embedded,\n",
" keys = encoder_embedded,\n",
" q_masks = en_masks,\n",
" k_masks = en_masks,\n",
" future_binding = False,\n",
" num_units = size_layer,\n",
" num_heads = num_heads)\n",
"\n",
" with tf.variable_scope('encoder_feedforward_%d'%i,reuse=tf.AUTO_REUSE):\n",
" encoder_embedded = pointwise_feedforward(encoder_embedded,\n",
" embedded_size,\n",
" activation = tf.nn.relu)\n",
" \n",
" self.logits = tf.layers.dense(encoder_embedded[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.001"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Attention(size_layer, size_layer, learning_rate, df_log.shape[1], df_log.shape[1])\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y\n",
" },\n",
" ) \n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" )\n",
" },\n",
" )\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0)\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0)\n",
" },\n",
" )\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0817 12:08:12.096583 140064997701440 deprecation.py:323] From :91: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"W0817 12:08:12.104836 140064997701440 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0817 12:08:12.294501 140064997701440 deprecation.py:506] From :92: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
"W0817 12:08:12.305350 140064997701440 deprecation.py:323] From :73: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use `tf.cast` instead.\n",
"W0817 12:08:12.446460 140064997701440 deprecation.py:323] From :33: add_dispatch_support..wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.97it/s, acc=96.7, cost=0.00409] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=97.3, cost=0.00184] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=96.7, cost=0.00351] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=97.9, cost=0.00112] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.97it/s, acc=98, cost=0.00113] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=97.5, cost=0.00165] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.96it/s, acc=95.8, cost=0.00513]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.98it/s, acc=98, cost=0.000974] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=96.8, cost=0.00322] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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w8Ff+VXc8rD4wYskD63c8zqNK8AbxyqaD1hr/88YEwKfBl6w1r5ujHkZeAZ40W+/VQRwtzonIiInRxCFREsVWKpMuyqH9J6h2S0W8hl6dmb5USm9/X7AWJQRBYOB3HJ1avfinHRBEBCt1YjWavD4xrSrc0eCwM1cUIuJqB/5vuJCxEkISk+L8u92FgRBMLA4kcy2IAj8itUxbCwcOl/cZ503U8K10zEjXRjHX+QfGmPeB1SAfwJ+x5d/EviSMeb3gS3gY6WvudU5ERGR2wrCAPyKqiLHFZTTh0Vk7gVBQFBP4BTOTB87wLPWfuKI8u8CP3G350REREREROTtmZ+7LEVERERERGacAjwREREREZEZoQBPRERERERkRijAExERERERmREK8ERERERERGaEAjwREREREZEZoQBPRERERERkRijAExERERERmRHHftD5FEQAYRhMux4jndR6yeSpLUhBbUEKagtSpvYgBbUFKdxpWyi9Lxo+F+R5PsYqTcT7gX+ZdiVERERERESm7APAS+WC0xjgVYGngDeBdMp1ERERERERmbQIeBD4OtAqnziNAZ6IiIiIiIiMoEVWREREREREZoQCPBERERERkRmhAE9ERERERGRGKMATERERERGZEQrwREREREREZoQCPBERERERkRmhAE9ERERERGRGxNOuwCwwxrwT+BKwAVwHPmatfW26tZJpMMZcBpr+BfDb1tp/nFqFZGKMMZ8Dfh54DHjSWvttX67+YQ7doj1cRn3E3DDGbABfBn4IaAOvAb9ird00xvwk8AWgDlwGnrXW/mBadZV77zbtIQdeATL/9l+21r4ynZrKJBhjvgpcxH3me8CnrLUvj2PcoBm88XgBeM5a+07gOVyHLfPro9baH/UvDdzmx1eBnwJeHypX/zCfjmoPoD5inuTAZ621xlr7JPA94DPGmBB4Efg13zf8M/CZKdZTJmNkeyidf7rUNyi4m30ft9a+21r7Y8DngL/w5cceNyjAOyZjzDngPcBXfNFXgPcYY85Or1YiMmnW2pestd8vl6l/mF+j2oPMH2vtDWvt10pF/wY8Cvw40LTWvuTLXwB+YcLVkwm7RXuQOWStvVk6XAWycY0bFOAd3yPAFWttCuC3V325zKe/Nsb8tzHmeWPM2rQrI1Ol/kFGUR8xh/ys3a8Cfw9coDS7a629BoTGmDNTqp5M2FB7KHzNGPOyMeaPjTHVKVVNJsgY80VjzBvAHwEfZ0zjBgV4IuP1AWvtu4GngAD4synXR0ROFvUR8+tPcffZSAhKggAAAdRJREFU6DMXONweLlhr34tL7f4R4PemVTGZHGvtJ6y1F4DfBf5kXN9XAd7xfR94yBgTAfjteV8uc6ZIybLWtoDngfdNt0YyZeofZID6iPnkF915HPhFa20GvEEpNc8Ycx+QWWtvTKmKMkEj2kO5b9gBvoj6hrlirf0y8NPA/zKGcYMCvGPyK169DDzji54BvmWt3ZxerWQajDGLxphVvx8Av4RrGzKn1D9ImfqI+WSM+TTunruP+MAe4D+BujHm/f74k8DfTKN+Mlmj2oMxZt0YU/f7MfBR1DfMNGPMkjHmkdLxh4EbwFjGDUGe5+Oq69wyxrwLt5zpOrCFW87UTrdWMmnGmHcAfwtE/vUd4DestW9OtWIyEcaYzwM/BzwAXAOuW2ufUP8wn0a1B+DDqI+YK8aYJ4BvA68CDV98yVr7s8aYp3Gr49XoPybhralUVCbiqPYAfBbXFnIgAf4V+E1r7d406in3njHmfuDvgEUgxQV3v2Wt/eY4xg0K8ERERERERGaEUjRFRERERERmhAI8ERERERGRGaEAT0REREREZEYowBMREREREZkRCvBERERERERmhAI8ERERERGRGaEAT0REREREZEYowBMREREREZkR/w/0L/4SVaStnwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/17.cnn-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def encoder_block(inp, n_hidden, filter_size):\n",
" inp = tf.expand_dims(inp, 2)\n",
" inp = tf.pad(\n",
" inp,\n",
" [\n",
" [0, 0],\n",
" [(filter_size[0] - 1) // 2, (filter_size[0] - 1) // 2],\n",
" [0, 0],\n",
" [0, 0],\n",
" ],\n",
" )\n",
" conv = tf.layers.conv2d(\n",
" inp, n_hidden, filter_size, padding = 'VALID', activation = None\n",
" )\n",
" conv = tf.squeeze(conv, 2)\n",
" return conv\n",
"\n",
"\n",
"def decoder_block(inp, n_hidden, filter_size):\n",
" inp = tf.expand_dims(inp, 2)\n",
" inp = tf.pad(inp, [[0, 0], [filter_size[0] - 1, 0], [0, 0], [0, 0]])\n",
" conv = tf.layers.conv2d(\n",
" inp, n_hidden, filter_size, padding = 'VALID', activation = None\n",
" )\n",
" conv = tf.squeeze(conv, 2)\n",
" return conv\n",
"\n",
"\n",
"def glu(x):\n",
" return tf.multiply(\n",
" x[:, :, : tf.shape(x)[2] // 2],\n",
" tf.sigmoid(x[:, :, tf.shape(x)[2] // 2 :]),\n",
" )\n",
"\n",
"\n",
"def layer(inp, conv_block, kernel_width, n_hidden, residual = None):\n",
" z = conv_block(inp, n_hidden, (kernel_width, 1))\n",
" return glu(z) + (residual if residual is not None else 0)\n",
"\n",
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" kernel_size = 3,\n",
" n_attn_heads = 16,\n",
" dropout = 0.9,\n",
" ):\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
"\n",
" encoder_embedded = tf.layers.dense(self.X, size_layer)\n",
"\n",
" e = tf.identity(encoder_embedded)\n",
" for i in range(num_layers):\n",
" z = layer(\n",
" encoder_embedded,\n",
" encoder_block,\n",
" kernel_size,\n",
" size_layer * 2,\n",
" encoder_embedded,\n",
" )\n",
" z = tf.nn.dropout(z, keep_prob = dropout)\n",
" encoder_embedded = z\n",
"\n",
" encoder_output, output_memory = z, z + e\n",
" g = tf.identity(encoder_embedded)\n",
"\n",
" for i in range(num_layers):\n",
" attn_res = h = layer(\n",
" encoder_embedded,\n",
" decoder_block,\n",
" kernel_size,\n",
" size_layer * 2,\n",
" residual = tf.zeros_like(encoder_embedded),\n",
" )\n",
" C = []\n",
" for j in range(n_attn_heads):\n",
" h_ = tf.layers.dense(h, size_layer // n_attn_heads)\n",
" g_ = tf.layers.dense(g, size_layer // n_attn_heads)\n",
" zu_ = tf.layers.dense(\n",
" encoder_output, size_layer // n_attn_heads\n",
" )\n",
" ze_ = tf.layers.dense(output_memory, size_layer // n_attn_heads)\n",
"\n",
" d = tf.layers.dense(h_, size_layer // n_attn_heads) + g_\n",
" dz = tf.matmul(d, tf.transpose(zu_, [0, 2, 1]))\n",
" a = tf.nn.softmax(dz)\n",
" c_ = tf.matmul(a, ze_)\n",
" C.append(c_)\n",
"\n",
" c = tf.concat(C, 2)\n",
" h = tf.layers.dense(attn_res + c, size_layer)\n",
" h = tf.nn.dropout(h, keep_prob = dropout)\n",
" encoder_embedded = h\n",
"\n",
" encoder_embedded = tf.sigmoid(encoder_embedded[-1])\n",
" self.logits = tf.layers.dense(encoder_embedded, output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = test_size\n",
"epoch = 300\n",
"dropout_rate = 0.7\n",
"future_day = test_size\n",
"learning_rate = 1e-3"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], \n",
" dropout = dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {modelnn.X: batch_x, modelnn.Y: batch_y},\n",
" ) \n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" )\n",
" },\n",
" )\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0)\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0)\n",
" },\n",
" )\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0818 16:16:28.504163 139649888855872 deprecation.py:323] From :55: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"W0818 16:16:28.507718 139649888855872 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0818 16:16:28.696973 139649888855872 deprecation.py:323] From :13: conv2d (from tensorflow.python.layers.convolutional) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use `tf.keras.layers.Conv2D` instead.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0818 16:16:28.910956 139649888855872 deprecation.py:506] From :66: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
"train loop: 100%|██████████| 300/300 [00:43<00:00, 7.09it/s, acc=96.6, cost=0.00251]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 7.08it/s, acc=96.9, cost=0.00232] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 6.99it/s, acc=94.1, cost=0.00764] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 6.98it/s, acc=96.6, cost=0.00273]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 7.02it/s, acc=97.7, cost=0.00113] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 7.06it/s, acc=97.7, cost=0.00117]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 6.98it/s, acc=96.4, cost=0.00286]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 6.97it/s, acc=94.7, cost=0.00573] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 6.94it/s, acc=93.9, cost=0.00807] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:43<00:00, 7.05it/s, acc=94.6, cost=0.006] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/18.dilated-cnn-seq2seq.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def position_encoding(inputs):\n",
" T = tf.shape(inputs)[1]\n",
" repr_dim = inputs.get_shape()[-1].value\n",
" pos = tf.reshape(tf.range(0.0, tf.to_float(T), dtype=tf.float32), [-1, 1])\n",
" i = np.arange(0, repr_dim, 2, np.float32)\n",
" denom = np.reshape(np.power(10000.0, i / repr_dim), [1, -1])\n",
" enc = tf.expand_dims(tf.concat([tf.sin(pos / denom), tf.cos(pos / denom)], 1), 0)\n",
" return tf.tile(enc, [tf.shape(inputs)[0], 1, 1])\n",
"\n",
"def layer_norm(inputs, epsilon=1e-8):\n",
" mean, variance = tf.nn.moments(inputs, [-1], keep_dims=True)\n",
" normalized = (inputs - mean) / (tf.sqrt(variance + epsilon))\n",
" params_shape = inputs.get_shape()[-1:]\n",
" gamma = tf.get_variable('gamma', params_shape, tf.float32, tf.ones_initializer())\n",
" beta = tf.get_variable('beta', params_shape, tf.float32, tf.zeros_initializer())\n",
" return gamma * normalized + beta\n",
"\n",
"def cnn_block(x, dilation_rate, pad_sz, hidden_dim, kernel_size):\n",
" x = layer_norm(x)\n",
" pad = tf.zeros([tf.shape(x)[0], pad_sz, hidden_dim])\n",
" x = tf.layers.conv1d(inputs = tf.concat([pad, x, pad], 1),\n",
" filters = hidden_dim,\n",
" kernel_size = kernel_size,\n",
" dilation_rate = dilation_rate)\n",
" x = x[:, :-pad_sz, :]\n",
" x = tf.nn.relu(x)\n",
" return x\n",
"\n",
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" kernel_size = 3,\n",
" n_attn_heads = 16,\n",
" dropout = 0.9,\n",
" ):\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
"\n",
" encoder_embedded = tf.layers.dense(self.X, size_layer)\n",
" encoder_embedded += position_encoding(encoder_embedded)\n",
" \n",
" e = tf.identity(encoder_embedded)\n",
" for i in range(num_layers): \n",
" dilation_rate = 2 ** i\n",
" pad_sz = (kernel_size - 1) * dilation_rate \n",
" with tf.variable_scope('block_%d'%i):\n",
" encoder_embedded += cnn_block(encoder_embedded, dilation_rate, \n",
" pad_sz, size_layer, kernel_size)\n",
" \n",
" encoder_output, output_memory = encoder_embedded, encoder_embedded + e\n",
" g = tf.identity(encoder_embedded)\n",
"\n",
" for i in range(num_layers):\n",
" dilation_rate = 2 ** i\n",
" pad_sz = (kernel_size - 1) * dilation_rate\n",
" with tf.variable_scope('decode_%d'%i):\n",
" attn_res = h = cnn_block(encoder_embedded, dilation_rate, \n",
" pad_sz, size_layer, kernel_size)\n",
"\n",
" C = []\n",
" for j in range(n_attn_heads):\n",
" h_ = tf.layers.dense(h, size_layer // n_attn_heads)\n",
" g_ = tf.layers.dense(g, size_layer // n_attn_heads)\n",
" zu_ = tf.layers.dense(\n",
" encoder_output, size_layer // n_attn_heads\n",
" )\n",
" ze_ = tf.layers.dense(output_memory, size_layer // n_attn_heads)\n",
"\n",
" d = tf.layers.dense(h_, size_layer // n_attn_heads) + g_\n",
" dz = tf.matmul(d, tf.transpose(zu_, [0, 2, 1]))\n",
" a = tf.nn.softmax(dz)\n",
" c_ = tf.matmul(a, ze_)\n",
" C.append(c_)\n",
"\n",
" c = tf.concat(C, 2)\n",
" h = tf.layers.dense(attn_res + c, size_layer)\n",
" h = tf.nn.dropout(h, keep_prob = dropout)\n",
" encoder_embedded += h\n",
"\n",
" encoder_embedded = tf.sigmoid(encoder_embedded[-1])\n",
" self.logits = tf.layers.dense(encoder_embedded, output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = test_size\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 5e-4"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], \n",
" dropout = dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {modelnn.X: batch_x, modelnn.Y: batch_y},\n",
" ) \n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" )\n",
" },\n",
" )\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0)\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits = sess.run(\n",
" modelnn.logits,\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0)\n",
" },\n",
" )\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0829 00:04:33.873839 140104212150080 deprecation.py:323] From :44: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"W0829 00:04:33.883059 140104212150080 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0829 00:04:34.265801 140104212150080 deprecation.py:323] From :4: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use `tf.cast` instead.\n",
"W0829 00:04:34.294613 140104212150080 deprecation.py:323] From :24: conv1d (from tensorflow.python.layers.convolutional) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use `tf.keras.layers.Conv1D` instead.\n",
"W0829 00:04:36.600379 140104212150080 deprecation.py:506] From :82: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.\n",
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.69it/s, acc=93, cost=0.0106] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.99it/s, acc=97.6, cost=0.00116]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.94it/s, acc=95.2, cost=0.00553]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.97it/s, acc=95.4, cost=0.00442]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 21.88it/s, acc=95.6, cost=0.00393]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 21.01it/s, acc=95.3, cost=0.00454]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 21.05it/s, acc=96.7, cost=0.00229]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 21.01it/s, acc=97.1, cost=0.00178]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.80it/s, acc=95.3, cost=0.00492]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [00:14<00:00, 20.94it/s, acc=90.6, cost=0.0192] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/2.bidirectional-lstm.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
"\n",
" backward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.backward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.forward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.outputs, self.last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward,\n",
" drop_backward,\n",
" self.X,\n",
" initial_state_fw = self.forward_hidden_layer,\n",
" initial_state_bw = self.backward_hidden_layer,\n",
" dtype = tf.float32,\n",
" )\n",
" self.outputs = tf.concat(self.outputs, 2)\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" ) \n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0812 10:20:04.613218 140016646534976 deprecation.py:323] From :12: LSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.LSTMCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 10:20:04.617547 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:20:04.620435 140016646534976 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 10:20:04.623959 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0812 10:20:04.949644 140016646534976 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0812 10:20:04.954938 140016646534976 deprecation.py:323] From :42: bidirectional_dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.Bidirectional(keras.layers.RNN(cell))`, which is equivalent to this API\n",
"W0812 10:20:04.955546 140016646534976 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn.py:464: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0812 10:20:05.149145 140016646534976 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 10:20:05.156026 140016646534976 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:961: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 10:20:05.712592 140016646534976 deprecation.py:323] From :45: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.04it/s, acc=97.8, cost=0.00113] \n",
"W0812 10:21:46.695034 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:21:46.695935 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.03it/s, acc=97.1, cost=0.00187] \n",
"W0812 10:23:27.984155 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:23:27.985092 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.97it/s, acc=97.8, cost=0.00118] \n",
"W0812 10:26:50.307250 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:26:50.308161 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.97it/s, acc=97.1, cost=0.00237]\n",
"W0812 10:28:31.638492 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:28:31.639337 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:37<00:00, 3.11it/s, acc=97.5, cost=0.00143] \n",
"W0812 10:30:09.934609 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:30:09.935530 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.01it/s, acc=97.4, cost=0.00163] \n",
"W0812 10:31:50.447502 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:31:50.448328 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=96.6, cost=0.00322] \n",
"W0812 10:33:30.276075 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:33:30.276944 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.07it/s, acc=97.7, cost=0.00133] \n",
"W0812 10:35:09.746517 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 10:35:09.747369 140016646534976 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.03it/s, acc=97.5, cost=0.00142] \n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/3.lstm-2path.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.LSTMCell(size_layer, state_is_tuple = False)\n",
" \n",
" with tf.variable_scope('forward', reuse = False):\n",
" rnn_cells_forward = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X_forward = tf.placeholder(tf.float32, (None, None, size))\n",
" drop_forward = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_forward, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer_forward = tf.placeholder(\n",
" tf.float32, (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.outputs_forward, self.last_state_forward = tf.nn.dynamic_rnn(\n",
" drop_forward,\n",
" self.X_forward,\n",
" initial_state = self.hidden_layer_forward,\n",
" dtype = tf.float32,\n",
" )\n",
"\n",
" with tf.variable_scope('backward', reuse = False):\n",
" rnn_cells_backward = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X_backward = tf.placeholder(tf.float32, (None, None, size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_backward, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer_backward = tf.placeholder(\n",
" tf.float32, (None, num_layers * 2 * size_layer)\n",
" )\n",
" self.outputs_backward, self.last_state_backward = tf.nn.dynamic_rnn(\n",
" drop_backward,\n",
" self.X_backward,\n",
" initial_state = self.hidden_layer_backward,\n",
" dtype = tf.float32,\n",
" )\n",
"\n",
" self.outputs = self.outputs_backward - self.outputs_forward\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x_forward = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[k : index, :].values, axis = 0), axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state_forward, last_state_backward, _, loss = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" modelnn.optimizer,\n",
" modelnn.cost,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * 2 * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * 2 * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" batch_x_forward = np.expand_dims(\n",
" df_train.iloc[k : k + timestamp, :], axis = 0\n",
" )\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[k : k + timestamp, :].values, axis = 0), axis = 0\n",
" )\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[k + 1 : k + timestamp + 1, :] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" batch_x_forward = np.expand_dims(df_train.iloc[upper_b:, :], axis = 0)\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[upper_b:, :].values, axis = 0), axis = 0\n",
" )\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [modelnn.logits, modelnn.last_state_forward, modelnn.last_state_backward],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" o_f = np.flip(o, axis = 0)\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: np.expand_dims(o, axis = 0),\n",
" modelnn.X_backward: np.expand_dims(o_f, axis = 0),\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0812 16:41:29.569112 139847292135232 deprecation.py:323] From :12: LSTMCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.LSTMCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 16:41:29.570642 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:41:29.571565 139847292135232 deprecation.py:323] From :17: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0812 16:41:29.886489 139847292135232 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0812 16:41:29.889781 139847292135232 deprecation.py:323] From :30: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0812 16:41:30.079713 139847292135232 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 16:41:30.086595 139847292135232 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:961: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 16:41:30.565006 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:41:30.647609 139847292135232 deprecation.py:323] From :54: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.02it/s, acc=97.7, cost=0.00132] \n",
"W0812 16:43:12.068012 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:43:12.148377 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.02it/s, acc=97.4, cost=0.00157]\n",
"W0812 16:44:53.274921 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:44:53.357845 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=97.3, cost=0.00171]\n",
"W0812 16:46:35.140946 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:46:35.223572 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.00it/s, acc=96.5, cost=0.00334] \n",
"W0812 16:48:14.756632 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:48:14.838256 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.98it/s, acc=97.9, cost=0.00113]\n",
"W0812 16:49:56.968556 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:49:57.051066 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.01it/s, acc=97.7, cost=0.00145]\n",
"W0812 16:51:38.877053 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:51:38.959546 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:41<00:00, 2.98it/s, acc=97.3, cost=0.00172]\n",
"W0812 16:53:21.123231 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:53:21.205539 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.06it/s, acc=97.8, cost=0.00117]\n",
"W0812 16:55:00.356067 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:55:00.437367 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=97.7, cost=0.00127]\n",
"W0812 16:56:40.365346 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n",
"W0812 16:56:40.448274 139847292135232 rnn_cell_impl.py:893] : Using a concatenated state is slower and will soon be deprecated. Use state_is_tuple=True.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.97it/s, acc=97.2, cost=0.00216]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/4.gru.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 hours, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
"\n",
" rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer = tf.placeholder(\n",
" tf.float32, (None, num_layers * size_layer)\n",
" )\n",
" self.outputs, self.last_state = tf.nn.dynamic_rnn(\n",
" drop, self.X, initial_state = self.hidden_layer, dtype = tf.float32\n",
" )\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" ) \n",
" init_value = last_state\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value = last_state\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.hidden_layer: init_value,\n",
" },\n",
" )\n",
" init_value = last_state\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0811 22:46:29.978655 140681713489728 deprecation.py:323] From :12: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0811 22:46:29.981659 140681713489728 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0811 22:46:31.758260 140681713489728 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0811 22:46:31.762153 140681713489728 deprecation.py:323] From :27: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0811 22:46:32.109607 140681713489728 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0811 22:46:32.121295 140681713489728 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0811 22:46:32.136707 140681713489728 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0811 22:46:32.395149 140681713489728 deprecation.py:323] From :29: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [02:10<00:00, 2.45it/s, acc=97.1, cost=0.00211]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:09<00:00, 2.48it/s, acc=96.2, cost=0.00432]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:08<00:00, 1.88it/s, acc=96.7, cost=0.00239]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:05<00:00, 2.12it/s, acc=96.4, cost=0.00307]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:12<00:00, 1.95it/s, acc=96.9, cost=0.00227]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:15<00:00, 2.64it/s, acc=96.4, cost=0.00318]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:10<00:00, 2.59it/s, acc=96.9, cost=0.00256]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:11<00:00, 2.19it/s, acc=97.2, cost=0.00188]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:14<00:00, 2.48it/s, acc=96.9, cost=0.00226]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [02:06<00:00, 2.48it/s, acc=97.5, cost=0.00167]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/5.bidirectional-gru.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
"\n",
" backward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" forward_rnn_cells = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X = tf.placeholder(tf.float32, (None, None, size))\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" backward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" forward_backward = tf.contrib.rnn.DropoutWrapper(\n",
" forward_rnn_cells, output_keep_prob = forget_bias\n",
" )\n",
" self.backward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * size_layer)\n",
" )\n",
" self.forward_hidden_layer = tf.placeholder(\n",
" tf.float32, shape = (None, num_layers * size_layer)\n",
" )\n",
" self.outputs, self.last_state = tf.nn.bidirectional_dynamic_rnn(\n",
" forward_backward,\n",
" drop_backward,\n",
" self.X,\n",
" initial_state_fw = self.forward_hidden_layer,\n",
" initial_state_bw = self.backward_hidden_layer,\n",
" dtype = tf.float32,\n",
" )\n",
" self.outputs = tf.concat(self.outputs, 2)\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state, _, loss = sess.run(\n",
" [modelnn.logits, modelnn.last_state, modelnn.optimizer, modelnn.cost],\n",
" feed_dict = {\n",
" modelnn.X: batch_x,\n",
" modelnn.Y: batch_y,\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" ) \n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(\n",
" df_train.iloc[k : k + timestamp], axis = 0\n",
" ),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[k + 1 : k + timestamp + 1] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(df_train.iloc[upper_b:], axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
"\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" out_logits, last_state = sess.run(\n",
" [modelnn.logits, modelnn.last_state],\n",
" feed_dict = {\n",
" modelnn.X: np.expand_dims(o, axis = 0),\n",
" modelnn.backward_hidden_layer: init_value_backward,\n",
" modelnn.forward_hidden_layer: init_value_forward,\n",
" },\n",
" )\n",
" init_value_forward = last_state[0]\n",
" init_value_backward = last_state[1]\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0812 17:04:18.991346 140383403915072 deprecation.py:323] From :12: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 17:04:18.995361 140383403915072 deprecation.py:323] From :16: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0812 17:04:19.316777 140383403915072 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0812 17:04:19.322190 140383403915072 deprecation.py:323] From :42: bidirectional_dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.Bidirectional(keras.layers.RNN(cell))`, which is equivalent to this API\n",
"W0812 17:04:19.322940 140383403915072 deprecation.py:323] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn.py:464: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0812 17:04:19.515542 140383403915072 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:04:19.522486 140383403915072 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:04:19.531559 140383403915072 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:04:19.763414 140383403915072 deprecation.py:323] From :45: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=97.1, cost=0.00199]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.02it/s, acc=76.2, cost=0.139] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.00it/s, acc=97.1, cost=0.00205]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=95.3, cost=0.00587]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.97it/s, acc=96.2, cost=0.00386]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=97.1, cost=0.00196]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.98it/s, acc=96.7, cost=0.0032] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.00it/s, acc=85.2, cost=0.0599] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=97.6, cost=0.00142]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.03it/s, acc=97.7, cost=0.00138]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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6xSLRQDa2trI5/NMm3Y+119/I5FIhN27dxEOh8nn85im2WMffvSjR3j11fX89Kf/zJNP/gPRaJSf/vSfB1TcQT9Y8ARBEARBEARBEAaShoYG7rrrHpYsuRPLsojFGli0aGmv7W+++TaefPIx5s2bg6IoGIaP+fNvo6lpNIsWLWXFiuXMnfstVFVj9uxLufLKecyffysLF/6QaDTKtGnTqa93t/rev38fy5ffi2VZWJbFeedN58wzz0JVVS655K+56qpvE43W9Rhk5VigOM7g2mqgD4wHtso2CcJgRsaCUEbGglBGxoJQjYwHocxgGgt7925n5Mhxx7obJy29bZPQ09+lapuECcC2mrqB66IgCIIgCIIgCIJwNBGBJwiCIAiCIAiCcIIgAk8QBEEQBEEQBOEEQQSeIAiCIAiCIAjCCYIIPEEQBEEQBEEQhBMEEXiCIAiCIAiCIAgnCCLwBEEQBEEQBEEYdLzzzttcccXfcfXV32HHjm3HujvdSKVSvPDCc73W79mzm699bRrz5n2ncnR0tA94v2Sjc0EQBEEQBEEQBh0/+9mrXHPN9Vx88azDep1lWWiaNkC96iSdTvHiiz/hiiuu6rVNJBLh2WdfHPC+VCMCTxAEQRAEQRCEQcVjjz3E5s2b2LFjO+vWrWXlylW8//57rFr1OLZtE4s1sGDBQsaMGcvGjRt49NEHice/wpYtCa677ntMnnwOK1c+zGeffUKxWOScc6Zy0023oGkazc37eeSRB9i58wsAZs26lLlzr+att37B2rUvYZolAG644QdMnXoutm2zYsWP2LjxdxiGj1AoyFNPrWbFiuWk02nmzfsOgUCAp59efSwvWQUReIIgCIIgCIIg1JD4017+vHnvgLz3X5w9kvhZIw/aZv7829iyJcGcOXOZMeNC2tpauffeRaxc+WMmTJjIG2+8xpIld/HMM66L5Natn7NgwUImTTobgGXLljJ58hTuuONubNtmyZK7WL/+dS6//Jvcc8/dnH/+DO677wEA2ttdt8lp085j9uxLURSFHTu2cfPN32fdup/z6adb2LRpA2vWrEVVVZLJJAC33no7114796AWukwmwzXXzMVxHGbNuoQ5c+aiKMoRX8ODIQJPEARBEARBEIRBzUcffcipp57BhAkTAbjssst56KHlZLMZAMaMGVsRdwDvvvsOH3/8ES+//AIA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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/6.gru-2path.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Date \n",
" Open \n",
" High \n",
" Low \n",
" Close \n",
" Adj Close \n",
" Volume \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 2016-11-02 \n",
" 778.200012 \n",
" 781.650024 \n",
" 763.450012 \n",
" 768.700012 \n",
" 768.700012 \n",
" 1872400 \n",
" \n",
" \n",
" 1 \n",
" 2016-11-03 \n",
" 767.250000 \n",
" 769.950012 \n",
" 759.030029 \n",
" 762.130005 \n",
" 762.130005 \n",
" 1943200 \n",
" \n",
" \n",
" 2 \n",
" 2016-11-04 \n",
" 750.659973 \n",
" 770.359985 \n",
" 750.560974 \n",
" 762.020020 \n",
" 762.020020 \n",
" 2134800 \n",
" \n",
" \n",
" 3 \n",
" 2016-11-07 \n",
" 774.500000 \n",
" 785.190002 \n",
" 772.549988 \n",
" 782.520020 \n",
" 782.520020 \n",
" 1585100 \n",
" \n",
" \n",
" 4 \n",
" 2016-11-08 \n",
" 783.400024 \n",
" 795.632996 \n",
" 780.190002 \n",
" 790.510010 \n",
" 790.510010 \n",
" 1350800 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.112708 \n",
" \n",
" \n",
" 1 \n",
" 0.090008 \n",
" \n",
" \n",
" 2 \n",
" 0.089628 \n",
" \n",
" \n",
" 3 \n",
" 0.160459 \n",
" \n",
" \n",
" 4 \n",
" 0.188066 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0\n",
"0 0.112708\n",
"1 0.090008\n",
"2 0.089628\n",
"3 0.160459\n",
"4 0.188066"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"minmax = MinMaxScaler().fit(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = minmax.transform(df.iloc[:, 4:5].astype('float32')) # Close index\n",
"df_log = pd.DataFrame(df_log)\n",
"df_log.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Split train and test\n",
"\n",
"I will cut the dataset to train and test datasets,\n",
"\n",
"1. Train dataset derived from starting timestamp until last 30 days\n",
"2. Test dataset derived from last 30 days until end of the dataset\n",
"\n",
"So we will let the model do forecasting based on last 30 days, and we will going to repeat the experiment for 10 times. You can increase it locally if you want, and tuning parameters will help you by a lot."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((252, 7), (222, 1), (30, 1))"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_size = 30\n",
"simulation_size = 10\n",
"\n",
"df_train = df_log.iloc[:-test_size]\n",
"df_test = df_log.iloc[-test_size:]\n",
"df.shape, df_train.shape, df_test.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"class Model:\n",
" def __init__(\n",
" self,\n",
" learning_rate,\n",
" num_layers,\n",
" size,\n",
" size_layer,\n",
" output_size,\n",
" forget_bias = 0.1,\n",
" ):\n",
" def lstm_cell(size_layer):\n",
" return tf.nn.rnn_cell.GRUCell(size_layer)\n",
" \n",
" with tf.variable_scope('forward', reuse = False):\n",
" rnn_cells_forward = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X_forward = tf.placeholder(tf.float32, (None, None, size))\n",
" drop_forward = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_forward, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer_forward = tf.placeholder(\n",
" tf.float32, (None, num_layers * size_layer)\n",
" )\n",
" self.outputs_forward, self.last_state_forward = tf.nn.dynamic_rnn(\n",
" drop_forward,\n",
" self.X_forward,\n",
" initial_state = self.hidden_layer_forward,\n",
" dtype = tf.float32,\n",
" )\n",
"\n",
" with tf.variable_scope('backward', reuse = False):\n",
" rnn_cells_backward = tf.nn.rnn_cell.MultiRNNCell(\n",
" [lstm_cell(size_layer) for _ in range(num_layers)],\n",
" state_is_tuple = False,\n",
" )\n",
" self.X_backward = tf.placeholder(tf.float32, (None, None, size))\n",
" drop_backward = tf.contrib.rnn.DropoutWrapper(\n",
" rnn_cells_backward, output_keep_prob = forget_bias\n",
" )\n",
" self.hidden_layer_backward = tf.placeholder(\n",
" tf.float32, (None, num_layers * size_layer)\n",
" )\n",
" self.outputs_backward, self.last_state_backward = tf.nn.dynamic_rnn(\n",
" drop_backward,\n",
" self.X_backward,\n",
" initial_state = self.hidden_layer_backward,\n",
" dtype = tf.float32,\n",
" )\n",
"\n",
" self.outputs = self.outputs_backward - self.outputs_forward\n",
" self.Y = tf.placeholder(tf.float32, (None, output_size))\n",
" self.logits = tf.layers.dense(self.outputs[-1], output_size)\n",
" self.cost = tf.reduce_mean(tf.square(self.Y - self.logits))\n",
" self.optimizer = tf.train.AdamOptimizer(learning_rate).minimize(\n",
" self.cost\n",
" )\n",
" \n",
"def calculate_accuracy(real, predict):\n",
" real = np.array(real) + 1\n",
" predict = np.array(predict) + 1\n",
" percentage = 1 - np.sqrt(np.mean(np.square((real - predict) / real)))\n",
" return percentage * 100\n",
"\n",
"def anchor(signal, weight):\n",
" buffer = []\n",
" last = signal[0]\n",
" for i in signal:\n",
" smoothed_val = last * weight + (1 - weight) * i\n",
" buffer.append(smoothed_val)\n",
" last = smoothed_val\n",
" return buffer"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"num_layers = 1\n",
"size_layer = 128\n",
"timestamp = 5\n",
"epoch = 300\n",
"dropout_rate = 0.8\n",
"future_day = test_size\n",
"learning_rate = 0.01"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"def forecast():\n",
" tf.reset_default_graph()\n",
" modelnn = Model(\n",
" learning_rate, num_layers, df_log.shape[1], size_layer, df_log.shape[1], dropout_rate\n",
" )\n",
" sess = tf.InteractiveSession()\n",
" sess.run(tf.global_variables_initializer())\n",
" date_ori = pd.to_datetime(df.iloc[:, 0]).tolist()\n",
"\n",
" pbar = tqdm(range(epoch), desc = 'train loop')\n",
" for i in pbar:\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
" total_loss, total_acc = [], []\n",
" for k in range(0, df_train.shape[0] - 1, timestamp):\n",
" index = min(k + timestamp, df_train.shape[0] - 1)\n",
" batch_x_forward = np.expand_dims(\n",
" df_train.iloc[k : index, :].values, axis = 0\n",
" )\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[k : index, :].values, axis = 0), axis = 0\n",
" )\n",
" batch_y = df_train.iloc[k + 1 : index + 1, :].values\n",
" logits, last_state_forward, last_state_backward, _, loss = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" modelnn.optimizer,\n",
" modelnn.cost,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.Y: batch_y,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" total_loss.append(loss)\n",
" total_acc.append(calculate_accuracy(batch_y[:, 0], logits[:, 0]))\n",
" pbar.set_postfix(cost = np.mean(total_loss), acc = np.mean(total_acc))\n",
" \n",
" future_day = test_size\n",
"\n",
" output_predict = np.zeros((df_train.shape[0] + future_day, df_train.shape[1]))\n",
" output_predict[0] = df_train.iloc[0]\n",
" upper_b = (df_train.shape[0] // timestamp) * timestamp\n",
" init_value_forward = np.zeros((1, num_layers * size_layer))\n",
" init_value_backward = np.zeros((1, num_layers * size_layer))\n",
"\n",
" for k in range(0, (df_train.shape[0] // timestamp) * timestamp, timestamp):\n",
" batch_x_forward = np.expand_dims(\n",
" df_train.iloc[k : k + timestamp, :], axis = 0\n",
" )\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[k : k + timestamp, :].values, axis = 0), axis = 0\n",
" )\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[k + 1 : k + timestamp + 1, :] = out_logits\n",
"\n",
" if upper_b != df_train.shape[0]:\n",
" batch_x_forward = np.expand_dims(df_train.iloc[upper_b:, :], axis = 0)\n",
" batch_x_backward = np.expand_dims(\n",
" np.flip(df_train.iloc[upper_b:, :].values, axis = 0), axis = 0\n",
" )\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [modelnn.logits, modelnn.last_state_forward, modelnn.last_state_backward],\n",
" feed_dict = {\n",
" modelnn.X_forward: batch_x_forward,\n",
" modelnn.X_backward: batch_x_backward,\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[upper_b + 1 : df_train.shape[0] + 1] = out_logits\n",
" future_day -= 1\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" \n",
" for i in range(future_day):\n",
" o = output_predict[-future_day - timestamp + i:-future_day + i]\n",
" o_f = np.flip(o, axis = 0)\n",
" out_logits, last_state_forward, last_state_backward = sess.run(\n",
" [\n",
" modelnn.logits,\n",
" modelnn.last_state_forward,\n",
" modelnn.last_state_backward,\n",
" ],\n",
" feed_dict = {\n",
" modelnn.X_forward: np.expand_dims(o, axis = 0),\n",
" modelnn.X_backward: np.expand_dims(o_f, axis = 0),\n",
" modelnn.hidden_layer_forward: init_value_forward,\n",
" modelnn.hidden_layer_backward: init_value_backward,\n",
" },\n",
" )\n",
" init_value_forward = last_state_forward\n",
" init_value_backward = last_state_backward\n",
" output_predict[-future_day + i] = out_logits[-1]\n",
" date_ori.append(date_ori[-1] + timedelta(days = 1))\n",
" \n",
" output_predict = minmax.inverse_transform(output_predict)\n",
" deep_future = anchor(output_predict[:, 0], 0.3)\n",
" \n",
" return deep_future[-test_size:]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Logging before flag parsing goes to stderr.\n",
"W0812 17:35:02.847837 140485361571648 deprecation.py:323] From :12: GRUCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.GRUCell, and will be replaced by that in Tensorflow 2.0.\n",
"W0812 17:35:02.849749 140485361571648 deprecation.py:323] From :17: MultiRNNCell.__init__ (from tensorflow.python.ops.rnn_cell_impl) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"This class is equivalent as tf.keras.layers.StackedRNNCells, and will be replaced by that in Tensorflow 2.0.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"W0812 17:35:03.166620 140485361571648 lazy_loader.py:50] \n",
"The TensorFlow contrib module will not be included in TensorFlow 2.0.\n",
"For more information, please see:\n",
" * https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md\n",
" * https://github.com/tensorflow/addons\n",
" * https://github.com/tensorflow/io (for I/O related ops)\n",
"If you depend on functionality not listed there, please file an issue.\n",
"\n",
"W0812 17:35:03.169869 140485361571648 deprecation.py:323] From :30: dynamic_rnn (from tensorflow.python.ops.rnn) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `keras.layers.RNN(cell)`, which is equivalent to this API\n",
"W0812 17:35:03.361743 140485361571648 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:1251: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:35:03.368463 140485361571648 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:564: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:35:03.377521 140485361571648 deprecation.py:506] From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/rnn_cell_impl.py:574: calling Zeros.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Call initializer instance with the dtype argument instead of passing it to the constructor\n",
"W0812 17:35:03.612136 140485361571648 deprecation.py:323] From :54: dense (from tensorflow.python.layers.core) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use keras.layers.dense instead.\n",
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.04it/s, acc=97.5, cost=0.00174]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 2\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 3.01it/s, acc=96.7, cost=0.00259]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 3\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:39<00:00, 2.99it/s, acc=97.4, cost=0.00178]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=96.2, cost=0.00314]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 5\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 2.99it/s, acc=97.4, cost=0.00166]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 6\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.02it/s, acc=97.3, cost=0.00162]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 7\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.00it/s, acc=96.1, cost=0.00347]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 8\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:40<00:00, 3.01it/s, acc=96.1, cost=0.004] \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 9\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=95.3, cost=0.00537]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"simulation 10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"train loop: 100%|██████████| 300/300 [01:38<00:00, 3.05it/s, acc=97.1, cost=0.00213]\n"
]
}
],
"source": [
"results = []\n",
"for i in range(simulation_size):\n",
" print('simulation %d'%(i + 1))\n",
" results.append(forecast())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"accuracies = [calculate_accuracy(df['Close'].iloc[-test_size:].values, r) for r in results]\n",
"\n",
"plt.figure(figsize = (15, 5))\n",
"for no, r in enumerate(results):\n",
" plt.plot(r, label = 'forecast %d'%(no + 1))\n",
"plt.plot(df['Close'].iloc[-test_size:].values, label = 'true trend', c = 'black')\n",
"plt.legend()\n",
"plt.title('average accuracy: %.4f'%(np.mean(accuracies)))\n",
"plt.show()"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: deep-learning/7.vanilla.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"\n",
"if not sys.warnoptions:\n",
" warnings.simplefilter('ignore')"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"from datetime import datetime\n",
"from datetime import timedelta\n",
"from tqdm import tqdm\n",
"sns.set()\n",
"tf.compat.v1.random.set_random_seed(1234)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
"