From f8a407c64805d964d57fb66bf769144ab9382622 Mon Sep 17 00:00:00 2001 From: wassname Date: Tue, 18 Jul 2017 09:07:07 +0800 Subject: [PATCH] poliniex to poloniex --- 0. load poliniex data 30m multindex.ipynb | 8 ++++---- data/{poliniex_30m.hf => poloniex_30m.hf} | Bin .../BTCUSDT.csv | 0 .../DASHBTC.csv | 0 .../DOGEBTC.csv | 0 .../ETCBTC.csv | 0 .../ETCETH.csv | 0 .../ETHBTC.csv | 0 .../ETHUSDT.csv | 0 .../GNTBTC.csv | 0 .../GNTETH.csv | 0 .../LTCBTC.csv | 0 .../REPBTC.csv | 0 .../REPETH.csv | 0 .../XMRBTC.csv | 0 .../XRPBTC.csv | 0 .../readme.md | 0 keras-ddpg.ipynb | 4 ++-- readme.md | 5 ++--- requirements/requirements.txt | 1 + src/environments/portfolio.py | 6 +++--- tensorforce-VPG.ipynb | 4 ++-- test/test_env.py | 8 ++++---- 23 files changed, 18 insertions(+), 18 deletions(-) rename data/{poliniex_30m.hf => poloniex_30m.hf} (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/BTCUSDT.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/DASHBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/DOGEBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/ETCBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/ETCETH.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/ETHBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/ETHUSDT.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/GNTBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/GNTETH.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/LTCBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/REPBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/REPETH.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/XMRBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/XRPBTC.csv (100%) rename data/{poliniex_teachmehowtotrade => poloniex_teachmehowtotrade}/readme.md (100%) diff --git a/0. load poliniex data 30m multindex.ipynb b/0. load poliniex data 30m multindex.ipynb index 9fcb81d..3cf7db9 100644 --- a/0. load poliniex data 30m multindex.ipynb +++ b/0. load poliniex data 30m multindex.ipynb @@ -4,7 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "load 30m poliniex data" + "load 30m poloniex data" ] }, { @@ -52,7 +52,7 @@ "outputs": [], "source": [ "dfs=[]\n", - "for infile in glob.glob('./data/poliniex_teachmehowtotrade/*.csv'):\n", + "for infile in glob.glob('./data/poloniex_teachmehowtotrade/*.csv'):\n", " df = pd.read_csv(infile)\n", " \n", " # date\n", @@ -5731,8 +5731,8 @@ ], "source": [ "# save\n", - "df_train.to_hdf('./data/poliniex_30m.hf',key='train')\n", - "df_test.to_hdf('./data/poliniex_30m.hf',key='test')\n", + "df_train.to_hdf('./data/poloniex_30m.hf',key='train')\n", + "df_test.to_hdf('./data/poloniex_30m.hf',key='test')\n", "df_train" ] }, diff --git a/data/poliniex_30m.hf b/data/poloniex_30m.hf similarity index 100% rename from data/poliniex_30m.hf rename to data/poloniex_30m.hf diff --git a/data/poliniex_teachmehowtotrade/BTCUSDT.csv b/data/poloniex_teachmehowtotrade/BTCUSDT.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/BTCUSDT.csv rename to data/poloniex_teachmehowtotrade/BTCUSDT.csv diff --git a/data/poliniex_teachmehowtotrade/DASHBTC.csv b/data/poloniex_teachmehowtotrade/DASHBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/DASHBTC.csv rename to data/poloniex_teachmehowtotrade/DASHBTC.csv diff --git a/data/poliniex_teachmehowtotrade/DOGEBTC.csv b/data/poloniex_teachmehowtotrade/DOGEBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/DOGEBTC.csv rename to data/poloniex_teachmehowtotrade/DOGEBTC.csv diff --git a/data/poliniex_teachmehowtotrade/ETCBTC.csv b/data/poloniex_teachmehowtotrade/ETCBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/ETCBTC.csv rename to data/poloniex_teachmehowtotrade/ETCBTC.csv diff --git a/data/poliniex_teachmehowtotrade/ETCETH.csv b/data/poloniex_teachmehowtotrade/ETCETH.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/ETCETH.csv rename to data/poloniex_teachmehowtotrade/ETCETH.csv diff --git a/data/poliniex_teachmehowtotrade/ETHBTC.csv b/data/poloniex_teachmehowtotrade/ETHBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/ETHBTC.csv rename to data/poloniex_teachmehowtotrade/ETHBTC.csv diff --git a/data/poliniex_teachmehowtotrade/ETHUSDT.csv b/data/poloniex_teachmehowtotrade/ETHUSDT.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/ETHUSDT.csv rename to data/poloniex_teachmehowtotrade/ETHUSDT.csv diff --git a/data/poliniex_teachmehowtotrade/GNTBTC.csv b/data/poloniex_teachmehowtotrade/GNTBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/GNTBTC.csv rename to data/poloniex_teachmehowtotrade/GNTBTC.csv diff --git a/data/poliniex_teachmehowtotrade/GNTETH.csv b/data/poloniex_teachmehowtotrade/GNTETH.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/GNTETH.csv rename to data/poloniex_teachmehowtotrade/GNTETH.csv diff --git a/data/poliniex_teachmehowtotrade/LTCBTC.csv b/data/poloniex_teachmehowtotrade/LTCBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/LTCBTC.csv rename to data/poloniex_teachmehowtotrade/LTCBTC.csv diff --git a/data/poliniex_teachmehowtotrade/REPBTC.csv b/data/poloniex_teachmehowtotrade/REPBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/REPBTC.csv rename to data/poloniex_teachmehowtotrade/REPBTC.csv diff --git a/data/poliniex_teachmehowtotrade/REPETH.csv b/data/poloniex_teachmehowtotrade/REPETH.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/REPETH.csv rename to data/poloniex_teachmehowtotrade/REPETH.csv diff --git a/data/poliniex_teachmehowtotrade/XMRBTC.csv b/data/poloniex_teachmehowtotrade/XMRBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/XMRBTC.csv rename to data/poloniex_teachmehowtotrade/XMRBTC.csv diff --git a/data/poliniex_teachmehowtotrade/XRPBTC.csv b/data/poloniex_teachmehowtotrade/XRPBTC.csv similarity index 100% rename from data/poliniex_teachmehowtotrade/XRPBTC.csv rename to data/poloniex_teachmehowtotrade/XRPBTC.csv diff --git a/data/poliniex_teachmehowtotrade/readme.md b/data/poloniex_teachmehowtotrade/readme.md similarity index 100% rename from data/poliniex_teachmehowtotrade/readme.md rename to data/poloniex_teachmehowtotrade/readme.md diff --git a/keras-ddpg.ipynb b/keras-ddpg.ipynb index 93af2c9..12a7ed9 100644 --- a/keras-ddpg.ipynb +++ b/keras-ddpg.ipynb @@ -164,7 +164,7 @@ }, "outputs": [], "source": [ - "df_train = pd.read_hdf('./data/poliniex_30m.hf',key='train')\n", + "df_train = pd.read_hdf('./data/poloniex_30m.hf',key='train')\n", "env = PortfolioEnv(\n", " df=df_train,\n", " steps=30, \n", @@ -176,7 +176,7 @@ ")\n", "env.seed = 0 \n", "\n", - "df_test = pd.read_hdf('./data/poliniex_30m.hf',key='test')\n", + "df_test = pd.read_hdf('./data/poloniex_30m.hf',key='test')\n", "env_test = PortfolioEnv(\n", " df=df_test,\n", " steps=30, \n", diff --git a/readme.md b/readme.md index 0b1bd06..6d24edb 100644 --- a/readme.md +++ b/readme.md @@ -8,8 +8,7 @@ The main differences from Jian et. al. 2017 are: - The first step in a deep learning project should be to make sure the model can overfit, this provides a sanity check. So I am first trying to acheive good results with no trading costs. - I have not used portfolio vector memory, which could lead to it incurring large trading costs. But as I have disabled trading costs this shouldn't be a problem. -- I added some random shifts as data augmentation to prevent overfitting -- As well as vanilla policy gradient I tried generalized advantage estimation and Deep DPG ([Lillicrap et al. 2015]( http://arxiv.org/pdf/1509.02971v2.pdf)) +- Instead of DPG (Deterinate policy gradient) I tried and DDPG (deep determinate policy gradient ([Lillicrap et al. 2015]( http://arxiv.org/pdf/1509.02971v2.pdf))) and VPG (vanilla policy gradient) with generalized advantage estimation. - I tried to replicate the best CNN model from the paper (not the LSTM or RNN models) Author: wassname @@ -34,7 +33,7 @@ I have not managed to overfit to the training data or generalise to the test dat - enviroments/portfolio.py - contains an openai environment for porfolio trading - tensorforce-VPG.ipynb - notebook to try a policy gradient agent - keras-ddpg - notebook to try a Deep DPG agent -- data/polinies_30m.hdf - hdf file with cryptocurrency 30 minutes prices +- data/poloniex_30m.hdf - hdf file with cryptocurrency 30 minutes prices # Tests diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 48624e2..cad48b6 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -14,3 +14,4 @@ numpy==1.12.1 matplotlib==2.0.0 # misc tqdm==4.11.2 +seaborn==0.7.1 diff --git a/src/environments/portfolio.py b/src/environments/portfolio.py index 1e1c450..0d04db9 100644 --- a/src/environments/portfolio.py +++ b/src/environments/portfolio.py @@ -17,7 +17,7 @@ class DataSrc(object): DataSrc. df - csv for data frame index of timestamps - and multi-index columns levels=[['LTCBTC'],...],['close',...]] + and multi-index columns levels=[['LTCBTC'],...],['open','low','high','close']] steps - total steps in episode scale - scale the data for each episode augment - fraction to augment the data by @@ -167,8 +167,8 @@ class PortfolioEnv(gym.Env): An environment for financial portfolio management. Params: - df - data frame index of timestamps - and multi-index columns levels=[['LTCBTC'],...],['close',...]] + df - csv for data frame index of timestamps + and multi-index columns levels=[['LTCBTC'],...],['open','low','high','close']] steps - steps in episode scale - scale data and each episode (except return) augment - fraction to randomly shift data by diff --git a/tensorforce-VPG.ipynb b/tensorforce-VPG.ipynb index 3210c42..8b95cb9 100644 --- a/tensorforce-VPG.ipynb +++ b/tensorforce-VPG.ipynb @@ -183,7 +183,7 @@ } ], "source": [ - "df_train = pd.read_hdf('./data/poliniex_30m.hf',key='train')\n", + "df_train = pd.read_hdf('./data/poloniex_30m.hf',key='train')\n", "env = EnvWrapper(\n", " df=df_train,\n", " steps=30, \n", @@ -195,7 +195,7 @@ ")\n", "env.seed = 0 \n", "\n", - "df_test = pd.read_hdf('./data/poliniex_30m.hf',key='test')\n", + "df_test = pd.read_hdf('./data/poloniex_30m.hf',key='test')\n", "env_test = EnvWrapper(\n", " df=df_test,\n", " steps=30, \n", diff --git a/test/test_env.py b/test/test_env.py index 7de5b3a..3f2a772 100644 --- a/test/test_env.py +++ b/test/test_env.py @@ -3,7 +3,7 @@ import numpy as np from src.environments.portfolio import PortfolioEnv def test_env_outputs(): - df = pd.read_hdf('./data/poliniex_30m.hf', key='train') + df = pd.read_hdf('./data/poloniex_30m.hf', key='train') env = PortfolioEnv(df=df) action = np.random.random(env.action_space.shape) @@ -19,7 +19,7 @@ def test_env_outputs(): assert np.isfinite(v), '%s=%s should be finite' % (k, v) def test_portfolio_env(): - df = pd.read_hdf('./data/poliniex_30m.hf', key='train') + df = pd.read_hdf('./data/poloniex_30m.hf', key='train') asset_names = df.columns.levels[0] env = PortfolioEnv(df=df) @@ -41,7 +41,7 @@ def test_portfolio_env(): def test_portfolio_env_hold(): - df = pd.read_hdf('./data/poliniex_30m.hf', key='train') + df = pd.read_hdf('./data/poloniex_30m.hf', key='train') asset_names = df.columns.levels[0] np.random.seed(0) @@ -57,7 +57,7 @@ def test_portfolio_env_hold(): def test_scaled(): - df = pd.read_hdf('./data/poliniex_30m.hf', key='train') + df = pd.read_hdf('./data/poloniex_30m.hf', key='train') np.random.seed(0) env1 = PortfolioEnv(df=df, scale=True)