Repository: LiamConnell/deep-algotrading Branch: master Commit: 3c13a82910ca Files: 25 Total size: 1.5 MB Directory structure: gitextract__rjh3qrn/ ├── .ipynb_checkpoints/ │ └── singlestock_regresion_(1)-checkpoint.ipynb ├── DataFlow_Suite/ │ ├── lstm_exec.py │ ├── neural_net_exec.py │ └── rets.pkl ├── LICENSE ├── README.md └── notebooks/ ├── .ipynb_checkpoints/ │ ├── TF-FIN-1-singlestock_regresion-checkpoint.ipynb │ ├── TF-FIN-2-multistock_regresion-checkpoint.ipynb │ ├── TF-FIN-3-regression_with_policy_training-checkpoint.ipynb │ ├── TF-FIN-4-stochastic_gradient_descent-checkpoint.ipynb │ ├── TF-FIN-5-multi_sampling-checkpoint.ipynb │ ├── TF-FIN-6-neural_network-checkpoint.ipynb │ ├── TF-FIN-7-regularization_modular-checkpoint.ipynb │ ├── Untitled-checkpoint.ipynb │ └── lstm_(7)-checkpoint.ipynb ├── TF-FIN-1-singlestock_regresion.ipynb ├── TF-FIN-2-multistock_regresion.ipynb ├── TF-FIN-3-regression_with_policy_training.ipynb ├── TF-FIN-4-stochastic_gradient_descent.ipynb ├── TF-FIN-5-multi_sampling.ipynb ├── TF-FIN-6-neural_network.ipynb ├── TF-FIN-7-regularization_modular.ipynb ├── lstm_(7).ipynb ├── policy_net-multisymbol_(july11).ipynb └── test.pkl ================================================ FILE CONTENTS ================================================ ================================================ FILE: .ipynb_checkpoints/singlestock_regresion_(1)-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#TODO: normalize data, more cost fns, " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " #prices=np.asarray(list(prices))\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return (prices-prices.shift(-1))/prices\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "gs = get_prices('GS')\n", "rets = get_returns(gs)\n", "ins, outs = sort_data(rets)\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# we define two placeholders for our input and output\n", "x = tf.placeholder(tf.float32, [None, 100])\n", "y_ = tf.placeholder(tf.float32, [None, 1])\n", "\n", "# we define trainable variables for our model\n", "W = tf.Variable(tf.random_normal([100, 1]))\n", "b = tf.Variable(tf.random_normal([1]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b\n", "\n", "# two choices for cost function: cross entropy or mean squared error\n", "# use MSE for now\n", "# TODO learn more about cost fns and training steps\n", "cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))\n", "train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)\n", "#MSE:\n", "cost = tf.reduce_sum(tf.pow(y-y_, 2))/(2*1000)\n", "optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 0.019055584\n", "Epoch: 2000 cost= 0.005943393\n", "Epoch: 3000 cost= 0.002348902\n", "Epoch: 4000 cost= 0.001233126\n", "Epoch: 5000 cost= 0.000856721\n", "Epoch: 6000 cost= 0.000721102\n", "Epoch: 7000 cost= 0.000669394\n", "Epoch: 8000 cost= 0.000648663\n", "Epoch: 9000 cost= 0.000639970\n", "Epoch: 10000 cost= 0.000636177\n", "Epoch: 11000 cost= 0.000634464\n", "Epoch: 12000 cost= 0.000633667\n", "Epoch: 13000 cost= 0.000633285\n", "Epoch: 14000 cost= 0.000633100\n", "Epoch: 15000 cost= 0.000633007\n", "Epoch: 16000 cost= 0.000632960\n", "Epoch: 17000 cost= 0.000632936\n", "Epoch: 18000 cost= 0.000632923\n", "Epoch: 19000 cost= 0.000632917\n", "Epoch: 20000 cost= 0.000632913\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "for epoch in range(20000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " c = sess.run(cost, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c))" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#train results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: train_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * train_outs\n", "plot(np.cumprod(returns+1))" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#test results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: test_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * test_outs\n", "plot(np.cumprod(returns+1))" ] } ], "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: DataFlow_Suite/lstm_exec.py ================================================ import tensorflow as tf import numpy as np import numpy.random as rng import pandas.io.data as web import numpy as np import pandas as pd def get_prices(symbol): start, end = '2007-05-02', '2016-04-11' data = web.DataReader(symbol, 'yahoo', start, end) data=pd.DataFrame(data) prices=data['Adj Close'] prices=prices.astype(float) return prices def get_returns(prices): return ((prices-prices.shift(-1))/prices)[:-1] def get_data(list): l = [] for symbol in list: rets = get_returns(get_prices(symbol)) l.append(rets) return np.array(l).T symbol_list = ['C', 'GS'] rets = get_data(symbol_list) def lstm_iterator(raw_data, num_steps, data_size): batch_size=1 raw_data = np.array(raw_data, dtype=np.float32) data_len = len(raw_data) batch_len = data_len // batch_size data = np.zeros([batch_size, batch_len, data_size], dtype=np.float32) for i in range(batch_size): data[i] = raw_data[batch_len * i:batch_len * (i + 1),:] epoch_size = (batch_len - 1) // num_steps if epoch_size == 0: raise ValueError("epoch_size == 0, decrease batch_size or num_steps") for i in range(epoch_size): x = data[:, i*num_steps:(i+1)*num_steps] y = data[:, i*num_steps+1:(i+1)*num_steps+1] yield (x[0], y[0]) class LSTMModel(object): def __init__(self, num_steps, num_samples):#, config): symbol_list = ['C', 'GS'] positions = tf.constant([-1,0,1]) #long, neutral or short num_positions = 3 num_symbols = len(symbol_list) self.num_samples = num_samples self.num_steps = num_steps #n_input = num_symbols * 100 hidden_size=21 n_classes = num_positions * num_symbols #self.num_steps = tf.placeholder(tf.int64) # define placeholders self.inputs_ = tf.placeholder(tf.float32, [None, num_symbols]) self.targets_ = tf.placeholder(tf.float32, [None, num_symbols]) cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0, state_is_tuple=True) #cell = tf.nn.rnn_cell.MultiRNNCell([cell] * config.num_layers) cell = tf.nn.rnn_cell.InputProjectionWrapper(cell, num_symbols) cell = tf.nn.rnn_cell.OutputProjectionWrapper(cell, n_classes) outputs=[] self.initial_state = cell.zero_state(1, tf.float32) state = self.initial_state time_step = 0 '''with tf.variable_scope("RNN"): def body(x): inp = self.inputs_[time_step,:] inp = tf.reshape(inp, [1,-1]) (cell_output, state) = cell(inp, state) outputs.append(cell_output) return def condition(x): return tf.reduce_sum(x) < 100 tf.while_loop(condition, body, [x])''' with tf.variable_scope("RNN"): for time_step in range(self.num_steps): #####num_steps??? if time_step > 0: tf.get_variable_scope().reuse_variables() inp = self.inputs_[time_step,:] inp = tf.reshape(inp, [1,-1]) (cell_output, state) = cell(inp, state) outputs.append(cell_output) #[6,] self.final_state = state y = tf.reshape(tf.concat(1, outputs), [-1, n_classes]) # loop through symbol, taking the columns for each symbol's bucket together pos = {} sample_n = {} sample_mask = {} symbol_returns = {} relevant_target_column = {} for i in range(num_symbols): # isolate the buckets relevant to the symbol and get a softmax as well symbol_probs = y[:,i*num_positions:(i+1)*num_positions] symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i])) # sample probability to chose our policy's action sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples) for sample_iter in range(num_samples): sample_n[i*num_samples + sample_iter] = sample[:,sample_iter] pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1 symbol_returns[i*num_samples + sample_iter] = tf.mul( tf.cast(pos[i*num_samples + sample_iter], tf.float32), self.targets_[:,i]) sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), tf.float32) relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum( symbol_probs * sample_mask[i*num_samples + sample_iter],1) daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()]) daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2] daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5] total_return = tf.reduce_prod(daily_returns+1, 0) z = tf.ones_like(total_return) * -1 self.total_return = total_return = tf.add(total_return, z) ann_vol = tf.mul( tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) , np.sqrt(252) ) self.sharpe = tf.div(total_return, ann_vol) #Maybe metric slicing later #segment_ids = tf.ones_like(daily_returns[:,0]) #partial_prod = tf.segment_prod(daily_returns+1, segment_ids) training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()]) ones = tf.ones_like(training_target_cols) gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones) gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2] #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped) #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1)) cost = tf.mul(gradient , tf.expand_dims(total_return, -1)) #cost = tf.mul(gradient , tf.expand_dims(sharpe, -1)) self.optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost) self.costfn = tf.reduce_mean(cost) def run_train_results(m, epoch): state = m.initial_state.eval() rs = rets[:-200] full_feed = {m.inputs_: rs[:-1], m.targets_: rs[1:], m.initial_state: state} t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=full_feed) t = np.mean(t) s = np.mean(s) print("Epoch:", '%04d' % (epoch+1), "cost=",c, "total return=", "{:.9f}".format(t), "sharpe=", "{:.9f}".format(s)) return t def run_test_results(m, epoch): state = m.initial_state.eval() rs = rets[-200:] full_feed = {m.inputs_: rs[:-1], m.targets_: rs[1:], m.initial_state: state} t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=full_feed) t = np.mean(t) s = np.mean(s) print("Epoch:", '%04d' % (epoch+1), "cost=",c, "total return=", "{:.9f}".format(t), "sharpe=", "{:.9f}".format(s)) return t def run_epoch(m, epoch): full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:]} state = m.initial_state.eval() for step, (x, y) in enumerate(lstm_iterator(rets,20,2 )): #m.num_steps = len(x) feed_dict = {m.inputs_: x, m.targets_: y, m.initial_state: state} _ , state = session.run([m.optimizer, m.final_state], feed_dict=feed_dict) return results = [] pos_results = [] with tf.Graph().as_default(), tf.Session() as session: with tf.variable_scope("model", reuse=None):#, initializer=init): m = LSTMModel(num_steps = 20, num_samples = 5)#, config=config) with tf.variable_scope("model", reuse=True):#, initializer=init): mvalid = LSTMModel(num_steps = len(rets[:-200]) -1, num_samples = 1)#, config=config) with tf.variable_scope("model", reuse=True):#, initializer=init): mtest = LSTMModel(num_steps = len(rets[-200:]) -1, num_samples = 1) tf.initialize_all_variables().run() for epoch in range(10): run_epoch(m, epoch ) print('getting results...') trt = run_train_results(mvalid, epoch) print('trt') ttt = run_test_results(mtest, epoch) print('test: ',ttt) results.append(ttt) if trt>0: pos_results.append(ttt) print(np.mean(results)) print(np.mean(pos_results)) ================================================ FILE: DataFlow_Suite/neural_net_exec.py ================================================ #import matplotlib.pyplot as plt import tensorflow as tf import numpy as np import numpy.random as rng import pandas.io.data as web import numpy as np import os import pandas as pd # we modify this data organizing slightly to get two symbols def get_prices(symbol): start, end = '2007-05-02', '2016-04-11' data = web.DataReader(symbol, 'yahoo', start, end) data=pd.DataFrame(data) prices=data['Adj Close'] prices=prices.astype(float) return prices def get_returns(prices): return ((prices-prices.shift(-1))/prices)[:-1] def get_data(list): l = [] for symbol in list: rets = get_returns(get_prices(symbol)) l.append(rets) return np.array(l).T def sort_data(rets): ins = [] outs = [] for i in range(len(rets)-100): ins.append(rets[i:i+100].tolist()) outs.append(rets[i+100]) return np.array(ins), np.array(outs) print('loading data') symbol_list = ['C', 'GS'] def data_loader_1(symbol_list): if os.path.exists('rets.pkl'): rets = pd.read_pickle('rets.pkl') else: rets = get_data(symbol_list) pd.to_pickle(rets, 'rets.pkl') ins, outs = sort_data(rets) ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100]) div = int(.8 * ins.shape[0]) train_ins, train_outs = ins[:div], outs[:div] test_ins, test_outs = ins[div:], outs[div:] #normalize inputs train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins) return train_ins, test_ins, train_outs, test_outs train_ins, test_ins, train_outs, test_outs = data_loader_1(symbol_list) print('loaded data') sess = tf.Session() positions = tf.constant([-1,0,1]) #long, neutral or short num_positions = 3 num_symbols = len(symbol_list) num_samples = 10 n_input = num_symbols * 100 n_hidden_1 = 10 # 1st layer number of features n_hidden_2 = 10 # 2nd layer number of features n_classes = num_positions * num_symbols # MNIST total classes (0-9 digits) # define placeholders x = tf.placeholder(tf.float32, [None, num_symbols * 100]) y_ = tf.placeholder(tf.float32, [None, num_symbols]) weights = { 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])), 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])), 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes])) } biases = { 'b1': tf.Variable(tf.random_normal([n_hidden_1])), 'b2': tf.Variable(tf.random_normal([n_hidden_2])), 'out': tf.Variable(tf.random_normal([n_classes])) } def multilayer_perceptron(x, weights, biases): # Hidden layer with RELU activation layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1']) layer_1 = tf.nn.relu(layer_1) # Hidden layer with RELU activation layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2']) layer_2 = tf.nn.relu(layer_2) # Output layer with linear activation out_layer = tf.matmul(layer_2, weights['out']) + biases['out'] return out_layer # Construct model y = multilayer_perceptron(x, weights, biases) # loop through symbol, taking the columns for each symbol's bucket together pos = {} sample_n = {} sample_mask = {} symbol_returns = {} relevant_target_column = {} for i in range(num_symbols): # isolate the buckets relevant to the symbol and get a softmax as well symbol_probs = y[:,i*num_positions:(i+1)*num_positions] symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i])) # sample probability to chose our policy's action sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples) for sample_iter in range(num_samples): sample_n[i*num_samples + sample_iter] = sample[:,sample_iter] pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1 symbol_returns[i*num_samples + sample_iter] = tf.mul( tf.cast(pos[i*num_samples + sample_iter], np.float32), y_[:,i]) sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), np.float32) relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum( symbol_probs * sample_mask[i*num_samples + sample_iter],1) daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()]) daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2] daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5] total_return = tf.reduce_prod(daily_returns+1, 0) z = tf.ones_like(total_return) * -1 total_return = tf.add(total_return, z) ann_vol = tf.mul( tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) , np.sqrt(252) ) sharpe = tf.div(total_return, ann_vol) #Maybe metric slicing later #segment_ids = tf.ones_like(daily_returns[:,0]) #partial_prod = tf.segment_prod(daily_returns+1, segment_ids) training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()]) ones = tf.ones_like(training_target_cols) gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones) gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2] #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped) #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1)) cost = tf.mul(gradient , tf.expand_dims(total_return, -1)) #cost = tf.mul(gradient , tf.expand_dims(sharpe, -1)) optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost) costfn = tf.reduce_mean(cost) def run_training_and_return_test_results(): print('START TRAINING_______________________________') # initialize variables to random values init = tf.initialize_all_variables() sess.run(init) # run optimizer on entire training data set many times train_size = train_ins.shape[0] for epoch in range(20000): start = rng.randint(train_size-15) batch_size = rng.randint(2,50) end = min(train_size, start+batch_size) sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T}) # every 1000 iterations record progress if (epoch+1)%1000== 0: t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T}) t = np.mean(t) s = np.mean(s) print("Epoch:", '%04d' % (epoch+1), "cost=",c, "total return=", "{:.9f}".format(t), "sharpe=", "{:.9f}".format(s)) #print(t) print('DONE TRAINING _______________________________') d_tr, t_tr = sess.run([daily_returns, total_return], feed_dict={x: train_ins, y_: train_outs}) d_te, t_te = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs}) t_tr = np.mean(t_tr) t_te = np.mean(t_te) print("total return train=", "{:.9f}".format(t_tr)) print("total return test=", "{:.9f}".format(t_te)) return t_tr, t_te results = [] pos_results = [] for i in range(100): tr, te = run_training_and_return_test_results() results.append(te) if tr>0: pos_results.append(te) print('iter: ', i) print(np.mean(results)) print(np.mean(pos_results)) #print('final from net', '%f' %zz) print(np.mean(results)) print(np.mean(pos_results)) ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2016 LiamConnell Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # A tour through tensorflow with financial data I present several models ranging in complexity from simple regression to LSTM and policy networks. The series can be used as an educational resource for tensorflow or deep learning, a reference aid, or a source of ideas on how to apply deep learning techniques to problems that are outside of the usual deep learning fields (vision, natural language). Not all of the examples will work. Some of them are far too simple to even be considered viable trading strategies and are only presented for educational purposes. Others, in the notebook form I present, have not been trained for the proper amount of time. Perhaps with a bit of rented GPU time they will be more promising and I leave that as an excercise for the reader. Hopefully this project inspires some to try using deep learning techniques for some more interesting problems. [Contact me](mailto:ljrconnell@gmail.com) if interested in learning more or if you have suggestions for additions or improvements. The algorithms increase in complexity and introduce new concepts as they progress: ## Simple Regression [(notebook)][1] Here we regress the prices from the last 100 days to the next day's price, training *W* and *b* in the equation *y = Wx + b* where *y* is the next day's price, *x* is a vector of dimension 100, *W* is a 100x1 matrix and *b* is a 1x1 matrix. We run the gradient descent algorithm to minimize the mean squared error of the predicted price and the actual next day price. Congratulations, you passed highschool stats. But hopefully this simple and naive example helps demonstrate the idea of a tensor graph, as well as showing a great example of extreme overfitting. ## Simple Regression on Multiple Symbols [(notebook)][2] Things get a little more interesting as soon as we introduce more than one symbol. What is the best way to model our eventual investment strategy? We start to realize that our model only vaguely implies a policy (investment actions) by predicting the actual movement in price. The implied policy is simple: buy if the the predicted price movement is positive, sell if it is negative. But that doesnt sound realistic at all. How much do we buy? And will optimizing this, even if we are very careful to avoid overfitting, even produce results that allign with our goals? We havent actaully defined our goals explicitly, but for those who are not familiar with investment metrics, common goals include: + maximize risk adjusted return (like the [Sharpe](https://en.wikipedia.org/wiki/Sharpe_ratio) ratio) + consistency of returns over time + low market exposure + [long/short equity](http://www.investopedia.com/terms/l/long-shortequity.asp) If markets were easy to figure out and we could accurately predict the next day's return then it wouldn't matter. Our implied policy would fit with some goals (not long/short equity though) and the strategy would be viable. The reality is that our model cannot accurately predict this, nor will our strategy ever be perfect. Our best case scenario is always just winning slightly more than losing. When operating on these margins it is much more important that we consider the policy explicitly, thus moving to 'Policy Based' deep learning. ## Policy Gradient Training [(notebook)][3] Our policy will remain simple. We will chose a position, long/neutral/short, for each symbol in our portfolio. But now, instead of letting our estimation of the future return inform our decision, we train our network to choose the best position. Thus, instead of having an *implied* policy, it is *explicit* and *trained* directly. Even thought the policy is simple in this case, training it is a bit more involved. I did my best to interpret Andrej Karpathy's excelent article on [Reinforcement Learning](http://karpathy.github.io/2016/05/31/rl/) when writing this code. It might be worth reading his explanation, but I'll do my best to summarize what I did. We update our regression engine so that its output, *y*, is a vector in dimension *[batch_size, number_positions x number_symbols]* (a long, short, neutral bucket for each symbol). For each symbol in our portfolio, we **sample** the probability distribution of our three position buckets to get our policy decision (a position long/short/neutral), we multiply our decision (element of {-1,0,1}) by the target value to get a daily return for the symbol. Then we add that value for all the symbols to get a full daily return. We can also get other metrics like the total return and sharpe ratio since we actually are feeding this through as a batch (more on that later). As Karpathy points out, we are *only interested in the gradients of the positions we sampled*, so we select the appropriate columns from the output and combine them into a new tensor. This part of the code was a bit tricky for several reasons. First off, we have a loop through and isolate each symbol since I need one position per symbol. I also am using multinomial probability distributions, so I need to take a softmax of those values. Softmax pushes values so that they sum to 1, and therefore can represent a probability distribution. In pseudocode: `softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))`. ``` for i in range(len(symbol_list)): symbol_probs = y[:,i*num_positions:(i+1)*num_positions] symbol_probs_softmax = tf.nn.softmax(symbol_probs) ``` Next, we sample that probability distribution. Even though the code is a nice one-liner due to tensorflow's multinomial function, the function is NOT DIFFERENTIABLE, meaning that we will not be able to "move through" this step durring back propogation. We calcultate the position vector simply by subtracting 1 from the column indices that we got from the sample so that we get and element of {-1,0,1}. ``` pos = {} for i in range(len(symbol_list)): # ISOLATE from before # ... sample = tf.multinomial(tf.log(symbol_probs_softmax), 1) pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1) ``` Then we multiply that position by the target (future return) for each day. This gives us our return. It already looks like a cost function but remember that it's not differentiable. ``` symbol_returns = {} for i in range(len(symbol_list)): # ISOLATE and SAMPLE from before # ... symbol_returns[i] = tf.mul(tf.cast(pos[i], float32), y_[:,i]) ``` Finally, we isolate the relevant column (the one we chose in our sample) from our probability distribution. The idea isn't very difficult but the code was a bit tough, remember that we are dealing with a whole batch of outputs at a time. This step NEEDS to be differentiable since we will use this tensor to compute our gradients. Unfortunately tensorflow is still developing a function that does it by itself, [here](https://github.com/tensorflow/tensorflow/issues/206) is the discussion. I actually think that my solution is the best and I suggest it in the discussion, but I'm really not an expert at efficient computation. If anyone thinks of a more efficient solution or if tensorflow finishes theirs please let me know. ``` relevant_target_column = {} for i in range(len(symbol_list)): # ... # ... sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3]) relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1) ``` So here is all of that together: ``` # loop through symbols, taking the buckets for one symbol at a time pos = {} symbol_returns = {} relevant_target_column = {} for i in range(len(symbol_list)): # ISOLATE the buckets relevant to the symbol and get a softmax as well symbol_probs = y[:,i*num_positions:(i+1)*num_positions] symbol_probs_softmax = tf.nn.softmax(symbol_probs) # SAMPLE probability to chose our policy's action sample = tf.multinomial(tf.log(symbol_probs_softmax), 1) pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1) # GET RETURNS by multiplying the policy (position taken) by the target return (y_) for that day symbol_returns[i] = tf.mul(tf.cast(pos[i], float32), y_[:,i]) # isolate the output probability the selected policy (for use in calculating gradient) sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3]) relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1) ``` So now we have a tensor with the regression's probability for the chosen (sampled) action for each symbol and each day. We also have a few performance metrics like daily and total return to choose from, but they're not differentiable because we sampled the probability so we cant just "gradient descent maximize" the profit...unfortunately. Instead, we find the sigmoid cross entropy (a sort of distance function) between the first table (the probabilities we chose/sampled) and an all-ones tensor of the same shape. We get a table of cross entropies of the same size (number of symbols by batch size) This is basically equivalent to saying, how do I do MORE of what I'm already doing, for every decision that I made. ``` training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()]) ones = tf.ones_like(training_target_cols) gradient = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones) ``` Now we dont necessarilly want MORE of what we're doing, but the opposite of it is definitely LESS of it, which is useful. We multiply that tensor by our fitness function (the daily or aggregate return) and we use the gradient descent optimizer to minimize the cost. So you see? If the fitness function is negative, it will train the weights of the regression to NOT do what it just did. Its a pretty cool idea and it can be applied to a lot of problems that are much more interesting. I give some examples in the notebook about which different fitness functions you can apply which I think is better explained by seeing it. Here is that code: ``` cost = tf.mul(gradient , returns) #returns are some reshaped version of symbol_returns (from above) optimizer = tf.train.GradientDescentOptimizer(0.1).minimize(cost) ``` ## Stochastic Gradient Descent [(notebook)][4] As you saw in the notebook, the policy gradient doesnt train very well when we are grading it on the return over the entire dataset, but it trains very well when it uses each day's return or the position on each symbol every day. This makes sense, if we just take the total return over several years and its slightly positive then we tell our machine to do more of that. That will do almost nothing since so many of those decisions were actually losing money. The problem, as we have it set up now, needs to be broken down into smaller units. Fortunately there is some mathematical proof that this is legal and even faster. Score! Stochastic Gradient Descent is basically just breaking your data into smaller batches and doing gradient descent on each one. It will have slightly less accurate gradients WRT to the entire dataset's cost function, but since you are able to iterate faster with smaller batches you can run way more of them. There might even be more advantages to SGD that I'm not even mentioning, so you can read the [wikipedia](https://en.wikipedia.org/wiki/Stochastic_gradient_descent) or hear [Andrew Ng](https://www.coursera.org/learn/machine-learning#syllabus) talk about it. Or just use it since it works and its faster. If you're going on a wikipedia learning binge you might as well also learn about [Momentum](https://en.wikipedia.org/wiki/Stochastic_gradient_descent#Momentum) and [Adagrad](https://en.wikipedia.org/wiki/Stochastic_gradient_descent#AdaGrad) which are just variations. The latter two only really useful for people doing much bigger projects. If you are working on a huge project and your twobucksanhour AWS GPU instance is too slow then you should definitely be using them (and not be reading this introductory tutorial). At the higher level, the problem of tuning the optimizer and overall efficiency have been thoroughly [researched](http://www.andrewng.org/portfolio/on-optimization-methods-for-deep-learning/). ## Multi Sampling [(notebook)][5] Since we are sampling the policy, we can sample repeatedly in order to compute better. Karpathy's article summarizes the math behind this nicely and [this](http://arxiv.org/abs/1506.05254) paper is worth reading. The concept is intuitive and simple, but getting the math to work out and the tensor graph in order is very involved. One realizes that a mastery of numpy and a solid understanding of linear algebra are very important to tensorflow once the problems get...deeper, I guess is the word. Multi sampling adds a useful computational kick that lets the network train much more efficiently. The results are already impressive. Using batches of less than 75 days and only training on the total return over that timeframe, we are able to "overfit" our network. Keep in mind that all we are doing is telling the network to do more of what it is doing when it does well, and less when it does poorly! Sure, we are still far away from having anything worthwhile out of sample, but that is because we are still using *linear regression*. By now you are probably either wondering *does this guy even know what deep learning is? I havent seen a single neural network!* or you completely forgot we were still using the same linear regression that 16 year olds learn in math class. Well, we'll get to neural networks next but I wanted to talk about other things before neural networks to show how much tensorflow can be used for before neural networks even get mentioned, and to show how much important math exists in deep learning that has nothing to do with neural networks. Tensorflow makes neural nets so easy that you barely even notice that they're part of the picture and its definitely not worth getting bogged down by their math if you dont have a solid understanding of the math behind cross entropy, policy gradients and the like. They probably even distract from where the true difficulty is. Maybe I'll try to get a regression to play pong so that everyone shuts about neural networks and starts talking about policy learning... ## Neural Networks [(notebook)][6] So we finanlly get to it. Here's the same thing with a neural network. Its the simplest kind of net that there is but it is still very powerful. Way more powerful that our puny regression ever was becuase it has nonlinearities (RELU layers) between the other layers (which are basically just regressions by themselves). A sequence of linear regressions is still obviously linear[1](#myfootnote1). But if we put a nonlinearity between the layers, then our net can do *anything*. Thats what gets people excited about neural networks, becuase they can hold enourmous amounts of information when trained well. Fortunatly, we just learned a bunch of cool ways to train them in steps 1-5. Now putting in the network is very easy. I really changed nothing except the Variable and the equation really is basically still *y = Wx + b* except non-linear *W*. The reason I introduced the networks so late is becuase they can be a bit difficult to tune. Chosing the right size of your network and the right training step can be difficult and sometimes it is helpful to start out simple until you have all the bells and whistles in place. In steps 3-5, we spent a lot of time figuring out tricks to do with the training step, which is a widely researched area at the moment and is probably more relevant to algorithmic trading that anything else. Now we are starting to demonstrate some of the techniques used in the prediction engine (regression before, neural network now). I believe this is a much more researched area and TensorFlow is better equiped for it. Many people describe the types of neural networks that we will learn as cells or *legos*. You dont need to think that much about how it works as long as you know what it does. If you noticed, thats what I did with the neural network. There is a lot more to learn and its worth learning, but when you're actually building with it, you dont think about RELU layers as much as input/output and a black box in the middle. Or at least *I* do...there are a bunch of people in image processing who look inside networks and do [very cool things](https://github.com/google/deepdream). ## Regularization and Modularization [(notebook)][7] From [Wikipedia][wiki_reg])), "regularization is the introduction of additional information in order to solve an ill-posed problem or to prevent overfitting." For our purposes, it is any technique used to reduce overfitting. One of the simplest yet most important examples is [early stopping][early_stopping], that is, ending gradient descent before there is no significant gain in evaluation performance. The idea is that once the model stops improving, it will start to overfit the training data. Most overfitting can be avoided with just this technique. We have more overfitting problems. Financial data is very noisey with faint signals that are very complex. Markets are zero sum and there are already an enormous number of very smart people getting paid a very large amount of money to develop trading strategies. There are many different patterns that can be learned but we can assume that all of the simple ones have been found (and therefore traded out of the market). Also, the market structure and properties change with time so even if we found a great pattern for the past five years, it might not work a month from now. We therefore need even more strategies to prevent overfitting. One strategy is called [L2 regularization](http://www.kdnuggets.com/2015/04/preventing-overfitting-neural-networks.html/2). Basically, we *punish a network for having very large weights* by adding the L2 norm of the weights, *1/2(||W||^2_2)*, times a constant *B* (to determine how much we want to regularize). It allows us to control the level of model complexity. Another method is called [dropout regularization](http://arxiv.org/abs/1207.0580), a technique developed by Geoffrey Hinton. Overfitting is avoided by randomly ommitting half of the neurons during each training iteration. It sounds kooky but the idea is that it avoids the co-adaptation of features in the neural network, so that recognizing a certain set of features does not imply another set, as is the case in many overtrained nets. This way, each neuron will learn to detect a feature that is generally helpful. In validation and normal use, the neurons are not dropped so as to use all informaation. The technique makes the model more robust, avoids overfitting, and essentially turns your network into an ensemble that reaches consensus. Tensorflow's dropout layer includes the scaling required to safely ensemble when it comes time for validation. Since we want the same model with two different configurations--one with dropout active and one without--we will now pursue our long-overdue duty of refactoring our code. Although the code is presented in a single notebook, keep in mind that what I am essentially doing is modularizing. I won't claim that I am the most organized with my code, but I tried to keep it consistent with the best practices that I have observed others using with their open projects. Moving forward we will keep this structure becuase it is clearly superior to the organization that I had used before. ## LSTM [(notebook)][8] My favorite neural network, and a true stepping stone into real deep learning is the long short-term memory network, or LSTM. [Colah](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) wrote an incredibly clear explanation of LSTM and there is really no substitute to reading his post. To describe the setup as briefly as possible, you input the data one timestep at a time to the LSTM cell. And each timestep the cell not only recieves the new input, but it recieves the last timestep's output and what is called the **cell state**, a vector that carries information about what happened in the past. Within the cell you have trained gates (basically small neural nets) that decide, based on the three inputs, what to forget from the past cell state, what to remember (or *add*) to the new state, and what to output this timestep. It is a very powerful tool and fascinating in how [effective it is](http://karpathy.github.io/2015/05/21/rnn-effectiveness/). I am now pretty far into this series and I have a pretty good idea of where it will go from here. These are the problems that I must tackle in no particular order: * new policies such as + long/short equality amongs two symbols and more + spread trading (if that is different from above) + minimize correlation/ new risk meaesure that is appropriate for large number of symbols * migrating to AWS and using GPU computing power * ensebling large numbers of strategies that are generated with the same code + policy grads find local maxima so no reason not to use that to my advantage * testing suite to be able to test if the strategies are viable objectively * convolution nets, especially among larger groups of symbols we can expect that some patterns are fractal * turning it into a more formal project or web app And of course we can start moving to other sources of data: * text * scraping * games Stay tuned for some articles that I will write about the algorithms used here and a discussion of the difficulties of using these techniques for algorithmic trading developement. 1: I hope you didnt sleep through Linear Algebra class! I owe all my LA skills to [Comrade Otto Bretscher](http://personal.colby.edu/personal/o/obretsch/) of Colby College whose class I did sleep through but whose [text book](https://www.amazon.com/Linear-Algebra-Applications-Otto-Bretscher/dp/0136009263) is worth its weight in gold. [early_stopping]: https://en.wikipedia.org/wiki/Regularization_(mathematics)#Early_stopping [wiki_reg]: https://en.wikipedia.org/wiki/Regularization_(mathematics) [1]: /notebooks/TF-FIN-1-singlestock_regresion.ipynb [2]: /notebooks/TF-FIN-2-multistock_regresion.ipynb [3]: /notebooks/TF-FIN-3-regression_with_policy_training.ipynb [4]: /notebooks/TF-FIN-4-stochastic_gradient_descent.ipynb [5]: /notebooks/TF-FIN-5-multi_sampling.ipynb [6]: /notebooks/TF-FIN-6-neural_network.ipynb [7]: /notebooks/TF-FIN-7-regularization_modular.ipynb [8]: /notebooks/lstm_(7).ipynb# ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-1-singlestock_regresion-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " #prices=np.asarray(list(prices))\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return (prices-prices.shift(-1))/prices\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# separate data into inputs and outputs for training and testing\n", "gs = get_prices('GS')\n", "rets = get_returns(gs)\n", "ins, outs = sort_data(rets)\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# we define two placeholders for our input and output\n", "x = tf.placeholder(tf.float32, [None, 100])\n", "y_ = tf.placeholder(tf.float32, [None, 1])\n", "\n", "# we define trainable variables for our model\n", "W = tf.Variable(tf.random_normal([100, 1]))\n", "b = tf.Variable(tf.random_normal([1]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b\n", "\n", "#MSE:\n", "cost = tf.reduce_sum(tf.pow(y-y_, 2))/(2*1000)\n", "optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 0.019055584\n", "Epoch: 2000 cost= 0.005943393\n", "Epoch: 3000 cost= 0.002348902\n", "Epoch: 4000 cost= 0.001233126\n", "Epoch: 5000 cost= 0.000856721\n", "Epoch: 6000 cost= 0.000721102\n", "Epoch: 7000 cost= 0.000669394\n", "Epoch: 8000 cost= 0.000648663\n", "Epoch: 9000 cost= 0.000639970\n", "Epoch: 10000 cost= 0.000636177\n", "Epoch: 11000 cost= 0.000634464\n", "Epoch: 12000 cost= 0.000633667\n", "Epoch: 13000 cost= 0.000633285\n", "Epoch: 14000 cost= 0.000633100\n", "Epoch: 15000 cost= 0.000633007\n", "Epoch: 16000 cost= 0.000632960\n", "Epoch: 17000 cost= 0.000632936\n", "Epoch: 18000 cost= 0.000632923\n", "Epoch: 19000 cost= 0.000632917\n", "Epoch: 20000 cost= 0.000632913\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "for epoch in range(20000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " c = sess.run(cost, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c))" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#train results :)\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: train_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * train_outs\n", "plot(np.cumprod(returns+1))" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#test results :(\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: test_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * test_outs\n", "plot(np.cumprod(returns+1))" ] } ], "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-2-multistock_regresion-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# we modify this data organizing slightly to get two symbols\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# once again I only make slight modifications\n", "\n", "# define placeholders \n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "# define trainable variables\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([len(symbol_list)]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b\n", "\n", "#MSE:\n", "cost = tf.reduce_sum(tf.pow(y-y_, 2))/(2*1000)\n", "optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 0.040910859\n", "Epoch: 2000 cost= 0.020840863\n", "Epoch: 3000 cost= 0.013389181\n", "Epoch: 4000 cost= 0.009200850\n", "Epoch: 5000 cost= 0.006651346\n", "Epoch: 6000 cost= 0.005042211\n", "Epoch: 7000 cost= 0.003999272\n", "Epoch: 8000 cost= 0.003308342\n", "Epoch: 9000 cost= 0.002842027\n", "Epoch: 10000 cost= 0.002522263\n", "Epoch: 11000 cost= 0.002299956\n", "Epoch: 12000 cost= 0.002143553\n", "Epoch: 13000 cost= 0.002032371\n", "Epoch: 14000 cost= 0.001952614\n", "Epoch: 15000 cost= 0.001894943\n", "Epoch: 16000 cost= 0.001852949\n", "Epoch: 17000 cost= 0.001822181\n", "Epoch: 18000 cost= 0.001799512\n", "Epoch: 19000 cost= 0.001782728\n", "Epoch: 20000 cost= 0.001770250\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "for epoch in range(20000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " c = sess.run(cost, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c))" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#train results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: train_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position * train_outs\n", "daily_returns = sum(returns,1)\n", "plot(np.cumprod(daily_returns+1))" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#test results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: test_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position * test_outs\n", "daily_returns = sum(returns,1)\n", "plot(np.cumprod(daily_returns+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-3-regression_with_policy_training-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs (this is new but not specific to PG; you should always normalize inputs)\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "\n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, num_positions * len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([num_positions * len(symbol_list)]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b # y is tensor of shape [num_inputs, num_positions * len(symbol_list)]\n", "# a row of y will look like [prob_symbol_1_short, prob_symbol_1_neutral, prob_symbol_1_long, prob_symbol_2_short, ...]\n", "# note that they are not really probabilities because I did not perform a softmax yet\n", "\n", "\n", "# loop through symbols, taking the buckets for one symbol at a time\n", "pos = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(len(symbol_list)):\n", " # ISOLATE the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # SAMPLE probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), 1)\n", " pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1)\n", " # GET RETURNS by multiplying the policy (position taken) by the target return for that day\n", " symbol_returns[i] = tf.mul(tf.cast(pos[i], float32), y_[:,i])\n", " # isolate the output probability the selected policy (for use in calculating gradient)\n", " # see https://github.com/tensorflow/tensorflow/issues/206 for TF discussion including my solution\n", " sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3])\n", " relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1)\n", " \n", "\n", "# calculate the PERFORMANCE METRICS for the data chosen\n", "daily_returns_by_symbol = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()]) \n", "daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n", "total_return = tf.reduce_prod(daily_returns + 1)\n", "ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = total_return / ann_vol\n", "\n", "# since we only train the sampled classes, we will combine them so that we can feed them into cross entropy\n", "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "# we want to either push the gradient toward our selection or away from it. We use these ones to find the direction\n", "# of the gradient, which we will then multiply by our fitness function\n", "ones = tf.ones_like(training_target_cols)\n", "\n", "# this isnt actually a gradient, but karpathy sort of calls it one. Since it's a tensor it sort of is a gradient anyway\n", "gradient = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones) ####should this be a prob???\n", "\n", "# COST\n", "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n", "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n", "#cost = tf.mul(gradient , daily_returns_by_symbol)\n", "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n", "cost = tf.mul(gradient , tf.reshape(daily_returns,[-1,1]))\n", "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n", "#cost = tf.mul(gradient , total_return)\n", "\n", "# minimize the cost (push the weights where we want them to go)\n", "optimizer = tf.train.GradientDescentOptimizer(0.1).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 1409.337646484 total return= 1408.337646484\n", "Epoch: 2000 cost= 10547.202148438 total return= 10546.202148438\n", "Epoch: 3000 cost= 17355.996093750 total return= 17354.996093750\n", "Epoch: 4000 cost= 32044.666015625 total return= 32043.666015625\n", "Epoch: 5000 cost= 51317.105468750 total return= 51316.105468750\n" ] } ], "source": [ "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "for epoch in range(5000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " if (epoch+1)%1000== 0:\n", " c,t = sess.run([cost, total_return], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(t), \"total return=\", \"{:.9f}\".format(t-1))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-4-stochastic_gradient_descent-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) \n", "num_positions = 3\n", "\n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, num_positions * len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([num_positions * len(symbol_list)]))\n", "\n", "y = tf.matmul(x, W) + b \n", "\n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(len(symbol_list)):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), 1)#sample = tf.argmax(symbol_probs_softmax, 1) #use a real sample\n", " pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1)\n", " # get returns by multiplying the policy (position taken) by the target return for that day\n", " symbol_returns[i] = tf.mul(tf.cast(pos[i], float32), y_[:,i])\n", " # isolate the probability of the selected policy (for use in calculating gradient)\n", " sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3])\n", " relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1) # should be relevant to SAMPLE\n", " \n", "# calculate the PERFORMANCE METRICS for the data chosen\n", "daily_returns_by_symbol = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n", "total_return = tf.reduce_prod(daily_returns + 1)\n", "ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = total_return / ann_vol\n", "\n", "# CROSS ENTROPY\n", "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", "# COST\n", "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n", "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n", "#cost = tf.mul(gradient , daily_returns_by_symbol)\n", "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n", "#cost = tf.mul(gradient , tf.reshape(daily_returns,[-1,1]))\n", "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n", "cost = tf.mul(gradient , total_return)\n", "costfn = tf.reduce_mean(cost)\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.005).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 5000 cost= 0.173014879 total return= -0.486480296\n", "Epoch: 10000 cost= 0.256526262 total return= -0.228146195\n", "Epoch: 15000 cost= 0.159734488 total return= -0.520039856\n", "Epoch: 20000 cost= 0.200976387 total return= -0.391009867\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(20000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,20)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%5000== 0:\n", " c,t = sess.run([costfn, total_return], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c), \"total return=\", \"{:.9f}\".format(t-1))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEACAYAAABbMHZzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYlOXV+PHvYWGFXToLCy5VRJplUUQkimsHjWKM/ojd\naCyJvIpGJRiNS6K+ajSxRSWvJXaMHQuCimsXRWlKke7CwsJSpCPI/fvjzDizs9N2dvqcz3VxzcxT\nZs4+Mee5n7uKcw5jjDG5pVGqAzDGGJN8lvyNMSYHWfI3xpgcZMnfGGNykCV/Y4zJQZb8jTEmB0VM\n/iLymIhUi8icMMfcJyILRWSWiAzw275MRGaLyAwR+SJeQRtjjGmYaEr+jwPDQu0UkZOAfZ1zvYBL\ngYf8djugzDk3wDk3qEGRGmOMiZuIyd859xGwIcwhpwJPeI6dBrQWkWK//dKgCI0xxsRdPOr8S4BK\nv88rPNtAS/7vish0EbkkDr9ljDEmDhrH6XtCle6PcM5ViUh74B0Rme95kjDGGJNC8Uj+K4Eufp87\ne7bhnKvyvK4VkVeAQUCt5C8iNrmQMcbEwDkXc7V6PKp9JgLnA4jIYGCjc65aRApEpIVneyFwAhC0\nx5BzLq3+3XzzzSmPIVPispgsplyIKx1jaqiIJX8ReQ44CigSkUrgZqCJJ2mPd869JSInicgiYCvw\nW8+pHYGXRcT7O88456Y0OGJjjDENFjH5O+fOiuKYUUG2LQFKY4zLGGNMAtkI3yDKyspSHUJQ6RiX\nxRQdiyl66RhXOsbUUBKPuqMGBSDiUh2DMcZkGhHBpbjB1xhjTIax5G+MMTnIkr8xxuQgS/7GGJOD\nLPkbY0wOsuRvjDE5yJK/McbkIEv+xhiTgyz5G2NMDrLknyGcg8WLUx2FMSZbWPLPANu3w5dfwokn\npjoSY0y2iNdKXiaBTjtNX2tqUhuHMSZ72MRuaW7pUthnH2jUCPbsgV27oLHdso3JeTaxW5abNAl6\n9tTED7Bhg2/fnj3wq1/BtGmpic0Yk7ks+ae577/XBO+1bp3v/bff6s3h4ouTH5cxJrNZ8k9zlZVw\n4IFwySXQvz+sX+/b98EHcOaZsGgR7NyZuhiNMZknbZL/7NmpjqBhnIMHH9Q6+Xh5/XVYsgS6dIF/\n/xu6d/eV/LduhaefhmHDtE1gwYL4/a4xJvulRfKfMwcOOij8MT/9BF98kZx4YrFkCVxxBbzySvy+\n89RT4fPPNfkDtG2rJf9nn4VjjoG+fWHkSNh/f/jmm/j9rjEm+6VF8vcmrp07fQ2bgZ57Dg47LHkx\n1dfUqdCpE9x/f/y/u3NnfW3XDj77DK66Ci68EB57THv+lJbC736nr/F88jDGZK+0SP4zZujrZZfB\nww8HP+bTT5MXTywqKqC8HJYv9/09DeG9CRYVwV576fs2bWD8eE38v/89iKeT13XX6ZNHZWXt3kDG\nGBNKWiR/b1fFb76Br77ybX/xRTj6aBg+XN+DjnZNBec0uYYyc6Y+mVx0ETzzTMN/b/t2aNoUJk/2\nbevRA1q0gGuuqX1skybQsaNWC23c2PDfNsZkv4jJX0QeE5FqEZkT5pj7RGShiMwSkQF+24eJyHzP\nvjGhzl+5Enr10tKrtwpoxw5NpKNHw6hR8MQTmuD8e7sk07x5cOSRwfft3q2x77cfDBqkbRix8lbb\nbN4MLVvCwQf79p13HmzapNVLwbRpYyV/Y0x0oin5Pw4MC7VTRE4C9nXO9QIuBR7ybM8DHvCc2w84\nS0T6BvuOv/0N9t5bE9e332qVxwcfaCPwiBFw8sla+m/XrnY/92RauVJL/j/+WHv71q064dree0Oz\nZtr4Gmvy37ED8vO16+aWLdC8ef3Ob93akr8xJjoRk79z7iMgXEo5FXjCc+w0oLWIdAQGAYucc8uc\nc7uACcCIYF9QVqaJC7QUPWsWPPQQnHRS7ePatUtdyX/1ar0prVjh27Z5sz6N/OMf2vMGtGfOli2x\n3aS81UVr18aW/K3kb4yJVjzq/EsA/9rwFZ5te4fYXkenTtCqlb6/7jo44gi9CfzP/9Q+LpUl/9Wr\n9XXZMt+2SZOguFj74x91lG4T0V43vXvDuedCt27RNwC/+66+btigyb9Fi/rFaMnfGBOteE0RFvPk\nQgDl5eXMnw95eXDkkWX06lXGOefoZ39t28Jbb2nVSu/eDfnF+guW/F9+GcaM0dG3/l57TW8MjzwC\np58OTz4JAwbUPubbb/VpoZHf7Xf5cn1y2LBBt8dS8rcGX2OyU0VFBRUVFXH7vngk/5VAF7/PndFS\nfpOA7V082+soLy9nzx6tUz/hhNA/1K4d3Hkn/Pe/eqy3qigRxo7V3jve6ZRXrdIJ1pYv1887dsDb\nb8O999Y9t00bOPts/ffNN/o3nXiift/xx2svnk8+gSlT9LPX8uVwyCFatZWfH1vyX7s2tr/XGJPe\nysrKKCsr+/nzuHHjGvR98aj2mQicDyAig4GNzrlqYDrQS0S6i0g+MNJzbFCtWmlyD8eb2Dp10mSc\nSB9+qD18vFav1hG3r7yidf3XXadz7hQXh/+e/v1h3Di4/no49FBtIxg3Tnsyffml77gff9S/r39/\nX7WPNfgaYxIlmq6ezwGfAr1FpFJELhKRy0TkMgDn3FvAEhFZBIwH/uDZvhsYBUwG5gLPO+fmBf0R\nNHFFSv7Dh+tI1qKi+NX9b9kC//xn3aS5YAHMn6/dO3fv1uR/0UVaD3/bbXoTuPvuyN8votVCH3+s\ng7WuvRaOPVafBqZNg23b9LgVK/Sm1r597Mnf6vyNMdGKWO3jnDsrimNGhdg+CZgUTSA9e0ae3+fM\nM/XfKafEL/lff71WI1VVwd//rtvWrdN/FRU6pfJjj8GaNdChg9bdf/21lvoPPTT632nZUquAvKNy\nBw2C3/xGX7/6Sm8O3bppAp89O34NvmvW6M2yUVoM5zPGpIu0SQllZcHrz4OJZ6+figptmH30Ud+2\nBQs0SX//vX5+7z1tSG3TRkvmc+fqa32JX7N4jx46HqB3b72plJdr11ZvAo+l5F9SUncU8hlnpP/U\nGMaY5MvIBQHj1d9/3Tqtbjn5ZK3H37VLp0pYuNA3WOuAA7SHT0GB7uvQQc8pKmr47++/P7zwgj51\nlJTozeGDDzT5b96sv1Uf++6ryX/nTt98QOvW2dq/xpi60qbkXx9t28an5P/ll1p106SJfqc3SS5b\nptUxoNU8CxdqiRx8Jf5YSv7BNGqks3Z6nwrattXkv26dVhXVR5MmOuf/woW+bZs3W/dPY0xdGZn8\n41XtU1PjmyenfXtf8vd2uRTR5L9hgyZl8JXG41HyD6a4WJ8s3ntPB7vVV9++2lDttWmTJX9jTF05\nnfw3bfKVrouKaif/nj31d7yDswKTf7xK/oE6dNAeRm3a6GR39dWnjy/5O6d/o/UAMsYEytjk//LL\n8Nvf1q7iqK/A5O8dR7B8ufa8efBBOPxwrU4JrPZJVMkfdCCbt+dRfXXqBNXV+n7rVr0BWMnfGBMo\nI5O/d2DV8uXw/POxf49/8vdW+3gnb+vaVbuV5udroveW/Nu00WknElXyBy29//KXsZ3r/wSzaZO+\nWvI3xgTKyOTfv7/2Xx89WidDmzs3tu8JVvKfNUvfN2vmO65dO1/Jv1EjnVe/JOgUdannXyW2ebO+\nWvI3xgTKyOQPWvI+4gjtGllWpiX28eN1wrRdu3SZw1DrAXsFJv/ycp3L58Ybax/Xrp2v5A/w+ONQ\nWBjPvyZ+rORvjIlGxiZ/0IT86qs6GGryZJ064eijdeTsww9Hbuj0T/7e5P6f/8Cll9Y+zr/kn+68\nTzDnnac3AW/XUWOM8ZfRyR90pa8TToC//EVnyPz0U99UBpEGN/kn/3PO0c9HH113KoTrr4+9Dj7Z\n2rXTNounn4Y339S2Cyv5G2MCZXzyB53sbeZMXVBl33111OyQIZGnN/ZP/o0ahZ5L57DDdJnGTFBY\n6Bvd+8wzmvzXroX3309tXMaY9JIVyX/gQF085bzzfNv8675D8U/+2UJES//HHqsl/k6ddMGZc8/1\ntYHcdJPeII0xuSsrkj/AccfVbpTN1eQP+reffrq+nzZNG7LbtNEpqauq4JZb4MUXUxqiMSbFMnJi\nt2jkcvIvLdW5iV56yddQffXVuojMVVfp50iL0BhjsltWJ3/vSNdgdu/W1bP8+/Nniyee0NeBA33b\nLr5Yp4kePVpvDt5ZUf/4Rx03cdFFyY/TGJM6WVPtEyhSyX/uXG0MlQYtPZ9ZhgzR13PO8SX/zz+H\nGTNSF5MxJjWyOvmH6+3zzDMwcmTy4kkHpaVwww3wi1/oKGDndHWx775LdWSxWbAAtm9PdRTGZKas\nTf5776393UF7ufgv+L51q1aNnH9+amJLlSZN4NZbfYvhrFihawhnavL/9a/hqadSHYUxmSlrk3/f\nvprU5s2Dhx6CLl30aeDzz+G++3RqiL59Ux1larRtq8l/zhx9Cli1Slf/yiTLlulUHu+8k+pIjMlM\nWdvgW1CgK2QNHKhVA//9r3Z7/MtfdEDY55+nOsLUadMGfvhBr8Hhh2v3z6VLdTbRTDF5so5lmDoV\nfvpJZ1o1xkQva0v+oGvkduwI99+v/d4vvFBLivfeC/vsk+roUicvT0czv/02DB6sA8H8q8VS5YUX\nYMKE6I6dNw+GD9cRzcuXJzYuY7JR1pb8QRPb/vvDFVfo5379YPp0XaIx17Vtq2sYDx6sff7DdYtN\nlr/+VRugO3XSqTrCWboUhg7Vqrurr4aDDtLzjTHRiVjyF5FhIjJfRBaKyJgg+9uIyCsiMktEpolI\nf799y0RktojMEJEv4h18JGPGwN/+5h+rJX6vyy/XPv7FxemT/Ldu1aknRo/WOn2vxYt901N7LV0K\nPXpo8p84EW6/vfY5xpjwwpb8RSQPeAA4DlgJfCkiE51z8/wOuwH42jn3KxHpDfzLczyAA8qcc+vj\nH7ppiOuu871Ph+S/c6e2Pfz5z3oTGDUK3nhD9116qVZVbdgAS5bo6OVvvvElfxFtu/j6a+jePaV/\nhjEZI1LJfxCwyDm3zDm3C5gAjAg4pi/wPoBzbgHQXUT8FznMoWFUmSkdkv+SJdoja6+9dCzChx/q\nCOyNG3V1taoqfVKZO1d7KjkHrVvDwQfrzaB378izuBpjfCIl/xKg0u/zCs82f7OA0wFEZBDQDejs\n2eeAd0Vkuohc0vBwTSIkM/k/+ij06qXJ3d933+l20HEIvXvDY4/5RmHPmaOL9BQXa91+hw567KGH\n6hoO7dvr0p7GmOhEavB1UXzH7cC9IjIDmAPMAH7y7DvCOVfleRJ4R0TmO+c+CvyC8vLyn9+XlZVR\nVlYWxc+aePEm/2uu0aqVRx+tu6BNPKxbp6utDR+uXTSHDvXtmzpVxxx4DRmiA7g2b9YE7z8Nx4kn\n1r5ZNWqkN4PFi+MfszHpoqKigoqKirh9X6TkvxLo4ve5C1r6/5lzbjPw87RgIrIUWOLZV+V5XSsi\nr6DVSGGTv0m+4mJYvVrr2Bcu1G6fb7+tVSvLlmndOmh/+pdf1iQdy+I2FRWa1I84Quvsvdasgdde\n89Xxg9bl33+/LqRzwQWRv7t9e/jss/rHZEymCCwYjxs3rkHfF6l8Nx3oJSLdRSQfGAlM9D9ARFp5\n9uGp2vnAObdFRApEpIVneyFwAvpkYNJMly464+f33+tkeNOnQ2WlLgPZpw8sWqTH3Xsv/OEPumiO\ni+aZMMD77+symR06+Kpodu3SbpoDB+rsol59++pvXHBBdNNwdOhgdf7G1EfY5O+c2w2MAiYDc4Hn\nnXPzROQyEbnMc1g/YI6IzAdOBDwzxlMMfCQiM4FpwBvOuSmJ+CNMw+TlaRVM+/a+VcDefRcefljH\nRtx5px73+uvwyCP6lPDBB9F//yefaGl/8mQ45hhN1NXVOjhr6lTo1k0Xl/Gv2vFOvbHvvtH9hv8N\nxRgTWcRBXs65ScCkgG3j/d5/BvQOct5SoDQOMZokOOYYXePA+/7DD+Hjj3XE7Zgx+mQwfbreGC6/\nHMaPh2ibZubM0RtA794wYIDOxjlzpnbLLC6Gm2+ue0779lBSEv2UE+3bW8nfmPrI6ukdTPQuuURL\n+gA9e+r0CTt2aIJfuFBL+gceCM2b62ya77wTfdXPli36euWVWrrv0EG3DRkCb72lN5NAItoDqEuX\nuvuCKSrSLqA7dkR3vDG5zpK/AXQiPG+i7dxZS+Z77w1Nm2oVzH/+4xsdvffe0LixTgntnPbFD6e6\nGu64Q9sLQCeWa9xYbywHHxx6QZ2Cgujjb9JEp4S4/XZfG4UxJjRL/qaOkhIdcVviGdFx1FHwyita\nZeN18ME6onbqVD1u6tTQ31dd7euXD77S/4EHxjfuUaP0JnP22bqGgzEmNEv+po4WLaBVK193zssv\n126eBx/sO+bgg7Wu/t579fgXXwz9fdXVdReMP+202v3642HECH0K2bGj7iAyY0xtlvxNUJ07+5L/\nfvtpN80DDvDtHz1aB2u9/jqcdVb4KaGDJf9//Ut/I9722kurk776SnslWRuAMcFZ8jdB+Sd/0ITq\nP+q3qEhnTP3b37TEvXp16O8KlvwTqbRUn0g6dYLbbkve7xqTSSz5m6BOOUV744TTuDHceKPOvxOq\n5L9njw4c86/zT7TSUh2kduaZOrZgwACd9tkY4yMulqGa8QxAxKU6BtMw27bp4jDbt9ftubNwIRx3\nXHJX29q5U8cjPPmkdlvt3FmfPKZPT14MxiSaiOCci3nWZCv5mwYrKNC69tdfr7vvq6+Sv4DOXnvp\nALV99tHuq9dfr1NBewexGWMs+Zs42bRJ6/63b6+9/euvU7t62lNPwcUXa/uF9f83xseSv4mrrVt9\n7zdv1tlBU5n8jzpKn0wOPBBmz05dHMakG0v+Ji5WrdLS9bZtvm1jx2r30OOPT11cXv366ZQVXrt2\n+d7v2AEPPpj8mIxJpYgTuxkTjY4ddbDX1q2+5RcnTNA6/7y8VEenaxJ8/LG+/+kn35QV332nPYPG\njdPxCm3apDRMY5LGSv4mbgoLNfmfeqr2sjnuOJ2uOR10764L04BOV710Kdx1F1x9tSZ+52xUsMkt\nlvxN3BQWarVPZaWuqjVhQqoj8vEm/7VrdSH4W2/VReHPPlufTI46SkcxG5MrrNrHxE1BgZb8a2p0\nBHA66dJFk/1f/6oLy4wZA3/6k+47/ni9ATzwQGpjNCaZLPmbuCks1Hn616/XFcHSSX6+tkU88IA+\nmfgPRjv9dO0GGqwr6K5d+q8+00sbkwms2sfETWGhlq4LCnR+/XTzyCPa6BtsQrlu3TT2H3+svf3u\nu3V6iO++S06MxiSLJX8TNwUFugh8ulX5eF18cehppJs00aohb6PwTz/pU8KLL2ryHzgQNmxIWqjG\nJJxV+5i4KSzUOXzSNflH0rOnLmW5zz46VcWUKVpd9OGHun5BVZV1BTXZw5K/iZvCwvQu+Udy/vlQ\nXq5Jfts2bQi+5BJ9ounQwRaIN9nFqn1M3GR68j/nHLjnHp2q+pRT9GZw5pm6r317S/4mu1jJ38RN\nQYEu3JKpyR/gpJNgwQJN9v4jky35m2wTseQvIsNEZL6ILBSRMUH2txGRV0RklohME5H+0Z5rskth\nob526ZLaOBpCRKeqCJySwpK/yTZhk7+I5AEPAMOAfsBZItI34LAbgK+dcwcB5wP31uNck0W8yd9/\nofdskYzk/847Nu20SZ5IJf9BwCLn3DLn3C5gAjAi4Ji+wPsAzrkFQHcR6RDluSaL7LWXvpaWpjaO\nREhG8v/HP+CFFxL7G8Z4RUr+JUCl3+cVnm3+ZgGnA4jIIKAb0DnKc00WWb9eX1u1Sm0ciZCM3j6L\nFumKY8YkQ6QG32gW170duFdEZgBzgBnAT1GeC0B5efnP78vKyigrK4v2VJNGRo7UqZOzUefOsHix\nzv4ZuE5xtHbs0K6kt99ed9/u3TrArEWLhkRpsllFRQUVFRVx+76wC7iLyGCg3Dk3zPN5LLDHOXdH\nmHOWAgcA+0dzri3gbjKBczr467XXdFWwWHz2GQwZAqtX64Ly/pYsgUGDdHzB7Nk63fSFF8LgwQ0O\n3WSpRC/gPh3oJSLdRSQfGAlMDAiglWcfInIJ8IFzbks05xqTKUTgtNPgoINin/f/q6/09csv6+5b\nvFhvKp06wZVX6ufTToMffog9ZmPCCZv8nXO7gVHAZGAu8Lxzbp6IXCYil3kO6wfMEZH5wInAVeHO\nTcyfYUzi3XSTNmZ//31s53/1lSb3N9+svdwlaJVPjx5w7LEwaRL8+c/Qv79v9TFj4i3iIC/n3CRg\nUsC28X7vPwN6R3uuMZmqbVutmtm8uf7nTpmiVUZ33AE33wwlJXDjjb79VVW6BvKAAbq85GGH6QIz\nH34IJ58ctz/BmJ/Z9A7G1EOLFrEl/yeegFtu0bmCHnkEpk6tvX/VKk3+w4bBQw9Bs2YwdKgtLWkS\nx5K/MfXQooUuWBPMli26PnAw3jp90JXEvvhCF4x/+WXdVlWlVUIFBTr1NMD+++tUE8YkgiV/Y+oh\nXMn/jTd0JtBJQSo6lyzRKaMBWraE0aO1aufSSzXxr1qlyd9fu3a6uIw1+ppEsIndjKmHUMn/nnt0\ngFafPvCXv2j1jXc8wObNurZxx46+42+5RV/nzYNnnw2e/EV04fnly2PvXmpMKFbyN6YemjcPnvzv\nuksbaq++Gtatg1mzfPsWL9aePMEGhx1+uPYCWrOm9s3Bq3t33+pixsSTJX9j6iFYyb+6Glau1IXe\n+/SBAw6ApUt1n3Nw331wyCHBv6+0FN57T6fEyM+vu9+Sv0kUq/Yxph6CJf8ZM3QB+OXLoVcvHb1b\nXa37Vq+GV18NPTagXz/YuFF7AQXTrZslf5MYlvyNqYdgyX/WLDj9dE3UHTvWTv5Ll+oNoXnz4N+X\nn699/889N/j+Tp305mJMvFnyN6YegnX1XLVKq2euuko/Fxf7Zuf0jtwN5+qrQ++ztYNNolidvzH1\nEKzBd80aTdJegSX/hsx02r69fr8x8WbJ35h6CNXgGyr5L1umTwWx6tDBkr9JDEv+xtRDYSHs3Knz\n73sluuRfUwN79sT+HcYEY8nfmHoQ0QXqZ87Uz1OmBC/5r1qlI3O//FIna4tVfr7ecDZubFjcxgSy\n5G9MPY0erT10Vq2CE0/UknlRkW9/q1ZwwglQVqaJv337hv2eVf2YRLDkb0w9nXWWDszyrqjXti00\n9us3JwJPPqmrdl1xRcN/z3r8mESwrp7G1FNxsc6++fjj0Ls3NApShGreHP71r/j8XlGRJX8Tf5b8\njYnBIYfoLJ7vvQeffprY3wo3jbQxsbLkb0wMhg7VKZfLyvRfIhUWWvI38WfJ35gYhBuVG2/Nm+uU\n0MbEkyV/Y2IQrJ4/UQoLLfmb+LPePsakOUv+JhEs+RuT5po3tzp/E3+W/I1Jc1byN4kQMfmLyDAR\nmS8iC0VkTJD9RSLytojMFJFvRORCv33LRGS2iMwQkS/iHLsxOcGSv0mEsA2+IpIHPAAcB6wEvhSR\nic65eX6HjQJmOOfGikgRsEBEnnbO7QYcUOacW5+g+I3JelbtYxIhUsl/ELDIObfMObcLmACMCDhm\nFdDS874lsM6T+L2CLFttjImWlfxNIkRK/iVApd/nFZ5t/v4P6C8iVcAs4Cq/fQ54V0Smi0iIVUqN\nMeFYP3+TCJH6+bsovuMGYKZzrkxEegLviMhBzrnNwC+cc6tEpL1n+3zn3EeBX1BeXv7z+7KyMsoS\nPWTSmAxiJX8DUFFRQYV3NsE4EOdC53cRGQyUO+eGeT6PBfY45+7wO+Yt4Fbn3Ceez+8BY5xz0wO+\n62Zgi3Pu7oDtLlwMxuS6lSvh0EOhqirVkZh0IiI452KuVo9U7TMd6CUi3UUkHxgJTAw4Zj7aIIyI\nFAO9gSUiUiAiLTzbC4ETgDmxBmpMrrJqH5MIYat9nHO7RWQUMBnIAx51zs0Tkcs8+8cDtwGPi8gs\n9GZyvXNuvYjsA7wsIt7fecY5NyWBf4sxWamwEDZt0nUC7CHZxEvYap+kBGDVPsZEJJ6He/u/ivFK\ndLWPMSYNFBamOgKTbSz5G5MBNmyAvDwr+Zv4seRvTAZo0gTy82HbtlRHYrKFJX9jMkTLlvDDD6mO\nwsRDQQF8VGfEU3JZ8jcmQ7Rqpb1+TPLNnQsnnRS/79u+HX73O9i9O/KxiWLJ35gM0aqVlfxTZfFi\nmDkzft/XtCm0bQs33RS/76wvW8bRmAxhyT911q6F1ath1y5tf2kI52DnTnjzTVi3Lj7xxcJK/sZk\niJYtrdonVdas0aS9enXDv2v7dm28b9sWevVq+PfFypK/MRnCSv6ps3atvq5Y0fDv2rYtPcZtWPI3\nJkNY8k+dcMl/xw6txonW1q2W/I0x9dCqla+OOJW9RHLR2rXQs6fOsOpv0yYYPBhuvDH677Lkb4yp\nl5494a67oLS04Y2Opn7WrIEhQ+r2+JkyRW8Ar70W/LynntL9P/4Ie/boNkv+xph6Oe88mDMHZs1K\ndSS5Z+1auOIKePVVeP99WLZMty9cCGecoQl94cLa53z+OZx/vt4AzjgDxo/X7du26SCvVLPkb0wG\n2W8/mDcP9tkn1ZHkjp9+0uR/wAFw9dVw/fVw8sm677vv9H+Tww6DGTN856xdC2efDRddBHfeCa+/\n7ntqsJK/MSYmzZtrI6NJjkWLYO+9tbR+881aol+5UhO8N/n36QPz5/vOmTQJBgyAf/8bxo6FceN8\n+y35G2Ni0qyZ9hU3yTF7Nhx4oO9zXh4cfjh8/HHo5P/999C7tx57+eU6lYMlf2NMg6RL8t+zB667\nLvsHngUmf4ChQ+H55/UaFBfXTf7Ll0O3br7PnTrp/2br12vytzp/Y0y9NW2q/cpTNbd/dTVcey38\n97/a+2jMmNTEkSzffgv7719729Ch8MIL2gNIREv5ixbB44/r/uXLoWtX3/Ei2mYwc6YN8jLGxKhR\nI50eIFX1/s8+Cy++COeco33cP/00NXEky6pVWufvb+BA7W47ZIh+btUKXnoJ7r5bP3//fe2SP+i1\n+uwzq/aFXum/AAATFklEQVQxxjRA06apq/p55RW47z7Yd1/tflpdnZo4kqWmBtq3r71tr73g9NPh\n+ON924YO1dk/ly/X5O9f8gdtJ0in5G8LuBuTgTp1gq++qlsiTbSNG6FLF+3psnu3JsGCAn0KyctL\nbizJ0ro1LFmiE7FF0r+/HnvCCXUHflVXQ79+OkXHPffAqFENi8sWcDcmB6Wq0feDD7Sqo2lT7XLa\npIkmx1ROTZxIu3ZpSb116+iOP/BALeEHG/FbXAzvvadPC6Wl8Y0zFjafvzEZKFXJf+pUOOaY2tuK\ni7VU26FD8uNJtJoaaNdO21micdVV+r9NKKWlOgYgHUT8k0RkmIjMF5GFIlKnXV9EikTkbRGZKSLf\niMiF0Z5rjIlNqpL/zJlw6KG1txUX6zz3q1ZpQ3A2WbsWioqiP37wYDjooMTFE09hk7+I5AEPAMOA\nfsBZItI34LBRwAznXClQBtwtIo2jPNcYE4NUJf8VK+o2ZHpL/tdfD2eemfyYEilYY2+2iFTyHwQs\ncs4tc87tAiYAIwKOWQW09LxvCaxzzu2O8lxjTAyS3dvnsce0/nvlSigpqb3Pm/y/+y558STDtGlw\n6qnRNfRmokh1/iVApd/nFcBhAcf8HzBVRKqAFsD/q8e5xpgYNGuWvH7+lZVw8cXa6FlYWLdOu39/\nbcjMtuQ/cqQ29gbO4Z8tIiX/aPpg3gDMdM6ViUhP4B0RqVetV3l5+c/vy8rKKCsrq8/pxuScZFb7\nTJmiDZ7jx0PnznX3//KXcM01sHmzPpFkg507oapKn2h+/DHV0aiKigoqKiri9n1h+/mLyGCg3Dk3\nzPN5LLDHOXeH3zFvAbc65z7xfH4PGIPeWMKe69lu/fyNqacLL9QS6fDh2gB75JGJ+63f/EZ7vDz4\noPZfnzy57jEjR8KvfqWjfnftir53TLqqrNTG23Qu9Se6n/90oJeIdBeRfGAkMDHgmPnAcZ5gioHe\nwJIozzXGxKBZM3j3XaiogD/8IbG/9emnOo896MjVYJ5/Xm8ShYX6BJDpqqu1LSObha32cc7tFpFR\nwGQgD3jUOTdPRC7z7B8P3AY8LiKz0JvJ9c659QDBzk3cn2JM7vAuCfjEE1oV45xOHhZvVVU6EVnP\nnpr4Iy1U7l1kvlWr+MeSTDmf/AGcc5OASQHbxvu9rwFOifZcY0zDLVqkr23aQIsWwScfi4dp07T6\nQ0SndYikZUtN/pkuF5J/htfMGZOb1q/3ve/Z03cziLeZM3VFqmh5S/6ZzpK/MSYtvfaar2vlvvvq\nbJKJsGCBzlUfLUv+mcOSvzEZqGtX6NVL3/fqpUk6EWJJ/itWJCaWZLLkb4xJewceCLNmxf979+zR\np4v6JH/vmrVTp8Y/nkSqrNQpsr2CjWTONpb8jclwpaWJSf4vvKANuC1bRj7Wa+tWfV2wQOfFyZQq\noJdegltv9X2urIyugTuTWfI3JsN16aKjfd94Iz7r+m7bBjfeCDfcAA8/XL9zn30WbrlFk//o0TrR\nW7QxVVZq19VI3UkToaZGn3LGjNEbWFVV8NHM2cSSvzEZTgROOgkuuQT+/veGf9/TT8Pbb2vVzYh6\nTsVYUKBPIvPm6fnz5ulgtGhcc40m37Fj6x9zQ9XUwPz5cOedOnCudWtdpSybWfI3Jgs88wx8+aUm\n/7lzG/ZdP/wARx9ddwHyaPXpoyt+5efDdddpaT4alZXwz3/ChAmx/W5D1NTATz/p+4qK7K/yAUv+\nxmSNzp3h97+H//ynYd+zdauW4GPVvTtccQX89a865cNrr0VX9bNyJRx2mCbiZE+mVlOjk9I1awbv\nv2/J3xiTYQYM0OqLhti2TefoiVVeHtx9N5x/vi7tWFiodej+Xnyxdt3+nj3avbJzZ+jYse7xiVZT\no08d114LM2bUr4dTprLkb0wW6dtX69kbYuvWhiX/QL16wcKFtbddcUXtONes0Xr2/HwtdVdWklQ1\nNdq+MXSo3oguuCC5v58KlvyNySI9e2ribMhCLw2t9gnUq1fthV527tRkX1Pj21ZV5ZubKBHJv7Ky\n9pQY/pyDdet02upDDoHycr2JZjtL/sZkkSZNoEcPmDMndPXPZ5+FX3WrodU+gfbbr3bJ31ul403+\n69Zp0m3SRD8nIvmPHQuPPBJ83w8/6M0uP18nyrv55vj+drqy5G9MlunbF267DS67rO6+BQvgppvg\nootCD8CKd8n/gAN0mUdvbxrv9A/e5D9njr4ec4y+du0Ky5fH7/dBe0CFWougpkZL/bnGkr8xWaZv\nX5g0qW6j6cqV2g3z88+1Z0u/fsHPj3ed//DhOufP+edrlY83+a9dq69Llmgd+x2eNf4CnxQaas8e\nfQoKdUPZvLl+o5izhSV/Y7JMnz6+NWj9u1h6lyTcbz9dl3fduuDrAG/bFt+Sf6NGMHEiLF2q3T5X\nrtQuld6S/5IlsM8+vuN79254jyV/y5fr3xmq5L9lCzRvHr/fyxSW/I3JMt7Gym3bYNMm3/aVK3W9\n33vv1YTcpUvwhBjvkj/ogjO//S3cfjs8+qhWBYVK/l276o1py5aG/+6YMfDrX8PAgZb8A1nyNybL\n9OmjybRnz9pVP1VV2rDqXey9a9fkJX/QBd5btoQ//Qn++Edf8l+8uHbyb9Sobg+hWL36qs4x9NJL\nOnBs48a6x2zerDenXGPJ35gs07y5JtSuXXUZRm/Vj393SvA1rN5/f+0nhHhX+3gVFenUCRdcoFVP\nNTUa26JFuiCNv1694rM62datOlVF1646AG7gwLrHWMnfGJNVnNOqlilT9HOw5D9+PFx5JfzrX77t\niSr5++vQQUf0VlfrxHTt29fd7z8OIFb+f8u772oX0sCpJiz5G2Oyyi9+oa8ff6yvVVW1Fyjp0QOm\nT9c2gHvugQ0bNDFu364NsolUXKy/N2MG9O+vNwB/RUWRk/+WLZHnDPJP/k2b6u8EDoCzah9jTFa5\n5RZ480345BP9vGqVzpvjdc45Our1yiu1Pv7WW7VkvNdeOj9PIuXl6VPI5MnBu5wWFfm6gvqrqvJN\nFNeiBbz8cujf2LVLu3nm5/u2tW5dt97fSv7GmKwzZIguT7hxoyb6oiLfviZNdEQraCPsY4/pNM4N\nmRqiPrp2hbfeCp38g5X8zzsPTjsN3nlHP+/eHfr7vaV+/6cKS/4+EZO/iAwTkfkislBExgTZf62I\nzPD8myMiu0WktWffMhGZ7dn3RSL+AGNMaK1bw6mnwr//rcm/bdvgx3Xvrr2AmjZNXmzduulgrsMP\nr7vPm/zXr9ceO2+/rb115s7VkcBXX63HhesOGqztwpK/T+NwO0UkD3gAOA5YCXwpIhOdcz/Px+ec\nuwu4y3P8L4HRzjnv5XVAmXMuxJRKxphEO+ss+N//1ekVwtXlv/SSVg2NG5ecuLp21aqb0tK6+4qK\nYPVqOOUUaNxYB62Vl2uvpHPPhUsvhWHDgnfd9AqW/Nu00bYGf7la5x82+QODgEXOuWUAIjIBGAGE\nmjT2bOC5gG0S7EBjTHKUlOj0yW3b1m1Y9de4sQ78CjUBWrz16KFTKDcOkoWKiuCbb7Rr5kcfafVO\n27baBfSMM7Tt4osvwi8Qv2WLlfzDiVTtUwL4z6+3wrOtDhEpAE4EXvLb7IB3RWS6iFzSkECNMbEp\nLtYRs6GqfFLlnHNCrzrmbZsYMUIHfeXnQ1mZJv8WLXS+oGCJ3J9V+4QXqeQfxeJrPzsF+Nivygfg\nF865VSLSHnhHROY75z4KPLG8vPzn92VlZZSVldXjZ40x4RQVaYk/3ZJ/06ah2xi8g8yGDvVtu/BC\nraLxatUqfMk/XPKfOBGWLdOqpw0bMqPap6KigoqKirh9X6TkvxLwX82yC1r6D+Y3BFT5OOdWeV7X\nisgraDVS2ORvjImvxo11EFW6Jf9Ipk6FI47wfT7jjNr7W7XyleKdg/vu026r3qqtUMm/ulqfOi64\nQBe+nzs3M0r+gQXjcQ1snIlU7TMd6CUi3UUkHxgJTAw8SERaAUOB1/y2FYhIC8/7QuAEYE6DojXG\nxKS42NetM1McfbRW+YTSurWv5L9hg87h4780ZKjk/9FH2rbxwAPw6afw9NPa2ynXhE3+zrndwChg\nMjAXeN45N09ELhMR/6UiTgMmO+f8J4gtBj4SkZnANOAN59yU+IZvjIlGx46ZV/KPxL/k7x0T8NZb\nvv3Bkn/fvjqqefBg/ZyXp08BwRqds13EP9k5NwmYFLBtfMDnJ4AnArYtBYJ04jLGJFtxcfYlf/+S\nvzf5T50K116r74Ml/6FD4eKLtcE41+Xg/c6Y3DNihN4Asklgyb9HD23E9Qo1QV2yurKmO0v+xuSA\nwMbSbNCqlfb+2bNHk39pqU774Jw2+m7dmn1PO/Fkc/sYYzJS48Za9bN2rSb/nj11u3dtgupqnRra\nBGfJ3xiTsUpKdHnKmhrtztq5s2+B+EWLdFCYCc6SvzEmY/kn/6Ii7cJZ6ZmTINgKYcbHkr8xJmOV\nlOggrcWLNfl7S/6bNmmdv//6BaY2a/A1xmSskhK44QZN8vvtp/33n3xSG4N79gw/kV2us+RvjMlY\nJSXa2+f99zX59+oFH3ygq5idemqqo0tvlvyNMRmrc2et199vP/2cl6fz9ZjIxEVaATnRAYi4VMdg\njMlMu3bB8uW52bArIjjnYq7YsuRvjDEZqKHJ33r7GGNMDrLkb4wxOciSvzHG5CBL/sYYk4Ms+Rtj\nTA6y5G+MMTnIkr8xxuQgS/7GGJODLPkbY0wOsuRvjDE5yJK/McbkoIjJX0SGich8EVkoImOC7L9W\nRGZ4/s0Rkd0i0jqac40xxqRG2OQvInnAA8AwoB9wloj09T/GOXeXc26Ac24AMBaocM5tjObcdFVR\nUZHqEIJKx7gspuhYTNFLx7jSMaaGilTyHwQscs4tc87tAiYAI8IcfzbwXIznpo10/R86HeOymKJj\nMUUvHeNKx5gaKlLyLwEq/T6v8GyrQ0QKgBOBl+p7rjHGmOSKlPzrM9H+KcDHzrmNMZxrjDEmicIu\n5iIig4Fy59wwz+exwB7n3B1Bjn0FeN45N6E+54qI3SSMMSYGCVvJS0QaAwuAY4Eq4AvgLOfcvIDj\nWgFLgM7Oue31OdcYY0zyhV3A3Tm3W0RGAZOBPOBR59w8EbnMs3+859DTgMnexB/u3ET8EcYYY+on\n5Wv4GmOMSb6UjvBNl0FgIrJMRGZ7Bqp94dnWVkTeEZHvRGSKd+BaAmN4TESqRWSO37aQMYjIWM91\nmy8iJyQxpnIRWeE3sG94kmPqIiLvi8i3IvKNiFzp2Z6yaxUmplRfq6YiMk1EZorIXBH5X8/2VF6r\nUDGl9Fp5fifP89uvez6n9P9/IWKK33VyzqXkH1oVtAjoDjQBZgJ9UxTLUqBtwLY7ges978cAtyc4\nhiOBAcCcSDGgg+Zmeq5bd891bJSkmG4GrglybLJi6giUet43R9uV+qbyWoWJKaXXyvNbBZ7XxsDn\nwBFp8N9VsJjS4VpdAzwDTPR8Tul1ChFT3K5TKkv+6TYILLDV/FTgCc/7J9B2jYRxzn0EbIgyhhHA\nc865Xc65Zej/0IOSFBPUvVbJjGm1c26m5/0WYB46fiRl1ypMTJDCa+WJZ5vnbT5a4NpA6v+7ChYT\npPBaiUhn4CTgEb84UnqdQsQkxOk6pTL5p9MgMAe8KyLTReQSz7Zi51y15301UJyCuELFsDd6vbyS\nfe3+R0Rmicijfo/CSY9JRLqjTybTSJNr5RfT555NKb1WItJIRGai1+R959y3pPhahYgJUnut/glc\nB+zx25bq/6aCxeSI03VKZfJPp5bmXzidm2g4cIWIHOm/0+lzVUrjjSKGZMX3ENADKAVWAXeHOTZh\nMYlIc3Q0+VXOuc21fjRF18oT04uemLaQBtfKObfHOVcKdAaGisjRAfuTfq2CxFRGCq+ViPwSWOOc\nm0HwUnXSr1OYmOJ2nVKZ/FcCXfw+d6H2nStpnHOrPK9rgVfQx6VqEekIICKdgDUpCC1UDIHXrrNn\nW8I559Y4D/Rx1PtombSYRKQJmvifcs696tmc0mvlF9PT3pjS4Vp5Oed+AN4EDiFN/rvyi2lgiq/V\nEOBUEVmKzk12jIg8RWqvU7CYnozrdUpEI0U0/9DGnsVo40Q+KWrwBQqAFp73hcAnwAloY88Yz/Y/\nkeAGX8/vdKdug2+dGPA17uSjpYDFeLrtJiGmTn7vrwaeTWZMaCnoSeCfAdtTdq3CxJTqa1UEtPa8\nbwZ8iA66TOW1ChVTx1ReK7/fPgp4PdX/TYWJKW7/TSUk2Hr8UcPRnhGLgLEpiqGH56LNBL7xxgG0\nBd4FvgOmeP+DTWAcz6EjoX9E20J+Gy4G4AbPdZsPnJikmC7yJLnZwCzgVbReNJkxHYHWgc4EZnj+\nDUvltQoR0/A0uFYHAF974poNXBfpv+0kXKtQMaX0Wvn91lH4etak9P9/fr9V5hfTU/G6TjbIyxhj\ncpAt42iMMTnIkr8xxuQgS/7GGJODLPkbY0wOsuRvjDE5yJK/McbkIEv+xhiTgyz5G2NMDvr/2rm/\nXRLQHssAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-5-multi_sampling-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# we modify this data organizing slightly to get two symbols\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "num_symbols = len(symbol_list)\n", "num_samples = 20\n", "\n", "\n", "# define placeholders \n", "x = tf.placeholder(tf.float32, [None, num_symbols * 100])\n", "y_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", "# define trainable variables\n", "W = tf.Variable(tf.random_normal([num_symbols * 100, num_positions * num_symbols]))\n", "b = tf.Variable(tf.random_normal([num_positions * num_symbols]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b # y is tensor of shape [num_inputs, num_positions * len(symbol_list)]\n", "# a row of y will look like [prob_symbol_1_short, prob_symbol_1_neutral, prob_symbol_1_long, prob_symbol_2_short, ...]\n", "# note that they are not really probabilities because I did not perform a softmax yet\n", "\n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "sample_n = {}\n", "sample_mask = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)#sample = tf.argmax(symbol_probs_softmax, 1) #use a real sample\n", " #pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1)\n", " # get returns by multiplying the policy (position taken) by the target return for that day\n", " #symbol_returns[i] = tf.mul(tf.cast(pos[i], float32), y_[:,i])\n", " # isolate the probability of the selected policy (for use in calculating gradient)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.mul(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", " \n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs * sample_mask[i*num_samples + sample_iter],1)\n", " \n", "\n", "\n", "daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", "total_return = tf.reduce_prod(daily_returns+1, 0)\n", "z = tf.ones_like(total_return) * -1\n", "total_return = tf.add(total_return, z)\n", "\n", "\n", "ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = tf.div(total_return, ann_vol)\n", "#Maybe metric slicing later\n", "#segment_ids = tf.ones_like(daily_returns[:,0])\n", "#partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", "gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", "#cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n", "#cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n", "#cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n", "cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(cost)\n", "costfn = tf.reduce_mean(cost)\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "# calculate the performance metrics for the data chosen\n", "#daily_returns_by_symbol = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "#daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n", "#total_return = tf.reduce_prod(daily_returns + 1)\n", "#ann_vol = tf.mul(\n", " # tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n", " # np.sqrt(252)\n", " # )\n", "#sharpe = total_return / ann_vol\n", "\n", "'''\n", "# since we only train the sampled classes, we will combine them so that we can feed them into cross entropy\n", "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "# we want to either push the gradient toward our selection or away from it. We use these ones to find the direction\n", "# of the gradient, which we will then multiply by our fitness function\n", "ones = tf.ones_like(training_target_cols)\n", "\n", "# this isnt actuall a gradient, but karpathy sort of calls it one. Since it is a tensor it sort of is a gradient anyway\n", "gradient = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n", "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n", "#cost = tf.mul(gradient , daily_returns_by_symbol)\n", "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n", "#cost = tf.mul(gradient , tf.reshape(daily_returns,[-1,1]))\n", "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n", "cost = tf.mul(gradient , total_return)\n", "# for printing\n", "costfn = tf.reduce_mean(cost)\n", "\n", "# minimize the cost (push the weights where we want them to go)\n", "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(cost)\n", "'''\n", "print()" ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 130, "metadata": {}, "output_type": "execute_result" } ], "source": [ "costfn\n", "#gradient_\n", "#total_return" ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ann_vol\n", "total_return" ] }, { "cell_type": "code", "execution_count": 149, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0100 cost= 4.0075 total return= 0.410749108 sharpe= 1.227803946\n", "Epoch: 0200 cost= 5.79791 total return= 0.325742573 sharpe= 0.908009708\n", "Epoch: 0300 cost= 29.9439 total return= 1.916382551 sharpe= 5.669203281\n", "Epoch: 0400 cost= 30.9742 total return= 2.846206665 sharpe= 8.231985092\n", "Epoch: 0500 cost= 14.2515 total return= 2.010600805 sharpe= 5.734219074\n", "Epoch: 0600 cost= 36.9297 total return= 2.298950195 sharpe= 6.386272430\n", "Epoch: 0700 cost= 17.9175 total return= 1.090037107 sharpe= 2.921367884\n", "Epoch: 0800 cost= 22.0439 total return= 0.870501816 sharpe= 2.314534664\n", "Epoch: 0900 cost= 265.804 total return= 5.780017376 sharpe= 15.342338562\n", "Epoch: 1000 cost= 336.977 total return= 7.407339573 sharpe= 18.710979462\n", "Epoch: 1100 cost= 261.297 total return= 7.243052483 sharpe= 18.231023788\n", "Epoch: 1200 cost= 166.946 total return= 4.330142975 sharpe= 11.005815506\n", "Epoch: 1300 cost= 133.772 total return= 3.356940508 sharpe= 8.886281013\n", "Epoch: 1400 cost= 130.561 total return= 3.171287537 sharpe= 8.084554672\n", "Epoch: 1500 cost= 280.925 total return= 5.933093548 sharpe= 15.260545731\n", "Epoch: 1600 cost= 141.71 total return= 1.981608987 sharpe= 5.255846024\n", "Epoch: 1700 cost= 229.812 total return= 3.756299973 sharpe= 9.602984428\n", "Epoch: 1800 cost= 368.397 total return= 6.263023853 sharpe= 16.065864563\n", "Epoch: 1900 cost= 196.461 total return= 4.329125404 sharpe= 11.169312477\n", "Epoch: 2000 cost= 264.657 total return= 5.718810081 sharpe= 14.863568306\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(2000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 150, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 151, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 152, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 153, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nQqFQTEP+F2ZEdaLhkq/CAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-6-neural_network-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "num_symbols = len(symbol_list)\n", "num_samples = 20\n", "\n", "n_input = num_symbols * 100\n", "n_hidden_1 = 10 # 1st layer number of features\n", "n_hidden_2 = 10 # 2nd layer number of features\n", "n_classes = num_positions * num_symbols # MNIST total classes (0-9 digits)\n", "\n", "\n", "# define placeholders \n", "x = tf.placeholder(tf.float32, [None, num_symbols * 100])\n", "y_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", "weights = {\n", " 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n", " 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))\n", "}\n", "biases = {\n", " 'b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'b2': tf.Variable(tf.random_normal([n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_classes]))\n", "}\n", "\n", "def multilayer_perceptron(x, weights, biases):\n", " # Hidden layer with RELU activation\n", " layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])\n", " layer_1 = tf.nn.relu(layer_1)\n", " # Hidden layer with RELU activation\n", " layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])\n", " layer_2 = tf.nn.relu(layer_2)\n", " # Output layer with linear activation\n", " out_layer = tf.matmul(layer_2, weights['out']) + biases['out']\n", " return out_layer\n", "\n", "# Construct model\n", "y = multilayer_perceptron(x, weights, biases)\n", "\n", "\n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "sample_n = {}\n", "sample_mask = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.mul(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", " \n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs_softmax * sample_mask[i*num_samples + sample_iter],1)\n", " \n", "\n", "\n", "daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", "total_return = tf.reduce_prod(daily_returns+1, 0)\n", "z = tf.ones_like(total_return) * -1\n", "total_return = tf.add(total_return, z)\n", "\n", "\n", "ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = tf.div(total_return, ann_vol)\n", "#Maybe metric slicing later\n", "#segment_ids = tf.ones_like(daily_returns[:,0])\n", "#partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", "training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", "gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", "#cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n", "#cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n", "#cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n", "cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)\n", "costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0100 cost= 0.357373 total return= 0.409767538 sharpe= 1.117977977\n", "Epoch: 0200 cost= 0.39784 total return= 0.456069469 sharpe= 1.244072676\n", "Epoch: 0300 cost= 0.462523 total return= 0.530371010 sharpe= 1.446246624\n", "Epoch: 0400 cost= 0.584189 total return= 0.672424912 sharpe= 1.827061296\n", "Epoch: 0500 cost= 0.445673 total return= 0.510583758 sharpe= 1.393794894\n", "Epoch: 0600 cost= 0.519553 total return= 0.596914530 sharpe= 1.624922156\n", "Epoch: 0700 cost= 0.565879 total return= 0.650260627 sharpe= 1.769401193\n", "Epoch: 0800 cost= 0.482351 total return= 0.553301036 sharpe= 1.507541776\n", "Epoch: 0900 cost= 0.490191 total return= 0.561884701 sharpe= 1.532655001\n", "Epoch: 1000 cost= 0.540358 total return= 0.619096160 sharpe= 1.688741684\n", "Epoch: 1100 cost= 0.641487 total return= 0.735186100 sharpe= 2.004348040\n", "Epoch: 1200 cost= 0.573753 total return= 0.657212317 sharpe= 1.792912483\n", "Epoch: 1300 cost= 0.544023 total return= 0.623561800 sharpe= 1.699504137\n", "Epoch: 1400 cost= 0.545976 total return= 0.625774741 sharpe= 1.705720186\n", "Epoch: 1500 cost= 0.54651 total return= 0.624909401 sharpe= 1.707361817\n", "Epoch: 1600 cost= 0.562541 total return= 0.643976569 sharpe= 1.757120132\n", "Epoch: 1700 cost= 0.628897 total return= 0.720324337 sharpe= 1.964194536\n", "Epoch: 1800 cost= 0.564138 total return= 0.645473421 sharpe= 1.762031555\n", "Epoch: 1900 cost= 0.580018 total return= 0.664805055 sharpe= 1.812619209\n", "Epoch: 2000 cost= 0.649044 total return= 0.743958056 sharpe= 2.028422356\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.initialize_all_variables()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(2000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, pos[0]], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/TF-FIN-7-regularization_modular-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n", "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "class Model():\n", " def __init__(self, config, training=True):\n", " #CONFIG\n", " symbol_list = self.symbol_list = config.symbol_list\n", " num_samples = self.num_samples = config.num_samples\n", " input_len = self.input_len = config.input_len\n", " n_hidden_1 = self.n_hidden_1 = config.n_hidden_1\n", " n_hidden_2 = self.n_hidden_2 = config.n_hidden_2 \n", " learning_rate = self.learning_rate = config.learning_rate\n", " \n", " #bucket info\n", " positions = self.positions = tf.constant([-1,0,1])\n", " num_positions = self.num_positions = 3\n", " \n", " #more vars\n", " num_symbols = self.num_symbols = len(symbol_list)\n", " n_input = self.n_input = num_symbols * input_len\n", " n_classes = self.n_classes = num_positions * num_symbols \n", "\n", " \n", " \n", " x =self.x = tf.placeholder(tf.float32, [None, n_input])\n", " y_ =self.y_= tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", " weights = {\n", " 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n", " 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))\n", " }\n", " biases = {\n", " 'b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'b2': tf.Variable(tf.random_normal([n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_classes]))\n", " }\n", "\n", " \n", " def multilayer_perceptron(x, weights, biases, keep_prob):\n", " # Hidden layer with RELU activation\n", " layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])\n", " layer_1 = tf.nn.relu(layer_1)\n", " # Hidden layer with RELU activation\n", " layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])\n", " layer_2 = tf.nn.relu(layer_2)\n", " # Output layer with linear activation\n", " out_layer_f = tf.matmul(layer_2, weights['out']) + biases['out']\n", " out_layer = tf.nn.dropout(out_layer_f, keep_prob) # DROPOUT LAYER\n", " return out_layer\n", " \n", " if training == True: keep_prob = 0.5 # DROPOUT\n", " else: keep_prob = 1.0 # NO DROPOUT\n", " \n", " # Construct model\n", " y = multilayer_perceptron(x, weights, biases, keep_prob)\n", "\n", "\n", "\n", " # loop through symbol, taking the columns for each symbol's bucket together\n", " pos = {}\n", " sample_n = {}\n", " sample_mask = {}\n", " symbol_returns = {}\n", " relevant_target_column = {}\n", " for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.mul(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", "\n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs_softmax * sample_mask[i*num_samples + sample_iter],1)\n", " self.pos = pos\n", "\n", " # PERFORMANCE METRICS\n", " daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", " daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", " self.daily_returns = daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", " \n", " total_return = tf.reduce_prod(daily_returns+1, 0)\n", " z = tf.ones_like(total_return) * -1\n", " self.total_return =total_return= tf.add(total_return, z)\n", " \n", " self.ann_vol = ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", " self.sharpe = sharpe = tf.div(total_return, ann_vol)\n", " #Maybe metric slicing later\n", " #segment_ids = tf.ones_like(daily_returns[:,0])\n", " #partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", " training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", " ones = tf.ones_like(training_target_cols)\n", " gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", " gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", " #L2 = tf.contrib.layers.l2_regularizer(0.1)\n", " #t_vars = tf.trainable_variables()\n", " #reg = tf.contrib.layers.apply_regularization(L2, tf.GraphKeys.WEIGHTS)\n", "\n", " #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n", " #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1)) #+ reg\n", " #cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n", " cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n", "\n", " self.optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)\n", " self.costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class SmallConfig(object):\n", " \"\"\"Small config.\"\"\"\n", " symbol_list = ['C', 'GS']\n", " num_samples = 20\n", " input_len = 100\n", " n_hidden_1 = 50 \n", " n_hidden_2 = 50 \n", " learning_rate = 0.00005" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "sess = tf.Session()\n", "# initialize variables to random values\n", "with tf.variable_scope(\"model\", reuse=None):\n", " m = Model(config = SmallConfig)\n", "with tf.variable_scope(\"model\", reuse=True):\n", " mvalid = Model(config = SmallConfig, training=False)\n", "sess.run(tf.initialize_all_variables())\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(20000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(m.optimizer, feed_dict={m.x: train_ins[start:end], m.y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " t,s, c = sess.run([ mvalid.total_return, mvalid.ann_vol, mvalid.costfn], feed_dict={mvalid.x: train_ins, mvalid.y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " t = (1+t)**(1/6) -1\n", " s = np.mean(s)\n", " s = t/s\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([mvalid.daily_returns, mvalid.pos[0]], feed_dict={mvalid.x: train_ins, mvalid.y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nNDQ0LgL+H/LKAy4Bwr41AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(mvalid.num_samples):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([mvalid.daily_returns, mvalid.pos[0]], feed_dict={mvalid.x: test_ins, mvalid.y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n/C0Wi6UL8v+d9NEd0E6leQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEACAYAAAC6d6FnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztfXuwZlV152/de7tbVAxiSPNoFELoEiwRxDQIIlcGlWbG\nBowvMCXBBNDA+GAChMykujVVmWQqiSlixqFqzBQ6M2iVRgtHKdQp70hNFcxYCj6gR2CkAsa0logT\ntQLdzZ4/zrf41l137cd5fN859571q7r1nW+fffZee+3H2uu39rkfhRDgcDgcjvFhoW8BHA6Hw9EP\n3AA4HA7HSOEGwOFwOEYKNwAOh8MxUrgBcDgcjpHCDYDD4XCMFK0NABH9DRHtI6JvJfLcTEQPEtF9\nRHRa2zodDofD0R5deAD/CcAFsZtEdCGAXwshnAjgKgAf6aBOh8PhcLREawMQQrgLwE8SWXYBuHWS\n9x4AhxHR1rb1OhwOh6Md5hEDOAbAo+L7YwC2zaFeh8PhcCQwryAwqe/+/yccDoejZyzNoY7vAzhW\nfN82SVsFInKj4HA4HA0QQtCb7CLMwwO4HcA7AICIzgTwRAhhn5UxhIDTTw+4/voAIOCGG6rPN70p\n4HvfCzjuuIAQqusXvSjgzW8O+OQnq7TSv4WFqvw//uPq+003Ta+vvbaq84gjquuzztqNI46o7r3w\nhQGPPFJdP/xwwPHHV9eHH1498973Btx3X8AppwS8/vUBd9xRTy7596lPBbzxjQG/+qsB3/lOwDve\nEXDrrdW93bt348EHA044IeCSSwI+/enpc4cdtlZ3/F2m79wZr/ulL63yvv3t5fLu3r0bF19clX3m\nmfF855xT5Tn//IDt2yt5WOe/9EsBV101lfutb12t8xe+sLr37neXybR5c9V/118fsGlTlXb22QF3\n3RXwvvcF/MVfTPP++McBz39+wO/8zlRXl11WXbMst90WcMstAVdeWen58cerPrrhhoBTTw147WsD\n7ryzKk9en3VWwJ49AeedV43tK6/cjRACfvrTgEMPDXjXuwI++MGAF7ygyn/ccVWZV1yxtk0f+UjA\n1VcHPO95AT/8YdWPQMATT1T3iQIOHpT9UrVlcTHguusC/uzPVpf3t38bcPHFAe9//25s21alnXhi\nVf9v//Y032WXVeWccso07UMfqsb8pk0Bf/RHAb/3e5Usr3zlVM9/+IfT/nzd66rn7713bbtOOqkq\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/Untitled-checkpoint.ipynb ================================================ { "cells": [], "metadata": {}, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/.ipynb_checkpoints/lstm_(7)-checkpoint.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"# we modify this data organizing slightly to get two symbols\\ndef get_prices(symbol):\\n start, end = '2007-05-02', '2016-04-11'\\n data = web.DataReader(symbol, 'yahoo', start, end)\\n data=pd.DataFrame(data)\\n prices=data['Adj Close']\\n prices=prices.astype(float)\\n return prices\\n\\ndef get_returns(prices):\\n return ((prices-prices.shift(-1))/prices)[:-1]\\n \\ndef get_data(list):\\n l = []\\n for symbol in list:\\n rets = get_returns(get_prices(symbol))\\n l.append(rets)\\n return np.array(l).T\\n\\ndef sort_data(rets):\\n ins = []\\n outs = []\\n for i in range(len(rets)-100):\\n ins.append(rets[i:i+100].tolist())\\n outs.append(rets[i+100])\\n return np.array(ins), np.array(outs)\\n \\n\"" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''# we modify this data organizing slightly to get two symbols\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n", "'''" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", " \n", "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def lstm_iterator(raw_data, num_steps, data_size):\n", " batch_size=1\n", " \n", " raw_data = np.array(raw_data, dtype=np.float32)\n", "\n", " data_len = len(raw_data)\n", " batch_len = data_len // batch_size\n", " data = np.zeros([batch_size, batch_len, data_size], dtype=np.float32)\n", " for i in range(batch_size):\n", " data[i] = raw_data[batch_len * i:batch_len * (i + 1),:]\n", "\n", " epoch_size = (batch_len - 1) // num_steps\n", "\n", " if epoch_size == 0:\n", " raise ValueError(\"epoch_size == 0, decrease batch_size or num_steps\")\n", "\n", " for i in range(epoch_size):\n", " x = data[:, i*num_steps:(i+1)*num_steps]\n", " y = data[:, i*num_steps+1:(i+1)*num_steps+1]\n", " yield (x[0], y[0])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"symbol_list = ['C', 'GS']\\nrets = get_data(symbol_list)\\nins, outs = sort_data(rets)\\nins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\\ndiv = int(.8 * ins.shape[0])\\ntrain_ins, train_outs = ins[:div], outs[:div]\\ntest_ins, test_outs = ins[div:], outs[div:]\\n\\n#normalize inputs\\ntrain_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)\"" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)'''" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "class LSTMModel(object):\n", " def __init__(self, num_steps, num_samples):#, config):\n", " symbol_list = ['C', 'GS']\n", "\n", " positions = tf.constant([-1,0,1]) #long, neutral or short\n", " num_positions = 3\n", " num_symbols = len(symbol_list)\n", " self.num_samples = num_samples\n", " self.num_steps = num_steps\n", "\n", " #n_input = num_symbols * 100\n", "\n", " hidden_size=21\n", " n_classes = num_positions * num_symbols\n", "\n", " #self.num_steps = tf.placeholder(tf.int64)\n", "\n", " # define placeholders \n", " self.inputs_ = tf.placeholder(tf.float32, [None, num_symbols])\n", " self.targets_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", " cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)\n", " #cell = tf.nn.rnn_cell.MultiRNNCell([cell] * config.num_layers)\n", " cell = tf.nn.rnn_cell.InputProjectionWrapper(cell, num_symbols)\n", " cell = tf.nn.rnn_cell.OutputProjectionWrapper(cell, n_classes)\n", "\n", "\n", " outputs=[]\n", " self.initial_state = cell.zero_state(1, tf.float32)\n", " state = self.initial_state\n", " time_step = 0\n", " \n", " '''with tf.variable_scope(\"RNN\"):\n", " def body(x):\n", " inp = self.inputs_[time_step,:]\n", " inp = tf.reshape(inp, [1,-1])\n", " (cell_output, state) = cell(inp, state)\n", " outputs.append(cell_output)\n", " return \n", "\n", " def condition(x):\n", " return tf.reduce_sum(x) < 100\n", " \n", " tf.while_loop(condition, body, [x])'''\n", " \n", " with tf.variable_scope(\"RNN\"):\n", " for time_step in range(self.num_steps): #####num_steps???\n", " if time_step > 0: tf.get_variable_scope().reuse_variables() \n", " inp = self.inputs_[time_step,:]\n", " inp = tf.reshape(inp, [1,-1])\n", " (cell_output, state) = cell(inp, state)\n", " outputs.append(cell_output) #[6,]\n", "\n", " self.final_state = state \n", "\n", " y = tf.reshape(tf.concat(1, outputs), [-1, n_classes])\n", "\n", "\n", "\n", "\n", "\n", " # loop through symbol, taking the columns for each symbol's bucket together\n", " pos = {}\n", " sample_n = {}\n", " sample_mask = {}\n", " symbol_returns = {}\n", " relevant_target_column = {}\n", " for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.mul(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " self.targets_[:,i])\n", "\n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs * sample_mask[i*num_samples + sample_iter],1)\n", "\n", "\n", "\n", " daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", " daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", " daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", " total_return = tf.reduce_prod(daily_returns+1, 0)\n", " z = tf.ones_like(total_return) * -1\n", " self.total_return = total_return = tf.add(total_return, z)\n", "\n", "\n", " ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", " self.sharpe = tf.div(total_return, ann_vol)\n", " #Maybe metric slicing later\n", " #segment_ids = tf.ones_like(daily_returns[:,0])\n", " #partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", " training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", " ones = tf.ones_like(training_target_cols)\n", " gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", " gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", " #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n", " #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n", " cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n", " #cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n", "\n", " self.optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)\n", " self.costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def run_train_results(m, epoch):\n", " state = m.initial_state.eval()\n", " full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:], m.initial_state: state}\n", " \n", " t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=full_feed)\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def run_epoch(m, epoch):\n", " \n", " full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:]}\n", " state = m.initial_state.eval()\n", " for step, (x, y) in enumerate(lstm_iterator(rets,20,2 )):\n", " #m.num_steps = len(x)\n", " feed_dict = {m.inputs_: x, m.targets_: y, m.initial_state: state}\n", " _ , state = session.run([m.optimizer, m.final_state], feed_dict=feed_dict)\n", " \n", " '''if (epoch+1)%2== 0:\n", " t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=feed_dict)#full_feed)#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))'''" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "getting results...\n", "Epoch: 0001 cost= -0.50711 total return= -0.731922448 sharpe= -2.518890381\n", "getting results...\n", "Epoch: 0002 cost= -0.479199 total return= -0.690995097 sharpe= -2.211014509\n", "getting results...\n", "Epoch: 0003 cost= 0.802528 total return= 1.158372164 sharpe= 4.109907150\n", "getting results...\n", "Epoch: 0004 cost= -0.504468 total return= -0.728531718 sharpe= -2.387005329\n", "getting results...\n", "Epoch: 0005 cost= -0.607678 total return= -0.877253473 sharpe= -2.718842506\n", "getting results...\n", "Epoch: 0006 cost= 0.449566 total return= 0.648839116 sharpe= 2.242624998\n", "getting results...\n", "Epoch: 0007 cost= 0.223947 total return= 0.323118806 sharpe= 0.947408140\n", "getting results...\n", "Epoch: 0008 cost= 0.29168 total return= 0.421271563 sharpe= 1.259648323\n", "getting results...\n", "Epoch: 0009 cost= -0.353979 total return= -0.511379957 sharpe= -1.703359842\n", "getting results...\n", "Epoch: 0010 cost= -0.383745 total return= -0.553670168 sharpe= -1.732698441\n" ] } ], "source": [ "with tf.Graph().as_default(), tf.Session() as session:\n", " # initialize variables to random values\n", " #init = tf.initialize_all_variables()\n", " #sess.run(init)\n", " # run optimizer on entire training data set many times\n", " #train_size = train_ins.shape[0]\n", " with tf.variable_scope(\"model\", reuse=None):#, initializer=init):\n", " m = LSTMModel(num_steps = 20, num_samples = 5)#, config=config)\n", " with tf.variable_scope(\"model\", reuse=True):#, initializer=init):\n", " mvalid = LSTMModel(num_steps = len(rets) -1, num_samples = 1)#, config=config)\n", " tf.initialize_all_variables().run()\n", " for epoch in range(10):\n", " #start = rng.randint(train_size-50)\n", " #batch_size = rng.randint(2,25)\n", " #end = min(train_size, start+batch_size)\n", "\n", " run_epoch(m, epoch )\n", " print('getting results...')\n", " run_train_results(mvalid, epoch)\n", " '''sess.run(optimizer, feed_dict={inputs_: train_ins[start:end], targets_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={inputs_: train_ins, targets_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)'''" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state.eval" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, pos[0]], feed_dict=feed_dict)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[-0.02278614, -0.01349073],\n", " [ 0.01645574, 0.00046793],\n", " [-0.06229091, -0.03424059],\n", " [-0.02301918, 0.00290978],\n", " [-0.01444814, -0.00732817],\n", " [ 0. , -0.00972121],\n", " [ 0.00513662, 0.00950007],\n", " [ 0.03661115, 0.02413904],\n", " [-0.00243609, 0.01114777],\n", " [-0.00534623, -0.00740445],\n", " [-0.0391589 , -0.01933518],\n", " [ 0.00744369, 0.0029232 ],\n", " [ 0.0018748 , 0.00951207],\n", " [ 0.00845272, 0.00980073],\n", " [-0.01468148, -0.01574339],\n", " [-0.01610275, -0.03067165],\n", " [-0.00137798, 0.00831226],\n", " [ 0.00504581, 0.01337255],\n", " [ 0.02328266, 0.00077818],\n", " [ 0.0101487 , 0.00700935]], dtype=float32)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/TF-FIN-1-singlestock_regresion.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " #prices=np.asarray(list(prices))\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return (prices-prices.shift(-1))/prices\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# separate data into inputs and outputs for training and testing\n", "gs = get_prices('GS')\n", "rets = get_returns(gs)\n", "ins, outs = sort_data(rets)\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-0.01878741 -0.00407213 -0.00961761 ..., -0.01028454 0.00316706\n", " 0.00487916]\n", " [-0.00407213 -0.00961761 0.00430391 ..., 0.00316706 0.00487916\n", " -0.00313569]\n", " [-0.00961761 0.00430391 0.02086335 ..., 0.00487916 -0.00313569\n", " 0.00233021]\n", " ..., \n", " [ 0.02340544 0.01234632 -0.00929671 ..., 0.01533878 0.00102993\n", " 0.03080095]\n", " [ 0.01234632 -0.00929671 0.00827435 ..., 0.00102993 0.03080095\n", " 0.0008643 ]\n", " [-0.00929671 0.00827435 -0.01621451 ..., 0.03080095 0.0008643\n", " -0.01277615]]\n" ] } ], "source": [ "print(test_ins)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# we define two placeholders for our input and output\n", "x = tf.placeholder(tf.float32, [None, 100])\n", "y_ = tf.placeholder(tf.float32, [None, 1])\n", "\n", "# we define trainable variables for our model\n", "W = tf.Variable(tf.random_normal([100, 1]))\n", "b = tf.Variable(tf.random_normal([1]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b\n", "\n", "#MSE:\n", "cost = tf.reduce_sum(tf.pow(y-y_, 2))/(2*1000)\n", "optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 0.014585411\n", "Epoch: 2000 cost= 0.004562563\n", "Epoch: 3000 cost= 0.001888341\n", "Epoch: 4000 cost= 0.001065421\n", "Epoch: 5000 cost= 0.000789276\n", "Epoch: 6000 cost= 0.000691074\n", "Epoch: 7000 cost= 0.000654672\n", "Epoch: 8000 cost= 0.000640742\n", "Epoch: 9000 cost= 0.000635271\n", "Epoch: 10000 cost= 0.000633075\n", "Epoch: 11000 cost= 0.000632177\n", "Epoch: 12000 cost= 0.000631803\n", "Epoch: 13000 cost= 0.000631645\n", "Epoch: 14000 cost= 0.000631578\n", "Epoch: 15000 cost= 0.000631548\n", "Epoch: 16000 cost= 0.000631535\n", "Epoch: 17000 cost= 0.000631530\n", "Epoch: 18000 cost= 0.000631527\n", "Epoch: 19000 cost= 0.000631526\n", "Epoch: 20000 cost= 0.000631526\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "for epoch in range(20000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " c = sess.run(cost, feed_dict={x: train_ins, y_: train_outs.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#train results :)\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: train_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * train_outs\n", "plot(np.cumprod(returns+1))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#test results :(\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: test_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position.reshape(-1) * test_outs\n", "plot(np.cumprod(returns+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-2-multistock_regresion.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# we modify this data organizing slightly to get two symbols\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# once again I only make slight modifications\n", "\n", "# define placeholders \n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "# define trainable variables\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([len(symbol_list)]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b\n", "\n", "#MSE:\n", "cost = tf.reduce_sum(tf.pow(y-y_, 2))/(2*1000)\n", "optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 0.072743751\n", "Epoch: 2000 cost= 0.050064877\n", "Epoch: 3000 cost= 0.043570619\n", "Epoch: 4000 cost= 0.041413590\n", "Epoch: 5000 cost= 0.040621527\n", "Epoch: 6000 cost= 0.040309947\n", "Epoch: 7000 cost= 0.040181138\n", "Epoch: 8000 cost= 0.040125798\n", "Epoch: 9000 cost= 0.040101122\n", "Epoch: 10000 cost= 0.040089916\n", "Epoch: 11000 cost= 0.040084537\n", "Epoch: 12000 cost= 0.040081933\n", "Epoch: 13000 cost= 0.040080719\n", "Epoch: 14000 cost= 0.040080082\n", "Epoch: 15000 cost= 0.040079705\n", "Epoch: 16000 cost= 0.040079582\n", "Epoch: 17000 cost= 0.040079467\n", "Epoch: 18000 cost= 0.040079460\n", "Epoch: 19000 cost= 0.040079404\n", "Epoch: 20000 cost= 0.040079389\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "for epoch in range(20000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%1000== 0:\n", " c = sess.run(cost, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#train results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: train_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position * train_outs\n", "daily_returns = sum(returns,1)\n", "plot(np.cumprod(daily_returns+1))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#test results\n", "predict = y\n", "p = sess.run(predict, feed_dict={x: test_ins})\n", "position = 2*((p>0)-.5)\n", "returns= position * test_outs\n", "daily_returns = sum(returns,1)\n", "plot(np.cumprod(daily_returns+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-3-regression_with_policy_training.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs (this is new but not specific to PG; you should always normalize inputs)\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "\n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, num_positions * len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([num_positions * len(symbol_list)]))\n", "\n", "# we define our model: y = W*x + b\n", "y = tf.matmul(x, W) + b # y is tensor of shape [num_inputs, num_positions * len(symbol_list)]\n", "# a row of y will look like [prob_symbol_1_short, prob_symbol_1_neutral, prob_symbol_1_long, prob_symbol_2_short, ...]\n", "# note that they are not really probabilities because I did not perform a softmax yet\n", "\n", "\n", "# loop through symbols, taking the buckets for one symbol at a time\n", "pos = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(len(symbol_list)):\n", " # ISOLATE the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # SAMPLE probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), 1)\n", " pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1)\n", " # GET RETURNS by multiplying the policy (position taken) by the target return for that day\n", " symbol_returns[i] = tf.multiply(tf.cast(pos[i], float32), y_[:,i])\n", " # isolate the output probability the selected policy (for use in calculating gradient)\n", " # see https://github.com/tensorflow/tensorflow/issues/206 for TF discussion including my solution\n", " sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3])\n", " relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1)\n", " \n", "\n", "# calculate the PERFORMANCE METRICS for the data chosen\n", "daily_returns_by_symbol = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in symbol_returns.values()]) \n", "daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n", "total_return = tf.reduce_prod(daily_returns + 1)\n", "ann_vol = tf.multiply(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = total_return / ann_vol\n", "\n", "# since we only train the sampled classes, we will combine them so that we can feed them into cross entropy\n", "training_target_cols = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "# we want to either push the gradient toward our selection or away from it. We use these ones to find the direction\n", "# of the gradient, which we will then multiply by our fitness function\n", "ones = tf.ones_like(training_target_cols)\n", "\n", "# this isnt actually a gradient, but karpathy sort of calls it one. Since it's a tensor it sort of is a gradient anyway\n", "gradient = tf.nn.sigmoid_cross_entropy_with_logits(labels=training_target_cols, logits=ones) ####should this be a prob???\n", "\n", "# COST\n", "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n", "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n", "#cost = tf.multiply(gradient , daily_returns_by_symbol)\n", "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n", "cost = tf.multiply(gradient , tf.reshape(daily_returns,[-1,1]))\n", "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n", "#cost = tf.multiply(gradient , total_return)\n", "\n", "# minimize the cost (push the weights where we want them to go)\n", "optimizer = tf.train.GradientDescentOptimizer(0.1).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 1000 cost= 23840.125000000 total return= 23839.125000000\n", "Epoch: 2000 cost= 154422.281250000 total return= 154421.281250000\n", "Epoch: 3000 cost= 421916.937500000 total return= 421915.937500000\n", "Epoch: 4000 cost= 504377.406250000 total return= 504376.406250000\n", "Epoch: 5000 cost= 854653.875000000 total return= 854652.875000000\n" ] } ], "source": [ "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "for epoch in range(5000):\n", " sess.run(optimizer, feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " if (epoch+1)%1000== 0:\n", " c,t = sess.run([cost, total_return], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(t), \"total return=\", \"{:.9f}\".format(t-1))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# in sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-4-stochastic_gradient_descent.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) \n", "num_positions = 3\n", "\n", "x = tf.placeholder(tf.float32, [None, len(symbol_list) * 100])\n", "y_ = tf.placeholder(tf.float32, [None, len(symbol_list)])\n", "\n", "W = tf.Variable(tf.random_normal([len(symbol_list) * 100, num_positions * len(symbol_list)]))\n", "b = tf.Variable(tf.random_normal([num_positions * len(symbol_list)]))\n", "\n", "y = tf.matmul(x, W) + b \n", "\n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(len(symbol_list)):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), 1)#sample = tf.argmax(symbol_probs_softmax, 1) #use a real sample\n", " pos[i] = tf.reshape(sample, [-1]) - 1 # choose(-1,0,1)\n", " # get returns by multiplying the policy (position taken) by the target return for that day\n", " symbol_returns[i] = tf.multiply(tf.cast(pos[i], float32), y_[:,i])\n", " # isolate the probability of the selected policy (for use in calculating gradient)\n", " sample_mask = tf.reshape(tf.one_hot(sample, 3), [-1,3])\n", " relevant_target_column[i] = tf.reduce_sum(symbol_probs_softmax * sample_mask,1) # should be relevant to SAMPLE\n", " \n", "# calculate the PERFORMANCE METRICS for the data chosen\n", "daily_returns_by_symbol = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns = tf.reduce_sum(daily_returns_by_symbol,1)/2\n", "total_return = tf.reduce_prod(daily_returns + 1)\n", "ann_vol = tf.multiply(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns)),2))) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = total_return / ann_vol\n", "\n", "# CROSS ENTROPY\n", "training_target_cols = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient = tf.nn.sigmoid_cross_entropy_with_logits(labels=training_target_cols, logits=ones)\n", "\n", "# COST\n", "# how should we do this step? it depends how we want to group our results. Choose your own adventure here by uncommenting a cost fn\n", "# this is the most obvious: we push each weight to what works or not. Try it out...we're gonna be RICH!!!! oh, wait...\n", "#cost = tf.multiply(gradient , daily_returns_by_symbol)\n", "# this takes the overall daily return and pushes the weights so that the overall day wins. Again, it overfits enormously\n", "#cost = tf.multiply(gradient , tf.reshape(daily_returns,[-1,1]))\n", "# this multiplies every gradient by the overall return. If the strategy won for the past ten years, we do more of it and vice versa\n", "cost = tf.multiply(gradient , total_return)\n", "costfn = tf.reduce_mean(cost)\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.005).minimize(cost)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 5000 cost= 1.534477353 total return= 3.222245216\n", "Epoch: 10000 cost= 1.159810066 total return= 2.412446499\n", "Epoch: 15000 cost= 1.416095734 total return= 3.252466679\n", "Epoch: 20000 cost= 1.337784767 total return= 3.069759846\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(20000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,20)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%5000== 0:\n", " c,t = sess.run([costfn, total_return], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\", \"{:.9f}\".format(c), \"total return=\", \"{:.9f}\".format(t-1))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# in sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, gradient], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD8CAYAAABw1c+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4XNWZ+PHvmaJRL1az3G2wMa4U25gaei8JabCBAJuE\nZH/Jhixks8mmkA3JwmZJsmmbhA0lbBIICWQhlIDpEIoxuGDcG7ZkW8UqI2k0/fz+uEV3pBn10Ugz\n7+d59Fhz79Xo6Fp658x7znmP0lojhBAid7gy3QAhhBDjSwK/EELkGAn8QgiRYyTwCyFEjpHAL4QQ\nOUYCvxBC5BgJ/EIIkWMk8AshRI6RwC+EEDnGk+kGJFNVVaXnzJmT6WYIIcSk8fbbb7dorauHcu2E\nDPxz5sxh3bp1mW6GEEJMGkqp94d6raR6hBAix0jgF0KIHCOBXwghcowEfiGEyDES+IUQIsdI4BdC\niBwzaOBXSt2jlGpSSm1OcX6hUup1pVRIKfXlPuf2KaXeVUptUErJ/EwhhJgAhtLjvw+4cIDzrcAX\ngTtTnD9La32c1nrFMNsmhBAZ88rOZva1dGe6GWkxaODXWr+MEdxTnW/SWr8FRMayYUIIkUnX3r2W\nM+98MdPNSIt05/g18IxS6m2l1I1p/l5CCCGGIN0lG07TWjcopWqANUqpbeY7iH7MF4YbAWbNmpXm\nZgkhRO5Ka49fa91g/tsE/BlYNcC1d2mtV2itV1RXD6nOkBBCpIXWOtNNSKu0BX6lVJFSqsT6HDgf\nSDozSAghJpJYPLsD/6CpHqXUA8CZQJVSqh64FfACaK1/qZSaCqwDSoG4UupLwCKgCvizUsr6Pr/X\nWv81HT+EEEKMpXAsnukmpNWggV9rffUg5w8DM5Kc8gPLR9guIYTImEg0u3v8snJXCCH6CMVimW5C\nWkngF0KIPiIx6fELIUROCUezO8cvgV8IIfqIZPngrgR+IYToQ3r8QgiRY7J9OqcEfiGE6CMiPX4h\nhMgt0uMXQogcI4O7QgiRY2RwVwghckxYFnAJIURukR6/EELkGGeOPxtLNEvgF0KIPpyBPxsHeiXw\nCyFEH85UT1R6/EIIkf2c8/izcTGXBH4hhOjD2eOXVI8QQuSAhBy/pHqEECL7JfT4JdUjhBDZz7kD\nVzQugV8IIbJeyNHLD2fhxusS+IUQwiEai7N+f1vvY+nxCyFEdnt2ayPbDndy1cqZgMzqEUKIrPfO\n/nby3C4uWloHJOb7s4UEfiGEcNhwoJ1jp5VSmOcGpMcvhBBZLR7XvNfQwfIZZXjdRniUwC+EEFks\nEInRHY4xo6IAn8cIj6GIBH4hhMhaoUgMgHyvm6I8DwDd4Vgmm5QWEviFEMIUNOfv+zwuCn1Gjj8Q\njmaySWkhgV8IIUzJevyBXOzxK6XuUUo1KaU2pzi/UCn1ulIqpJT6cp9zFyqltiuldimlvjpWjRZC\niHQIOXr8+V4XSkEglJs9/vuACwc43wp8EbjTeVAp5QZ+DlwELAKuVkotGlkzhRAi/YJmj9/ncaOU\notDrzs0cv9b6ZYzgnup8k9b6LSDS59QqYJfWeo/WOgw8CFwxmsYKIUQ62T1+rxEaC32ehBx/LK5Z\ns6WR+CQv1ZzOHP904IDjcb15LCml1I1KqXVKqXXNzc1pbJYQQiTn7PEDFOW5E3L8P3hmO5+5fx3P\nb2vKSPvGyoQZ3NVa36W1XqG1XlFdXZ3p5gghcpDV4883e/wFeR66Q72B/9ev7gWgqTM0/o0bQ+kM\n/A3ATMfjGeYxIYSYkJL3+I1Uj9ba3qCloT2QmQaOkXQG/reA+UqpuUqpPOAq4LE0fj8hhBgV56we\nsHL8xotBT6S353+wPTj+jRtDnsEuUEo9AJwJVCml6oFbAS+A1vqXSqmpwDqgFIgrpb4ELNJa+5VS\nXwCeBtzAPVrr99LzYwghxOj1pnp6e/yHO3oA6HJM62xo6xn/xo2hQQO/1vrqQc4fxkjjJDv3JPDk\nyJomhBDjy1rA5bNz/G47x2/9qxQ0tE/uwD9hBneFECLT7B6/neP32CmebrPHf3R1MY3+IFpP3imd\nEviFEMIUjMRQCrxuBUChz20HfCvVM6OigGhcJ6R+JhsJ/EKInKK15v7X99HWHe53LhSN4/O4UMoI\n/EV5HkLRON99fAtv7jHWsc6oKATg5oc2TtqUz6A5fiGEyCbbDnfyrUff48Xtzdxz/cqEc8FIzB7Y\nBSgv9AK98/cBZk4pAGDNlkYUcNcnV6S/0WNMevxCiJwSM8stHOroPyUzFInbUzkBygvz+l1j9fiB\nhBeJyUQCvxAip4TNrRSTbakYjPbp8Rd4+10zo6LA/ryisP/5yUACvxAipwTMaZnWKlynvj3+iiQ9\n/rqy3sBfluT8ZCCBXwiRU6wSDMl6/KFozC7XAL05fidnL1+loX3jQQK/ECJnvLSjmS8+uB5IHvh7\nIjG7QBskD/wed+/5cJLnmAwk8AshcsZ196wlGDGCdbJUT3sgQllBb/qm2Nc78dGVpHuf7DkmAwn8\nQoicFE2ymUp7IJKYylG90X7t18/lla+cBcD3P7wMSP6uYTKQwC+EyAkdgcRNAsPROA+/Xc/+I70l\nltsCYSqKkg/YVhX7mDnFmMr5sZUzqSnxTdoevyzgEkLkhJ1NnQmPo3HNLX/cyOnzq/jfT51EQ3sP\noWi830yez5w+l5L8/rn+PI9LAr8QQkxkncHktXWqi3387Pmd3PnMDqD/3PyvX7Io6dfleVyEJNUj\nhBATV9+iav/+oaWAUYjt/tfft48nW62bTJ578vb4JfALIXKCNX/f8ncnzWJaWT6hSJy4o8TyUFfj\n+iZxqkcCvxAiJ3Q5Nk23+LxuQtE4PeHec6kGd/uazDl+CfxCiJzQnaR+vs/jIhSNEXQE8GT1eZLJ\n87gm7QIuGdwVQuSE7lDU7qXPMqdl+jwuukMxYnHNJcvqqC72UVXsG9Lz5bldKQeMJzoJ/EKInNAV\nilLs8/DKN8/CbS7D9XncdPQY8/uPm1HOZ86YN+Tnk1SPEEJMcIFwjCKfmyKfxy697PO67MDvrNEz\nFHke95gF/j3NXYSi/ccg0kUCvxAiJ3SFohTlJSY5fJ7ewO8b5qYqXreyN2cfjWgsztk/eIlr7147\n6ucaKgn8Qoic0B2KUuTrG/h7Uz0Fwwz8vjEa3A1EjJ7+2r2txJPUD0oHCfxCiJyQPPD3hsDhbqM4\nVgu4Ao5pplsP+0f9fEMhgV8IkRO6wzGKfYnB3ed1Bv7h5vjHJvB3OxaWNbT1jPr5hkICvxAiJ3Qn\nzfH3vhAMu8c/Rqke5+KxRn//DeDTQQK/ECIndAb7p3ryHKme4eb489xuYnFNbJR5eefCssMS+IUQ\nYmy0B8J0haJMLy9IOJ6Y4x9+qgd6N2O5+Q8buOOpbcNuW8DR4z/UMT6BXxZwCSGy3vvmZiuzKwsT\njjsDvzPtMxRW4A9F4+R73TyyvgGA8xbVcuLsiiE/j5XjL/F5JNUjhBBjZd+RbgDmVBUlHB9Njt96\nhxCMJC68euSd+mE9j9Xjn1ddxOFx6vEPGviVUvcopZqUUptTnFdKqZ8opXYppTYppU5wnIsppTaY\nH4+NZcOFEGKorB6/VaPHMppZPeXmpuztgUhCnv/p9xqHNR8/YOb4F00rHfa7jpEaSqrnPuBnwP0p\nzl8EzDc/TgJ+Yf4L0KO1Pm6UbRRCiFHZ3xqgttTXr1c/mnn8Vt3+1u4wPWavv7bUR6M/RGcwStkQ\n6/p3mz3+b1++eNwC/6AvcVrrl4HWAS65ArhfG94AypVSdWPVQCGEGK2uYJTSJPvmOgOt1z28Hr9V\nt789ELZn5tSU5AMQiAytamcoGmP9/nbcLkXeML//aIzFd5oOHHA8rjePAeQrpdYppd5QSn1woCdR\nSt1oXruuubl5DJolhBCGcCyeMHXT4ktybKisTdnbAhE78FeXGCWdnTN1BnL7k9t4dmsjsbhGKTXi\ntgxXul9iZmutVwB/B/yXUuqoVBdqre/SWq/QWq+orq5Oc7OEELkkHE0e+D1mL/uY2pJhP2e5mcpp\nC4TtQF9VbLwYBJLs9mV5dWcLhzuCBMJR1r0/UDIlfcZiOmcDMNPxeIZ5DK219e8epdSLwPHA7jH4\nnkIIMWThaDxp7371vCl88Zz5fOq0ucN+znyvmwKvm7bu3lSPtYlL3/19LU3+INfc/SZg1Po5YXb5\nsL/vWBiLHv9jwCfN2T2rgQ6t9SGlVIVSygeglKoCTgW2jMH3E0KIYQnF4uQlGTgtyfdy83kLKBvi\ndot9TSnKM1I94T6pnkj/Hn84Gud2xwKvcCzOvpbAiL7vaA3a41dKPQCcCVQppeqBWwEvgNb6l8CT\nwMXALiAA3GB+6bHAr5RScYwXmDu01hL4hRDjLhyNp2XwtLzQaw7uGoHeDvxJUj1/Xl/Pn9c3cPys\ncg53BDnUEeSwP8jCqSXccv4xY962gQwa+LXWVw9yXgOfT3L8NWDpyJsmhBBjIxyNjWogN5WKwjyO\ndIft1M5AqZ4tB/143YqHP3cKr+85wid+baR8rlk9m/MW1Y552wYiK3eFEFkvlGJwd7RqS/Np9Afp\n6tPj74nE+P2b+7n10d51r9sbO1k6vQyXS1Fb2ruh+4IRDCyPlgR+IUTWS1eqZ3q5EfitXbx6e/wx\n/vXP7/Kb199Ha43Wmu2HOzlmqhHka0rz7eewjo0nKdImhMh6qebxj9b0igLiGnY3d5HncVFiln32\nmy8EAP5glGgsTlsgwvwaI8iXOMpDj3RgeTQk8Ashsl6q6ZyjNb3cqP2zYX87pfkeXC5FYZ6bDQfa\n7WsOdfTgMhdnWamg8VyslYwEfiFE1ku1gGu0plcY9f0b2nu44rhpgDG//7XdR+xrDrUHKcwzppJO\nMcs8ADx3ywco9mUmBEuOXwiR1eJxTTSu0xL4p5X35uovW2YE/tbuMACf+4BRqKChvYe2gHGs3FG4\n7ajqYmoduf7xJD1+IURWs/bFTUfg93nc/P4zJ3GkK8zZC2sSzl21cia/fmUPhzp6cLuM1I6zx59J\nEviFEFktFDUDf5qqX55yVFXS47MrC6ktzTdTPUaotQq7ZZoEfiFEVgtFjTn26RjcTeb2K5fa1Tbr\nyvJpaO+hsjiPAq972DX/00UCvxAiq4Wj6Uv1JHP1qln253XlBWw80M6MikJ745aJQAZ3hRBZzQr8\n47W7ldO08nwOdwRp7Q5RPkHSPCCBXwiR5dI5uDuYaWUFhGNxth/unDADuyCBXwiR5cJpHtwdSF2Z\nMV3zYEeQ42dlpvZ+MhL4hRBZbbxz/E6LppXan19x3PQBrhxfMrgrRuymB9dz/qKpXLKsLtNNESKl\nTAb+GRWFPPr5U9l22M/RNcXj/v1TyeoefzQWZ/G3/sp/v7gr002ZtF7Z2UxzZyihvnhbd5gfrtnB\noxsO8vnfv5PB1gkxuPVm3ZxMBH6A5TPL+fjKWYNfOI6ytscfjMT4y8aDdIdjfP+v26kq9vGxFTMH\n/0JhC0VjXHv3WvvxvjsuAeD7T2/ngbX7M9UsIYasMxjhP5/eDmQmxz9RZe2d+PFzO/nnP22yH3/l\nT5sIJtkHU6TW3Wf7uHaz3gjo8W+MECPQ4SiP7JXAb8vaO9HYEbQ/P2NBNQDvNnRkqjmTUncocfu4\n7Yc7AfpVFDR23xRi4nF2XmZNKcxgSyaWrA38kbgRjI6uKeaHH1sOwEd/+Tp3vbw7k82aVLr77Bu6\nvdEI/J3BxOP+YP/9RYWYCLrMzsu9N6ykIG9ilEuYCLI28B/u6OHE2RU8+cXTqSr22XNo//3Jbbx/\npDvDrZscrB7/bVcspjTfw87GLgC7xKzlsOPdlRATifU7nKm69xNV1gb+Qx1BZlYU2CP5D3/uFF74\n8pkAvLyjmbbu8ABfLaD3bfKiaaVMKcrDHzType2BCMtnlnPfDSsBOOyXwC8mJivwF+VJ4HfKysAf\nj2ua/CGmlhXYx1wuxZzKQmZNKeSbj77H8betYW+L9PwHYv3RFOZ5KMzz2C8E7YEItSU+ZlQUmo/l\nRVRMTF3S408qKwN/ayBMOBZnaqkv4bhSipPnVdqP90nKZ0DdYSPQF/s8FPnc9lz+9p4wFYV59m5C\n8u5JTDThaJzbn9rKwXbj3WiRT/L7Tln5MtjcGQKgJsm2ZifOqeAP6w4kXCeS6+3xuynM89DeE0Fr\nTVsgQnmhl/ICM/AHIgM9jRDj7rmtjfzqpT324yLp8SfIzh6/2QOtTFIN78TZFfbnMig5MOttcpHV\n4w9F6YnECEfjlBV68bhdlOR7JNUjJhxrq0Pr8/HahGWyyMq70dJl9OQri/sH/nlVRdx62SIADnX0\njGu7JptAOGr/0RTmeQiEYxxoNe7Z9HJj/KSiMI8H3jrAKzubM9lUIRJYpZgBivLcKKUGuDr3ZF3g\nv+9ve7npwQ0AVBb5+p1XSnHDqXNZMr2UQ9LjH1B3KGb/0RTluWlo7+G3b7wPwFHVRsGpikIv4Wic\na+9eS5PM7hEThL+nd22JDOz2l3WB/9t/2WJ/XlaQequzqaUF1LdJj38g3aGonRstNP/9XzPwz60q\nAiDuWLT75LuHxreBQqTQGewdd5L8fn9DCvxKqXuUUk1Kqc0pziul1E+UUruUUpuUUic4zl2nlNpp\nflw3Vg1Ppu/CLJcr9du71fOmsKupiw1m5T7RX3e4N/AX9Vn1aB13vmuS6bFiovAHpUbPQIZ6R+4D\nLhzg/EXAfPPjRuAXAEqpKcCtwEnAKuBWpVRFqicZrRe3Dz3PfNWqWZQXevmXP23qV5NGGLrMVA8Y\nc/ktVn4fjAqe1rE9EvjFBOFM9cyulBo9fQ0p8GutXwZaB7jkCuB+bXgDKFdK1QEXAGu01q1a6zZg\nDQO/gIzKyzuamTmlYPALMfJ+t39oKdsbO3l995F0NSmB1treFGIyaO0O2fuEFpovAFXFPp686XT7\nmt/8/Sq+cNbRnDi7QtZFiAmjMxhh1pRC3vr6ufznR5dnujkTzli9B5oOHHA8rjePpTo+5sLROK/v\nOcKZC2pQykjlDGbJ9DKgf+2ZdPnBMztY8I2n2DhJ0ktN/hA1JcZaCCvHP72iIGHs5IRZFXz5gmOY\nU1VEfVuPPZVWiEzyB6OUFnioLvHJ4G4SEyb5pZS6USm1Tim1rrl5+FMD3S7Fvdev5NqTZ7Pjuxfx\nu0+vHvRrysyVp86a3engD0aY97Un+NkLxk5gP3p2R1q/31iIxTVHusNUlxgzowq9Ro+/OMUKyDOP\nqcbrcnHDvWulTLPIOH9PhBJf6skduW6sAn8D4NzeaoZ5LNXxfrTWd2mtV2itV1RXVw+7AW6X4qR5\nlSyoLcHrdiUs4EilxOfB7VK0p3nl6R/X1SfMfnl995EJvylMWyBMLK7twB8x50UXpih2dcKsCr77\noSVsrO9gzZbGcWunEMl0mj1+kdxYBf7HgE+as3tWAx1a60PA08D5SqkKc1D3fPPYhKCUoqzAm/ZU\nz5othxMeh6Jx3to30JBJ5lnlLKzAn2/2+K35+8lcefx0akt9PPxOffobKMQA/MEIJfnS409lqNM5\nHwBeB45RStUrpT6llPqcUupz5iVPAnuAXcD/AP8PQGvdCtwGvGV+fMc8NmGUF3ppT3Oqp8lRE8gq\nEjfR8/xWm2vMwH/mMdX86OPLufm8BSm/xuN2cf6iqby8o2XCv6MR2a0nErMnJIj+hvReSGt99SDn\nNfD5FOfuAe4ZftPGR3mBl440p3qcxeDqyvOZU1k44beB7NvjV0rxoeNnDPp1H1hQzf++8T6bGzpY\nMWfwAXYh0qEnHKPAK4E/lQkzuJsp5YV5tPekL9UTjMQStios9nlYMr2MzQ3+tH3PsbC7uQuPS1Gb\npMLpQKzrZXaPyJR4XBOKxvFJ4E9JAn+Bl80Nfp7bmp4BSatgnKXY52HRtFIa2ntoD4Qn7AyYN/cc\nYdmMMju3P1QVRUZeNd0D5kKkEjLXyuR7cz68pZTzd6bTXLX7qd+sS8vzWykT65ewON/DrCnGSsLj\nvrOG+17bl5bvOxqBcJRN9R2c5Ni0ZqgqCo0FX61SqllkiDW+JKme1HI+8H/0RCNvXZI/NlO/Xtvd\nwl82HrQft3QZAdBaCFXs89hbFgJ2tcuJ5J3324nGNavmDj9HX5jnJs/tGrdFcWLs/G1XCw+u3c8J\nt63h5oc2ZLo5I9ZjBv7hvlvNJTkf+M9fPJWbz1tAZzBKMBIjFtcJ6ZdYXHPWnS/yyBCnKF53z1r+\n8YH1bDnoR2vdb5C0KM/DjIreshIT6ZfzwbX72dXUyZt7j+BSsGL28MsqKaWoKPLS3i2pnsnmE79+\nk68+8i6t3WHWvDd512JIj39wssKB3iJO+1sDXPTjV7j+lDl881Jjs5amziB7W7q5+aGNXHnC4LNa\n8twuIrEYj25s4NKf7rEXblm7gXncKmFnsFh8YuT443HNVx95F4BVc6ewZHrZiOdBVxTmSapnkon3\n+T3sDEUJhKMpF+xNZMGI5PgHI3cGmGnm3F/c3kQsrrn71b32H0LDMGr2h6IxAmZvo7kzZAf9Aq/b\n7tlrTcJuQA1tPeMywLu3pXvA79Md7p15tK+lm4VTS0b8vcoLvbIdY4Z0h6IjqjabbC3LvpbAWDRp\n3FmpHpnVk5oEfmBOpbGpyJ/X9+bm15ora52btQwWoI0gbnx+oLX3j6a80GsvJrFKSfzymhM49ehK\nOkPRtG9Wvqm+nbPufJH7X089nuCcctrUGaKyuP/uZUM1pShPNmDPkBO/u4ZV33t22F/nXGtimaz7\nK4Qk1TMoCfwYgaq21MfWQ8bc+jy3y95NqqG9N/APtlXjfjPYl+Z72Hqo0z5eVuDlXy5cyKdPm8sF\ni6cCcOGSOj57xlEAPPjW/rTOe993xGjX2r2pF0139eklJtuofqgqCvNo7gxN2Kmq2UprTTASpzs8\n/FXTzsC/cGoJLgWbD07sRYapyODu4CTwmxbVlQJw+vwqzjm2hqc2HyYW19S39fbcN9UnL7PQGYyw\ns7HT3s1r5ZwpCYG0vNBLRVEe37h0EXme3lt+ojl4+v2/bucrf9o45j+TxW2mlgYaT3BuVQfJN6of\nquUzy+noibDlkB9/MJKwG5JIn/2tI0/NNHf1dmpqS/NZPa+SB9buT3vl2nSwcvzS409NAr/J5zF+\nSS5eWsdFS+to7gyxbl8r2w93sqiuFJ/HxZspesxf+P16zvvRy/zmtX2csaCaY/rkx1MNkjr3Aj3Y\nnr6Nyq1dsqIDBv7EHv+UJBvVD9XZC409EdZsaeTG+9fxhd+vH/FzWfa1dHPzHzbQM4LebK7YVD/y\nHrqzx+91u7h4aR3tgQhX/OzVsWjauAraPX4Jb6nInTH94zlHc/bCGi5fPo1zFtbg87j42Qu7eGd/\nO5cur+OEWRW8vvsITZ3BfimMdeZ4QFsgwkdOnEFVn/z4QAWi771hJcCQykiPlN/stcUHSL30Dfyj\nSfVUFftYPK2Uv2w8yBt7WnllZzPffXyL/QLU1wvbmvjyHwd+x3PHU9t4ZH0DG1O86xJw2ExFjuRX\nqe8kho+tmEldWX7CGNdkIamewUngNy2eVsY916+kyOehyOfh/MVTeWVnCwAfOWEGly2fxrbDnaz6\n3nNc9rNXE0o81Jb11rNZNWdKvzTJQDM2zzqmhqtWzuRQR/r+wKygPlCPv1+OfxSpHoCl08vY3WwM\nDmoNv351Ly9sS77Bzg33vcWf3q5PuS3lewc7+Ot7RmnrfZN0wHE8WC+swxlZ+b/1Dfzypd0802cP\nhTyPi2tWzyYa15Ou0mpQAv+gJPCn8ImTZgHGyt6a0nyuWjmTD58wg7OOqWZzg59fvrTbvta5FeHU\nsnwWTyujNN9j71c72J9iXVkBLV3hlD3i0bJy7F0D5Nr75vinjKLHD8YLKSS+k2n0D5zOSrXa95cv\n7aEk30OexzVpZ5qMB6tGjdb9x3O6Q9F+c/UBvvSHDdzx1DYOdQS5bPk086hxXfk47VA31iTVMzi5\nMymsnlfJ7z9zEt/90BIAXC7FDz62nHtvWMXFS6cmTFe0UikXLTFm7BxdU8ymb1/A7VcuBWCwyS11\n5cY7hsODzBoaKX+P0ZsfqHBaVzCKUnDusTVA75jHSC019zO+3A4msLOpM9XlQP+Cdpa397VyzsIa\n6sry+dXLe/ifl/fQ0N7Dp3/zFpsneHnr8RRyvGNydiK6QlEW3/o0P35u54Bff87CmoTH5QXGi/9k\nK78RjMRxKWN2nkhO7swATjmqKmkALC/Mo82cftkZjNDcGeKa1bP4xTUnJly3el4l86qL+KcBNi8B\nmFFulHDY2dg1Ri1P1BkyAv5Af8D+YJTiPA+/uOZENn37/FF/z2UzyvjxVcfxLXMFNKT++Tzmu4Ij\nXf3b19ET4WBHkGOmltqbZn/vya2cesfzPLu1id9MwCJ3mRJypGScg+At5sDtH946MODXW7WZPnKi\nsVtqhdnjb5tk5TeCkRj5XnfCQkmRSAL/CEwpzKMtEMYfjLD028/gD0btqpROZQVenr/lTJaYvd9U\nTpxTQU2Jj3tf25uW9lo9/o6eSNK3+2D0CkvyPXjdLkrHYMs6pRRXHDediqI81n/zPK5ZPYuN9e1J\nFwpZU1yT9fh3NBrvEo6ZWsydH13OT68+PuH82++3jbqt2cLZ4++JxOgJx/jiA+vt9SmH/UG+98QW\noLdEQ5G5sPAXnziBaeUF7LvjEi4037mWm7/THX32q3hw7X62HZ64+0n0mIFfpCaBfwQqivKIa/j5\n87t6jyUJ/EPl87i5atUs/rbrSL9c+1iwcvxx3VuGuq/OYITiMapQ2ldFUR5/f+pcwtE49/yt/4ub\nFfiT9fi3H7YCfynH1pVy2fJpfO4DxsK3fzp3AXtaumXA1+QM/MFIjJd2NPHYxoPc9GBvpc3/eWUv\ny779NKd//wXCUWOx183nLeCipXX9ns/K8TvTml2hKF995F0+8T9vpvEnGZ2WrtCox6iynQT+EbDe\nAj+0rvets3Nh1kgcP6scgPcOjn1Pyu8YnEv1wmL0+NO3OfW86mJOn1/NU+8eSrmit6W7f49/yyE/\npfkepjn5ObpoAAAeXElEQVRmTn3lgmN4798u4OMrZ+J2KR4cJIWRK5x5/Z5wnGKf8f8ZjiXOlvIH\nozS099iLE63f576szsxBx+p1693DRE6jHGjtYaajAq7oTwL/CFQUWYNeEWpLjTn75Sn+eIZqiTkL\nZqwHK2NxzaGOoF0Kuu98fUtnMDpmexKkcu6iWvYdCfCdx7fYx7TWdpuS9fjfO+hn0bTShEDjcimK\nfB6mluVz9sIaHn6nPmUKK5eEIompnki8//TYvztpFh9fYeTwd5hjLmUp3q0WmGmgnz6/ixe2NwHw\nrrlI7KjqorFr+BjSWnOgNWAXXhTJSeAfgSmOP5TvfnApD//DKVyS5K3ycFSX+Jhams+m+g6e2HSI\nh8aoF3ugNUAoGueEWUZ5iFSBvysYtQdP0+ViM3d879/22RUke8w9EICEip7PbW3ktse3sO2Q335R\nTOay5dNo7gzx9n7J9SfL8fd17NQSLj/OmGm1y5xlVV6QutNiVWn93Rvv09QZ5I9vG/tSpLuTMFId\nPRE6Q1F7lzuRnAT+EXDm81fNncKJsyvG5K3vijkVvLa7hc///h2+8vCmfud3NXUSiaVe5JSsFLI1\nOGrVBfKnmJPtD6Y31QNQWezjzo8uB3oHcrscL0TOF6VP/WYdd7+6l1A0zuLppSmf82xzlfWf1zck\nHL/71b3sbk7PLKmJKhSN2WtKgikCf1lhnr0p0M4m4/4MND71+D+exmdOn8uzW5u4/Kd/s8dTAhO0\ndMaBViMt5dzlTvQngX8Easz0zmfPmJeweGu0Tju6yt6qEXpnXjyx6RALv/kU5/7wZb73xFYA9jR3\n2bnySCzOJT95lRvue6vfc1p/3HaPP5Qqxx8Zl15clbki2Ar8/hSB32nxAD3+Yp+Hy5dP48/vNNi5\n6LbuMLc9vmVCD0CmQygat/P1wUjMLl3gdFR1ETVm4LdTPQP8DnvcLrui7GF/kB98bDmnz69K+tzp\n9NjGg9z+5NZ+K8z7es+sKDpvgqaiJgoJ/COQ73Wz47sX8bWLjx3T5z19QbU9px16g+NfNh60Kw7+\n9o33+eEz2zn7By/ZC3LeN8sur9/fv47NvpZuakp89iKxZME1EosTjMQpSXOqB3q3oLSmdR4xf8ay\nAm/CH7W1f4HP42Je1cB/xJ85Yx4AH7/rdbTW7Dti9EoP+426SlsP+XOiRHQoErfz9T3h3h5/Sb6H\n606ezXO3fIDF08ooK/DidSt7oNb6P0nl+Fm9W3Cev6iWwjz3uBfL++ID6/nVy3t4ffeRAa97dMNB\n5lYVMb+meJxaNjlJ4B+h0c7iSWZ6eQFvff1cfv3JFQA8sr6BH67ZwWu7W/jYihm8+i9nEdean5jT\nSH/2/C7C0Tg7zXSONSfbqbkrRG1pvt2bTxb4rXRLuqZzOjkDv9aaf/vLFkryPayaOyVhxpGVd15Y\nV4pnkBWYC2pL+Polx3KgtYf9rQH7hRDg+09v56Ifv5Kwqf2B1gArv/esnQbLFsFozL5vPY4e//pv\nnse/XbGEo6qNYKiUotosJFhW4LUHcVNxuxQ/+vhy/vsTJ+Bxuyjwusc11eNMb7YHwjy7pZE5X33C\n7jRYOoMR3th7hEuX1U3oWUcTgQT+CaaiKM+ekXDHU9v4yXM78QejnHlMDTMqCrloaR3lhV7++YJj\niJr7BVjpnGQ5+ubOENUlPnweNz6PK2mO33oxSHeOH4yBcaWguStMoz/ElkN+bjpnPkfXFNMVito9\nc6v3f/6i2iE9rzUd9vltTdz5zHb7+C9eNGoq3fXKHvu5H9t4kObOEPe/vm+Mfqqh+/P6ev66+XBa\nnjsUiduzywLhGIFwjDy3K+kL51RzemydY5rsQD50/AwuNicwFOR57MC/Zksj87/+ZFr3XHD+znb0\nRPhf80V8XZ/FezubutAals0oT1tbsoUE/gloumMOclWxj3+9eCEXmnnWH35sOS9++UxOMpfXv38k\nwGu7jSqiyf74WrpCdu+uJN+bkFO3WHn/dM/qASNnXFlk7NBlbWxz/KwKin0eIjFNKBonEovjD0b5\n0rnz+fxZRw/peRfUluDzuPi3v2zpV0r4iuOmcaC1h0a/0UO00kypxhTS6Vcv7eHXr+xJy3OHojG7\nmJ0/GCEYiaXszR9tpkJqS4cW+J2MVI9x7/7r2R1EYpodh9P37slZJK49EGGq2eZD7Yn/z9Y73wW1\nkuYZzMSck5Xjin0e/vmCY8j3urn+lDkJFS6NnrubWZXGu4JfvLSbtXtbqSvL51BHkK5Q77TMeFzT\n0hW20yvFPjcPrN1Pc2eQ/7rqePs6KwCWjtMUvapiHw3tPWyq78DtUiyeVsoWc1DOGYyHs/rS63Yx\nv7aYzQ1G3vr6U+bw3sEOWrrCfPD46Ty64SDfe3Ir/3rxQraYi+TezUCBt85gNG0vOKFonHyPm6qi\nPI50hXErlXIXqgW1xjTNkaQsC/Pc9ERiaK3tsZjBtiUdjYTA3xO2X8ysst+W7Ye7yPe6mCkzegYl\ngX+CGqyna/Xi1+5tZUFtMZ894yhu+eNGGv1Bis1cblsgTCyu7cBvzRh6dmsTb+45wjnH1hKNxe1N\nUMYj1QNw6tFV3P3qXl7e0czKORXke932+MInfv0Gt1+5DBh+GYyZFYVsbvAzv6aYb1++GK2NdxBW\n1dO/bDxIgyM1trel2y7oNV78PREC5tqFsd58JxSN4/O6qCz2caQrRHF+6vz9XHPAfCQlQgry3MS1\n+UJj3rv3j6SvbIbzXWp7IGIXTuxbL2hnUyfza0pwpXFTo2whqZ5JSillv6X9xiWL7Fxto6PnZQU4\nK/Df8eGlfPuyRXhcyi5utqu5y06NjMfgLsC1q2fjcSlmVBTwX1cZRdes8gI7Grv40h+MrRqHG/it\n1clW/lopRb7XzbTy3tTZO/vb6QxGWTajDK1Ht0/tcMXims5QlFhcJy1WNxrRWJxYXOPzuKkszuNI\nd5iecCxlj9/aHvSsY2qSnh9IofmcPeGYHZT3HUnffbR6/CX5Hjp6evdwXvd+W0Kdph2NnfY7GTGw\nIf2lK6UuBH4MuIFfa63v6HN+NnAPUA20AtdorevNczHgXfPS/Vrry8eo7Tnv7uuMbRtnTim0e1z1\nZt4zFtdcddcbQG/gv3SZsWLzkfUNPLu1kSlFeXY6pbrEx7Ty4ed7R2JOVRGv/svZVBbn4TUHHp1r\nCKxFOEfVDG8utrVox9tnMDNZOuO0o6vYVN/Bu/Ud7Gzs4pJlo1t5PRTOxWoHO3rsF6ixYK3a9Xlc\nTCnKY2djFyX5npQ9/hkVhaz9+jlUjWBvZes5A5EYzebmOuns8VuBf9aUQtoDEQrz4syrLmL/kQB/\nerueL19wDB2BCI3+kOT3h2jQHr9Syg38HLgIWARcrZRa1OeyO4H7tdbLgO8AtzvO9WitjzM/JOiP\noZlTCu0ZQHVlBSjVu3eqtYq3usTHcTMTZzlctKSOHY1dfPeJrdzx1DYAnrvlA6PefGU4ppblJwRo\na7yh2OfhqpUzufu6FdSVDa/QljVQmWyLyatXzbIHBQFOm18FwC1/3Mjnf/+OPac9nZyD74faxzYn\n7gz8VcU+WrpCBAbo8QPUlOSPKC1SkGf8X91w71oOmYG/0R/iFy/u5oqf/20ErR+YNatndmUh7T1h\n/MEo86qKmVtVxDZzUHlHkzWwKz3+oRhKqmcVsEtrvUdrHQYeBK7oc80i4Hnz8xeSnBdpludxUVuS\nT4O1etUM/N+8dFG/HvBnz5jHP51rbA7T1GmUsB2LGvyjYQX+i5dO5Y4PL+OcY4c2jdOpusR49zK9\nvP8Lxu1XLmXNzWfYG5EvrktcDfzWvtZhf7/hcg5SjvUey1ZlTp/XTWVRHqFonPX72wedoz8SVqpn\nR6MxfdLtUrR0hXhhWxPb01Cnv6Mngs/joqYkn/ZABH9PhNICD0fXFLO7uYsXtjfxf2bJjvnS4x+S\noQT+6YCzYli9ecxpI3Cl+fmHgBKlVKX5OF8ptU4p9YZS6oOjaq0Y0PSKArvH32rumjQlSZ7c5VLc\ndO58bvugsa1k3/1ZM2FOVREPfGY13/3g0hE/xwmzKvjxVcfxjUuSr6guyfeyeFoZJfkeygq9XL1q\nFivnGKtS39ybOvDf/NAGHly7f8TtsiT0+Md4Foy1kjbf66LIMS13ZxoWqcUdq6BPmjuFD58wnUA4\nxsb6doKR+Jj/PrV2hykr8FJe6KUzGKUtEKY038vRNcXsbenmhnvf4ndv7qfA62baMN8l5qqxGs37\nMvAzpdT1wMtAA2At7ZuttW5QSs0DnldKvau13t33CZRSNwI3AsyaNWuMmpVbppcX8NjGg7ywrcl+\n619RlLonf81Js/D3RJhdOTGmv518VOXgFw3A2vVrIDecOscu3mbtiXzTg+t5dMNBXtnxNI9+4TTm\nVhURj2s++9u3ueK4aTzyTgOPvNPAVatG93tpTeNUaux7/H57Sq7x4ja1NJ/D/mBaFjOdsaCam86Z\nz2fOmEexz8ND6w7w0Lp6+3cuEB67gn/1bQEe33SQsxfW2IP9gXCM0gJvv9LQc6uKZEbPEA0l8DcA\nMx2PZ5jHbFrrg5g9fqVUMfBhrXW7ea7B/HePUupF4HigX+DXWt8F3AWwYsWKzHdBJ6FVc6fw2MaD\n3PO3vVy0xBisHGguvFJqyAukssWVJ8zod2zlnCk8uuEg/mCUxzYc5KZz59PQ3sOaLY2s2dJoX9fk\nD1IzggVPFr9jkPLgGOf4recuLfCyoLaEN/71HI50hRJ6/2Ml3+tO2Efamlps2dnUxeaGDj558pxR\nf69ntzQSjMT5ygUL2VjfW4uqNN/D6fOr8Xlc9guOtTeGGNxQUj1vAfOVUnOVUnnAVcBjzguUUlVK\nKeu5voYxwwelVIVSymddA5wKbEGkxTWrZ3Ph4qkc6gjaOf7RbAmZK6xV0NC7w9S+JLNUnna8CIyE\n1StfUFsy5j1+a/zAWWmzstg3LmsUqvoE/qvueoNvPfpe0p/xlZ3NnH3niwnjHQPZ3thJRaGX2ZWF\nCT9bRaExI+2db55np/Zi0l0cskEDv9Y6CnwBeBrYCjyktX5PKfUdpZQ1S+dMYLtSagdQC3zPPH4s\nsE4ptRFj0PcOrbUE/jSaVl7AwfYejnSFKcxzy6bTQ3B0TTGnHV2F161Y976R63fODz9hVjnH1pWO\nenOcI10h3C5j/UVTZyjl3gojYY0fjGWZ8KGqKknsXITNHvie5v4vnl/4/Xr2tHTzzhA3ztl6qJNj\nppaglLI3f4feGVxFPg9nLzTWIgy1rpMY4gIurfWTWusFWuujtNbfM499S2v9mPn5n7TW881rPq21\nDpnHX9NaL9VaLzf/vTt9P4oAmFaeTyAcY9+RbuntD5FSit9++iT+5cKFtHSFueWhjXzz0ffs86vm\nVnLpsjrebegYVTGyHY2dzKsqYkZFIVobM6rGitWDzsTsrClFRuG9vnPo+26EEwhH7XbecO9bvLkn\ndYnlps4g8bhmR2MnC6caG/E4dwqrcaR15lUXs+4b5/KJk2RscKhk5W6WsaYybjzQTmWxBP7hsAqX\nPfxOvX1s6fQybjh1jr2V33Dm38fjmq/8aaPdu91y0M+xdaX2Kuu+RcZGo6MnQp7bRb53/P+kfR43\nP7v6BG525P0BdjclBn6rSJ7ldnMNSV/7WrpZ/e/P8djGgwTCMXsQ17mvdU2fPQSqin1SinkYJPBn\nGauy55HusL1fqhiaox2bd9xz/Qoe/oeT+cs/nkZtab5d9uHgMHLzbYEwD62r58r/fo32QJiDHUGO\nrSt1PNfYDfD6e6KUFngzFvwuWVaXcP8Afvfmfk68bU2/tSVWMUBnFVqn9w76iWtYa66tmGpO0XTO\nFMpESiubSODPMvOqe//4ls+UuuTD4ZwDfvbCWk6c3Tvoa72T+tPb9UMubNYW6L3uNXPnqGUzytLS\n47cWNWVSYV7v9z9/US3RuOZId9heXGWtJr/3hpUsnFqSUMLCyUoRWaWerRXXzqJ20rsfHQn8WabY\n57FnWSyXDSmGxeVSfPq0ufb8fier3tETmw5x59Pb+51Pxgp0ALc/tZWq4jxOmjuFknwvxT7PmC7i\n8gcjGe8FFzkC/7Unz7Y/f26rMRuqzVxUWFnko7rElzCz5+3323hpRzN/3XyYXWaKyNohrbZMpmmO\nNSnLnIUe+MxJ/O7N/RxbV5rppkw637i0bxkqg7O32dAepCMQoaxw4EDr7PEfaO3hhlPn2Lth1ZXl\n25vDj4WOnkjGB/MLfb0zyE49qoobTp3D+v3tdgVU5xTj8sI8uyrsE5sOcdOD6+0aS1ZRPX8wisel\nEgrJnTyvckyL2+Uq6fFnofm1JXz78sVjXu891515TDUAz25tZPl3nhl0A/e2biPQWZuVfOj43lXF\ndeUFwxovGIy/J/M9fmdNKJdLcetlizn5qEr8PcaWmu2BCC5lVGItL/DSHghzqKOHLz64nuUzy5lm\nBnRrOigYg7jO1bgP3LiaH338uPH7obKUBH4hhui+G1Zxlhn8AbsyZCpWD/fa1bNZNXcKS6f3FoZb\nMq2UrYc6h7yQaTAdEyDwJ1OS7yEcixOKxmkNhCkvzMPlUpQVeOnoifDGniPE4prbrljCC/98Jn1T\n96NZKS1Sk8AvxDBUOEpgWLnrVNoCxhTLr160kIc+e3LCgOTZC2uIxTWv7GwedZu01viD0YwP7lqK\nHBVBrXUF/p4I7YGwPSWzvNBLXMNL25sp9nk4ZmoJPo+bOjPQW9NSJ0odqWwjgV+IYXDORNnT0n9l\n6h5zRoo/GOHxTQepKEo+xfL4WRWU5Hvs2T6j0R02tnKcCD3+F798Ji9/5Sz7canZJn8wSlt37ziE\n1dZntjRy3MxyOy1p7S9h1dU/qlrKLKeDBH4hhsHK09eW+uy9fC0Pv13P2T94idd2t/DjZ3dS39bT\nb9GSxe1SLJ1exuYx2PA9k6t2+5pTVUSlo3aPtbOaPxihpStEpfmOqdxRadMquQAwr7qI8kIvLvPF\nsu/aADE2JPALMQwXLa1j7+0Xs2L2FA77ewN/c2eIB8ya/buauthkVpK8fPm0lM+1ZHoZ2w51Jgxm\njoQ/SYG2icJ6MeroidDQ3mMv2nIuLrzUse3lP527gN9+6iRauowXzHnVw9t+UwyNBH4hhkkpRW1p\nPoc7gkRjcX7wzHZO+4/nWWduYL+vJcCm+g6uP2UOP74q9QyUJdPLCMfi7Gwa3WYpySpzThTWKt36\n1gCBcMxeCDdzSiHP/NMZ3Hv9yoQB3JrSfJZML+MTJxnrAOZUSuBPh4kxGiTEJFNXZhTDe35bEz99\nflfCuaffO0woGmfFnIoBV5haQbCpM8TiUbTFWYt/orHatOWQ8eI2o6J3sHZBbUnKPXL/4cyjuPGM\neTIlOU0k8AsxArXmnPMn3j1kH1s8rZSeSMwuRzzYxt9W/rs7lLx0wVBN7B6/0aZHzMJ3M1LU50lG\ngn76SKpHiBGYY04zfHTDQfvYnR9dzmXLenP6g01FtHbHGkngdy4em0iDu31Z0zKtXbKsdzkisyTw\nCzECS6eXcfI8Y4/gW85bwH98eCkLp5awel7vvsE+z8Cb4BSbtW06UxQrS6WjJ8Lcrz1pbwzjD0ZR\nqvcdxETiTHV98uTZCaWVReZMvN8UISYBpRS/vPZEdjV1ceLsCvv48bOGXhivyKxt0x2KDet7W8XL\nbnt8Cx9bOZPDHT1UFuVN2I3G3/zXcygr8MpucBOIBH4hRqiswJsQ9MHYiPz7H1nG7CmDrzj1mBun\ndIeH1+O3Fol1hqLE45pN9R0snlY2yFdlTq2UXZhwJPALMcY+tmLmkK8t9nmGnerZ7djL9oXtTexo\n7JT9ZsWwSOAXIoOKfZ5hD+7uaupiXlURHT0RPn3/OrSWTXfE8MjgrhAZVDTMwK+15v0j3SyoLeHG\nM+ZhTe459eiqNLVQZCPp8QuRQcU+D119Av+T7x7i9d1HuO2DSxKOv7a7hWvvXkssrjl9fjV/f9pc\ndjV1cfHSOhk4FcMigV+IDCr2eRJq/gD8v9+9Y/x71lHUOfYBvunBDcTMXarqyvLxul3850eXj19j\nRdaQVI8QGTRQquflHb21+v3BCM2dvZU+ZftBMRrS4xcig4rzPXQ55vGHojFcCuIaXt11hFA0zoNr\nD/RLB02VKZJiFCTwC5FBVcU+WrtDbG7oYMn0Mt4/EsDM5rB+fxt/29VCq7l3r5P0+MVoSKpHiAy6\n/pQ51JTkc+3db7KzsZO95q5elyyro76th9buMD/6eG8e3+rpy6IoMRrS4xcig6YU5fHgjau57Gev\n8oNndnDK0Uatn4uWTOWJTUblz9PnV/P8LR+gpStMXVk+7+xvk1k8YlQk8AuRYXOqirhm9Wx++dJu\nKovzcLsUFy6eyneuWMxxM8upKvZRVexjXrVx/cwhlIMQYiAS+IWYAJZMK0Nr2FjfTk2JD4/bxSdP\nnpPpZoksNaQcv1LqQqXUdqXULqXUV5Ocn62Uek4ptUkp9aJSaobj3HVKqZ3mx3Vj2XghskVNqbFB\n+eYGv+TvRdoNGviVUm7g58BFwCLgaqXUoj6X3Qncr7VeBnwHuN382inArcBJwCrgVqVUBUKIBNXF\nPvvz2lLfAFcKMXpD6fGvAnZprfdorcPAg8AVfa5ZBDxvfv6C4/wFwBqtdavWug1YA1w4+mYLkV2q\nS3qDvczRF+k2lMA/HTjgeFxvHnPaCFxpfv4hoEQpVTnErxUi51nbMALMqizKYEtELhirefxfBj6g\nlFoPfABoAIa1rZBS6kal1Dql1Lrm5ubBv0CILHWyY/tGIdJhKIG/AXDuLDHDPGbTWh/UWl+ptT4e\n+Lp5rH0oX+t4jru01iu01iuqq6uH8SMIkV0WTi3JdBNElhvKdM63gPlKqbkYQfsq4O+cFyilqoBW\nrXUc+Bpwj3nqaeDfHQO655vnhRB9/PqTK+gKRSfs3rkiewwa+LXWUaXUFzCCuBu4R2v9nlLqO8A6\nrfVjwJnA7UopDbwMfN782lal1G0YLx4A39Fat6bh5xBi0jtXtk8U40RpawufCWTFihV63bp1mW6G\nEEJMGkqpt7XWK4ZyrRRpE0KIHCOBXwghcowEfiGEyDES+IUQIsdI4BdCiBwjgV8IIXKMBH4hhMgx\nE3Iev1KqGXh/hF9eBbSMYXOyidyb5OS+pCb3JrWJdm9ma62HVO9mQgb+0VBKrRvqIoZcI/cmObkv\nqcm9SW0y3xtJ9QghRI6RwC+EEDkmGwP/XZluwAQm9yY5uS+pyb1JbdLem6zL8QshhBhYNvb4hRBC\nDCBrAr9S6kKl1Hal1C6l1Fcz3Z7xppS6RynVpJTa7Dg2RSm1Rim10/y3wjyulFI/Me/VJqXUCZlr\nefoppWYqpV5QSm1RSr2nlLrJPJ7T90cpla+UWquU2mjel38zj89VSr1p/vx/UErlmcd95uNd5vk5\nmWz/eFBKuZVS65VSj5uPs+LeZEXgV0q5gZ8DFwGLgKuVUosy26pxdx9wYZ9jXwWe01rPB54zH4Nx\nn+abHzcCvxinNmZKFLhFa70IWA183vz9yPX7EwLO1lovB44DLlRKrQb+A/iR1vpooA34lHn9p4A2\n8/iPzOuy3U3AVsfj7Lg3WutJ/wGcDDztePw14GuZblcG7sMcYLPj8Xagzvy8Dthufv4r4Opk1+XC\nB/AocJ7cn4R7Ugi8A5yEsSjJYx63/7YwduE72fzcY16nMt32NN6TGRgdgrOBxwGVLfcmK3r8wHTg\ngONxvXks19VqrQ+Znx8GrL39cvZ+mW/BjwfeRO6PlcrYADQBa4DdQLvWOmpe4vzZ7ftinu8AKse3\nxePqv4CvAHHzcSVZcm+yJfCLQWijK5LTU7iUUsXAw8CXtNZ+57lcvT9a65jW+jiM3u0qYGGGmzQh\nKKUuBZq01m9nui3pkC2BvwGY6Xg8wzyW6xqVUnUA5r9N5vGcu19KKS9G0P+d1voR87DcH5PWuh14\nASN9Ua6U8pinnD+7fV/M82XAkXFu6ng5FbhcKbUPeBAj3fNjsuTeZEvgfwuYb4645wFXAY9luE0T\nwWPAdebn12Hktq3jnzRnr6wGOhwpj6yjlFLA3cBWrfUPHady+v4opaqVUuXm5wUY4x5bMV4APmJe\n1ve+WPfrI8Dz5julrKO1/prWeobWeg5GPHlea/0JsuXeZHqQYQwHYi4GdmDkKL+e6fZk4Od/ADgE\nRDByj5/CyDE+B+wEngWmmNcqjFlQu4F3gRWZbn+a781pGGmcTcAG8+PiXL8/wDJgvXlfNgPfMo/P\nA9YCu4A/Aj7zeL75eJd5fl6mf4Zxuk9nAo9n072RlbtCCJFjsiXVI4QQYogk8AshRI6RwC+EEDlG\nAr8QQuQYCfxCCJFjJPALIUSOkcAvhBA5RgK/EELkmP8PczNAjIQzbV0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "plot(np.cumprod(d+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-5-multi_sampling.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "num_symbols = len(symbol_list)\n", "num_samples = 20\n", "\n", "x = tf.placeholder(tf.float32, [None, num_symbols * 100])\n", "y_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", "W = tf.Variable(tf.random_normal([num_symbols * 100, num_positions * num_symbols]))\n", "b = tf.Variable(tf.random_normal([num_positions * num_symbols]))\n", "\n", "y = tf.matmul(x, W) + b \n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "sample_n = {}\n", "sample_mask = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " # isolate the probability of the selected policy (for use in calculating gradient)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.multiply(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", " \n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs_softmax * sample_mask[i*num_samples + sample_iter],1)\n", " \n", "\n", "\n", "daily_returns_by_symbol_ = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", "total_return = tf.reduce_prod(daily_returns+1, 0)\n", "z = tf.ones_like(total_return) * -1\n", "total_return = tf.add(total_return, z)\n", "\n", "\n", "ann_vol = tf.multiply(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = tf.div(total_return, ann_vol)\n", "#Maybe metric slicing later\n", "#segment_ids = tf.ones_like(daily_returns[:,0])\n", "#partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", "training_target_cols = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(labels=training_target_cols, logits=ones)\n", "gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", "#cost = tf.multiply(gradient , daily_returns_by_symbol_reshaped)\n", "#cost = tf.multiply(gradient , tf.expand_dims(daily_returns, -1))\n", "cost = tf.multiply(gradient , tf.expand_dims(total_return, -1))\n", "# cost = tf.multiply(gradient , tf.expand_dims(sharpe, -1))\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.05).minimize(cost)\n", "costfn = tf.reduce_mean(cost)\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0100 cost= 1.48023 total return= 3.557313919 sharpe= 2.085654259\n", "Epoch: 0200 cost= 1.81074 total return= 4.276563644 sharpe= 2.507260799\n", "Epoch: 0300 cost= 2.07541 total return= 4.851496696 sharpe= 2.844292164\n", "Epoch: 0400 cost= 1.42713 total return= 3.589344025 sharpe= 2.102812290\n", "Epoch: 0500 cost= 1.34209 total return= 3.339767456 sharpe= 1.959243417\n", "Epoch: 0600 cost= 1.50117 total return= 3.775519609 sharpe= 2.214963436\n", "Epoch: 0700 cost= 1.57011 total return= 3.965950012 sharpe= 2.326948643\n", "Epoch: 0800 cost= 1.33224 total return= 3.598165035 sharpe= 2.109631062\n", "Epoch: 0900 cost= 0.706881 total return= 1.877704620 sharpe= 1.100140810\n", "Epoch: 1000 cost= 0.761505 total return= 2.024359941 sharpe= 1.185175061\n", "Epoch: 1100 cost= 0.911471 total return= 2.437183142 sharpe= 1.425802827\n", "Epoch: 1200 cost= 1.6589 total return= 4.489245892 sharpe= 2.627991199\n", "Epoch: 1300 cost= 1.89802 total return= 5.195552349 sharpe= 3.041148186\n", "Epoch: 1400 cost= 1.84092 total return= 5.077595711 sharpe= 2.972646236\n", "Epoch: 1500 cost= 2.0919 total return= 5.724076271 sharpe= 3.350445986\n", "Epoch: 1600 cost= 2.17117 total return= 5.940022945 sharpe= 3.477900267\n", "Epoch: 1700 cost= 1.94947 total return= 5.357582569 sharpe= 3.136368275\n", "Epoch: 1800 cost= 2.05009 total return= 5.628676891 sharpe= 3.295320988\n", "Epoch: 1900 cost= 2.31323 total return= 6.348797321 sharpe= 3.717358351\n", "Epoch: 2000 cost= 2.18853 total return= 6.030413628 sharpe= 3.530701399\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(2000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-6-neural_network.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "positions = tf.constant([-1,0,1]) #long, neutral or short\n", "num_positions = 3\n", "num_symbols = len(symbol_list)\n", "num_samples = 20\n", "\n", "n_input = num_symbols * 100\n", "n_hidden_1 = 10 # 1st layer number of features\n", "n_hidden_2 = 10 # 2nd layer number of features\n", "n_classes = num_positions * num_symbols # MNIST total classes (0-9 digits)\n", "\n", "\n", "# define placeholders \n", "x = tf.placeholder(tf.float32, [None, num_symbols * 100])\n", "y_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", "weights = {\n", " 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n", " 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))\n", "}\n", "biases = {\n", " 'b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'b2': tf.Variable(tf.random_normal([n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_classes]))\n", "}\n", "\n", "def multilayer_perceptron(x, weights, biases):\n", " # Hidden layer with RELU activation\n", " layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])\n", " layer_1 = tf.nn.relu(layer_1)\n", " # Hidden layer with RELU activation\n", " layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])\n", " layer_2 = tf.nn.relu(layer_2)\n", " # Output layer with linear activation\n", " out_layer = tf.matmul(layer_2, weights['out']) + biases['out']\n", " return out_layer\n", "\n", "# Construct model\n", "y = multilayer_perceptron(x, weights, biases)\n", "\n", "\n", "\n", "# loop through symbol, taking the columns for each symbol's bucket together\n", "pos = {}\n", "sample_n = {}\n", "sample_mask = {}\n", "symbol_returns = {}\n", "relevant_target_column = {}\n", "for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.multiply(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", " \n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs_softmax * sample_mask[i*num_samples + sample_iter],1)\n", " \n", "\n", "\n", "daily_returns_by_symbol_ = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", "daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", "total_return = tf.reduce_prod(daily_returns+1, 0)\n", "z = tf.ones_like(total_return) * -1\n", "total_return = tf.add(total_return, z)\n", "\n", "\n", "ann_vol = tf.multiply(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", "sharpe = tf.div(total_return, ann_vol)\n", "#Maybe metric slicing later\n", "#segment_ids = tf.ones_like(daily_returns[:,0])\n", "#partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", "training_target_cols = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", "ones = tf.ones_like(training_target_cols)\n", "gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(labels=training_target_cols, logits=ones)\n", "\n", "gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", "#cost = tf.multiply(gradient , daily_returns_by_symbol_reshaped)\n", "#cost = tf.multiply(gradient , tf.expand_dims(daily_returns, -1))\n", "#cost = tf.multiply(gradient , tf.expand_dims(total_return, -1))\n", "cost = tf.multiply(gradient , tf.expand_dims(sharpe, -1))\n", "\n", "optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)\n", "costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0100 cost= -0.0511034 total return= -0.254313290 sharpe= -0.147050172\n", "Epoch: 0200 cost= 0.0008046 total return= 0.004304615 sharpe= 0.002454142\n", "Epoch: 0300 cost= -0.00654278 total return= -0.032786764 sharpe= -0.018854376\n", "Epoch: 0400 cost= -0.0104948 total return= -0.052206062 sharpe= -0.030145902\n", "Epoch: 0500 cost= 0.0085575 total return= 0.042194180 sharpe= 0.024507100\n", "Epoch: 0600 cost= -0.00712342 total return= -0.035571225 sharpe= -0.020566883\n", "Epoch: 0700 cost= 0.00835088 total return= 0.041818328 sharpe= 0.024149975\n", "Epoch: 0800 cost= 0.016556 total return= 0.083269991 sharpe= 0.048046894\n", "Epoch: 0900 cost= 0.0330436 total return= 0.164966017 sharpe= 0.095224828\n", "Epoch: 1000 cost= 0.0369702 total return= 0.184987023 sharpe= 0.106792770\n", "Epoch: 1100 cost= 0.0163765 total return= 0.081490621 sharpe= 0.047063101\n", "Epoch: 1200 cost= 0.0464217 total return= 0.231276035 sharpe= 0.133545727\n", "Epoch: 1300 cost= 0.0402187 total return= 0.201298326 sharpe= 0.116184413\n", "Epoch: 1400 cost= 0.0367863 total return= 0.183890969 sharpe= 0.106271721\n", "Epoch: 1500 cost= 0.0392539 total return= 0.196572214 sharpe= 0.113486424\n", "Epoch: 1600 cost= 0.0598056 total return= 0.299269736 sharpe= 0.172908783\n", "Epoch: 1700 cost= 0.0458882 total return= 0.230310053 sharpe= 0.133034244\n", "Epoch: 1800 cost= 0.0449383 total return= 0.225449950 sharpe= 0.130350322\n", "Epoch: 1900 cost= 0.0313403 total return= 0.157538086 sharpe= 0.090945952\n", "Epoch: 2000 cost= 0.0390447 total return= 0.195676491 sharpe= 0.112976611\n" ] } ], "source": [ "# initialize variables to random values\n", "init = tf.global_variables_initializer()\n", "sess.run(init)\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(2000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(optimizer, feed_dict={x: train_ins[start:end], y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={x: train_ins, y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, pos[0]], feed_dict={x: train_ins, y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\neKwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nhof/D0ndEzxU2ID0AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nI19tMYgkpcC6vwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/TF-FIN-7-regularization_modular.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas_datareader.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'google', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", "\n", "def sort_data(rets):\n", " ins = []\n", " outs = []\n", " for i in range(len(rets)-100):\n", " ins.append(rets[i:i+100].tolist())\n", " outs.append(rets[i+100])\n", " return np.array(ins), np.array(outs)\n", " \n", "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [], "source": [ "class Model():\n", " def __init__(self, config, training=True):\n", " #CONFIG\n", " symbol_list = self.symbol_list = config.symbol_list\n", " num_samples = self.num_samples = config.num_samples\n", " input_len = self.input_len = config.input_len\n", " n_hidden_1 = self.n_hidden_1 = config.n_hidden_1\n", " n_hidden_2 = self.n_hidden_2 = config.n_hidden_2 \n", " learning_rate = self.learning_rate = config.learning_rate\n", " \n", " #bucket info\n", " positions = self.positions = tf.constant([-1,0,1])\n", " num_positions = self.num_positions = 3\n", " \n", " #more vars\n", " num_symbols = self.num_symbols = len(symbol_list)\n", " n_input = self.n_input = num_symbols * input_len\n", " n_classes = self.n_classes = num_positions * num_symbols \n", "\n", " \n", " \n", " x =self.x = tf.placeholder(tf.float32, [None, n_input])\n", " y_ =self.y_= tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", " weights = {\n", " 'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),\n", " 'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_hidden_2, n_classes]))\n", " }\n", " biases = {\n", " 'b1': tf.Variable(tf.random_normal([n_hidden_1])),\n", " 'b2': tf.Variable(tf.random_normal([n_hidden_2])),\n", " 'out': tf.Variable(tf.random_normal([n_classes]))\n", " }\n", "\n", " \n", " def multilayer_perceptron(x, weights, biases, keep_prob):\n", " # Hidden layer with RELU activation\n", " layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])\n", " layer_1 = tf.nn.relu(layer_1)\n", " # Hidden layer with RELU activation\n", " layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])\n", " layer_2 = tf.nn.relu(layer_2)\n", " # Output layer with linear activation\n", " out_layer_f = tf.matmul(layer_2, weights['out']) + biases['out']\n", " out_layer = tf.nn.dropout(out_layer_f, keep_prob) # DROPOUT LAYER\n", " return out_layer\n", " \n", " if training == True: keep_prob = 0.5 # DROPOUT\n", " else: keep_prob = 1.0 # NO DROPOUT\n", " \n", " # Construct model\n", " y = multilayer_perceptron(x, weights, biases, keep_prob)\n", "\n", "\n", "\n", " # loop through symbol, taking the columns for each symbol's bucket together\n", " pos = {}\n", " sample_n = {}\n", " sample_mask = {}\n", " symbol_returns = {}\n", " relevant_target_column = {}\n", " for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.multiply(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " y_[:,i])\n", "\n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs_softmax * sample_mask[i*num_samples + sample_iter],1)\n", " self.pos = pos\n", "\n", " # PERFORMANCE METRICS\n", " daily_returns_by_symbol_ = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", " daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", " self.daily_returns = daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", " \n", " total_return = tf.reduce_prod(daily_returns+1, 0)\n", " z = tf.ones_like(total_return) * -1\n", " self.total_return =total_return= tf.add(total_return, z)\n", " \n", " self.ann_vol = ann_vol = tf.multiply(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", " self.sharpe = sharpe = tf.div(total_return, ann_vol)\n", " #Maybe metric slicing later\n", " #segment_ids = tf.ones_like(daily_returns[:,0])\n", " #partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", " training_target_cols = tf.concat(axis=1, values=[tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", " ones = tf.ones_like(training_target_cols)\n", " gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(labels=training_target_cols, logits=ones)\n", " gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", " #L2 = tf.contrib.layers.l2_regularizer(0.1)\n", " #t_vars = tf.trainable_variables()\n", " #reg = tf.contrib.layers.apply_regularization(L2, tf.GraphKeys.WEIGHTS)\n", "\n", " #cost = tf.multiply(gradient , daily_returns_by_symbol_reshaped)\n", " #cost = tf.multiply(gradient , tf.expand_dims(daily_returns, -1)) #+ reg\n", " cost = tf.multiply(gradient , tf.expand_dims(total_return, -1))\n", "# cost = tf.multiply(gradient , tf.expand_dims(sharpe, -1))\n", "\n", " self.optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)\n", " self.costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class SmallConfig(object):\n", " \"\"\"Small config.\"\"\"\n", " symbol_list = ['C', 'GS']\n", " num_samples = 20\n", " input_len = 100\n", " n_hidden_1 = 50 \n", " n_hidden_2 = 50 \n", " learning_rate = 0.5" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch: 0001 cost= 2.28894 total return= 0.412543417 sharpe= 0.240709529\n", "Epoch: 0004 cost= 2.1894 total return= 0.403443102 sharpe= 0.235403521\n", "Epoch: 0009 cost= 2.30637 total return= 0.414085491 sharpe= 0.241607949\n", "Epoch: 0016 cost= 2.30084 total return= 0.413683702 sharpe= 0.241382263\n", "Epoch: 0025 cost= 2.19133 total return= 0.403449685 sharpe= 0.235398700\n", "Epoch: 0036 cost= 2.20588 total return= 0.404926328 sharpe= 0.236257706\n", "Epoch: 0049 cost= 2.32604 total return= 0.415895593 sharpe= 0.242668298\n", "Epoch: 0064 cost= 2.31741 total return= 0.415151445 sharpe= 0.242235027\n", "Epoch: 0081 cost= 2.26062 total return= 0.410115369 sharpe= 0.239292353\n", "Epoch: 0100 cost= 2.27525 total return= 0.411296072 sharpe= 0.239984319\n", "Epoch: 0121 cost= 2.30107 total return= 0.413576738 sharpe= 0.241326732\n", "Epoch: 0144 cost= 2.22979 total return= 0.407117209 sharpe= 0.237535581\n", "Epoch: 0169 cost= 2.25972 total return= 0.409892615 sharpe= 0.239169684\n", "Epoch: 0196 cost= 2.34233 total return= 0.417271679 sharpe= 0.243464262\n", "Epoch: 0225 cost= 2.27351 total return= 0.410999459 sharpe= 0.239806580\n", "Epoch: 0256 cost= 2.31914 total return= 0.415589034 sharpe= 0.242485766\n", "Epoch: 0289 cost= 2.12802 total return= 0.397816091 sharpe= 0.232117815\n", "Epoch: 0324 cost= 2.24666 total return= 0.408498381 sharpe= 0.238345299\n", "Epoch: 0361 cost= 2.25613 total return= 0.409645655 sharpe= 0.239020847\n", "Epoch: 0400 cost= 2.2737 total return= 0.411293162 sharpe= 0.239989983\n", "Epoch: 0441 cost= 2.19468 total return= 0.403924180 sharpe= 0.235684911\n", "Epoch: 0484 cost= 2.28288 total return= 0.412231687 sharpe= 0.240531941\n", "Epoch: 0529 cost= 2.22508 total return= 0.406739324 sharpe= 0.237326805\n", "Epoch: 0576 cost= 2.30133 total return= 0.413612373 sharpe= 0.241338796\n", "Epoch: 0625 cost= 2.15487 total return= 0.399984639 sharpe= 0.233387162\n", "Epoch: 0676 cost= 2.21506 total return= 0.405859049 sharpe= 0.236807840\n", "Epoch: 0729 cost= 2.25387 total return= 0.409361779 sharpe= 0.238860178\n", "Epoch: 0784 cost= 2.21548 total return= 0.405881132 sharpe= 0.236827791\n", "Epoch: 0841 cost= 2.243 total return= 0.408317499 sharpe= 0.238239694\n", "Epoch: 0900 cost= 2.25471 total return= 0.409596792 sharpe= 0.238994547\n", "Epoch: 0961 cost= 2.17321 total return= 0.402169984 sharpe= 0.234657491\n", "Epoch: 1024 cost= 2.32493 total return= 0.415850117 sharpe= 0.242644498\n", "Epoch: 1089 cost= 2.30981 total return= 0.414417845 sharpe= 0.241802911\n", "Epoch: 1156 cost= 2.22072 total return= 0.406300340 sharpe= 0.237063211\n", "Epoch: 1225 cost= 2.133 total return= 0.398385345 sharpe= 0.232448589\n", "Epoch: 1296 cost= 2.24401 total return= 0.408602156 sharpe= 0.238414471\n", "Epoch: 1369 cost= 2.2605 total return= 0.409931899 sharpe= 0.239189362\n", "Epoch: 1444 cost= 2.27338 total return= 0.411276667 sharpe= 0.239977454\n", "Epoch: 1521 cost= 2.19779 total return= 0.404177753 sharpe= 0.235834460\n", "Epoch: 1600 cost= 2.19453 total return= 0.403711313 sharpe= 0.235561493\n", "Epoch: 1681 cost= 2.29543 total return= 0.413231721 sharpe= 0.241106577\n", "Epoch: 1764 cost= 2.18925 total return= 0.403665258 sharpe= 0.235526970\n", "Epoch: 1849 cost= 2.34653 total return= 0.417545755 sharpe= 0.243640275\n", "Epoch: 1936 cost= 2.29078 total return= 0.412700057 sharpe= 0.240801863\n" ] } ], "source": [ "if 1==1:\n", " sess = tf.Session()\n", " # initialize variables to random values\n", " with tf.variable_scope(\"model\", reuse=None):\n", " m = Model(config = SmallConfig)\n", " with tf.variable_scope(\"model\", reuse=True):\n", " mvalid = Model(config = SmallConfig, training=False)\n", " sess.run(tf.global_variables_initializer())\n", "\n", "# run optimizer on entire training data set many times\n", "train_size = train_ins.shape[0]\n", "for epoch in range(2000):\n", " start = rng.randint(train_size-50)\n", " batch_size = rng.randint(2,75)\n", " end = min(train_size, start+batch_size)\n", " \n", " sess.run(m.optimizer, feed_dict={m.x: train_ins[start:end], m.y_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if np.sqrt(epoch+1)%1== 0:\n", " t,s, c = sess.run([ mvalid.total_return, mvalid.ann_vol, mvalid.costfn], feed_dict={mvalid.x: train_ins, mvalid.y_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " t = (1+t)**(1/6) -1\n", " s = np.mean(s)\n", " s = t/s\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([mvalid.daily_returns, mvalid.pos[0]], feed_dict={mvalid.x: train_ins, mvalid.y_: train_outs})" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(mvalid.num_samples):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([mvalid.daily_returns, mvalid.pos[0]], feed_dict={mvalid.x: test_ins, mvalid.y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: notebooks/lstm_(7).ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "import numpy as np\n", "import numpy.random as rng\n", "import pandas.io.data as web\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", " \n", "symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def lstm_iterator(raw_data, num_steps, data_size):\n", " batch_size=1\n", " \n", " raw_data = np.array(raw_data, dtype=np.float32)\n", "\n", " data_len = len(raw_data)\n", " batch_len = data_len // batch_size\n", " data = np.zeros([batch_size, batch_len, data_size], dtype=np.float32)\n", " for i in range(batch_size):\n", " data[i] = raw_data[batch_len * i:batch_len * (i + 1),:]\n", "\n", " epoch_size = (batch_len - 1) // num_steps\n", "\n", " if epoch_size == 0:\n", " raise ValueError(\"epoch_size == 0, decrease batch_size or num_steps\")\n", "\n", " for i in range(epoch_size):\n", " x = data[:, i*num_steps:(i+1)*num_steps]\n", " y = data[:, i*num_steps+1:(i+1)*num_steps+1]\n", " yield (x[0], y[0])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"symbol_list = ['C', 'GS']\\nrets = get_data(symbol_list)\\nins, outs = sort_data(rets)\\nins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\\ndiv = int(.8 * ins.shape[0])\\ntrain_ins, train_outs = ins[:div], outs[:div]\\ntest_ins, test_outs = ins[div:], outs[div:]\\n\\n#normalize inputs\\ntrain_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)\"" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''symbol_list = ['C', 'GS']\n", "rets = get_data(symbol_list)\n", "ins, outs = sort_data(rets)\n", "ins = ins.transpose([0,2,1]).reshape([-1, len(symbol_list) * 100])\n", "div = int(.8 * ins.shape[0])\n", "train_ins, train_outs = ins[:div], outs[:div]\n", "test_ins, test_outs = ins[div:], outs[div:]\n", "\n", "#normalize inputs\n", "train_ins, test_ins = train_ins/np.std(ins), test_ins/np.std(ins)'''" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#sess = tf.InteractiveSession()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "class LSTMModel(object):\n", " def __init__(self, num_steps, num_samples):#, config):\n", " symbol_list = ['C', 'GS']\n", "\n", " positions = tf.constant([-1,0,1]) #long, neutral or short\n", " num_positions = 3\n", " num_symbols = len(symbol_list)\n", " self.num_samples = num_samples\n", " self.num_steps = num_steps\n", "\n", " #n_input = num_symbols * 100\n", "\n", " hidden_size=21\n", " n_classes = num_positions * num_symbols\n", "\n", " #self.num_steps = tf.placeholder(tf.int64)\n", "\n", " # define placeholders \n", " self.inputs_ = tf.placeholder(tf.float32, [None, num_symbols])\n", " self.targets_ = tf.placeholder(tf.float32, [None, num_symbols])\n", "\n", " cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size, forget_bias=0.0)\n", " #cell = tf.nn.rnn_cell.MultiRNNCell([cell] * config.num_layers)\n", " cell = tf.nn.rnn_cell.InputProjectionWrapper(cell, num_symbols)\n", " cell = tf.nn.rnn_cell.OutputProjectionWrapper(cell, n_classes)\n", "\n", "\n", " outputs=[]\n", " self.initial_state = cell.zero_state(1, tf.float32)\n", " state = self.initial_state\n", " time_step = 0\n", " \n", " '''with tf.variable_scope(\"RNN\"):\n", " def body(x):\n", " inp = self.inputs_[time_step,:]\n", " inp = tf.reshape(inp, [1,-1])\n", " (cell_output, state) = cell(inp, state)\n", " outputs.append(cell_output)\n", " return \n", "\n", " def condition(x):\n", " return tf.reduce_sum(x) < 100\n", " \n", " tf.while_loop(condition, body, [x])'''\n", " \n", " with tf.variable_scope(\"RNN\"):\n", " for time_step in range(self.num_steps): #####num_steps???\n", " if time_step > 0: tf.get_variable_scope().reuse_variables() \n", " inp = self.inputs_[time_step,:]\n", " inp = tf.reshape(inp, [1,-1])\n", " (cell_output, state) = cell(inp, state)\n", " outputs.append(cell_output) #[6,]\n", "\n", " self.final_state = state \n", "\n", " y = tf.reshape(tf.concat(1, outputs), [-1, n_classes])\n", "\n", "\n", "\n", "\n", "\n", " # loop through symbol, taking the columns for each symbol's bucket together\n", " pos = {}\n", " sample_n = {}\n", " sample_mask = {}\n", " symbol_returns = {}\n", " relevant_target_column = {}\n", " for i in range(num_symbols):\n", " # isolate the buckets relevant to the symbol and get a softmax as well\n", " symbol_probs = y[:,i*num_positions:(i+1)*num_positions]\n", " symbol_probs_softmax = tf.nn.softmax(symbol_probs) # softmax[i, j] = exp(logits[i, j]) / sum(exp(logits[i]))\n", " # sample probability to chose our policy's action\n", " sample = tf.multinomial(tf.log(symbol_probs_softmax), num_samples)\n", " for sample_iter in range(num_samples):\n", " sample_n[i*num_samples + sample_iter] = sample[:,sample_iter]\n", " pos[i*num_samples + sample_iter] = tf.reshape(sample_n[i*num_samples + sample_iter], [-1]) - 1\n", " symbol_returns[i*num_samples + sample_iter] = tf.mul(\n", " tf.cast(pos[i*num_samples + sample_iter], float32), \n", " self.targets_[:,i])\n", "\n", " sample_mask[i*num_samples + sample_iter] = tf.cast(tf.reshape(tf.one_hot(sample_n[i*num_samples + sample_iter], 3), [-1,3]), float32)\n", " relevant_target_column[i*num_samples + sample_iter] = tf.reduce_sum(\n", " symbol_probs * sample_mask[i*num_samples + sample_iter],1)\n", "\n", "\n", "\n", " daily_returns_by_symbol_ = tf.concat(1, [tf.reshape(t, [-1,1]) for t in symbol_returns.values()])\n", " daily_returns_by_symbol = tf.transpose(tf.reshape(daily_returns_by_symbol_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", " daily_returns = tf.reduce_mean(daily_returns_by_symbol, 2) # [?,5]\n", "\n", " total_return = tf.reduce_prod(daily_returns+1, 0)\n", " z = tf.ones_like(total_return) * -1\n", " self.total_return = total_return = tf.add(total_return, z)\n", "\n", "\n", " ann_vol = tf.mul(\n", " tf.sqrt(tf.reduce_mean(tf.pow((daily_returns - tf.reduce_mean(daily_returns, 0)),2),0)) ,\n", " np.sqrt(252)\n", " )\n", " self.sharpe = tf.div(total_return, ann_vol)\n", " #Maybe metric slicing later\n", " #segment_ids = tf.ones_like(daily_returns[:,0])\n", " #partial_prod = tf.segment_prod(daily_returns+1, segment_ids)\n", "\n", "\n", " training_target_cols = tf.concat(1, [tf.reshape(t, [-1,1]) for t in relevant_target_column.values()])\n", " ones = tf.ones_like(training_target_cols)\n", " gradient_ = tf.nn.sigmoid_cross_entropy_with_logits(training_target_cols, ones)\n", "\n", " gradient = tf.transpose(tf.reshape(gradient_, [-1,2,num_samples]), [0,2,1]) #[?,5,2]\n", "\n", " #cost = tf.mul(gradient , daily_returns_by_symbol_reshaped)\n", " #cost = tf.mul(gradient , tf.expand_dims(daily_returns, -1))\n", " cost = tf.mul(gradient , tf.expand_dims(total_return, -1))\n", " #cost = tf.mul(gradient , tf.expand_dims(sharpe, -1))\n", "\n", " self.optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)\n", " self.costfn = tf.reduce_mean(cost)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def run_train_results(m, epoch):\n", " state = m.initial_state.eval()\n", " full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:], m.initial_state: state}\n", " \n", " t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=full_feed)\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def run_epoch(m, epoch):\n", " \n", " full_feed = {m.inputs_: rets[:-1], m.targets_: rets[1:]}\n", " state = m.initial_state.eval()\n", " for step, (x, y) in enumerate(lstm_iterator(rets,20,2 )):\n", " #m.num_steps = len(x)\n", " feed_dict = {m.inputs_: x, m.targets_: y, m.initial_state: state}\n", " _ , state = session.run([m.optimizer, m.final_state], feed_dict=feed_dict)\n", " \n", " '''if (epoch+1)%2== 0:\n", " t,s, c = session.run([ m.total_return, m.sharpe, m.costfn], feed_dict=feed_dict)#full_feed)#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))'''" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "getting results...\n", "Epoch: 0001 cost= -0.50711 total return= -0.731922448 sharpe= -2.518890381\n", "getting results...\n", "Epoch: 0002 cost= -0.479199 total return= -0.690995097 sharpe= -2.211014509\n", "getting results...\n", "Epoch: 0003 cost= 0.802528 total return= 1.158372164 sharpe= 4.109907150\n", "getting results...\n", "Epoch: 0004 cost= -0.504468 total return= -0.728531718 sharpe= -2.387005329\n", "getting results...\n", "Epoch: 0005 cost= -0.607678 total return= -0.877253473 sharpe= -2.718842506\n", "getting results...\n", "Epoch: 0006 cost= 0.449566 total return= 0.648839116 sharpe= 2.242624998\n", "getting results...\n", "Epoch: 0007 cost= 0.223947 total return= 0.323118806 sharpe= 0.947408140\n", "getting results...\n", "Epoch: 0008 cost= 0.29168 total return= 0.421271563 sharpe= 1.259648323\n", "getting results...\n", "Epoch: 0009 cost= -0.353979 total return= -0.511379957 sharpe= -1.703359842\n", "getting results...\n", "Epoch: 0010 cost= -0.383745 total return= -0.553670168 sharpe= -1.732698441\n" ] } ], "source": [ "with tf.Graph().as_default(), tf.Session() as session:\n", " # initialize variables to random values\n", " #init = tf.initialize_all_variables()\n", " #sess.run(init)\n", " # run optimizer on entire training data set many times\n", " #train_size = train_ins.shape[0]\n", " with tf.variable_scope(\"model\", reuse=None):#, initializer=init):\n", " m = LSTMModel(num_steps = 20, num_samples = 5)#, config=config)\n", " with tf.variable_scope(\"model\", reuse=True):#, initializer=init):\n", " mvalid = LSTMModel(num_steps = len(rets) -1, num_samples = 1)#, config=config)\n", " tf.initialize_all_variables().run()\n", " for epoch in range(10):\n", " #start = rng.randint(train_size-50)\n", " #batch_size = rng.randint(2,25)\n", " #end = min(train_size, start+batch_size)\n", "\n", " run_epoch(m, epoch )\n", " print('getting results...')\n", " run_train_results(mvalid, epoch)\n", " '''sess.run(optimizer, feed_dict={inputs_: train_ins[start:end], targets_: train_outs[start:end]})#.reshape(1,-1).T})\n", " # every 1000 iterations record progress\n", " if (epoch+1)%100== 0:\n", " t,s, c = sess.run([ total_return, sharpe, costfn], feed_dict={inputs_: train_ins, targets_: train_outs})#.reshape(1,-1).T})\n", " t = np.mean(t)\n", " s = np.mean(s)\n", " print(\"Epoch:\", '%04d' % (epoch+1), \"cost=\",c, \"total return=\", \"{:.9f}\".format(t), \n", " \"sharpe=\", \"{:.9f}\".format(s))\n", " #print(t)'''" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ">" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "state.eval" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# in sample results\n", "#init = tf.initialize_all_variables()\n", "#sess.run(init)\n", "d, t = sess.run([daily_returns, pos[0]], feed_dict=feed_dict)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[-0.02278614, -0.01349073],\n", " [ 0.01645574, 0.00046793],\n", " [-0.06229091, -0.03424059],\n", " [-0.02301918, 0.00290978],\n", " [-0.01444814, -0.00732817],\n", " [ 0. , -0.00972121],\n", " [ 0.00513662, 0.00950007],\n", " [ 0.03661115, 0.02413904],\n", " [-0.00243609, 0.01114777],\n", " [-0.00534623, -0.00740445],\n", " [-0.0391589 , -0.01933518],\n", " [ 0.00744369, 0.0029232 ],\n", " [ 0.0018748 , 0.00951207],\n", " [ 0.00845272, 0.00980073],\n", " [-0.01468148, -0.01574339],\n", " [-0.01610275, -0.03067165],\n", " [-0.00137798, 0.00831226],\n", " [ 0.00504581, 0.01337255],\n", " [ 0.02328266, 0.00077818],\n", " [ 0.0101487 , 0.00700935]], dtype=float32)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# equity curve\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(t)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#out of sample results\n", "d, t = sess.run([daily_returns, total_return], feed_dict={x: test_ins, y_: test_outs})" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#out of sample results\n", "for i in range(5):\n", " plot(np.cumprod(d[:,[i]]+1))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: notebooks/policy_net-multisymbol_(july11).ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import matplotlib.pyplot as plt\n", "\n", "import tensorflow as tf\n", "#from tensorflow.models.rnn import rnn, rnn_cell\n", "import numpy as np\n", "import numpy.random as rng\n", "\n", "import time\n", "\n", "import pandas.io.data as web\n", "from pykalman import KalmanFilter\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "\n", "def get_prices(symbol):\n", " start, end = '2007-05-02', '2016-04-11'\n", " data = web.DataReader(symbol, 'yahoo', start, end)\n", " data=pd.DataFrame(data)\n", " prices=data['Adj Close']\n", " prices=prices.astype(float)\n", " return prices\n", "\n", "def get_returns(prices):\n", " return ((prices-prices.shift(-1))/prices)[:-1]\n", " \n", "def get_data(list):\n", " l = []\n", " for symbol in list:\n", " rets = get_returns(get_prices(symbol))\n", " l.append(rets)\n", " return np.array(l).T\n", " \n", "rets = get_data(['C', 'GS'])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def lstm_iterator(raw_data, batch_size, num_steps, data_size):\n", " \n", " raw_data = np.array(raw_data, dtype=np.float32)\n", "\n", " data_len = len(raw_data)\n", " batch_len = data_len // batch_size\n", " data = np.zeros([batch_size, batch_len, data_size], dtype=np.float32)\n", " for i in range(batch_size):\n", " data[i] = raw_data[batch_len * i:batch_len * (i + 1),:]\n", "\n", " epoch_size = (batch_len - 1) // num_steps\n", "\n", " if epoch_size == 0:\n", " raise ValueError(\"epoch_size == 0, decrease batch_size or num_steps\")\n", "\n", " for i in range(epoch_size):\n", " x = data[:, i*num_steps:(i+1)*num_steps]\n", " y = data[:, i*num_steps+1:(i+1)*num_steps+1]\n", " yield (x, y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def run_epoch(session, m, data, eval_op, verbose=False, get_out=False):\n", " \"\"\"Runs the model on the given data.\"\"\"\n", " epoch_size = ((len(data) // m.batch_size) - 1) // m.num_steps\n", " start_time = time.time()\n", " costs = 0.0\n", " iters = 0\n", " state = m.initial_state.eval()\n", " output = []\n", " inp = []\n", " targ = []\n", " for step, (x, y) in enumerate(lstm_iterator(data, m.batch_size, m.num_steps, m.data_size)):\n", " cost, state, _ = session.run([m.cost, m.final_state, eval_op],\n", " {m.input_data: x,\n", " m.targets: y,\n", " m.initial_state: state})\n", " costs += cost\n", " #print(cost)\n", " iters += m.num_steps\n", " if get_out: \n", " output.append(_)\n", " inp.append(x)\n", " targ.append(y)\n", " \n", " if len(output) > 0: \n", " return output, inp, targ\n", "\n", " ''' if verbose and step % (epoch_size // 10) == 10:\n", " print(\"%.3f perplexity: %.3f speed: %.0f wps\" %\n", " (step * 1.0 / epoch_size, np.exp(costs / iters),\n", " iters * m.batch_size / (time.time() - start_time)))\n", " '''\n", " return np.exp(costs / iters)\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class SmallConfig(object):\n", " \"\"\"Small config.\"\"\"\n", " init_scale = 1.1\n", " learning_rate = .60\n", " max_grad_norm = 5\n", " num_layers = 4\n", " num_steps = 25\n", " hidden_size = 200\n", " max_epoch = 4\n", " max_max_epoch = 13\n", " keep_prob = 1.0\n", " lr_decay = 0.9\n", " batch_size = 20\n", " #vocab_size = 10000\n", " \n", "class TestConfig(object):\n", " \"\"\"Tiny config, for testing.\"\"\"\n", " init_scale = 0.1\n", " learning_rate = 1.0\n", " max_grad_norm = 1\n", " num_layers = 4\n", " num_steps = 25\n", " hidden_size = 20\n", " max_epoch = 1\n", " max_max_epoch = 1\n", " keep_prob = 1.0\n", " lr_decay = 0.5\n", " batch_size = 20\n", " #vocab_size = 10000\n", " #data_size= 2\n", "\n", "def get_config(test=False):\n", " if test:\n", " return TestConfig()\n", " return SmallConfig()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "class LSTMModel(object):\n", "\n", " def __init__(self, is_training, config):\n", " self.batch_size = batch_size = config.batch_size\n", " self.num_steps = num_steps = config.num_steps\n", " self.data_size = data_size = config.data_size\n", " size = config.hidden_size\n", " \n", " \n", " \n", " position_transform = tf.constant([[-1.,0.,1]])\n", " pb_number = 3\n", " \n", " # set PLACEHOLDERS\n", " self._input_data = tf.placeholder(tf.float32, [batch_size, num_steps, data_size])\n", " self._targets = tf.placeholder(tf.float32, [batch_size, num_steps, data_size])\n", " # set VARIABLES\n", " lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(size, forget_bias=0.0)\n", " cell = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers)\n", " cell = tf.nn.rnn_cell.InputProjectionWrapper(cell, size)\n", " cell = tf.nn.rnn_cell.OutputProjectionWrapper(cell, pb_number*data_size)\n", " if is_training and config.keep_prob < 1:\n", " cell = tf.nn.rnn_cell.DropoutWrapper(\n", " cell, output_keep_prob=config.keep_prob)\n", " \n", " # loop through timesteps and record output\n", " outputs = []\n", " self._initial_state = cell.zero_state(batch_size, tf.float32)\n", " state = self._initial_state\n", " with tf.variable_scope(\"RNN\"):\n", " for time_step in range(num_steps):\n", " if time_step > 0: tf.get_variable_scope().reuse_variables()\n", " \n", " (cell_output, state) = cell(tf.reshape(self._input_data[:, time_step,:], [-1, data_size]), state)\n", " outputs.append(cell_output)\n", " \n", " self._final_state = state #shape: [20,160]\n", " \n", " #reshape to [batchsize*num_steps, 3*data_size]\n", " self._output = output = tf.reshape(tf.concat(1, outputs), [-1, data_size*pb_number])\n", " targets = tf.reshape(self._targets, [-1,data_size])\n", " \n", " \n", " \n", " pos_one_hot = {}\n", " t_dict = {}\n", " returns = []\n", " for i in range(data_size):\n", " relevant_output = output[:,i*pb_number:(i+1)*pb_number]\n", " sample = tf.argmax(relevant_output) #this should be SAMPLE\n", " pos_one_hot[i] = tf.one_hot(sample, depth= 3, on_value=-1.0, off_value=0.0)\n", " t_dict[i] = tf.matmul(tf.reshape(targets[:,i], [-1,1]) , position_transform)\n", " cross_entropy = tf.nn.softmax_cross_entropy_with_logits(output, pos_one_hot[i])\n", " \n", " returns.append( tf.mul(sample , t_dict[i]) )\n", " returns = tf.reduce_sum(tf.concat(1,returns), 1)\n", " total_return = tf.reduce_prod(returns+1)\n", " \n", " \n", " cross_entropy = tf.nn.softmax_cross_entropy_with_logits(output, tf.nn.softmax(target_menu))\n", " \n", " #pos_one_hot = tf.concat(1, [ v for v in pos_one_hot.values() ])\n", " self._cost = cost = total_return #* -100\n", " cost = cost*-1\n", " \n", " #vol = tf.(returns)\n", " #sharpe = total_return/vol\n", " \n", " \n", " \n", " \n", " \n", " '''\n", " self._output = output = tf.reshape(tf.concat(1, outputs), [-1, data_size*3]) # shape: [500, 3]=[??,data_size*3]\n", " self._final_state = state #shape: [20,160] = [hidden size, ??]\n", " targets = tf.reshape(self._targets, [-1,data_size])\n", " \n", " outdict = {}\n", " tm_dict = {}\n", " xe_list = []\n", " for i in range(data_size):\n", " outdict[i] = output[:,i*3:(i+1)*3]\n", " tm_dict[i] = tf.matmul(tf.reshape(targets[:,i], [-1,1]) , position_transform)\n", " xe_list.append(tf.nn.softmax_cross_entropy_with_logits(outdict[i], tf.nn.softmax(tm_dict[i])))\n", " \n", " loss = tf.add_n(xe_list)\n", " self._cost = cost = tf.reduce_sum(loss) / batch_size\n", " \n", " #drets = tf.mul(target_menu, tf.nn.softmax(output) ) # shape: [500, 3] = [??, data_size*3]\n", " #max_possible_ret = tf.reduce_max(target_menu, 1) # shape: [500]\n", "\n", " #position = tf.cast(tf.argmax(output, 1) - 1, tf.float32)\n", " #drets_position = tf.mul(position, tf.reshape(self._targets, [-1]))\n", " \n", " #set LOSS\n", " #loss = tf.nn.softmax_cross_entropy_with_logits(outputdict, tf.nn.softmax(target_menu))\n", " #loss=max_possible_ret-tf.reduce_sum(drets,1)#tf.nn.l2_loss(output - tf.reshape(self._targets, [-1, 1]))\n", " \n", " #set COST\n", " #self._cost = cost = tf.reduce_sum(loss) / batch_size\n", " '''\n", " \n", " if not is_training:\n", " return\n", " #TRAINING STEP\n", " self._lr = tf.Variable(0.0, trainable=False)\n", " tvars = tf.trainable_variables()\n", " print(cost)\n", " #grads, _ = tf.clip_by_global_norm(tf.gradients(cost, tvars), config.max_grad_norm)\n", " #print(grads)\n", " optimizer = tf.train.GradientDescentOptimizer(self.lr)#GradientDescentOptimizer(self.lr)\n", " self._train_op = optimizer.minimize(cost, var_list=tvars)#apply_gradients(zip(grads, tvars))\n", " \n", " \n", " \n", " #####TODO\n", " # whats up with grads?\n", " #normalize input \n", " #try lm nn at the end, see line 31 of https://github.com/sherjilozair/char-rnn-tensorflow/blob/master/model.py\n", " # seq2seq.rnn_decoder and seq2seq.sequence_loss_by_example\n", "\n", " def assign_lr(self, session, lr_value):\n", " session.run(tf.assign(self.lr, lr_value))\n", "\n", " @property\n", " def input_data(self):\n", " return self._input_data\n", "\n", " @property\n", " def targets(self):\n", " return self._targets\n", "\n", " @property\n", " def initial_state(self):\n", " return self._initial_state\n", "\n", " @property\n", " def cost(self):\n", " return self._cost\n", "\n", " @property\n", " def final_state(self):\n", " return self._final_state\n", "\n", " @property\n", " def lr(self):\n", " return self._lr\n", "\n", " @property\n", " def train_op(self):\n", " return self._train_op\n", " \n", " @property\n", " def output(self):\n", " return self._output\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stderr", "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Tensor(\"model/mul:0\", shape=(), dtype=float32)\n", "Epoch: 1 Learning rate: 0.600\n", "Epoch: 1 Train Perplexity: 1.026\n", "Epoch: 2 Learning rate: 0.600\n", "Epoch: 2 Train Perplexity: 1.028\n", "Epoch: 3 Learning rate: 0.600\n", "Epoch: 3 Train Perplexity: 1.028\n", "Epoch: 4 Learning rate: 0.600\n", "Epoch: 4 Train Perplexity: 1.028\n", "Epoch: 5 Learning rate: 0.600\n", "Epoch: 5 Train Perplexity: 1.029\n", "Epoch: 6 Learning rate: 0.540\n", "Epoch: 6 Train Perplexity: 1.029\n", "Epoch: 7 Learning rate: 0.486\n", "Epoch: 7 Train Perplexity: 1.029\n", "Epoch: 8 Learning rate: 0.437\n", "Epoch: 8 Train Perplexity: 1.029\n", "Epoch: 9 Learning rate: 0.394\n", "Epoch: 9 Train Perplexity: 1.029\n", "Epoch: 10 Learning rate: 0.354\n", "Epoch: 10 Train Perplexity: 1.029\n", "Epoch: 11 Learning rate: 0.319\n", "Epoch: 11 Train Perplexity: 1.029\n", "Epoch: 12 Learning rate: 0.287\n", "Epoch: 12 Train Perplexity: 1.029\n", "Epoch: 13 Learning rate: 0.258\n", "Epoch: 13 Train Perplexity: 1.029\n", "Epoch: 14 Learning rate: 0.232\n", "Epoch: 14 Train Perplexity: 1.029\n", "Epoch: 15 Learning rate: 0.209\n", "Epoch: 15 Train Perplexity: 1.029\n", "Epoch: 16 Learning rate: 0.188\n", "Epoch: 16 Train Perplexity: 1.029\n", "Epoch: 17 Learning rate: 0.169\n", "Epoch: 17 Train Perplexity: 1.029\n", "Epoch: 18 Learning rate: 0.153\n", "Epoch: 18 Train Perplexity: 1.029\n", "Epoch: 19 Learning rate: 0.137\n", "Epoch: 19 Train Perplexity: 1.029\n", "Epoch: 20 Learning rate: 0.124\n", "Epoch: 20 Train Perplexity: 1.029\n", "Epoch: 21 Learning rate: 0.111\n", "Epoch: 21 Train Perplexity: 1.029\n", "Epoch: 22 Learning rate: 0.100\n", "Epoch: 22 Train Perplexity: 1.029\n", "Epoch: 23 Learning rate: 0.090\n", "Epoch: 23 Train Perplexity: 1.029\n", "Epoch: 24 Learning rate: 0.081\n", "Epoch: 24 Train Perplexity: 1.029\n", "Epoch: 25 Learning rate: 0.073\n", "Epoch: 25 Train Perplexity: 1.029\n", "Epoch: 26 Learning rate: 0.066\n", "Epoch: 26 Train Perplexity: 1.029\n", "Epoch: 27 Learning rate: 0.059\n", "Epoch: 27 Train Perplexity: 1.029\n", "Epoch: 28 Learning rate: 0.053\n", "Epoch: 28 Train Perplexity: 1.029\n", "Epoch: 29 Learning rate: 0.048\n", "Epoch: 29 Train Perplexity: 1.029\n", "Epoch: 30 Learning rate: 0.043\n", "Epoch: 30 Train Perplexity: 1.029\n", "Epoch: 31 Learning rate: 0.039\n", "Epoch: 31 Train Perplexity: 1.029\n", "Epoch: 32 Learning rate: 0.035\n", "Epoch: 32 Train Perplexity: 1.029\n", "Epoch: 33 Learning rate: 0.031\n", "Epoch: 33 Train Perplexity: 1.029\n", "Epoch: 34 Learning rate: 0.028\n", "Epoch: 34 Train Perplexity: 1.029\n", "Epoch: 35 Learning rate: 0.025\n", "Epoch: 35 Train Perplexity: 1.029\n", "Epoch: 36 Learning rate: 0.023\n", "Epoch: 36 Train Perplexity: 1.029\n", "Epoch: 37 Learning rate: 0.021\n", "Epoch: 37 Train Perplexity: 1.029\n", "Epoch: 38 Learning rate: 0.019\n", "Epoch: 38 Train Perplexity: 1.029\n", "Epoch: 39 Learning rate: 0.017\n", "Epoch: 39 Train Perplexity: 1.029\n", "Epoch: 40 Learning rate: 0.015\n", "Epoch: 40 Train Perplexity: 1.029\n" ] } ], "source": [ "\n", "raw_data = rets, rets[:2200], rets[2200:]\n", "train_data, valid_data, test_data = raw_data\n", "#train_data =valid_data = test_data = raw_data\n", "\n", "config = eval_config = get_config()\n", "eval_config = get_config(test=True)\n", "eval_config.batch_size = 1\n", "eval_config.num_steps = 1\n", "\n", "config.data_size = eval_config.data_size = rets.shape[1]\n", "\n", "with tf.Graph().as_default(), tf.Session() as session:\n", " initializer = tf.random_uniform_initializer(-config.init_scale,\n", " config.init_scale)\n", " with tf.variable_scope(\"model\", reuse=None, initializer=initializer):\n", " m = LSTMModel(is_training=True, config=config)\n", " with tf.variable_scope(\"model\", reuse=True, initializer=initializer):\n", " mvalid = LSTMModel(is_training=False, config=config)\n", " #mtest = LSTMModel(is_training=False, config=eval_config)\n", "\n", " tf.initialize_all_variables().run()\n", "\n", " for i in range(40):#config.max_max_epoch):\n", " lr_decay = config.lr_decay ** max(i - config.max_epoch, 0.0)\n", " m.assign_lr(session, config.learning_rate * lr_decay)\n", "\n", " print(\"Epoch: %d Learning rate: %.3f\" % (i + 1, session.run(m.lr)))\n", " train_perplexity = run_epoch(session, m, train_data, m.train_op,\n", " verbose=True)\n", "\n", " print(\"Epoch: %d Train Perplexity: %.3f\" % (i + 1, train_perplexity))\n", " #valid_perplexity = run_epoch(session, mvalid, valid_data, tf.no_op())\n", " #print(\"Epoch: %d Valid Perplexity: %.3f\" % (i + 1, valid_perplexity))\n", "\n", " test_output, test_inp, test_targ = run_epoch(session, mvalid, train_data, mvalid.output, get_out = True)\n", " #print(test_perplexity)\n", " #print(\"Test Perplexity: %.3f\" % test_perplexity)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n0UAn/zRc/venF/XriwOEsKrQqGmsqFvPQ33lezzdDrVoKlOuYF1x5nNffDnfHz6FU+bTFtNeRIqd\n0OWGxrjjsjcUpdfXwtMjR8qOWS9q12rqTJvUrmssq9/In/e+XLbutBetmkrC9ToyaVdwY10Xt+z7\njxXFu6SZ7uH2Fo/fO2R5K/RqtbnPgl0I00Vn1PV+ejnvra58ToRJFTeXKJcCUBCCjBCMFi90tuCw\nt7ay+2UXezFZ9CKiRud4x8KY9mKkeC72i0UvXqKGpFPZM4/TXqQFjLneJ+gt5NhbW9nyhul1mtNe\njBe9CCrlb4MH570YLnrxQtGLQ2odicKpirQd8GY1BEwUvehPZ9lTU9lRoNNe9BVjni7TPqWyIzun\nvRi6yIs39QbShcE53rUwHCBZ9GKy+Hz/X2csNgcXp1z0F2MecgDbQVcqO45w2ovBi7xo0RvJOmfK\n1hV4XiSKM39TxXL8dzmHVf7KxkzTXgwUY8aBt20HhcqOy51uh/ovai+a9QYccaJs3WkvpmdBDxe9\neNxSaNYrW3kx7cV0WQY4WXDYKyo7CnTai+m691LRi+X+ZRXpXrWrsidzi//wPUCukCfn5KuiXa2Y\np/JV8sLJkyuUNxKYj2rFXDUvCjmy9uJ7IRAkrOocv1ctLzJ2FqsKjwlZjkW2UM4uaPNTvbqXRJS8\nC9r8eHWvOu3Q1Vb38oU8uTJnJOajmu1FJVy1iVkmo/NUr5OSu+o6KdXSTdtpClXauW0yX52d0Kql\nO1Xhrka/CO2rLRkV3AIpu7KZu7m42upe1smRrVKbXM0BXiVctYl5okoVIlvIVi0ZVSvmaukmrCRu\nFXbngqvPi2olObj6Gspq6VZT+2orbwCTV1nM1dJ1hUuygvUMV6JaMVeaQ67axFyt3mTars6+xVC9\nmK823WpqV0s3aVenYaim9tWmW03tq628VVP7atOtpna1dK/ZqWyJRCKRSJYi1+yIWSKRSCSSpYhM\nzBKJRCKRLCHkVLZEIpFIJEuIvBwxSyQSiUSydLgmH5fSlMp2SvqXoltN7atNt5ra1dJVlepVv6vN\nC1kuqq8L1StzV5sX1ax7hmrM2vu9HJbslpwKCn7dR7aQozOyjP70ALd03MRgZpiA5ueZgfL2WVZQ\nEAgCegBD1TFUg+7aLnKFHMujHfzkxN9WpBvUA2QKWbpqOpnKJ9jRtJWwGeKRt39alu60tl/3ky1k\n6Ywuoz81wHs7381wZgRVUTk4WN5erxfG7NN8CAQb6taQsjN0Rtr5Xyf/vmLdaS/SdoZN9euJ+2v5\n8bGflKU7zbTu8mgHfal+3td5MyPZMWzX5uXh1yqOOWQEyRZybGvsYSqfYFmkjb8+9fOKdae9sB2b\nlbEVNAUb+dGxv1oU3RXRDnpTA9y2/GbGshMkrCSvj5W3t/CFdaTGjDBlJdndvI2J3CSt4Wb+7vQ/\nLlrMiqLSGmqiPdLKD99aLC86vXKx/Gam8gmGMiO8NXG8bG0An+Yj7o8xnptgT+suxrLjNIUa+fmZ\nf6o45mwhR0e0nYDmJ+aroTO6bBHLRSf96QFu7byZtJ3m1NRZTiXK20JUQUFTVBRFpSnYwHBmhBvb\n9zCSGaUhWM8/nH2i4pgtx6I13EzUjBLQ/ayo6Sy7vbhc3RtID/GeZfuwXIvXR4/Qny5va1kFBUPV\ncYRLa7iZwfQw7162l6HMCO/t2Ffxbn6/8MSsqzoFt0CtL8ZEfpIdTVsYz02ys2krISNA1IzSEm4i\noPnRVK/3dGjkjQUlZl3VCRshpvIJNtStZSgzzK2d72Y4M8qe1l3Yrk1zsBFVUVEUBdstLCgxXxiz\nTzPx63421q0lZafZ07qLhJVkbW03rnBnYn6q73mGMlfed/pyXiSsFD3166n1xwjqftrDbfg0c0b3\nxcFX5k3MCt7pPTVmlIn8JJvq1zOYHuJ9nTczmh1jV/M2XASNgfoZ3Vwht6DEPB1zzFdD2AihAFsb\ne0hYSW5o3U3CSrKmdtUsL/721OPzPj94oReT+Sm2N20mV8jRXbuS5mAjuqrTGV2GqRozus/0H5w3\nMauKihCCmK+Gifwkm+s30J8e5H3L38N4boKtDZvQVI16f3xGN2WlF5SYdVXHcR1qfFFqfFFsx2ZX\n8zYm8lPc2HY9CStBd2zlLC8W0gBf6MWUlWBrwyZcBO3hFjqj3p68K6KdGKo+o/tP556aNzHrikZB\nODPlbUvDRvpTgzMJbWP9OkzVJO6PzehO5CYXlJh1VUcIQdAI0BCoJ2NnuKF1F2O5CW5s30Min2Rl\nbDlwfvSykMR8oRdJO8WmunWYmkncX8vq2pU4rsPK2Ao0RZ2J+een/2nexHxx3dvasIn+9CC3dr6b\ntJ2hu7aLkB4i5ovO6A5lRhaUmHVV9+JRNNrCLUxZCW5s28Nodox97XtIWmlW1HTM8qLUcpEuZFgX\nX03EDBPUA2yoW4vt2Kyq7UJFmYn5sRN/N29ivtiLbY09XkLr2EfeybMi2kHUjBA1IzO655L9C0rM\nuqpjqgaOcFgR7WQ8NzGT0G5q30vKTs2U6WkvFpKYL4w57+TpqllOQ7AOTdHY0rCRXCHP6tqVADMx\np+3MvIn5Yi+2N25mMDPMTe17EcWkHPfXEjZCM7qLwTuSmKc/XMQMk7LSrKjpRFc0av0x1sa7yRSy\nbG3owXIsGoJ18+qtru2a9XvEDJO0UqyKraA32c8tHfuYspKsLxbUiBmh1lczr3GGOtsOXdXRFZ2G\nQJyR7Bg3tO1mKD3CezrexVhukp769bjCJWKGZ72vjRZg9jTMqtjyWYk5YobJ2Fk6Im0EjSAB3U9P\n/XqSdprtjZvJO3nqAwvwIr5qTi/6UoPcvGwv2UKOrprlxP0xQkaQWl9sXi/8+uyN7n2aiSsELaEm\nhjLD3Ni2h4H0ELd03MhEfop18dWoikrICM56XyvNl/FiBa+OvD4r5lwhT0uoibg/hqKobGvsIZFP\nsqN5C7lCnvpAfF4v1tR2z+nFQHqIfW17KAiHtnALLaEmDNWgPhCfd1orbJ4/DEJVVHyaD8uxaI+0\nMpAe4qb2GxhID/KeZTeSsJJ0167EUHUC+uyDE5pDjZd40R3r4u3Jk7Nitp0CdYFaWkJN2G6hOFqd\nYlfzVrKFHHUL8GJt/PJedMe6GMqMcEPrLlRFpc4fpyPajqZoC/Ki1n/+8BhN0fDrPjJ2luXRZfSl\nBri540b6U4PcvOxdpG2vrk93Xi+kKdhwiXZrqHlWQxkxwyAgaARYHu0gU8jOJPddTdvIOTni/tp5\nvVg1R3vRHetiNDvOzuatBPUAYSNEV2w5CsqCvGgM1M/8rCsaft1Pyk7PjNjf07GPgfQg+9pvIO/k\nWRZpI6AH8GmzD05ovIwX0zMVF8asKzqqorCmtpukneRdbdczkh1jd/N2coXcrO9mLrpqOuf0Yiqf\nYFPDemp9MUzVYE18Fa4QNATq5p2abQs3z/ysKRpBPUDSTtFV0+m1yZ03MZQe5obW3RSEQ2uoiZAR\nxLzIiwYubfM0RcMR5w/sjBhh/LoPy7HpadjARG6Sfe1eR2dn8zbyTp6Yr2ZeL1bUdPJ0//nT/i5s\nL7KFHKtiXbSEmhBCsLF+LQW3QEOgvuJp6oXwjhz7eLD3Vd4ePMv1LTuZyE2yLNKGQFQ0z//XJ3+G\noRpEzAjLo8u8Ke9oO6qiVqR7dPxtnux9hn3tN5AtZGkMNhAyQkTMUEW6aTvDgSM/Ym/rdQykh7iu\nZQeT+cRMga5E+6+O/w2t8XqsrKA7toJ0saFUFKUi3cOjb/L84Mvsbd2N7drE/bVEzQghI1iRbsJK\n8tCRh4sJbYidzVtJWilaQk0zo/tyefjYYzQFG3ARrI+vvuxopBxeHn6Nt5LH2BzbhACiZoS4P0ZA\n91ekO5Gb5C+OPsLNHe9iMD3MtsbNpO00zaHGirwQQvDDtx6lM7qMnJOnp349U/nkonhxcPBl3po4\nztaGTeiqTlAPUB+ow6/7KtIdzY7zw7ce5YM9v8Sx/jP0NGwgV8jTGKyvyAtXuPzF0UfojnWRtFNs\nbehhMj9FV01nxe3QM/0HOZPsZX18DUE9gKkZNAYb8GlmRbpD6WEefvt/8d6OmxjJjrK+bg0Ft0B9\noK4iXcd1OHDkYfZ0beHM8CA7mrYwkZ9iRbSjYi+e6H2GkcwoK2MrqPFFUFBpDTdjqHpFun2pAf7q\n+N9wa+e7GctN0B3zOlpxf6wiXduxOXDkx2xt7GEkM8rulu2M5yZZHl1WsRcADQ3ln3T3jiRmgJGR\n6pygI/FoaIhIj6uM9PidQfpcfaTH1aeSxHxVrsqWSCQSieRfKmUn5hMnTrBjxw4sy1rMeCQSiUQi\nuaYpKzGnUinuv/9+fD7fYscjkUgkEsk1TcmJWQjBF77wBe655x6ZmCUSiUQiWWSu+LjUww8/zA9+\n8INZf2ttbeX2229n7dq1JV2okhvhkoUhPa4+0uN3Bulz9ZEeL11KXpV966230tTUBMChQ4fYvHkz\nBw4cmPd9cgVgdZGrLKuP9PidQfpcfaTH1aeSjk/JG4z8/Ofnd0C6+eab+d73vlf2xSUSiUQikcym\nosel3okdUCQSiUQiuZaoaEvOf/zH8jazl0gkEolEcnnkBiMSiUQikSwhZGKWSCQSiWQJIROzRCKR\nSCRLCJmYJRKJRCJZQsjELJFIJBLJEkImZolEIpFIlhAVPS61UE7+jz9j4sgxItt2YA32E+heDYBi\nmpgtbThTk/hXrcJJJDHq6ubVE0Iw8J0HEI4Drot/5Sqs3nOEd+4mf/oUoS1bcRIJjIZGVL8fVBU9\nEkHR5/+4U//8BBOP/4xA9xpcK48ejWI0NlEYHye0eQv5s2cIb9mGPT6G2dwCCLRgaF5da2iQvj/5\nJqFNPeTPnCG8dRvWyDD+5StQDAMAf+dy7LExAt2rcZIJjPgCvHBd+r/9LcbCQbJTSYJr15E7c4bI\nrt3kz54htKkHN5tBr6lFDYdBCPRYDEWdv082+b//gckn/g+BlasQrovq9+Fra8caHiaybTu5s2cI\nb95CYXISo7ERUNCCwXl183199H/7WzN+hjZvoTAxjq+1HTUUQlgW/lWrsIeHCaxeg5NKYdTWzu+F\n49D3x3+EFongJBMEN2wkd/o0kV27sfp6Ca5dhygUUEMh9JoahOOgx2oX5MX43/8tfa+8iNbShqIb\noIB/eRfWQD+RHbvInT1NaGMPTiqJEa9D0TVUf2Be3dyZ0wx85wFCm7eSP3f2vEZDA3qsFiedIrh2\nHdbgIIHVa3DTKfTY/F64tk3fN7+BUVePPT5GePMWcqdOEt6xC3toEP/KVQCoPh96vA5h2+jx+IL2\nJhj76WOkXzuE2dKCGgwiLIvA6jXkz50jsnM3+d6zBNdvwE1nvLJmGF49nIfsieMM/umDJK/fzdTx\nUwTXrcO18mjhKGZzE4WJCYIbNmENDhDo7sbNZNBrYvN7kc/T+4dfw2xpxR4ZJrx1m+fFth3YoyP4\nO5d736mmYjY24eZz6PG6BXkx8sjDZN8+hlFXjx6rwUmlCW7YQP7MGSI7d2P19xFYvRrXstAiEVTT\nh7qAMwYyR48w9P//GaHNW7zvflU3AIph4FvWgT06QrhnM9bAAP6Vq3CzWfSamnl1nUyG3j/8GlNr\nVpE4dZbwtu3kTp8mvHUrhclJzJZW1EAQXAeztQ03m8Goq59XF2D4h39O/tw59GgUvb4BZ3KSUM9m\ncqdPeV4MDeDvWgmOgxoMofr9qKY5r2769dcY/vOHCPVsxh4Zxr+iy2vLhcDftRJraJDw5q1YgwP4\nV3R57XYkOr8XqRS9f3g//q5V5Pt6iWzf4bVpmzbjpNPodXH0mhhuPo+/owMnnV6wF5VS8pac5fD0\nv/rVhb1QUTCbW3BtC39HJ1pNDFyX4IaNWAP9RHddhzU8hLBt+r/9rYUHoCiYTc3YoyNEdl2HPTJM\nqGcLwimg19ZiNrfgpFP4Ozo5+en/WNJnU0MhFF3Hv6KLwvg40ev2kDt3huju6ylMTuLr6EA1TUYe\neZj0Ky+XHLMQLmZLK0ZDI24uS3jzVvJ9vUR3XYc9OoKTTDLw3f9emm5zi+fFzt3YY6OENmwETUMN\nBPB3dM7Efeo//6eSvNAiEUAh0N2NPTpK9Po9XmO9axdOMlWs9AGGDnyf7NEjJQhrGPUNKJqKUd+A\n2dqGk0gQ3rGz2CHbRWF8HHtkhKHvl7ATnaJgtrRgj44S2bGTwuQkgdVrUAMBFFXFv3IVhfFxfO3t\nnNr/e6V5EY0iXJfg2vXYQ4NEb9hLvq+X8NbtiFwOvb4ePRql/78/QP7M6YWHrOvotXFUvw8tWoN/\n+QoK4+NEdl/ndRp37MKZmiR/7izDf/FQSTGbra3YY2NEtu3w6sPyFd7nKDgE163DHh7GbG3j9Of+\nS2lexGIIyyK0qQerv5/oDXuxBgYI9Wz2OkfRKHo8Tu/X78ceGV64F6aJFo2ihSNogaDXmRsZJnr9\nDeTPeknHSSXJHjvG6CM/LtGLNgoTXmdc5C3M1laM+nrcbNb7HIODGE1NnPnC50rS1eN1uJk0oS1b\nPS+u34M9Mkxw3QZQVdRAAKOhkbNf+gJOauFbZio+H1o47HU0NY3g+g1em7lnL1ZfL6HNW3AzGVKv\nHWL8p4+V7sXUJKGNm7yOfbwOX1sbhakpb4AxMIAej3P2y19cuKiiYNTVU0hMEdm+k3x/H9Hd12NP\njBNY1Y3q86HoOmZzMyf/y6fBcRYsrfr9qMEgRkMjwnEI92z22sw9e7EG+glt3IRrWSSff5aJn/19\nyV44ySTBtWu9DmcojH/FCgpjY4S37cAaHCC4dh1uNkNLd0dJ2heytBKzRCKRSCRXOWogwPU/LK1j\nfCHvyFR2+wfvxKlvIfXKS2jRGqz+PuyxUYRtU5iYANctWTO0dRuhDRvRwmFSr7yCr30ZyYPPosfr\nyJ44Dq6Lm8mUHqyq0vaJT5Hv60MUCohCgexbR9FjtaRefhG9thZ7ZKR0XaDxI/8v9sgI/o5OUq+9\nihYIYA2PYA8NgAB7bBTK6CdFdl9H/ab15IwAqZdexLesg+TB59FqYuRPn0I4BdxstmRdxeen5a67\nsYeHcNJpFFUl/cbrGHV1pF56ES0WozA6WrIuQNP/92+wBgfwtbeTefNNFF2jMDFBvrcXRVWxR8vz\nOPquGzGbWzDqG0i+cBB/RwfJF19AC4fJnzuHa1mIfK5kXS0SYfUnP87YqT7s8TFUn4/0a69iNDR6\nXtTUUBgbKyvm5n/7May+XsyWFrJvH0M4Lk46Re7UKVTTLGkUeSGxm9+DHqvFaG4hefA5fO3LSL36\nCqrPhzXQj5vPI/L5knX1eB2NH/owTjJJfqAfLRQi9eormE3NpF56AS0apTA+XlbMLXf/e7SRAexw\nLbnTp3CzWYRtkX37GKo/ULYXtbfdjur342trI/Hcs/jal5E+/BqoKvbICG42g7CsknXN5hbqPvCr\nuLks+TOn0WO1JF98AbO5hdSrL6MGgziTk2XF3PrxT5I7fQo9Hsfq66MwNQlCkDlyBC0UKtuL+Pv/\nFaGwHyfeSOL55zCbW8i+dRRRKGBPjOOm0wjbLlnX19FJ/LbbEY5D9vgxrw4efA6jqYX04UOoPh9O\nIlFWzK3/4VOeF9Eo9sgI1vAQim6Qef01tEi0bC/qPvCrCNvG39lJ4vnnMRsbyZ44jpvN4iQTOMkk\nolAoWdfXvqyseKZ5R0bMcOnpUtOXLYyNokWipF9/DaO+gcybb3h/nxgne/w4imGQO3nikoTV/p/+\nM8F16y97LSEEbjoNQpDv60WPxUg8/xy+tnYSzz2DFgqTO3UCJ5nCSc4uKKEtW2n7+Cfn1MV1scfH\nQICTmMIaGkL1+Ui+8DxmUzNTTz2JHqsl33vukg5H94PfQ9G0y+sC9ugIerSG9OuHMeJxMsfeQtg2\nTipF5sibqH4/uRPHL3n/ss/8Ph3Xbb3saTFCCNxUChSF/Lmz6LVxEs89ja+1neQLB1F8Jvlz5yhM\nTXqvu4DI9Xto+ei/m9sLx6EwOYEoODiZDPnes2ihEMnnnsNobibx9D+j19SQ7+u71Ivv/tll7+3O\neDEygh6Nkn7zDfRolNzp0zipBCJvkTp8CC0cIXf87Uve3/nFL+NbdvkpJCEETiqJomnkTp7EqG8g\n8dzTmC2tpF5+CRQVe2gAe2wcN5Oe9d6ad7+HjZ/63Tk9FoUCTiKBm88hLJvcqRNo0RoSzz6N2dxC\n4tln0MJhrP6+S8py95/+z8vez5zxYngYLRole/QIajCI1d8/03FJvfwSWk3NZb1Y/l+/itncPLcX\niQSKaZJ9+xhmY5PnRWMz6ddfw7VtCmNj2CPDl3Tq4rffQf2dH5xTd7rMuuk0Qrhkj72FHq8j8dST\nmC2tJA8+h+rzYw0NzvZC01j94Pcue/LReS+G0MIRssffRjEMCqOj5HvPoZgmyReeR4/VXraOrPja\nH865ZkMIgTM1her3kTl6FLO5mcRzz2LU15M5egQ3naYwNYU1NHhJR6b+V/818V+6fW4vLAsnk8FJ\nJs53bBsaSTz1JEZTM6mXXkQxdOyhoVnv1cIRVv7xf5tTd9oLNRj0boUIKCQS5E4eRw2GSD73SMXc\nAgAACNZJREFULHo8flkvuv7oT2hZ2TZnWS5MTqIFAmSOvOGV3YPPo8di5E6coDAxgZPNYPX1XpK8\nG3/rI8RuunluL/I53FyewsQ4iukjfegVjOYWEv/8BEZDI+nDh7zrX9TZNxoaWPGVr8/vhd9PvrcX\nYVm4+ZzXgYlGSTzzNEZdHblTJy+peyu/9QBa6NI1QjP5aWICLRQi/fphr7P18otooRC5c2exBwcR\nToH82bOXJO/mf/PvWPn+91025oXwC0vMpWCPj3vmvPE6WjhM7uQJat/3SxUfouFkvFFg9sQJjHic\nqaefovbW29Cj8y8cuBKiUMBJp3DSXi88e/wYvrb2OTsSpWCPj6EFg2SOHEENBMifO0vslltpbIxW\n5LGTSqHoureQpb6eqaefIn7b7WjhcEXxuraNm8ngpJIIxyFz5E0CXStnFgBWgj0+hur3k337bRRN\nwx4ZJvbu91Ss66RSKIZB5sibGI1NJJ55ivjtd9Dc2VSRx65t4eZyFCYmUBSV9OFDBNauI9C1suKY\n7fExVMMkd/oUwnUpTE0Su/GminULyQSqz0/mjcMYjc0knnuGul9+/4IWc10Jb+Yijz02hmLopF5+\nidDmLfg7Ois6klAI4TX8mk6+9xxuLofI54nuuaGieMFLfKrfT/rwa5hNTSRfOEj8l9+/oAVMV8LN\n5xG2jVVMLskXDhLZsQtfW1tFutNeeB3OQQqJKRAQ3X1dxcc+FqYmUQNB0ocPebNGr7xM3S+/f0EL\nbK+Em8shHAervx81FCL5/LNE99yA2XT5DuZC8byYACGwx0YpjI6i+Ewi23dWpAtQmJxEDRa9qKsn\nffg14rffQWPz/AsT5+KqSMyS+ZHnq1Yf6fE7g/S5+kiPq08l5zHL55glEolEIllCyMQskUgkEskS\nQiZmiUQikUiWEDIxSyQSiUSyhJCJWSKRSCSSJYRMzBKJRCKRLCFkYpZIJBKJZAkhE7NEIpFIJEsI\nmZglEolEIllCyMQskUgkEskSQiZmiUQikUiWEDIxSyQSiUSyhJCJWSKRSCSSJYRMzBKJRCKRLCFk\nYpZIJBKJZAkhE7NEIpFIJEsImZglEolEIllC6KW+wXEcvvKVr/DGG29g2zaf+MQnuPHGG6sRm0Qi\nkUgk1xwlj5gfe+wxHMfhL//yL3nggQc4efJkNeKSSCQSieSapOQR89NPP013dzd33XUXQgg+//nP\nVyMuiUQikUiuSa6YmB9++GF+8IMfzPpbbW0tPp+PBx98kBdeeIHPfOYzPPTQQ1UNUiKRSCSSawVF\nCCFKecM999zDbbfdxq233grA3r17eeqpp6oSnEQikUgk1xol32Pevn07TzzxBABHjx6ltbV10YOS\nSCQSieRapeQRs2VZ3HvvvZw4cQKAe++9l3Xr1lUlOIlEIpFIrjVKTswSiUQikUiqh9xgRCKRSCSS\nJYRMzBKJRCKRLCFkYpZIJBKJZAkhE7NEIpFIJEuIknf+Wiiu63Lvvfdy7NgxDMPgvvvuo6Ojo1qX\nuyY4dOgQ3/jGNzhw4ABnzpxh//79qKpKd3c3X/ziF1EUhR//+Mf86Ec/Qtd17r77bm666aZfdNhX\nDbZt89nPfpb+/n4sy+Luu+9m5cqV0udFxnEcfv/3f5/Tp0+jKApf+tKXME1T+lwFxsbGuPPOO/n+\n97+PqqrS40XmAx/4AOFwGIBly5Zx1113LY7Hokr87Gc/E/v37xdCCPHqq6+Ku+++u1qXuib47ne/\nK+644w7x67/+60IIIe666y5x8OBBIYQQX/jCF8Tjjz8uhoeHxR133CEsyxLJZFLccccdIp/P/yLD\nvqp45JFHxB/8wR8IIYSYnJwU+/btEx/72Mekz4vM448/Lj772c8KIYR4/vnnxcc+9jHpcxWwLEv8\n7u/+rnjf+94nTpw4IduMRSaXy4lf+ZVfmfW3xfK4alPZL7/8Mu9617sA2Lx5M6+//nq1LnVN0NnZ\nybe//W1E8em2N998k507dwJw44038swzz3D48GG2bduGYRiEw2E6Ozt56623fpFhX1XcdtttfOIT\nnwC8GR9d16XPVeCWW27hy1/+MgB9fX3U1NTwxhtvSJ8Xma997Wt86EMfoqGhAZBtxmJz9OhRstks\nH/3oR/nt3/5tXn311UXzuGqJOZVKzQzxATRNw3Xdal3uXzy33normqbN/C4uePw8FAqRTCZJpVJE\nIpFZf0+lUu9onFczwWBwxrNPfvKTfOpTn5pVZqXPi4emaezfv5/77ruP97///bI8LzKPPvoo8Xic\nvXv3Al57IT1eXAKBAB/96Ef53ve+x5e+9CU+/elPz/p/JR5X7R5zOBwmnU7P/O66Lqoq15otFhd6\nmUqliEajl3ieTqeJRqO/iPCuWgYGBvj4xz/Ohz/8Ye644w6+/vWvz/xP+ry4fPWrX2V0dJRf+7Vf\nw7Ksmb9Lnyvn0UcfRVEUnnnmGY4ePcr+/fuZmJiY+b/0uHKWL19OZ2fnzM+xWIwjR47M/L8Sj6uW\nKbdt28aTTz4JwKuvvsqaNWuqdalrknXr1nHw4EEAnnzySXbs2EFPTw8vvvgilmWRTCY5ceIE3d3d\nv+BIrx5GR0f5nd/5HX7v936PO++8E5A+V4Of/OQnPPjggwD4/X5UVWXjxo3S50XkoYce4sCBAxw4\ncIC1a9dy//33s3fvXunxIvLoo4/y1a9+FYChoSHS6TQ33HDDonhctRHze9/7Xp5++ml+4zd+A4Cv\nfOUr1brUNYWiKADs37+fz3/+89i2zcqVK7nttttQFIWPfOQj/OZv/iau63LPPfdgmuYvOOKrh+98\n5zskk0keeOABHnjgAQA+97nPcd9990mfF5HbbruN/fv381u/9VsUCgU+97nP0dXVJctzFVEURbYZ\ni8wHP/hBPvOZz/DhD38Y8HJcLBZbFI/lXtkSiUQikSwh5E1fiUQikUiWEDIxSyQSiUSyhJCJWSKR\nSCSSJYRMzBKJRCKRLCFkYpZIJBKJZAkhE7NEIpFIJEsImZglEolEIllC/F+7TeG0wFdqAwAAAABJ\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(test_output[3])" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([-1, -1, 0, ..., 0, -1, -1])" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_positions(test_output, 2)[:,1]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nmpqasm3btmzdujVjxozJokWL8ulPf3pkB38HPPjgg7nxxhuzcePGPPvss//zvvT396ejoyN79uxJ\nrVZLZ2dnJk6cONLfzhH15r169NFHs3DhwkydOjVJMm/evHzuc5876vdq3759WbFiRZ5//vns3bs3\nixYtysknn+y4OsDB9ul973tfFixYkGnTpiVxTP3LP//5z1x99dV55pln0tTUlFWrVqW5ufnIHVPV\nCPrtb39bLV++vKqqqtq9e3e1aNGikRznXaG/v7+aM2dOw30LFiyo7rvvvqqqquqaa66p7rzzzupv\nf/tbNXv27Grv3r1Vb29vNXv27Or1118fiZHfMT/72c+q2bNnVxdddFFVVUPbl1tuuaX6yU9+UlVV\nVd1xxx3V6tWrR+z7eCccuFfbtm2rbrnllobH2KuquvXWW6vrr7++qqqq+vvf/1596lOfqhYuXOi4\nOsDB9skxdXB33nlntWLFiqqqquree++tFi5ceESPqRE9nd7T05PW1tYkyRlnnJGHH354JMd5V3j8\n8cfz2muvZf78+bnsssuye/fuPProo/n4xz+eJGlra8s999yTP/7xj0fdNeqnTp2atWvXDl6zfyj7\n0tPTk7a2tiRJa2trdu3aNWLfxzvhwL16+OGHc/fdd+erX/1qrrrqqtTr9f/4dw6Opr367Gc/m29+\n85tJ3jgzOGbMGMfVQRxsnx555BHH1EGce+65ufbaa5Mkzz33XI4//vg88sgjR+yYGtGI9/X1DZ42\nTpLRo0dnYGBgBCcaeccee2zmz5+fm2++OatWrcrSpUsb1mu1Wnp7e9PX13fUXaP+M5/5TEaPHj14\nu3rTJQ7+27709fWlVqs1PPb/sgP36owzzsiyZcvyi1/8IieeeGLWrl37H//OwdG0V8cdd9zg9/2t\nb30r3/72txt+Bjmu3nDgPn3nO9/JjBkzHFP/wejRo7N8+fJcd911Of/884/oz6oRjfiB11kfGBjI\nqFFH92ftpk2bli984QuD/z7hhBPy8ssvD6739fVlwoQJh3WN+v9r3nysHGpfxo8f33D/0bhXs2bN\nGvzTwbNmzcpjjz1mr/6/v/71r7nssssyZ86czJ4923H1H7x5nz7/+c87pv6Lzs7O7NixI1dffXX2\n7t07eP9wH1MjWsyWlpZ0d3cnSXbv3p3p06eP5DjvCrfddls6OzuTJC+88ELq9Xo+8YlP5L777kuS\ndHd3Z+bMma5Rn+QjH/nI/7Qvp556asOx9q/HHk0uv/zyPPTQQ0mSe+65J6effrq9SvLSSy/l61//\nejo6OvKlL30piePqYA62T46pg/vVr36Vm266KUlyzDHHZNSoUTn99NOP2DE1opddraoqK1euHPxd\n7g033JAPfvCDIzXOu8L+/fvzve99L88//3ySpKOjIyeccEK+//3vZ9++fTn55JOzevXqNDU1paur\nK1u3bs3AwEAWLVqUWbNmjfD0R95f/vKXLF26NFu2bMkzzzzzP+9Lf39/li1blhdffDHNzc1Zs2ZN\nJk2aNNLfzhH15r16/PHHs2rVqowZMyaTJ0/Otddem1qtdtTv1erVq7Njx46GnztXXXVVrrvuOsfV\nmxxsn5YuXZrOzk7H1AH6+/uzfPnyvPTSS9m/f3+uuOKKnHTSSUfsZ5VrpwNAoY7uX0ADQMFEHAAK\nJeIAUCgRB4BCiTgAFErEAaBQIg4Ahfp/l/566ePKI2IAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(get_positions(test_output, 2)[:,1])" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "ename": "ValueError", "evalue": "operands could not be broadcast together with shapes (3000,2) (2000,2) ", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;31m#return [np.cumprod((pos*tar)[:,i] + 1) for i in range(pos.shape[1])]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 31\u001b[0;31m \u001b[0mget_equitycurve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mget_positions\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_output\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mget_target\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest_targ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 32\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[0;31m#plot(get_equitycurve(get_positions(test_output, 2), get_target(test_targ)))\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mget_equitycurve\u001b[0;34m(pos, tar)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0mrets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mpos\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mtar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 21\u001b[0m \u001b[0meq\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcumprod\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpos\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mtar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mls\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0meq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: operands could not be broadcast together with shapes (3000,2) (2000,2) " ] } ], "source": [ "pb_number = 2\n", "\n", "def get_positions(output, ds):\n", " ordered = np.concatenate([x.reshape(-1, 25, pb_number*ds) for x in test_output], 1).reshape(-1,pb_number*ds)\n", " ls = []\n", " for i in range(ds):\n", " ls.append(np.argmax(ordered[:,i*pb_number:(i+1)*pb_number], 1)-1)\n", " return np.concatenate([x.reshape([-1,1]) for x in ls],1)\n", " #return np.argmax(np.concatenate(output), 1)-1\n", " #return np.argmax(np.concatenate([x.reshape(-1, 25, 3*2) for x in output], 1).reshape(-1,3*2), 1)-1\n", "\n", "def get_target(targ):\n", " #return np.concatenate([(x.reshape(-1)) for x in test_targ])\n", " return np.concatenate(targ, 1).reshape(-1,2)\n", "\n", "def get_equitycurve(pos, tar):\n", " ls = []\n", " ks = []\n", " for i in range(pos.shape[1]):\n", " rets = (pos*tar)[:,i]\n", " eq = np.cumprod((pos*tar)[:,i] + 1)\n", " ls.append(eq)\n", " ks.append(rets)\n", " plot(eq)\n", " show()\n", " plot(np.cumprod(np.sum(ks,0)+1))\n", " return \n", " \n", " #return [np.cumprod((pos*tar)[:,i] + 1) for i in range(pos.shape[1])]\n", "\n", "get_equitycurve(get_positions(test_output, 2), get_target(test_targ))\n", "\n", "#plot(get_equitycurve(get_positions(test_output, 2), get_target(test_targ)))" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'eq' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0meq\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'eq' is not defined" ] } ], "source": [ "plot(eq[1])" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'pos' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpos\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m125\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'pos' is not defined" ] } ], "source": [ "plot(pos[100:125])" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ]" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x=0\n", "n = 6\n", "plot(test_output[0][25:50].reshape(-1,3))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 229, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 229, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQhPz/wO9iAfDrqR70gAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(np.cumprod((np.argmax(test_output[0],1)-1) * test_targ[0].reshape(-1)+1))" ] }, { "cell_type": "code", "execution_count": 214, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(500, 3)" ] }, "execution_count": 214, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_output[0].shape" ] }, { "cell_type": "code", "execution_count": 218, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([ -2.59504002e-03, 3.88248474e-03, 2.96951691e-03,\n", " -7.44601479e-03, 1.69992819e-02, 1.69177400e-03,\n", " 4.70721256e-03, 1.32415968e-03, -4.01590280e-02,\n", " 2.00323318e-03, -3.64963547e-03, 2.90904660e-03,\n", " -4.37630061e-03, 1.27090258e-03, 1.45425892e-03,\n", " -3.45899235e-03, 3.80993495e-03, -5.28141344e-03,\n", " 1.28622735e-02, -3.66948894e-04, 6.60424680e-03,\n", " 4.61680628e-03, 1.05751613e-02, 1.51884034e-02,\n", " -1.54226488e-02, 1.00798355e-02, -2.50318591e-02,\n", " 9.31291468e-03, 3.40505913e-02, 3.13581303e-02,\n", " 2.90240673e-03, 1.85849052e-02, 3.35386321e-02,\n", " -5.90179348e-03, 3.98970395e-03, 1.46088153e-02,\n", " 1.41081400e-02, -3.39558572e-02, -1.40747463e-03,\n", " 1.35862939e-02, 4.98695113e-03, 6.89071193e-02,\n", " 2.02545281e-02, 4.85024862e-02, 2.28412598e-02,\n", " 4.76054214e-02, 1.52649088e-02, -6.07902650e-03,\n", " -1.41994311e-02, -6.94071725e-02, 1.44857559e-02,\n", " -1.02400750e-01, -3.42222117e-02, -6.44606585e-03,\n", " 5.84969968e-02, 1.17914136e-02, 4.40568626e-02,\n", " -2.83245016e-02, -1.12978511e-01, -7.55034992e-03,\n", " -1.41549092e-02, 1.14942668e-02, -2.15946753e-02,\n", " 3.41463201e-02, 7.57577177e-03, -5.51316328e-03,\n", " 1.47617059e-02, 3.63869853e-02, -1.28831351e-02,\n", " -2.80701462e-02, -2.51706913e-02, -4.49438319e-02,\n", " 3.18599096e-03, -3.59566044e-03, 1.95063446e-02,\n", " 2.92171314e-02, -1.30606899e-02, -1.56950857e-02,\n", " -5.29801659e-02, 4.71703103e-03, -6.31918060e-03,\n", " -2.61643101e-02, 6.68026805e-02, -4.20764834e-02,\n", " -6.55479804e-02, 7.08661154e-02, 1.05932206e-02,\n", " 3.74730583e-03, 3.49274538e-02, 1.51447728e-01,\n", " -3.34646031e-02, 1.09206326e-01, -1.86742663e-01,\n", " -2.40240246e-01, 3.09927091e-02, 9.99559183e-04,\n", " 5.15257046e-02, -2.37341747e-02, -3.81246470e-02,\n", " 1.19106695e-01, -2.81690117e-02, 5.20548299e-02,\n", " -8.67059268e-03, -1.14612589e-02, -1.07648715e-01,\n", " -1.02302041e-02, 1.51898727e-01, -1.01492584e-01,\n", " 2.16802955e-02, 3.32409404e-02, 1.23209193e-01,\n", " 4.90195863e-02, 1.37457058e-01, 2.23107591e-01,\n", " -9.74359140e-02, -2.14953303e-01, 3.07692271e-02,\n", " 2.38095205e-02, 3.90243948e-01, 1.99999988e-01,\n", " -1.66666657e-02, 7.37704411e-02, 9.73451659e-02,\n", " -9.80397034e-03, -1.94174722e-02, 3.71747166e-02,\n", " -7.33590499e-02, -5.03597818e-02, -8.56164098e-02,\n", " 4.41640653e-02, 3.30027984e-03, 7.61589780e-02,\n", " 5.01792058e-02, -5.66037856e-02, 1.07142664e-02,\n", " 1.44405039e-02, 1.46519765e-02, -1.04089245e-01,\n", " -8.41750875e-02, 2.48447489e-02, -9.55415517e-03,\n", " -3.15452600e-03, -2.20126249e-02, -1.01538435e-01,\n", " -6.14525378e-02, -1.31578799e-02, -2.33766604e-02,\n", " 6.34517521e-02, -7.85907060e-02, -2.01005004e-02,\n", " 3.78378890e-02, 3.08988318e-02, 7.24637732e-02,\n", " -6.24999925e-02, -5.88238193e-03, 2.33917814e-02,\n", " 1.49700725e-02, -1.82370488e-02, -1.19403275e-02,\n", " 5.89970406e-03, 1.48368087e-02, 3.01212375e-03,\n", " -2.71903761e-02, -3.82352769e-02, -3.11615430e-02,\n", " -2.74721067e-03, 1.64382998e-02, -1.11419754e-02,\n", " 3.03029865e-02, 5.68184629e-03, -2.85709929e-03,\n", " 2.56409533e-02, -3.50877456e-02, 2.25989521e-02,\n", " 5.49132191e-02, 0.00000000e+00, -2.11639926e-02,\n", " -4.14508544e-02, 1.49254464e-02, 2.77777389e-02,\n", " -1.81818567e-02, -1.02040032e-02, 4.29292023e-02,\n", " 3.95778455e-02, -2.19779909e-02, -4.03225906e-02,\n", " -7.75192399e-03, 5.12823043e-03, 0.00000000e+00,\n", " -2.83505786e-02, 0.00000000e+00, 7.51888426e-03,\n", " -1.26262745e-02, -2.49382830e-03, 1.99004952e-02,\n", " 1.26903411e-02, 2.82776952e-02, -4.23280932e-02,\n", " -1.52283991e-02, 6.75000325e-02, 0.00000000e+00,\n", " 4.79616271e-03, -4.81927674e-03, -4.79618693e-03,\n", " -3.34128365e-02, -3.69515456e-02, 1.11358445e-02,\n", " 3.15315723e-02, -2.79069971e-02, 1.35747045e-02,\n", " 1.60549860e-02, -6.99299434e-03, 2.31481455e-02,\n", " 7.10899197e-03, -2.62529440e-02, 6.97670830e-03,\n", " 2.10773405e-02, 1.91387311e-02, -1.70731805e-02,\n", " 1.43885361e-02, -9.73240845e-03, -1.20481793e-02,\n", " -2.38095224e-02, -2.79069971e-02, -6.78731827e-03,\n", " 2.17870390e-03, 4.36683372e-03, 6.57893578e-03,\n", " -4.41503292e-03, 1.09890206e-02, 1.55555652e-02,\n", " 2.25730194e-03, 0.00000000e+00, -2.48868410e-02,\n", " -8.83006584e-03, 4.37638909e-03, 6.59339502e-03,\n", " 2.21244502e-03, 0.00000000e+00, -1.77384485e-02,\n", " 0.00000000e+00, 2.17865109e-02, -6.68150233e-03,\n", " 0.00000000e+00, 8.84957891e-03, -8.92859325e-03,\n", " 2.30088774e-02, -9.05829016e-04, 2.89593358e-02,\n", " 1.16495918e-02, -1.25692999e-02, -4.38116603e-02,\n", " -1.39908856e-02, 4.41531837e-02, 2.81486567e-02,\n", " 5.23579568e-02, 6.11285865e-02, -4.25709821e-02,\n", " -6.96557313e-02, -1.01048052e-02, 3.96442860e-02,\n", " -3.78086194e-02, 4.75835986e-02, 9.79703739e-02,\n", " -5.53872250e-02, -1.31201297e-02, -5.30150458e-02,\n", " 5.34204915e-02, -7.55176991e-02, -5.09626269e-02,\n", " -4.88505848e-02, 5.34247085e-02, -2.74964049e-02,\n", " 1.65492818e-02, -6.98173866e-02, 2.99760066e-02,\n", " -1.08157787e-02, 1.10058226e-02, -1.79289375e-02,\n", " -1.67020801e-02, 4.77895886e-03, -2.43097395e-02,\n", " 8.79066996e-04, 1.23166433e-02, 4.63183485e-02,\n", " -3.48693281e-02, -2.28639673e-02, -5.88238053e-03,\n", " -2.63159699e-03, -6.29921183e-02, 3.40192579e-02,\n", " -3.01051326e-02, -1.15797492e-02, -1.30825741e-02,\n", " -2.44822185e-02, 7.35301198e-03, 2.38094479e-02,\n", " -6.23304723e-03, -8.07970297e-03, 1.73658021e-02,\n", " 5.86080458e-03, 3.68452806e-04, 1.29008247e-02,\n", " 2.20395997e-02, -4.66004014e-02, -4.23357673e-02,\n", " -1.15546361e-02, 1.03839755e-03, 0.00000000e+00,\n", " -1.38598087e-03, 4.15222254e-03, 3.47467110e-04,\n", " 1.04276370e-03, -2.78357067e-03, -7.28664733e-03,\n", " -3.27247232e-02, -2.50166692e-02, 7.80994073e-03,\n", " 2.95178834e-02, -8.11086409e-03, 4.69324272e-03,\n", " 1.17885014e-02, -1.94273982e-02, 8.69276747e-03,\n", " -2.02359585e-03, 2.35518324e-04, 9.89161059e-03,\n", " -1.87916346e-02, 1.14406003e-02, 2.83418410e-03,\n", " -8.28987733e-03, 2.11416534e-03, 2.91901696e-02,\n", " -1.01842564e-02, -2.88042123e-03, -5.74441720e-03,\n", " -1.85625628e-02, -2.57011503e-03, 1.32836048e-02,\n", " 4.25132364e-03, 4.98098601e-03, -5.24555845e-03,\n", " -2.03985013e-02, 1.88284852e-02, -1.68206487e-02,\n", " -3.02891503e-03, 4.18119458e-03, 4.43196855e-03,\n", " -1.10122003e-02, -2.78099049e-02, -2.84436764e-03,\n", " -1.31685026e-02, 9.59807727e-03, 3.29092853e-02,\n", " 2.15031952e-02, 3.05099115e-02, -3.43310162e-02,\n", " -1.29787168e-02, -1.40726352e-02, 6.42082235e-03,\n", " -5.83695108e-03, 2.07249983e-03, 9.96890571e-03,\n", " -1.80407073e-02, -2.03997809e-02, -1.39337434e-02,\n", " 1.15514630e-02, -8.26114137e-03, -1.53876953e-02,\n", " -1.96811706e-02, -3.86022468e-04, 7.71766412e-04,\n", " -1.73778366e-02, 6.45283842e-03, -1.24164540e-02,\n", " 7.81703275e-03, -1.89087708e-02, -1.31451963e-02,\n", " -1.67907123e-02, 5.25433291e-03, -7.54594686e-04,\n", " 2.45054089e-03, 5.66890463e-03, 9.31202341e-03,\n", " 1.72645552e-03, 1.88316554e-02, -8.42147693e-03,\n", " -1.20411506e-02, 7.10033579e-03, 1.99072957e-02,\n", " -3.94402072e-03, -1.17857184e-03, 1.37333910e-03,\n", " 4.12580185e-03, -2.50542685e-02, 1.53960939e-03,\n", " -6.36078324e-03, -3.83070856e-03, -3.81607097e-04,\n", " 1.52586529e-03, 2.92280177e-03, 6.28111535e-04,\n", " 1.15231285e-02, 1.73802339e-02, -7.33389985e-03,\n", " -9.42180492e-03, 3.18194856e-03, -5.95868006e-03,\n", " -3.17321881e-03, 6.32642629e-03, 1.27334092e-02,\n", " 1.71973300e-03, -7.10598100e-03, 4.70389472e-03,\n", " -6.44466421e-03, -6.18997356e-03, -3.18205520e-03,\n", " -5.92087908e-03, 5.25540859e-03, 8.45318835e-04,\n", " -6.13367744e-03, -3.99408350e-03, -9.00335982e-03,\n", " 6.43280754e-03, -1.56641454e-02, 1.93190333e-02,\n", " -2.47708391e-02, 2.66463906e-02, 2.01407671e-02,\n", " 4.19077044e-03, -3.14629339e-02, 3.47775742e-02,\n", " -1.40902121e-03, -6.43214490e-03, -9.18712933e-03,\n", " -1.46447904e-02, 1.11175980e-02, -1.40039362e-02,\n", " -7.58606056e-03, 4.05404437e-03, -1.64760407e-02,\n", " -4.00462467e-03, -9.68844164e-03, -7.14953290e-03,\n", " 1.12082832e-03, 5.23661450e-03, -1.56044625e-02,\n", " 5.55330829e-04, 4.44530137e-03, -2.60464917e-03,\n", " -2.79383897e-03, 2.22879928e-03, 2.49441527e-02,\n", " -1.14547303e-02, 9.43752378e-03, 1.02896634e-02,\n", " 1.07816188e-02, 3.69799021e-03, 3.71163758e-03,\n", " -1.25490064e-02, 2.32375204e-03, -1.94097043e-03,\n", " -4.64938255e-03, 4.62786574e-03, 1.93721033e-03,\n", " -7.18164910e-03, -4.62520961e-03, -5.75483218e-03,\n", " -4.38678684e-03, -1.32928521e-03, -9.10296291e-03,\n", " -1.52227273e-02, 1.75860897e-02, -2.44960329e-03,\n", " 1.35338418e-02, 3.12669948e-02, 6.08208738e-02,\n", " 9.13783628e-03, -4.81154248e-02, -2.21882220e-02,\n", " 2.99400999e-03, -3.75377014e-03, 4.74944152e-02,\n", " -1.59010887e-02, -7.72965723e-04, 2.31704991e-02,\n", " -2.09527835e-02, 1.49080437e-02, -3.73423472e-03,\n", " -5.87409013e-04, 2.34831544e-03, -2.00078525e-02,\n", " -1.13461660e-02, 1.78740900e-02, 2.63310950e-02,\n", " -8.35153554e-03, 6.50756806e-03, 5.16081462e-03,\n", " 1.97525416e-02, -2.89028697e-02], dtype=float32)" ] }, "execution_count": 218, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_targ[0].reshape(-1)" ] }, { "cell_type": "code", "execution_count": 217, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[-0.00259504],\n", " [ 0.00388248],\n", " [ 0.00296952],\n", " [-0.00744601],\n", " [ 0.01699928],\n", " [ 0.00169177],\n", " [ 0.00470721],\n", " [ 0.00132416],\n", " [-0.04015903],\n", " [ 0.00200323],\n", " [-0.00364964],\n", " [ 0.00290905],\n", " [-0.0043763 ],\n", " [ 0.0012709 ],\n", " [ 0.00145426],\n", " [-0.00345899],\n", " [ 0.00380993],\n", " [-0.00528141],\n", " [ 0.01286227],\n", " [-0.00036695],\n", " [ 0.00660425],\n", " [ 0.00461681],\n", " [ 0.01057516],\n", " [ 0.0151884 ],\n", " [-0.01542265]], dtype=float32)" ] }, "execution_count": 217, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_targ[0][0]" ] }, { "cell_type": "code", "execution_count": 206, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([-0.00259504, 0.00388248, 0.00296952, -0.00744601, 0.01699928,\n", " 0.00169177, 0.00470721, 0.00132416, -0.04015903, 0.00200323,\n", " -0.00364964, 0.00290905, -0.0043763 , 0.0012709 , 0.00145426,\n", " -0.00345899, 0.00380993, -0.00528141, 0.01286227, -0.00036695,\n", " 0.00660425, 0.00461681, 0.01057516, 0.0151884 , -0.01542265], dtype=float32)" ] }, "execution_count": 206, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_targ[0][0].reshape(-1)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 137, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(test_inp[0][0])" ] }, { "cell_type": "code", "execution_count": 138, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 138, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(test_targ[0][0])" ] }, { "cell_type": "code", "execution_count": 167, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[-0.50313473, -9.14566231, 0.35615453],\n", " [-0.37630498, -7.11112261, -0.70588076],\n", " [-0.37363619, -7.10911226, -0.7056942 ],\n", " [-0.37376261, -7.10809135, -0.70627677],\n", " [-0.37625742, -7.13504505, -0.69292498],\n", " [-0.37384361, -7.10783291, -0.70645559],\n", " [-0.37367171, -7.107337 , -0.7067076 ],\n", " [-0.3738786 , -7.10826683, -0.70620131],\n", " [-0.3762539 , -7.13502169, -0.69293654],\n", " [-0.37384126, -7.10775185, -0.70650387],\n", " [-0.37365335, -7.1073513 , -0.70669627],\n", " [-0.37384212, -7.10807276, -0.70630753],\n", " [-0.37625468, -7.13503265, -0.69293034],\n", " [-0.37382513, -7.10767174, -0.70654678],\n", " [-0.37368315, -7.1073904 , -0.70667815],\n", " [-0.37379837, -7.10780811, -0.70645642],\n", " [-0.37611288, -7.13384342, -0.69351137],\n", " [-0.3738367 , -7.10773849, -0.70650995],\n", " [-0.3736918 , -7.10737848, -0.70668697],\n", " [-0.37380508, -7.10784388, -0.70643675],\n", " [-0.37624282, -7.13494444, -0.69297278],\n", " [-0.37383717, -7.10773134, -0.70651484],\n", " [-0.37368673, -7.10735941, -0.70669711],\n", " [-0.3738032 , -7.10783863, -0.70643926],\n", " [-0.37602016, -7.13306904, -0.69388962]], dtype=float32)" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_output[0][:25,]" ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nEREbUxAQEbExBQERERtTEEgzzRwQkXRSEBARsTEFARERG1MQEBGxMQUBEREbUxBIk7ycLACys/Qn\nEJH0SXgVUWNMAfAnoBSoBs6zLKsiwnlO4FXgH5ZlPdrahHY2l50+hhfe+oRvHndoupMiIjaWzGXo\n5cAay7JmAM8AP41y3u1AN7RgZkT9ehZx1TfH0a1LXrqTIiI2lkwQmAYs8N5eAMwKP8EY822gyfu4\nhsKLiGSoFpuDjDEXAteEHd4F7PPerga6hj1nLDAH+DZwa2qSKSIibaHFIGBZ1jxgXvAxY8wLQLH3\nbjFQFfa07wEDgIXAEOCgMWarZVlvtPRepaXFLT3cISX7mTpjXiRLeRGgvAhQXqROMttLLgFOBVYA\npwCLgx+0LOtG321jzK3AzlgBAKC8vDqJpGS2ZD5TaWlxp8yLZCgvApQXAcqLgFQEw2SCwMPA08aY\nt4F64GwAY8y1wGbLsl5udapERKRdJBwELMuqA86KcPy+CMd+kWS6RESkHWimkoiIjSkIiIjYmIKA\niIiNKQiIiNiYgoCIiI0pCIiI2JiCgIiIjSkIiIjYmIKAiIiNKQiIiNiYgoCIiI0pCIiI2JiCgIiI\njSkIiIjYmIKAiIiNKQiIiNiYgoCIiI0pCIiI2JiCgIiIjSkIiIjYmIKAiIiNKQiIiNiYgoCIiI0p\nCIiI2JiCgIiIjSkIiIjYmIKAiIiNKQiIiNiYgoCIiI0pCIiI2JiCgIiIjSkIiIjYmIKAiIiNKQiI\niNiYgoCIiI0pCIiI2Fh2ok8wxhQAfwJKgWrgPMuyKsLOOQX4uffuCsuy/q+1Ce1ITj56MF275KY7\nGSIiMSVTE7gcWGNZ1gzgGeCnwQ8aY4qBu4GvWpY1FdhhjCltdUo7kLNOGM5JRw9OdzJERGJKJghM\nAxZ4by8AZoU9fgywFrjXGLMY2GlZVnnySRQRkbbSYnOQMeZC4Jqww7uAfd7b1UDXsMd7ATOBw4Ea\n4G1jzHuWZW1qfXJFRCSVWgwClmXNA+YFHzPGvAAUe+8WA1VhT6vA0w9Q5j1/MTABUBAQEckwCXcM\nA0uAU4EVwCnA4rDHVwNjjTE9gb3AFOCxGK/pKC0tjnGKfSgvApQXAcqLAOVF6iQTBB4GnjbGvA3U\nA2cDGGOuBTZblvWyMeZm4HXv+X+zLOvjlKRWRERSyuF2u9OdBhERSRNNFhMRsTEFARERG1MQEBGx\nMQUBEREbS2Z0UMoYY5zAQ8B4PCONLrIsa0s609QejDGr8AyfBfgEuAN4CnABHwFXWpblNsZcDFwC\nNAK3W5b1ahqS2yaMMZOBOy3LmmmMGU6cnz+etas6mrC8mAi8TGBezUOWZc3v7HlhjMkBngAOAfKA\n24H12PB7ESUvtgOvABu9p6Xse5HumsAZQK5lWccANwFz05yeNmeMyQewLGum99+FwL3ALd71mBzA\n6caYvsDVeJbhOAm4wxjTKValM8bcADyO5wsOiX3+Fteu6mgi5MWRwL1B34/5NsmLc4By72c5GXgQ\nT3lgx+9FpLw4ApjbFt+LtNYECFqHyLKsZcaYSWlOT3s4HCg0xryOJ/9/AhxhWZZv0t1rwIlAE7DE\nsqwGoMEYsxlPjWllGtKcapuBbwLPeu8n8vmnAXd5z10A/KzdUt02wvPiSGCkMeZ0PLWBa4Cj6fx5\nMR943nvbCTRg3+9FpLw4EjBt8b1Id02ghMA6RABN3iaizqwGuMeyrJOAy4A/hz3uW4+phECTUfDx\nDs+yrBfxVF99HEG3Y33+4O9Mh8+TCHmxDLjOsqzj8DQV3opneZZOnReWZdVYlrXfuwrxfDxXr8Fl\ngW2+FxHy4ifActroe5HuAncfgXWIAJyWZbnSlZh2shFvwe9dVG830Cfo8RI86zGF500xUNlOaWxv\nwX/zlj5/+PFIa1d1dC9ZlrXadxuYiE3ywhgzCFgIPGNZ1nPY+HsRlhd/pQ2/F+kOAr51iDDGTAE+\nTG9y2sX5ePs+jDH98fyR3jDGHOd93Lce03LgWGNMnjGmKzAKT+dYZ7Q6gc/v/84Qee2qjm6BMeYo\n7+1ZeJr/On1eGGP6AG8AN1iW9ZT3sC2/F1Hyos2+F+nuE3gJmG2MWeK9f346E9NO5gFPeldXBc9n\n3g087u3U+Rh43jsK4vfA23iC9S2WZR1MS4rbjm/Nkh8T3+evN8ZEXLuqE/DlxWXAg8aYBmAncIm3\naaCz58UteJotfm6M8e1K+EPg9zb8XkTKi2uA+9rie6G1g0REbCzdzUEiIpJGCgIiIjamICAiYmMK\nAiIiNqYgICJiYwoCIiI2piAgImJjCgIiIjb2/+lObKiK2ScIAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(rets)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [], "source": [ "inv = test_output[0][25*x*1:25*1*(x+1)].reshape(-1,6)" ] }, { "cell_type": "code", "execution_count": 235, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(150, 6)" ] }, "execution_count": 235, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_output[0][0:25*6].reshape(-1,6).shape" ] }, { "cell_type": "code", "execution_count": 256, "metadata": { "collapsed": false }, "outputs": [ { "ename": "AttributeError", "evalue": "'module' object has no attribute 'mul'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmul\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: 'module' object has no attribute 'mul'" ] } ], "source": [ "np.mul(inv[:,:])" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ -6.98216486, -6.98215246, -6.98232746, -6.98221302,\n", " -6.98204231, -6.98219585, -6.98207426, -6.98217106,\n", " -6.98215723, -6.98219633, -6.98216343, -6.98217678,\n", " -6.98221302, -6.98215961, -6.98213148, -6.9821701 ,\n", " -6.98215151, -6.98215818, -6.98216295, -6.98211956,\n", " -14.57940769, -14.57942486, -14.57956505, -14.57947636, -14.57931995], dtype=float32)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(inv,1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.4.4" } }, "nbformat": 4, "nbformat_minor": 0 }