{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Application of Machine Learning Techniques to Trading" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This post is inspired by our observations of some common caveats and pitfalls during the competition when trying to apply ML techniques to trading problems.\n", "Let’s look into how we can use ML to create a trade signal by data mining." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import scipy\n", "import sklearn\n", "import numpy as np\n", "import pandas as pd\n", "from datetime import datetime, timedelta\n", "import matplotlib.pyplot as plt\n", "import os" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To setup an ML framework, We create features which could have some predictive power (X), a target variable that we’d like to predict(Y) and use historical data to train a ML model that can predict Y as close as possible to the actual value. Finally, we use this model to make predictions on new data where Y is unknown." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 1: Setup your problem\n", "\n", "We're going to use a problem from Auquan for demo.\n", "We are going to create a prediction model that predicts future expected value of basis, where:\n", "\n", "$basis$ = Price of Stock - Price of Future\n", "\n", "$basis_t=S_t−F_t$\n", "\n", "$Y$ = future expected value of basis = $Average(basis_{(t+1)}, basis_{(t+2)}, basis_{(t+3)},basis_{(t+4)},basis_{(t+5)})$\n", "\n", "*Note Y(t) will only be known during a backtest, but when using our model live, we won’t know Price(t+1) at time t. We make a prediction Y(Predicted,t) using our model and compare it with actual value only at time t+1. **This means you cannot use Y as a feature in your predictive model)** *\n", "\n", "Since this is a regression problem, we will evaluate the model on RMSE. We’ll also use Total Pnl as an evaluation criterion\n", "\n", "$RMSE = \\sqrt{\\sum{(Y_{actual} - Y_{predicted})^2} / n} $\n", "\n", "Our Objective: Create a model so that predicted value is as close as possible to Y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 2: Collect Reliable Data\n", "\n", "We are using the folliwing data for our stock at minute interval data for trading days over one months(~8000 data points):\n", "Stock Bid Price, Ask Price, Bid Volume, Ask Volume \n", "Future Bid Price, Ask Price, Bid Volume, Ask Volume\n", "$Stock VWAP = {Bid Price*Ask Volume + Ask Price*Bid Volume}/(Ask Volume + Bid Volume)$\n", "Future VWAP\n", "\n", "Data is already cleaned for Dividends, Splits, Rolls" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from backtester.dataSource.csv_data_source import CsvDataSource" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Auquan's Toolbox has downloaded and loaded the data into a dictionary of dataframes for you. We now need to prepare the data in a format we like.\n", "Let's first check if the data has loaded properly and the columns in data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we load data in a format we like\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing data for stock: MQK\n" ] } ], "source": [ "# Load the data\n", "cachedFolderName = '/data/'\n", "dataSetId = 'trainingData1'\n", "startDate = '2017/01/06'\n", "endDate = '2017/02/09'\n", "instrumentIds = ['MQK']\n", "downloadUrl = 'https://github.com/Auquan/auquan-historical-data/raw/master/qq2Data'\n", "\n", "ds = CsvDataSource(cachedFolderName='historicalData/',\n", " dataSetId=dataSetId,\n", " instrumentIds=instrumentIds,\n", " downloadUrl = downloadUrl,\n", " timeKey = 'datetime',\n", " timeStringFormat = '%Y-%m-%d %H:%M:%S',\n", " startDateStr=startDate,\n", " endDateStr=endDate,\n", " liveUpdates=False,\n", " pad=True)\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "#Loading our data\n", "def loadData(ds, id):\n", " data = ds._bookDataByInstrument[id].getBookData()\n", "\n", " data['Stock Price'] = (data['stockTopBidPrice'] +\\\n", " data['stockTopAskPrice']) / 2.0\n", " data['Future Price'] = (data['futureTopBidPrice'] +\\\n", " data['futureTopAskPrice']) / 2.0\n", " data['Y(Target)'] = data['basis'].shift(-5)\n", " del data['benchmark_score']\n", " del data['FairValue']\n", " return data\n", "\n", "data = loadData(ds,instrumentIds[0])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " stockVWAP futureVWAP basis stockTopBidVol \\\n", "2017-01-06 09:17:00 517.773 512.492 5.425 79.0 \n", "2017-01-06 09:18:00 515.300 510.682 4.425 40.0 \n", "2017-01-06 09:19:00 516.225 511.342 4.950 81.0 \n", "2017-01-06 09:20:00 519.792 513.959 5.650 179.0 \n", "2017-01-06 09:21:00 520.270 513.819 6.400 68.0 \n", "2017-01-06 09:22:00 524.792 519.118 5.625 2299.0 \n", "\n", " stockTopAskVol stockTopBidPrice stockTopAskPrice \\\n", "2017-01-06 09:17:00 79.0 518.00 518.30 \n", "2017-01-06 09:18:00 10.0 515.05 515.30 \n", "2017-01-06 09:19:00 1496.0 516.20 516.45 \n", "2017-01-06 09:20:00 1940.0 519.65 519.95 \n", "2017-01-06 09:21:00 93.0 520.45 520.60 \n", "2017-01-06 09:22:00 4924.0 524.60 525.00 \n", "\n", " futureTopBidVol futureTopAskVol futureTopBidPrice ... \\\n", "2017-01-06 09:17:00 4000.0 2000.0 512.60 ... \n", "2017-01-06 09:18:00 2000.0 4000.0 510.65 ... \n", "2017-01-06 09:19:00 2000.0 2000.0 511.25 ... \n", "2017-01-06 09:20:00 2000.0 2000.0 514.05 ... \n", "2017-01-06 09:21:00 2000.0 6000.0 513.85 ... \n", "2017-01-06 09:22:00 2000.0 2000.0 519.00 ... \n", "\n", " stockTotalAskVol futureTotalBidVol futureTotalAskVol \\\n", "2017-01-06 09:17:00 2780.0 12000.0 12000.0 \n", "2017-01-06 09:18:00 1756.0 10000.0 24000.0 \n", "2017-01-06 09:19:00 3010.0 10000.0 14000.0 \n", "2017-01-06 09:20:00 3530.0 10000.0 12000.0 \n", "2017-01-06 09:21:00 2128.0 12000.0 24000.0 \n", "2017-01-06 09:22:00 5890.0 10000.0 12000.0 \n", "\n", " stockAverageBidPrice stockAverageAskPrice \\\n", "2017-01-06 09:17:00 517.493 518.654 \n", "2017-01-06 09:18:00 514.919 515.708 \n", "2017-01-06 09:19:00 515.986 516.488 \n", "2017-01-06 09:20:00 519.549 520.079 \n", "2017-01-06 09:21:00 520.022 520.756 \n", "2017-01-06 09:22:00 524.558 525.054 \n", "\n", " futureAverageBidPrice futureAverageAskPrice \\\n", "2017-01-06 09:17:00 512.000 513.142 \n", "2017-01-06 09:18:00 510.340 511.283 \n", "2017-01-06 09:19:00 511.050 511.650 \n", "2017-01-06 09:20:00 513.470 514.650 \n", "2017-01-06 09:21:00 513.392 514.775 \n", "2017-01-06 09:22:00 518.740 519.592 \n", "\n", " Stock Price Future Price Y(Target) \n", "2017-01-06 09:17:00 777.150 769.025 5.625 \n", "2017-01-06 09:18:00 772.700 766.075 5.400 \n", "2017-01-06 09:19:00 774.425 767.000 5.450 \n", "2017-01-06 09:20:00 779.625 771.175 5.175 \n", "2017-01-06 09:21:00 780.750 771.050 5.050 \n", "2017-01-06 09:22:00 787.100 778.675 5.225 \n", "\n", "[6 rows x 30 columns]\n" ] } ], "source": [ "print(data.head(6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 3: Split Data\n", "\n", "For this problem we have three datasets available, we will use one as training set, second as validation set and the third as our test set" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing data for stock: MQK\n", "Processing data for stock: MQK\n", "Processing data for stock: MQK\n" ] } ], "source": [ "# Training Data\n", "dataSetId = 'trainingData1'\n", "ds_training = CsvDataSource(cachedFolderName='historicalData/',\n", " dataSetId=dataSetId,\n", " instrumentIds=instrumentIds,\n", " downloadUrl = downloadUrl,\n", " timeKey = 'datetime',\n", " timeStringFormat = '%Y-%m-%d %H:%M:%S',\n", " liveUpdates=False,\n", " pad=True)\n", "\n", "training_data = loadData(ds_training, instrumentIds[0])\n", "\n", "# Validation Data\n", "dataSetId = 'trainingData2'\n", "ds_validation = CsvDataSource(cachedFolderName='historicalData/',\n", " dataSetId=dataSetId,\n", " instrumentIds=instrumentIds,\n", " downloadUrl = downloadUrl,\n", " timeKey = 'datetime',\n", " timeStringFormat = '%Y-%m-%d %H:%M:%S',\n", " liveUpdates=False,\n", " pad=True)\n", "validation_data = loadData(ds_validation, instrumentIds[0])\n", "\n", "# Test Data\n", "dataSetId = 'trainingData3'\n", "ds_test = CsvDataSource(cachedFolderName='historicalData/',\n", " dataSetId=dataSetId,\n", " instrumentIds=instrumentIds,\n", " downloadUrl = downloadUrl,\n", " timeKey = 'datetime',\n", " timeStringFormat = '%Y-%m-%d %H:%M:%S',\n", " liveUpdates=False,\n", " pad=True)\n", "out_of_sample_test_data = loadData(ds_test, instrumentIds[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Preparing Data\n", "\n", "We add the target variable $Y$, defined as average of next five values of basis " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def prepareData(data, period):\n", " data['Y(Target)'] = data['basis'].rolling(period).mean().shift(-period)\n", " if 'FairValue' in data.columns:\n", " del data['FairValue']\n", " data.dropna(inplace=True)\n", "\n", "period = 5\n", "prepareData(training_data, period)\n", "prepareData(validation_data, period)\n", "prepareData(out_of_sample_test_data, period)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 4: Feature Engineering\n", "\n", "Let's try to create some features that may have some predictive power on our data.\n", "\n", "*** The golden rule of feature selection is that the predictive power should come from primarily from the features and not from the model. You will find that the choice of features has a far greater impact on performance than the choice of model. *\n", "\n", "We shouldn't randomly choose a very large set of features without exploring relationship with target variable, because little or no relationship with target variable will likely lead to overfitting.\n", "The features might be highly correlated with each other, in that case a fewer number of features will explain the target just as well.\n", "\n", "For this first iteration, we create a large number of features, using a mix of parameters. Later we will try to see if can reduce the number of features\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def difference(dataDf, period):\n", " return dataDf.sub(dataDf.shift(period), fill_value=0)\n", "\n", "def ewm(dataDf, halflife):\n", " return dataDf.ewm(halflife=halflife,ignore_na=False,min_periods=0,adjust=True).mean()\n", "\n", "def rsi(data, period):\n", " data_upside = data.sub(data.shift(1), fill_value=0)\n", " data_downside = data_upside.copy()\n", " data_downside[data_upside > 0] = 0\n", " data_upside[data_upside < 0] = 0\n", " avg_upside = data_upside.rolling(period).mean()\n", " avg_downside = - data_downside.rolling(period).mean()\n", " rsi = 100 - (100 * avg_downside / (avg_downside + avg_upside))\n", " rsi[avg_downside == 0] = 100\n", " rsi[(avg_downside == 0) & (avg_upside == 0)] = 0\n", "\n", " return rsi" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def create_features_again(data):\n", " basis_X = pd.DataFrame(index = data.index, columns = [])\n", " \n", " basis_X['mom10'] = difference(data['basis'],11)\n", " \n", " basis_X['emabasis2'] = ewm(data['basis'],2)\n", " basis_X['emabasis5'] = ewm(data['basis'],5)\n", " basis_X['emabasis10'] = ewm(data['basis'],10)\n", "\n", " basis_X['basis'] = data['basis']\n", "\n", " basis_X['totalaskvolratio'] = (data['stockTotalAskVol']-data['futureTotalAskVol'])/100000\n", " basis_X['totalbidvolratio'] = (data['stockTotalBidVol']-data['futureTotalBidVol'])/100000\n", " \n", " basis_X = basis_X.fillna(0)\n", " \n", " basis_y = data['Y(Target)']\n", " basis_y.dropna(inplace=True)\n", " \n", " print(\"Any null data in y: %s, X: %s\"%(basis_y.isnull().values.any(), basis_X.isnull().values.any()))\n", " print(\"Length y: %s, X: %s\"%(len(basis_y.index), len(basis_X.index)))\n", " \n", " return basis_X, basis_y" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Any null data in y: False, X: False\n", "Length y: 6499, X: 6499\n", "Any null data in y: False, X: False\n", "Length y: 8737, X: 8737\n" ] } ], "source": [ "basis_X_test, basis_y_test = create_features_again(validation_data)\n", "basis_X_train, basis_y_train = create_features_again(training_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 5: Train, Validate and Optimize Model\n", "\n", "Now we will try to itereate over models, model parameters and feature space" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will try a sophisticated model to see- we may have started with a simpler model as well." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Extra Trees ( Bagging ensemble model)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean squared error: 0.02\n", "Variance score: 0.95\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn import ensemble\n", "from sklearn import linear_model\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "\n", "model=ensemble.ExtraTreesRegressor()\n", "model.fit(basis_X_train, basis_y_train)\n", "basis_y_pred = model.predict(basis_X_test)\n", "\n", "# The mean squared error\n", "print(\"Mean squared error: %.2f\"\n", " % mean_squared_error(basis_y_test, basis_y_pred))\n", "# Explained variance score: 1 is perfect prediction\n", "print('Variance score: %.2f' % r2_score(basis_y_test, basis_y_pred))\n", "\n", "# Plot outputs\n", "plt.scatter(basis_y_pred, basis_y_test, color='black')\n", "plt.plot(basis_y_test, basis_y_test, color='blue', linewidth=3)\n", "\n", "\n", "plt.xlabel('Y(actual)')\n", "plt.ylabel('Y(Predicted)')\n", "\n", "plt.show()\n", "\n", "basis_y_trees = basis_y_pred.copy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Save the model after it is trained so we can re-use it later for backtesting" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "filename = 'MQKmodel.pkl'\n", "\n", "with open(filename, 'wb') as handle:\n", " pickle.dump(model, handle, protocol=pickle.HIGHEST_PROTOCOL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we have only used one of the less complex models here. You should try multiple models and feature egineering with each of them and also tune model hyper-parameters to further optimize.\n", "\n", "You iterate over this stage multiple times till you finally have a model that you’re happy with. Only when you have a model who’s performance you like, proceed to the next step." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 6: Backtest on Test Data\n", "\n", "Finally I backtest performance of our final, optimized model from last step on that Test Data that we had kept aside at the start and did not touch yet.\n", "This provides you with realistic expectation of how your model is expected to perform on new and unseen data when you start trading live. Hence, it is necessary to ensure you have a clean dataset that you haven’t used to train or validate your model.\n", "\n", "We're going to choose our linear regression model as our final model of choice. For this purpose, I'm going to use Auquan’s [python based free and open source toolbox](https://bitbucket.org/auquan/auquantoolbox). You can install it via pip: \n", "\n", "`pip install -U auquan_toolbox`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The toolbox allows you to simulate and control every part of a trading system, however for now, we will only focus on testing the quality of our predictions and use out of the box implementations of everything else\n", "\n", "The predictions are implemented in `getPrediction()` function below. We are using the same features and coeffeceints as the linear regression model we trained above.\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from backtester.trading_system import TradingSystem\n", "from backtester.trading_system_parameters import TradingSystemParameters\n", "from backtester.features.feature import Feature\n", "from backtester.executionSystem.simple_execution_system_fairvalue import SimpleExecutionSystemWithFairValue\n", "from backtester.orderPlacer.backtesting_order_placer import BacktestingOrderPlacer\n", "from backtester.version import updateCheck\n", "from backtester.constants import *\n", "from backtester.timeRule.us_time_rule import USTimeRule\n", "from backtester.logger import *\n", "import pdb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Check to make sure you have the latest version of Auquan Toolbox \n", "(this update check flag should be False if you have the latest version)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "updateCheck()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "class MyTradingParams(TradingSystemParameters):\n", " def __init__(self):\n", " super(MyTradingParams, self).__init__()\n", " self.count = 0 \n", " self.params = {}\n", " self.start = '2017/01/06'\n", " self.end = '2017/01/10'\n", " self.instrumentIds = ['MQK']\n", " filename = 'MQKmodel.pkl'\n", " with open(filename, 'rb') as handle:\n", " b = pickle.load(handle)\n", " self.model = {'MQK': b}\n", " self.updateFrequency = 1\n", "\n", " '''\n", " Returns an instance of class DataParser. Source of data for instruments\n", " '''\n", "\n", " def getDataParser(self):\n", " dataSetId = 'trainingData3'\n", " downloadUrl = 'https://github.com/Auquan/auquan-historical-data/raw/master/qq2Data'\n", " \n", " z= CsvDataSource(cachedFolderName='historicalData/',\n", " dataSetId=dataSetId,\n", " instrumentIds=self.instrumentIds,\n", " downloadUrl = downloadUrl,\n", " timeKey = '',\n", " timeStringFormat = '%Y-%m-%d %H:%M:%S',\n", " startDateStr=self.start,\n", " endDateStr=self.end,\n", " liveUpdates=True,\n", " pad=True)\n", " return z\n", "\n", "\n", " def getTimeRuleForUpdates(self):\n", " return USTimeRule(startDate = self.start,\n", " endDate = self.end,\n", " startTime='9:30',\n", " endTime='15:30',\n", " frequency='M', sample='1')\n", "\n", " \n", " '''\n", " Return starting capital\n", " '''\n", " def getStartingCapital(self):\n", " return 10000\n", " \n", " '''\n", " This is a way to use any custom features you might have made.\n", " '''\n", "\n", " def getCustomFeatures(self):\n", " return {'prediction': TrainingPredictionFeature}\n", "\n", " def getInstrumentFeatureConfigDicts(self):\n", "\n", " predictionDict = {'featureKey': 'prediction',\n", " 'featureId': 'prediction',\n", " 'params': {}}\n", "\n", " # ADD RELEVANT FEATURES HERE\n", " expma5dic = {'featureKey': 'emabasis5',\n", " 'featureId': 'exponential_moving_average',\n", " 'params': {'period': 5,\n", " 'featureName': 'basis'}}\n", " expma10dic = {'featureKey': 'emabasis10',\n", " 'featureId': 'exponential_moving_average',\n", " 'params': {'period': 10,\n", " 'featureName': 'basis'}} \n", " expma2dic = {'featureKey': 'emabasis2',\n", " 'featureId': 'exponential_moving_average',\n", " 'params': {'period': 2,\n", " 'featureName': 'basis'}}\n", " mom10dic = {'featureKey': 'mom10',\n", " 'featureId': 'difference',\n", " 'params': {'period': 10,\n", " 'featureName': 'basis'}}\n", " scoreDict = {'featureKey': 'score',\n", " 'featureId': 'score_fv',\n", " 'params': {'predictionKey': 'prediction',\n", " 'price': 'FairValue'}}\n", " return {INSTRUMENT_TYPE_STOCK: [expma5dic,expma2dic,expma10dic,mom10dic,\n", " predictionDict, scoreDict]}\n", "\n", " '''\n", " Returns an array of market feature config dictionaries\n", " '''\n", "\n", " def getMarketFeatureConfigDicts(self):\n", " # ADD RELEVANT FEATURES HERE\n", " scoreDict = {'featureKey': 'score',\n", " 'featureId': 'score_fv',\n", " 'params': {'featureName': self.getPriceFeatureKey(),\n", " 'instrument_score_feature': 'score'}}\n", " return [scoreDict]\n", "\n", "\n", " '''\n", " A function that returns your predicted value based on your heuristics.\n", " '''\n", "\n", " def getPrediction(self, time, updateNum, instrumentManager):\n", "\n", " predictions = pd.Series(0.0, index = self.instrumentIds)\n", "\n", " # holder for all the instrument features\n", " lbInstF = instrumentManager.getLookbackInstrumentFeatures()\n", "\n", " # dataframe for a historical instrument feature (mom10 in this case). The index is the timestamps\n", " # of upto lookback data points. The columns of this dataframe are the stock symbols/instrumentIds.\n", " # Get the last row of the dataframe, the most recent datapoint\n", " mom10 = lbInstF.getFeatureDf('mom10').iloc[-1]\n", " \n", " emabasis2 = lbInstF.getFeatureDf('emabasis2').iloc[-1]\n", " emabasis5 = lbInstF.getFeatureDf('emabasis5').iloc[-1]\n", " emabasis10 = lbInstF.getFeatureDf('emabasis10').iloc[-1] \n", " basis = lbInstF.getFeatureDf('basis').iloc[-1]\n", " totalaskvol = (lbInstF.getFeatureDf('stockTotalAskVol').iloc[-1] - lbInstF.getFeatureDf('futureTotalAskVol').iloc[-1])/100000.0\n", " totalbidvol = (lbInstF.getFeatureDf('stockTotalBidVol').iloc[-1] - lbInstF.getFeatureDf('futureTotalBidVol').iloc[-1])/100000.0\n", " \n", "# ## Linear Regression Implementation\n", " \n", "# coeff = [ 0.03249183, 0.49675487, -0.22289464, 0.2025182, 0.5080227, -0.21557005, 0.17128488]\n", "\n", "# predictions['MQK'] = coeff[0] * mom10['MQK'] + coeff[1] * emabasis2['MQK'] +\\\n", "# coeff[2] * emabasis5['MQK'] + coeff[3] * emabasis10['MQK'] +\\\n", "# coeff[4] * basis['MQK'] + coeff[5] * totalaskvol['MQK']+\\\n", "# coeff[6] * totalbidvol['MQK']\n", " \n", " \n", " # Decision Tree Implementation:\n", " from sklearn import ensemble\n", " \n", " featureList = [mom10, emabasis2, emabasis5, emabasis10,\n", " basis, totalaskvol, totalbidvol]\n", " for s in self.instrumentIds:\n", " Y = lbInstF.getFeatureDf('FairValue')[s]\n", " #Creating a dataframe to hold features for this stock\n", " X = pd.DataFrame(index=Y.index, columns=range(len(featureList))) #DF with rows=timestamp and columns=featureNames\n", " for i in range(len(featureList)):\n", " X[i] = featureList[i][s]\n", "\n", " # if this is the first time we are training a model, \n", " # start by creating a new model\n", " # we will update this model during further runs\n", " #if s not in self.model:\n", " if len(self.model) == 0:\n", " self.model[s] = ensemble.ExtraTreesRegressor()\n", "\n", " # if you are at the update frequency, update the model\n", " if (updateNum%self.updateFrequency==0) and (updateNum>59):\n", "\n", " # drop nans and infs from X\n", " X = X.replace([np.inf, -np.inf], np.nan).dropna()\n", " # create a target variable vector for this stock, with same index as X\n", " y_s = Y.loc[Y.index.isin(X.index)]\n", "\n", " print('Training...')\n", " # make numpy arrays with the right shape\n", " x_train = np.array(X)[:-1] # shape = timestamps x numFeatures\n", " y_train = np.array(y_s)[:-1].astype(int).reshape(-1) # shape = timestamps x 1\n", " self.model[s].fit(x_train, y_train)\n", "\n", " if (updateNum)<60:#self.updateFrequency:\n", " # we haven't trained a model yet\n", " predictions[s] = np.nan\n", " else:\n", " # make your prediction using your model\n", " if X.iloc[-1].replace([np.inf, -np.inf], np.nan).hasnans:\n", " # first verify none of the features are nan or inf\n", " print('Test Feature Data has nans')\n", " predictions[s] = np.nan\n", " else:\n", " predictions[s] = self.model[s].predict(X.iloc[-1].values.reshape(1,-1))\n", "\n", " \n", " predictions.fillna(emabasis5,inplace=True)\n", " \n", " print('Current basis: %.3f, predicted basis: %.3f'%(basis['MQK'], predictions['MQK']))\n", " if updateNum>1:\n", " print('Current position: %.0f'%lbInstF.getFeatureDf('position').iloc[-1]['MQK'])\n", "\n", " return predictions\n", "\n", " '''\n", " Here we convert prediction to intended positions for different instruments.\n", " '''\n", "\n", " def getExecutionSystem(self):\n", " return SimpleExecutionSystemWithFairValue(enter_threshold_deviation=0.5, exit_threshold_deviation=0.2, \n", " longLimit=250, shortLimit=250, capitalUsageLimit=0.05, \n", " enterlotSize=10, exitlotSize=10, \n", " limitType='L', price=self.getPriceFeatureKey())\n", "\n", " '''\n", " For Backtesting, we use the BacktestingOrderPlacer, which places the order which we want, \n", " and automatically confirms it too.\n", " '''\n", "\n", " def getOrderPlacer(self):\n", " return BacktestingOrderPlacer()\n", "\n", " '''\n", " Returns the amount of lookback data you want for your calculations.\n", " '''\n", "\n", " def getLookbackSize(self):\n", " return 90\n", "\n", "\n", " def getPriceFeatureKey(self):\n", " return 'basis'\n", "\n", "\n", " def getMetricsToLogRealtime(self):\n", " # Everything will be logged if left as is\n", " return {\n", " 'market': None,\n", " 'instruments': None\n", " }\n", "\n", "\n", "class TrainingPredictionFeature(Feature):\n", "\n", " @classmethod\n", " def computeForInstrument(cls, updateNum, time, featureParams, featureKey, instrumentManager):\n", " t = MyTradingParams()\n", " return t.getPrediction(time, updateNum, instrumentManager)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the Backtester" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing data for stock: MQK\n", "Logging all the available market metrics in tensorboard\n", "Logging all the available instrument metrics in tensorboard\n", "2017-01-06 09:30:00\n", "Current basis: 3.685, predicted basis: 3.685\n", "2017-01-06 09:31:00\n", "Current basis: 3.815, predicted basis: 3.702\n", "Current position: 0\n", "2017-01-06 09:32:00\n", "Current basis: 3.812, predicted basis: 3.716\n", "Current position: 0\n", "2017-01-06 09:33:00\n", "Current basis: 3.661, predicted basis: 3.709\n", "Current position: 0\n", "2017-01-06 09:34:00\n", "Current basis: 3.811, predicted basis: 3.722\n", "Current position: 0\n", "2017-01-06 09:35:00\n", "Current basis: 3.987, predicted basis: 3.756\n", "Current position: 0\n", "2017-01-06 09:36:00\n", "Current basis: 4.011, predicted basis: 3.789\n", "Current position: 0\n", "2017-01-06 09:37:00\n", "Current basis: 4.041, predicted basis: 3.822\n", "Current position: 0\n", "2017-01-06 09:38:00\n", "Current basis: 4.397, predicted basis: 3.896\n", "Current position: 0\n", "2017-01-06 09:39:00\n", "Current basis: 4.343, predicted basis: 3.954\n", "Current position: 0\n", "2017-01-06 09:40:00\n", "Current basis: 4.269, predicted basis: 3.995\n", "Current position: -10\n", "2017-01-06 09:41:00\n", "Current basis: 4.445, predicted basis: 4.053\n", "Current position: -10\n", "2017-01-06 09:42:00\n", "Current basis: 4.418, predicted basis: 4.100\n", "Current position: -10\n", "2017-01-06 09:43:00\n", "Current basis: 4.216, predicted basis: 4.115\n", "Current position: -10\n", "2017-01-06 09:44:00\n", "Current basis: 4.438, predicted basis: 4.157\n", "Current position: -10\n", "2017-01-06 09:45:00\n", "Current basis: 4.361, predicted basis: 4.184\n", "Current position: 0\n", "2017-01-06 09:46:00\n", "Current basis: 4.391, predicted basis: 4.210\n", "Current position: 0\n", "2017-01-06 09:47:00\n", "Current basis: 4.291, predicted basis: 4.221\n", "Current position: 0\n", "2017-01-06 09:48:00\n", "Current basis: 4.516, predicted basis: 4.259\n", "Current position: 0\n", "2017-01-06 09:49:00\n", "Current basis: 4.393, predicted basis: 4.276\n", "Current position: 0\n", "2017-01-06 09:50:00\n", "Current basis: 4.270, predicted basis: 4.276\n", "Current position: 0\n", "2017-01-06 09:51:00\n", "Current basis: 4.021, predicted basis: 4.243\n", "Current position: 0\n", "2017-01-06 09:52:00\n", "Current basis: 4.096, predicted basis: 4.224\n", "Current position: 0\n", "2017-01-06 09:53:00\n", "Current basis: 3.846, predicted basis: 4.175\n", "Current position: 0\n", "2017-01-06 09:54:00\n", "Current basis: 3.845, predicted basis: 4.132\n", "Current position: 0\n", "2017-01-06 09:55:00\n", "Current basis: 3.820, predicted basis: 4.092\n", "Current position: 0\n", "2017-01-06 09:56:00\n", "Current basis: 3.770, predicted basis: 4.050\n", "Current position: 0\n", "2017-01-06 09:57:00\n", "Current basis: 3.916, predicted basis: 4.033\n", "Current position: 0\n", "2017-01-06 09:58:00\n", "Current basis: 4.111, predicted basis: 4.043\n", "Current position: 0\n", "2017-01-06 09:59:00\n", "Current basis: 3.761, predicted basis: 4.006\n", "Current position: 0\n", "2017-01-06 10:00:00\n", "Current basis: 4.008, predicted basis: 4.007\n", "Current position: 0\n", "2017-01-06 10:01:00\n", "Current basis: 4.157, predicted basis: 4.026\n", "Current position: 0\n", "2017-01-06 10:02:00\n", "Current basis: 4.006, predicted basis: 4.023\n", "Current position: 0\n", "2017-01-06 10:03:00\n", "Current basis: 4.131, predicted basis: 4.037\n", "Current position: 0\n", "2017-01-06 10:04:00\n", "Current basis: 4.081, predicted basis: 4.043\n", "Current position: 0\n", "2017-01-06 10:05:00\n", "Current basis: 4.157, predicted basis: 4.058\n", "Current position: 0\n", "2017-01-06 10:06:00\n", "Current basis: 3.934, predicted basis: 4.042\n", "Current position: 0\n", "2017-01-06 10:07:00\n", "Current basis: 4.061, predicted basis: 4.044\n", "Current position: 0\n", "2017-01-06 10:08:00\n", "Current basis: 4.060, predicted basis: 4.046\n", "Current position: 0\n", "2017-01-06 10:09:00\n", "Current basis: 4.114, predicted basis: 4.055\n", "Current position: 0\n", "2017-01-06 10:10:00\n", "Current basis: 4.160, predicted basis: 4.069\n", "Current position: 0\n", "2017-01-06 10:11:00\n", "Current basis: 4.238, predicted basis: 4.091\n", "Current position: 0\n", "2017-01-06 10:12:00\n", "Current basis: 4.336, predicted basis: 4.122\n", "Current position: 0\n", "2017-01-06 10:13:00\n", "Current basis: 4.039, predicted basis: 4.112\n", "Current position: 0\n", "2017-01-06 10:14:00\n", "Current basis: 4.137, predicted basis: 4.115\n", "Current position: 0\n", "2017-01-06 10:15:00\n", "Current basis: 4.114, predicted basis: 4.115\n", "Current position: 0\n", "2017-01-06 10:16:00\n", "Current basis: 4.040, predicted basis: 4.105\n", "Current position: 0\n", "2017-01-06 10:17:00\n", "Current basis: 4.115, predicted basis: 4.106\n", "Current position: 0\n", "2017-01-06 10:18:00\n", "Current basis: 4.165, predicted basis: 4.114\n", "Current position: 0\n", "2017-01-06 10:19:00\n", "Current basis: 4.239, predicted basis: 4.130\n", "Current position: 0\n", "2017-01-06 10:20:00\n", "Current basis: 3.964, predicted basis: 4.109\n", "Current position: 0\n", "2017-01-06 10:21:00\n", "Current basis: 3.813, predicted basis: 4.070\n", "Current position: 0\n", "2017-01-06 10:22:00\n", "Current basis: 3.888, predicted basis: 4.047\n", "Current position: 0\n", "2017-01-06 10:23:00\n", "Current basis: 3.763, predicted basis: 4.010\n", "Current position: 0\n", "2017-01-06 10:24:00\n", "Current basis: 3.712, predicted basis: 3.971\n", "Current position: 0\n", "2017-01-06 10:25:00\n", "Current basis: 3.886, predicted basis: 3.960\n", "Current position: 0\n", "2017-01-06 10:26:00\n", "Current basis: 3.861, predicted basis: 3.948\n", "Current position: 0\n", "2017-01-06 10:27:00\n", "Current basis: 3.785, predicted basis: 3.926\n", "Current position: 0\n", "2017-01-06 10:28:00\n", "Current basis: 3.811, predicted basis: 3.912\n", "Current position: 0\n", "2017-01-06 10:29:00\n", "Training...\n", "Current basis: 3.734, predicted basis: 3.644\n", "Current position: 0\n", "2017-01-06 10:30:00\n", "Training...\n", "Current basis: 3.832, predicted basis: 3.633\n", "Current position: 0\n", "2017-01-06 10:31:00\n", "Training...\n", "Current basis: 3.755, predicted basis: 3.623\n", "Current position: 0\n", "2017-01-06 10:32:00\n", "Training...\n", "Current basis: 4.051, predicted basis: 3.629\n", "Current position: 0\n", "2017-01-06 10:33:00\n", "Training...\n", "Current basis: 3.828, predicted basis: 3.635\n", "Current position: 0\n", "2017-01-06 10:34:00\n", "Training...\n", "Current basis: 4.053, predicted basis: 3.641\n", "Current position: 0\n", "2017-01-06 10:35:00\n", "Training...\n", "Current basis: 4.178, predicted basis: 3.646\n", "Current position: 0\n", "2017-01-06 10:36:00\n", "Training...\n", "Current basis: 4.916, predicted basis: 3.652\n", "Current position: 0\n", "2017-01-06 10:37:00\n", "Training...\n", "Current basis: 4.545, predicted basis: 3.657\n", "Current position: -10\n", "2017-01-06 10:38:00\n", "Training...\n", "Current basis: 4.595, predicted basis: 3.662\n", "Current position: -20\n", "2017-01-06 10:39:00\n", "Training...\n", "Current basis: 4.720, predicted basis: 3.667\n", "Current position: -30\n", "2017-01-06 10:40:00\n", "Training...\n", "Current basis: 4.645, predicted basis: 3.686\n", "Current position: -40\n", "2017-01-06 10:41:00\n", "Training...\n", "Current basis: 5.267, predicted basis: 3.704\n", "Current position: -50\n", "2017-01-06 10:42:00\n", "Training...\n", "Current basis: 5.117, predicted basis: 3.722\n", "Current position: -60\n", "2017-01-06 10:43:00\n", "Training...\n", "Current basis: 5.219, predicted basis: 3.740\n", "Current position: -70\n", "2017-01-06 10:44:00\n", "Training...\n", "Current basis: 5.194, predicted basis: 3.757\n", "Current position: -80\n", "2017-01-06 10:45:00\n", "Training...\n", "Current basis: 4.874, predicted basis: 3.773\n", "Current position: -90\n", "2017-01-06 10:46:00\n", "Training...\n", "Current basis: 4.928, predicted basis: 3.789\n", "Current position: -100\n", "2017-01-06 10:47:00\n", "Training...\n", "Current basis: 5.180, predicted basis: 3.805\n", "Current position: -110\n", "2017-01-06 10:48:00\n", "Training...\n", "Current basis: 5.231, predicted basis: 3.821\n", "Current position: -120\n", "2017-01-06 10:49:00\n", "Training...\n", "Current basis: 5.256, predicted basis: 3.835\n", "Current position: -130\n", "2017-01-06 10:50:00\n", "Training...\n", "Current basis: 5.330, predicted basis: 3.850\n", "Current position: -140\n", "2017-01-06 10:51:00\n", "Training...\n", "Current basis: 5.230, predicted basis: 3.864\n", "Current position: -150\n", "2017-01-06 10:52:00\n", "Training...\n", "Current basis: 5.281, predicted basis: 3.878\n", "Current position: -160\n", "2017-01-06 10:53:00\n", "Training...\n", "Current basis: 5.231, predicted basis: 3.892\n", "Current position: -170\n", "2017-01-06 10:54:00\n", "Training...\n", "Current basis: 5.206, predicted basis: 3.905\n", "Current position: -180\n", "2017-01-06 10:55:00\n", "Training...\n", "Current basis: 5.280, predicted basis: 3.918\n", "Current position: -190\n", "2017-01-06 10:56:00\n", "Training...\n", "Current basis: 5.104, predicted basis: 3.930\n", "Current position: -200\n", "2017-01-06 10:57:00\n", "Training...\n", "Current basis: 5.028, predicted basis: 3.931\n", "Current position: -210\n", "2017-01-06 10:58:00\n", "Training...\n", "Current basis: 5.102, predicted basis: 3.932\n", "Current position: -220\n", "2017-01-06 10:59:00\n", "Training...\n", "Current basis: 4.829, predicted basis: 3.933\n", "Current position: -230\n", "2017-01-06 11:00:00\n", "Training...\n", "Current basis: 5.005, predicted basis: 3.944\n", "Current position: -240\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "2017-01-06 11:01:00\n", "Training...\n", "Current basis: 4.929, predicted basis: 3.955\n", "Current position: -250\n", "2017-01-06 11:02:00\n", "Training...\n", "Current basis: 5.029, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:03:00\n", "Training...\n", "Current basis: 4.804, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:04:00\n", "Training...\n", "Current basis: 4.956, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:05:00\n", "Training...\n", "Current basis: 4.560, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:06:00\n", "Training...\n", "Current basis: 4.833, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:07:00\n", "Training...\n", "Current basis: 4.879, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:08:00\n", "Training...\n", "Current basis: 4.755, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:09:00\n", "Training...\n", "Current basis: 4.710, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:10:00\n", "Training...\n", "Current basis: 4.685, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:11:00\n", "Training...\n", "Current basis: 4.611, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:12:00\n", "Training...\n", "Current basis: 4.657, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:13:00\n", "Training...\n", "Current basis: 4.683, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:14:00\n", "Training...\n", "Current basis: 4.582, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:15:00\n", "Training...\n", "Current basis: 4.507, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:16:00\n", "Training...\n", "Current basis: 4.507, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:17:00\n", "Training...\n", "Current basis: 4.607, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:18:00\n", "Training...\n", "Current basis: 4.582, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:19:00\n", "Training...\n", "Current basis: 4.506, predicted basis: 3.966\n", "Current position: -250\n", "2017-01-06 11:20:00\n", "Training...\n", "Current basis: 4.481, predicted basis: 3.978\n", "Current position: -250\n", "2017-01-06 11:21:00\n", "Training...\n", "Current basis: 4.481, predicted basis: 3.989\n", "Current position: -250\n", "2017-01-06 11:22:00\n", "Training...\n", "Current basis: 4.382, predicted basis: 4.000\n", "Current position: -250\n", "2017-01-06 11:23:00\n", "Training...\n", "Current basis: 4.336, predicted basis: 4.011\n", "Current position: -250\n", "2017-01-06 11:24:00\n", "Training...\n", "Current basis: 4.310, predicted basis: 4.022\n", "Current position: -250\n", "2017-01-06 11:25:00\n", "Training...\n", "Current basis: 4.334, predicted basis: 4.034\n", "Current position: -250\n", "2017-01-06 11:26:00\n", "Training...\n", "Current basis: 4.333, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:27:00\n", "Training...\n", "Current basis: 4.359, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:28:00\n", "Training...\n", "Current basis: 4.307, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:29:00\n", "Training...\n", "Current basis: 4.433, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:30:00\n", "Training...\n", "Current basis: 4.384, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:31:00\n", "Training...\n", "Current basis: 4.581, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:32:00\n", "Training...\n", "Current basis: 4.581, predicted basis: 4.045\n", "Current position: -250\n", "2017-01-06 11:33:00\n", "Training...\n", "Current basis: 4.209, predicted basis: 4.034\n", "Current position: -250\n", "2017-01-06 11:34:00\n", "Training...\n", "Current basis: 4.286, predicted basis: 4.022\n", "Current position: -250\n", "2017-01-06 11:35:00\n", "Training...\n", "Current basis: 3.987, predicted basis: 4.011\n", "Current position: -240\n", "2017-01-06 11:36:00\n", "Training...\n", "Current basis: 3.690, predicted basis: 4.000\n", "Current position: -240\n", "2017-01-06 11:37:00\n", "Training...\n", "Current basis: 3.715, predicted basis: 3.989\n", "Current position: -230\n", "2017-01-06 11:38:00\n", "Training...\n", "Current basis: 3.646, predicted basis: 3.978\n", "Current position: -230\n", "2017-01-06 11:39:00\n", "Training...\n", "Current basis: 3.670, predicted basis: 3.966\n", "Current position: -230\n", "2017-01-06 11:40:00\n", "Training...\n", "Current basis: 3.593, predicted basis: 3.955\n", "Current position: -230\n", "2017-01-06 11:41:00\n", "Training...\n", "Current basis: 3.815, predicted basis: 3.944\n", "Current position: -230\n", "2017-01-06 11:42:00\n", "Training...\n", "Current basis: 3.616, predicted basis: 3.933\n", "Current position: -230\n", "2017-01-06 11:43:00\n", "Training...\n", "Current basis: 3.689, predicted basis: 3.921\n", "Current position: -220\n", "2017-01-06 11:44:00\n", "Training...\n", "Current basis: 3.739, predicted basis: 3.910\n", "Current position: -220\n", "2017-01-06 11:45:00\n", "Training...\n", "Current basis: 3.321, predicted basis: 3.899\n", "Current position: -220\n", "2017-01-06 11:46:00\n", "Training...\n", "Current basis: 3.494, predicted basis: 3.888\n", "Current position: -210\n", "2017-01-06 11:47:00\n", "Training...\n", "Current basis: 3.270, predicted basis: 3.865\n", "Current position: -200\n", "2017-01-06 11:48:00\n", "Training...\n", "Current basis: 2.899, predicted basis: 3.854\n", "Current position: -200\n", "2017-01-06 11:49:00\n", "Training...\n", "Current basis: 2.849, predicted basis: 3.843\n", "Current position: -190\n", "2017-01-06 11:50:00\n", "Training...\n", "Current basis: 2.826, predicted basis: 3.831\n", "Current position: -180\n", "2017-01-06 11:51:00\n", "Training...\n", "Current basis: 2.700, predicted basis: 3.820\n", "Current position: -170\n", "2017-01-06 11:52:00\n", "Training...\n", "Current basis: 2.551, predicted basis: 3.809\n", "Current position: -160\n", "2017-01-06 11:53:00\n", "Training...\n", "Current basis: 2.700, predicted basis: 3.798\n", "Current position: -150\n", "2017-01-06 11:54:00\n", "Training...\n", "Current basis: 2.674, predicted basis: 3.787\n", "Current position: -140\n", "2017-01-06 11:55:00\n", "Training...\n", "Current basis: 2.600, predicted basis: 3.775\n", "Current position: -130\n", "2017-01-06 11:56:00\n", "Training...\n", "Current basis: 2.769, predicted basis: 3.764\n", "Current position: -120\n", "2017-01-06 11:57:00\n", "Training...\n", "Current basis: 2.768, predicted basis: 3.753\n", "Current position: -110\n", "2017-01-06 11:58:00\n", "Training...\n", "Current basis: 2.721, predicted basis: 3.742\n", "Current position: -100\n", "2017-01-06 11:59:00\n", "Training...\n", "Current basis: 2.842, predicted basis: 3.730\n", "Current position: -90\n", "2017-01-06 12:00:00\n", "Training...\n", "Current basis: 2.842, predicted basis: 3.719\n", "Current position: -80\n", "2017-01-06 12:01:00\n", "Training...\n", "Current basis: 2.818, predicted basis: 3.697\n", "Current position: -70\n", "2017-01-06 12:02:00\n", "Training...\n", "Current basis: 2.646, predicted basis: 3.674\n", "Current position: -60\n", "2017-01-06 12:03:00\n", "Training...\n", "Current basis: 2.767, predicted basis: 3.652\n", "Current position: -50\n", "2017-01-06 12:04:00\n", "Training...\n", "Current basis: 2.838, predicted basis: 3.629\n", "Current position: -40\n", "2017-01-06 12:05:00\n", "Training...\n", "Current basis: 2.696, predicted basis: 3.607\n", "Current position: -30\n", "2017-01-06 12:06:00\n", "Training...\n", "Current basis: 2.716, predicted basis: 3.584\n", "Current position: -20\n", "2017-01-06 12:07:00\n", "Training...\n", "Current basis: 2.764, predicted basis: 3.562\n", "Current position: -10\n", "2017-01-06 12:08:00\n", "Training...\n", "Current basis: 2.739, predicted basis: 3.539\n", "Current position: 0\n", "2017-01-06 12:09:00\n", "Training...\n", "Current basis: 2.740, predicted basis: 3.506\n", "Current position: 10\n", "2017-01-06 12:10:00\n", "Training...\n", "Current basis: 2.842, predicted basis: 3.472\n", "Current position: 20\n", "2017-01-06 12:11:00\n", "Training...\n", "Current basis: 2.866, predicted basis: 3.438\n", "Current position: 30\n", "2017-01-06 12:12:00\n", "Training...\n", "Current basis: 2.943, predicted basis: 3.404\n", "Current position: 40\n", "2017-01-06 12:13:00\n", "Training...\n", "Current basis: 2.717, predicted basis: 3.371\n", "Current position: 50\n", "2017-01-06 12:14:00\n", "Training...\n", "Current basis: 2.717, predicted basis: 3.337\n", "Current position: 50\n", "2017-01-06 12:15:00\n", "Training...\n", "Current basis: 2.717, predicted basis: 3.303\n", "Current position: 60\n", "2017-01-06 12:16:00\n", "Training...\n", "Current basis: 2.717, predicted basis: 3.270\n", "Current position: 70\n", "2017-01-06 12:17:00\n", "Training...\n", "Current basis: 2.767, predicted basis: 3.236\n", "Current position: 80\n", "2017-01-06 12:18:00\n", "Training...\n", "Current basis: 2.743, predicted basis: 3.202\n", "Current position: 90\n", "2017-01-06 12:19:00\n", "Training...\n", "Current basis: 2.844, predicted basis: 3.169\n", "Current position: 90\n", "2017-01-06 12:20:00\n", "Training...\n", "Current basis: 2.770, predicted basis: 3.135\n", "Current position: 90\n", "2017-01-06 12:21:00\n", "Training...\n", "Current basis: 2.745, predicted basis: 3.101\n", "Current position: 90\n", "2017-01-06 12:22:00\n", "Training...\n", "Current basis: 2.695, predicted basis: 3.067\n", "Current position: 90\n", "2017-01-06 12:23:00\n", "Training...\n", "Current basis: 2.770, predicted basis: 3.034\n", "Current position: 90\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "2017-01-06 12:24:00\n", "Training...\n", "Current basis: 2.721, predicted basis: 3.000\n", "Current position: 90\n", "2017-01-06 12:25:00\n", "Training...\n", "Current basis: 2.695, predicted basis: 2.966\n", "Current position: 90\n", "2017-01-06 12:26:00\n", "Training...\n", "Current basis: 2.840, predicted basis: 2.944\n", "Current position: 90\n", "2017-01-06 12:27:00\n", "Training...\n", "Current basis: 2.768, predicted basis: 2.921\n", "Current position: 90\n", "2017-01-06 12:28:00\n", "Training...\n", "Current basis: 2.470, predicted basis: 2.899\n", "Current position: 80\n", "2017-01-06 12:29:00\n", "Training...\n", "Current basis: 2.594, predicted basis: 2.876\n", "Current position: 70\n", "2017-01-06 12:30:00\n", "Training...\n", "Current basis: 2.643, predicted basis: 2.854\n", "Current position: 70\n", "2017-01-06 12:31:00\n", "Training...\n", "Current basis: 2.595, predicted basis: 2.831\n", "Current position: 70\n", "2017-01-06 12:32:00\n", "Training...\n", "Current basis: 2.720, predicted basis: 2.809\n", "Current position: 70\n", "2017-01-06 12:33:00\n", "Training...\n", "Current basis: 2.621, predicted basis: 2.787\n", "Current position: 70\n", "2017-01-06 12:34:00\n", "Training...\n", "Current basis: 2.745, predicted basis: 2.764\n", "Current position: 60\n", "2017-01-06 12:35:00\n", "Training...\n", "Current basis: 2.721, predicted basis: 2.742\n", "Current position: 50\n", "2017-01-06 12:36:00\n", "Training...\n", "Current basis: 2.721, predicted basis: 2.730\n", "Current position: 40\n", "2017-01-06 12:37:00\n", "Training...\n", "Current basis: 3.049, predicted basis: 2.719\n", "Current position: 30\n", "2017-01-06 12:38:00\n", "Training...\n", "Current basis: 3.152, predicted basis: 2.708\n", "Current position: 20\n", "2017-01-06 12:39:00\n", "Training...\n", "Current basis: 3.204, predicted basis: 2.685\n", "Current position: 20\n", "2017-01-06 12:40:00\n", "Training...\n", "Current basis: 3.029, predicted basis: 2.663\n", "Current position: 20\n", "2017-01-06 12:41:00\n", "Training...\n", "Current basis: 2.951, predicted basis: 2.640\n", "Current position: 10\n", "2017-01-06 12:42:00\n", "Training...\n", "Current basis: 2.730, predicted basis: 2.618\n", "Current position: 10\n", "2017-01-06 12:43:00\n", "Training...\n", "Current basis: 2.706, predicted basis: 2.596\n", "Current position: 10\n", "2017-01-06 12:44:00\n", "Training...\n", "Current basis: 2.532, predicted basis: 2.573\n", "Current position: 0\n", "2017-01-06 12:45:00\n", "Training...\n", "Current basis: 2.074, predicted basis: 2.551\n", "Current position: 0\n", "2017-01-06 12:46:00\n", "Training...\n", "Current basis: 2.193, predicted basis: 2.528\n", "Current position: 0\n", "2017-01-06 12:47:00\n", "Training...\n", "Current basis: 2.594, predicted basis: 2.506\n", "Current position: 0\n", "2017-01-06 12:48:00\n", "Training...\n", "Current basis: 2.494, predicted basis: 2.483\n", "Current position: 0\n", "2017-01-06 12:49:00\n", "Training...\n", "Current basis: 2.665, predicted basis: 2.461\n", "Current position: 0\n", "2017-01-06 12:50:00\n", "Training...\n", "Current basis: 2.761, predicted basis: 2.438\n", "Current position: 0\n", "2017-01-06 12:51:00\n", "Training...\n", "Current basis: 2.661, predicted basis: 2.416\n", "Current position: 0\n", "2017-01-06 12:52:00\n", "Training...\n", "Current basis: 2.862, predicted basis: 2.393\n", "Current position: 0\n", "2017-01-06 12:53:00\n", "Training...\n", "Current basis: 2.860, predicted basis: 2.371\n", "Current position: 0\n", "2017-01-06 12:54:00\n", "Training...\n", "Current basis: 2.661, predicted basis: 2.348\n", "Current position: 0\n", "2017-01-06 12:55:00\n", "Training...\n", "Current basis: 2.684, predicted basis: 2.326\n", "Current position: 0\n", "2017-01-06 12:56:00\n", "Training...\n", "Current basis: 2.685, predicted basis: 2.303\n", "Current position: 0\n", "2017-01-06 12:57:00\n", "Training...\n", "Current basis: 2.826, predicted basis: 2.281\n", "Current position: 0\n", "2017-01-06 12:58:00\n", "Training...\n", "Current basis: 2.751, predicted basis: 2.258\n", "Current position: 0\n", "2017-01-06 12:59:00\n", "Training...\n", "Current basis: 2.781, predicted basis: 2.236\n", "Current position: -10\n", "2017-01-06 13:00:00\n", "Training...\n", "Current basis: 2.581, predicted basis: 2.213\n", "Current position: -10\n", "2017-01-06 13:01:00\n", "Training...\n", "Current basis: 2.559, predicted basis: 2.191\n", "Current position: -20\n", "2017-01-06 13:02:00\n", "Training...\n", "Current basis: 2.586, predicted basis: 2.180\n", "Current position: -20\n", "2017-01-06 13:03:00\n", "Training...\n", "Current basis: 2.436, predicted basis: 2.169\n", "Current position: -20\n", "2017-01-06 13:04:00\n", "Training...\n", "Current basis: 2.507, predicted basis: 2.157\n", "Current position: -20\n", "2017-01-06 13:05:00\n", "Training...\n", "Current basis: 2.483, predicted basis: 2.146\n", "Current position: -20\n", "2017-01-06 13:06:00\n", "Training...\n", "Current basis: 2.408, predicted basis: 2.135\n", "Current position: -20\n", "2017-01-06 13:07:00\n", "Training...\n", "Current basis: 2.358, predicted basis: 2.124\n", "Current position: -20\n", "2017-01-06 13:08:00\n", "Training...\n", "Current basis: 2.258, predicted basis: 2.112\n", "Current position: -20\n", "2017-01-06 13:09:00\n", "Training...\n", "Current basis: 2.305, predicted basis: 2.101\n", "Current position: -20\n", "2017-01-06 13:10:00\n", "Training...\n", "Current basis: 2.354, predicted basis: 2.090\n", "Current position: -10\n", "2017-01-06 13:11:00\n", "Training...\n", "Current basis: 2.481, predicted basis: 2.079\n", "Current position: -10\n", "2017-01-06 13:12:00\n", "Training...\n", "Current basis: 2.335, predicted basis: 2.067\n", "Current position: -10\n", "2017-01-06 13:13:00\n", "Training...\n", "Current basis: 2.287, predicted basis: 2.056\n", "Current position: -10\n", "2017-01-06 13:14:00\n", "Training...\n", "Current basis: 1.989, predicted basis: 2.045\n", "Current position: -10\n", "2017-01-06 13:15:00\n", "Training...\n", "Current basis: 2.310, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:16:00\n", "Training...\n", "Current basis: 2.336, predicted basis: 2.034\n", "Current position: 0\n", "2017-01-06 13:17:00\n", "Training...\n", "Current basis: 2.311, predicted basis: 2.034\n", "Current position: 0\n", "2017-01-06 13:18:00\n", "Training...\n", "Current basis: 2.583, predicted basis: 2.034\n", "Current position: 0\n", "2017-01-06 13:19:00\n", "Training...\n", "Current basis: 2.290, predicted basis: 2.034\n", "Current position: 0\n", "2017-01-06 13:20:00\n", "Training...\n", "Current basis: 2.433, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:21:00\n", "Training...\n", "Current basis: 2.436, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:22:00\n", "Training...\n", "Current basis: 2.311, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:23:00\n", "Training...\n", "Current basis: 2.108, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:24:00\n", "Training...\n", "Current basis: 2.179, predicted basis: 2.034\n", "Current position: -10\n", "2017-01-06 13:25:00\n", "Training...\n", "Current basis: 2.080, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:26:00\n", "Training...\n", "Current basis: 1.857, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:27:00\n", "Training...\n", "Current basis: 1.956, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:28:00\n", "Training...\n", "Current basis: 1.980, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:29:00\n", "Training...\n", "Current basis: 2.054, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:30:00\n", "Training...\n", "Current basis: 2.154, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:31:00\n", "Training...\n", "Current basis: 2.152, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:32:00\n", "Training...\n", "Current basis: 2.155, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:33:00\n", "Training...\n", "Current basis: 2.229, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:34:00\n", "Training...\n", "Current basis: 2.154, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:35:00\n", "Training...\n", "Current basis: 2.333, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:36:00\n", "Training...\n", "Current basis: 2.436, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:37:00\n", "Training...\n", "Current basis: 2.290, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:38:00\n", "Training...\n", "Current basis: 2.341, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:39:00\n", "Training...\n", "Current basis: 2.265, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:40:00\n", "Training...\n", "Current basis: 2.215, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:41:00\n", "Training...\n", "Current basis: 2.339, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:42:00\n", "Training...\n", "Current basis: 2.189, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:43:00\n", "Training...\n", "Current basis: 2.036, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:44:00\n", "Training...\n", "Current basis: 2.258, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:45:00\n", "Training...\n", "Current basis: 2.309, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:46:00\n", "Training...\n", "Current basis: 2.257, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:47:00\n", "Training...\n", "Current basis: 2.232, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:48:00\n", "Training...\n", "Current basis: 2.301, predicted basis: 2.022\n", "Current position: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "2017-01-06 13:49:00\n", "Training...\n", "Current basis: 2.177, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:50:00\n", "Training...\n", "Current basis: 2.203, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:51:00\n", "Training...\n", "Current basis: 2.180, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:52:00\n", "Training...\n", "Current basis: 2.230, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:53:00\n", "Training...\n", "Current basis: 2.053, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:54:00\n", "Training...\n", "Current basis: 2.100, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:55:00\n", "Training...\n", "Current basis: 2.126, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:56:00\n", "Training...\n", "Current basis: 1.998, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:57:00\n", "Training...\n", "Current basis: 2.020, predicted basis: 2.022\n", "Current position: 0\n", "2017-01-06 13:58:00\n", "Training...\n", "Current basis: 2.071, predicted basis: 2.011\n", "Current position: 0\n", "2017-01-06 13:59:00\n", "Training...\n", "Current basis: 2.072, predicted basis: 2.000\n", "Current position: 0\n", "2017-01-06 14:00:00\n", "Training...\n", "Current basis: 1.899, predicted basis: 1.989\n", "Current position: 0\n", "2017-01-06 14:01:00\n", "Training...\n", "Current basis: 2.021, predicted basis: 1.978\n", "Current position: 0\n", "2017-01-06 14:02:00\n", "Training...\n", "Current basis: 1.898, predicted basis: 1.978\n", "Current position: 0\n", "2017-01-06 14:03:00\n", "Training...\n", "Current basis: 2.049, predicted basis: 1.978\n", "Current position: 0\n", "2017-01-06 14:04:00\n", "Training...\n", "Current basis: 1.974, predicted basis: 1.978\n", "Current position: 0\n", "2017-01-06 14:05:00\n", "Training...\n", "Current basis: 2.049, predicted basis: 1.955\n", "Current position: 0\n", "2017-01-06 14:06:00\n", "Training...\n", "Current basis: 2.104, predicted basis: 1.933\n", "Current position: 0\n", "2017-01-06 14:07:00\n", "Training...\n", "Current basis: 1.879, predicted basis: 1.910\n", "Current position: 0\n", "2017-01-06 14:08:00\n", "Training...\n", "Current basis: 2.004, predicted basis: 1.899\n", "Current position: 0\n", "2017-01-06 14:09:00\n", "Training...\n", "Current basis: 1.954, predicted basis: 1.899\n", "Current position: 0\n", "2017-01-06 14:10:00\n", "Training...\n", "Current basis: 2.028, predicted basis: 1.888\n", "Current position: 0\n", "2017-01-06 14:11:00\n", "Training...\n", "Current basis: 2.003, predicted basis: 1.876\n", "Current position: 0\n", "2017-01-06 14:12:00\n", "Training...\n", "Current basis: 2.003, predicted basis: 1.865\n", "Current position: 0\n", "2017-01-06 14:13:00\n", "Training...\n", "Current basis: 2.053, predicted basis: 1.854\n", "Current position: 0\n", "2017-01-06 14:14:00\n", "Training...\n", "Current basis: 1.778, predicted basis: 1.843\n", "Current position: 0\n", "2017-01-06 14:15:00\n", "Training...\n", "Current basis: 1.902, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:16:00\n", "Training...\n", "Current basis: 1.901, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:17:00\n", "Training...\n", "Current basis: 2.025, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:18:00\n", "Training...\n", "Current basis: 1.975, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:19:00\n", "Training...\n", "Current basis: 2.000, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:20:00\n", "Training...\n", "Current basis: 2.225, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:21:00\n", "Training...\n", "Current basis: 2.175, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:22:00\n", "Training...\n", "Current basis: 2.125, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:23:00\n", "Training...\n", "Current basis: 2.223, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:24:00\n", "Training...\n", "Current basis: 2.197, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:25:00\n", "Training...\n", "Current basis: 2.173, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:26:00\n", "Training...\n", "Current basis: 2.177, predicted basis: 1.831\n", "Current position: 0\n", "2017-01-06 14:27:00\n", "Training...\n", "Current basis: 2.030, predicted basis: 1.820\n", "Current position: 0\n", "2017-01-06 14:28:00\n", "Training...\n", "Current basis: 1.936, predicted basis: 1.809\n", "Current position: 0\n", "2017-01-06 14:29:00\n", "Training...\n", "Current basis: 1.986, predicted basis: 1.798\n", "Current position: 0\n", "2017-01-06 14:30:00\n", "Training...\n", "Current basis: 1.886, predicted basis: 1.787\n", "Current position: 0\n", "2017-01-06 14:31:00\n", "Training...\n", "Current basis: 1.906, predicted basis: 1.775\n", "Current position: 0\n", "2017-01-06 14:32:00\n", "Training...\n", "Current basis: 1.806, predicted basis: 1.764\n", "Current position: 0\n", "2017-01-06 14:33:00\n", "Training...\n", "Current basis: 1.806, predicted basis: 1.753\n", "Current position: 0\n", "2017-01-06 14:34:00\n", "Training...\n", "Current basis: 1.906, predicted basis: 1.742\n", "Current position: 0\n", "2017-01-06 14:35:00\n", "Training...\n", "Current basis: 1.861, predicted basis: 1.730\n", "Current position: 0\n", "2017-01-06 14:36:00\n", "Training...\n", "Current basis: 1.857, predicted basis: 1.719\n", "Current position: 0\n", "2017-01-06 14:37:00\n", "Training...\n", "Current basis: 1.856, predicted basis: 1.708\n", "Current position: 0\n", "2017-01-06 14:38:00\n", "Training...\n", "Current basis: 1.756, predicted basis: 1.697\n", "Current position: 0\n", "2017-01-06 14:39:00\n", "Training...\n", "Current basis: 1.756, predicted basis: 1.685\n", "Current position: 0\n", "2017-01-06 14:40:00\n", "Training...\n", "Current basis: 1.757, predicted basis: 1.674\n", "Current position: 0\n", "2017-01-06 14:41:00\n", "Training...\n", "Current basis: 1.782, predicted basis: 1.663\n", "Current position: 0\n", "2017-01-06 14:42:00\n", "Training...\n", "Current basis: 1.732, predicted basis: 1.652\n", "Current position: 0\n", "2017-01-06 14:43:00\n", "Training...\n", "Current basis: 1.910, predicted basis: 1.640\n", "Current position: 0\n", "2017-01-06 14:44:00\n", "Training...\n", "Current basis: 1.910, predicted basis: 1.629\n", "Current position: 0\n", "2017-01-06 14:45:00\n", "Training...\n", "Current basis: 1.935, predicted basis: 1.618\n", "Current position: 0\n", "2017-01-06 14:46:00\n", "Training...\n", "Current basis: 1.886, predicted basis: 1.607\n", "Current position: 0\n", "2017-01-06 14:47:00\n", "Training...\n", "Current basis: 1.911, predicted basis: 1.596\n", "Current position: 0\n", "2017-01-06 14:48:00\n", "Training...\n", "Current basis: 1.913, predicted basis: 1.584\n", "Current position: 0\n", "2017-01-06 14:49:00\n", "Training...\n", "Current basis: 1.862, predicted basis: 1.573\n", "Current position: 0\n", "2017-01-06 14:50:00\n", "Training...\n", "Current basis: 1.762, predicted basis: 1.562\n", "Current position: 0\n", "2017-01-06 14:51:00\n", "Training...\n", "Current basis: 1.785, predicted basis: 1.551\n", "Current position: 0\n", "2017-01-06 14:52:00\n", "Training...\n", "Current basis: 1.684, predicted basis: 1.539\n", "Current position: 0\n", "2017-01-06 14:53:00\n", "Training...\n", "Current basis: 1.509, predicted basis: 1.528\n", "Current position: 0\n", "2017-01-06 14:54:00\n", "Training...\n", "Current basis: 1.614, predicted basis: 1.528\n", "Current position: 0\n", "2017-01-06 14:55:00\n", "Training...\n", "Current basis: 1.663, predicted basis: 1.517\n", "Current position: 0\n", "2017-01-06 14:56:00\n", "Training...\n", "Current basis: 1.538, predicted basis: 1.506\n", "Current position: 0\n", "2017-01-06 14:57:00\n", "Training...\n", "Current basis: 1.638, predicted basis: 1.494\n", "Current position: 0\n", "2017-01-06 14:58:00\n", "Training...\n", "Current basis: 1.636, predicted basis: 1.483\n", "Current position: 0\n", "2017-01-06 14:59:00\n", "Training...\n", "Current basis: 1.584, predicted basis: 1.472\n", "Current position: 0\n", "2017-01-06 15:00:00\n", "Training...\n", "Current basis: 1.507, predicted basis: 1.461\n", "Current position: 0\n", "2017-01-06 15:01:00\n", "Training...\n", "Current basis: 1.483, predicted basis: 1.449\n", "Current position: 0\n", "2017-01-06 15:02:00\n", "Training...\n", "Current basis: 1.606, predicted basis: 1.438\n", "Current position: 0\n", "2017-01-06 15:03:00\n", "Training...\n", "Current basis: 1.605, predicted basis: 1.427\n", "Current position: 0\n", "2017-01-06 15:04:00\n", "Training...\n", "Current basis: 1.605, predicted basis: 1.416\n", "Current position: 0\n", "2017-01-06 15:05:00\n", "Training...\n", "Current basis: 1.781, predicted basis: 1.404\n", "Current position: 0\n", "2017-01-06 15:06:00\n", "Training...\n", "Current basis: 1.782, predicted basis: 1.393\n", "Current position: 0\n", "2017-01-06 15:07:00\n", "Training...\n", "Current basis: 1.806, predicted basis: 1.382\n", "Current position: 0\n", "2017-01-06 15:08:00\n", "Training...\n", "Current basis: 1.781, predicted basis: 1.371\n", "Current position: 0\n", "2017-01-06 15:09:00\n", "Training...\n", "Current basis: 1.705, predicted basis: 1.360\n", "Current position: 0\n", "2017-01-06 15:10:00\n", "Training...\n", "Current basis: 1.953, predicted basis: 1.348\n", "Current position: 0\n", "2017-01-06 15:11:00\n", "Training...\n", "Current basis: 1.852, predicted basis: 1.337\n", "Current position: 0\n", "2017-01-06 15:12:00\n", "Training...\n", "Current basis: 1.802, predicted basis: 1.326\n", "Current position: -10\n", "2017-01-06 15:13:00\n", "Training...\n", "Current basis: 1.802, predicted basis: 1.315\n", "Current position: -20\n", "2017-01-06 15:14:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 1.876, predicted basis: 1.303\n", "Current position: -20\n", "2017-01-06 15:15:00\n", "Training...\n", "Current basis: 1.929, predicted basis: 1.292\n", "Current position: -20\n", "2017-01-06 15:16:00\n", "Training...\n", "Current basis: 1.755, predicted basis: 1.281\n", "Current position: -30\n", "2017-01-06 15:17:00\n", "Training...\n", "Current basis: 1.554, predicted basis: 1.270\n", "Current position: -40\n", "2017-01-06 15:18:00\n", "Training...\n", "Current basis: 1.654, predicted basis: 1.258\n", "Current position: -40\n", "2017-01-06 15:19:00\n", "Training...\n", "Current basis: 1.554, predicted basis: 1.247\n", "Current position: -40\n", "2017-01-06 15:20:00\n", "Training...\n", "Current basis: 1.629, predicted basis: 1.236\n", "Current position: -40\n", "2017-01-06 15:21:00\n", "Training...\n", "Current basis: 1.580, predicted basis: 1.225\n", "Current position: -40\n", "2017-01-06 15:22:00\n", "Training...\n", "Current basis: 1.505, predicted basis: 1.213\n", "Current position: -40\n", "2017-01-06 15:23:00\n", "Training...\n", "Current basis: 1.257, predicted basis: 1.202\n", "Current position: -40\n", "2017-01-06 15:24:00\n", "Training...\n", "Current basis: 1.680, predicted basis: 1.191\n", "Current position: -40\n", "2017-01-06 15:25:00\n", "Training...\n", "Current basis: 1.828, predicted basis: 1.180\n", "Current position: -30\n", "2017-01-06 15:26:00\n", "Training...\n", "Current basis: 2.078, predicted basis: 1.169\n", "Current position: -30\n", "2017-01-06 15:27:00\n", "Training...\n", "Current basis: 1.781, predicted basis: 1.169\n", "Current position: -40\n", "2017-01-06 15:28:00\n", "Training...\n", "Current basis: 1.482, predicted basis: 1.169\n", "Current position: -50\n", "2017-01-06 15:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.169\n", "Current position: -60\n", "2017-01-06 15:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.169\n", "Current position: -60\n", "2017-01-09 09:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.157\n", "Current position: -60\n", "2017-01-09 09:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.146\n", "Current position: -60\n", "2017-01-09 09:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.135\n", "Current position: -60\n", "2017-01-09 09:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.135\n", "Current position: -60\n", "2017-01-09 09:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.135\n", "Current position: -60\n", "2017-01-09 09:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.135\n", "Current position: -60\n", "2017-01-09 09:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.135\n", "Current position: -60\n", "2017-01-09 09:37:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.124\n", "Current position: -60\n", "2017-01-09 09:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.112\n", "Current position: -60\n", "2017-01-09 09:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.101\n", "Current position: -60\n", "2017-01-09 09:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.090\n", "Current position: -60\n", "2017-01-09 09:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.079\n", "Current position: -60\n", "2017-01-09 09:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.067\n", "Current position: -60\n", "2017-01-09 09:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.056\n", "Current position: -60\n", "2017-01-09 09:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.045\n", "Current position: -60\n", "2017-01-09 09:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.034\n", "Current position: -60\n", "2017-01-09 09:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.022\n", "Current position: -60\n", "2017-01-09 09:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.011\n", "Current position: -60\n", "2017-01-09 09:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 09:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 09:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 09:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 09:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 09:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:00:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:23:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:37:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 10:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:00:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:23:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:37:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 11:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:00:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:23:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:37:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 12:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:00:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:23:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:37:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 13:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:00:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:23:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:31:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:32:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:33:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:34:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:35:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:36:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:37:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:38:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:39:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:40:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:41:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:42:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:43:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:44:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:45:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:46:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "2017-01-09 14:47:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:48:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:49:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:50:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:51:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:52:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:53:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:54:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:55:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:56:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:57:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:58:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 14:59:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:00:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:01:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:02:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:03:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:04:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:05:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:06:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:07:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:08:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:09:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:10:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:11:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:12:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:13:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:14:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:15:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:16:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:17:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:18:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:19:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:20:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:21:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:22:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:23:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:24:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:25:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:26:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:27:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:28:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:29:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-09 15:30:00\n", "Training...\n", "Current basis: 1.311, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-10 09:30:00\n", "Training...\n", "Current basis: 0.103, predicted basis: 1.000\n", "Current position: -60\n", "2017-01-10 09:31:00\n", "Training...\n", "Current basis: 0.566, predicted basis: 0.989\n", "Current position: 110\n", "2017-01-10 09:32:00\n", "Training...\n", "Current basis: 0.687, predicted basis: 0.978\n", "Current position: 120\n", "2017-01-10 09:33:00\n", "Training...\n", "Current basis: 0.243, predicted basis: 0.966\n", "Current position: 120\n", "2017-01-10 09:34:00\n", "Training...\n", "Current basis: 0.246, predicted basis: 0.955\n", "Current position: 120\n", "2017-01-10 09:35:00\n", "Training...\n", "Current basis: 0.377, predicted basis: 0.944\n", "Current position: 130\n", "2017-01-10 09:36:00\n", "Training...\n", "Current basis: 0.355, predicted basis: 0.933\n", "Current position: 140\n", "2017-01-10 09:37:00\n", "Training...\n", "Current basis: 0.453, predicted basis: 0.921\n", "Current position: 150\n", "2017-01-10 09:38:00\n", "Training...\n", "Current basis: 0.302, predicted basis: 0.910\n", "Current position: 160\n", "2017-01-10 09:39:00\n", "Training...\n", "Current basis: 0.273, predicted basis: 0.899\n", "Current position: 160\n", "2017-01-10 09:40:00\n", "Training...\n", "Current basis: 0.344, predicted basis: 0.888\n", "Current position: 170\n", "2017-01-10 09:41:00\n", "Training...\n", "Current basis: 0.589, predicted basis: 0.876\n", "Current position: 180\n", "2017-01-10 09:42:00\n", "Training...\n", "Current basis: 0.387, predicted basis: 0.865\n", "Current position: 190\n", "2017-01-10 09:43:00\n", "Training...\n", "Current basis: 0.313, predicted basis: 0.854\n", "Current position: 190\n", "2017-01-10 09:44:00\n", "Training...\n", "Current basis: 0.640, predicted basis: 0.843\n", "Current position: 190\n", "2017-01-10 09:45:00\n", "Training...\n", "Current basis: 0.717, predicted basis: 0.831\n", "Current position: 200\n", "2017-01-10 09:46:00\n", "Training...\n", "Current basis: 0.568, predicted basis: 0.820\n", "Current position: 200\n", "2017-01-10 09:47:00\n", "Training...\n", "Current basis: 0.495, predicted basis: 0.809\n", "Current position: 190\n", "2017-01-10 09:48:00\n", "Training...\n", "Current basis: 0.499, predicted basis: 0.798\n", "Current position: 190\n", "2017-01-10 09:49:00\n", "Training...\n", "Current basis: 0.500, predicted basis: 0.787\n", "Current position: 190\n", "2017-01-10 09:50:00\n", "Training...\n", "Current basis: 0.526, predicted basis: 0.775\n", "Current position: 190\n", "2017-01-10 09:51:00\n", "Training...\n", "Current basis: 0.424, predicted basis: 0.764\n", "Current position: 190\n", "2017-01-10 09:52:00\n", "Training...\n", "Current basis: 0.322, predicted basis: 0.753\n", "Current position: 190\n", "2017-01-10 09:53:00\n", "Training...\n", "Current basis: 0.522, predicted basis: 0.742\n", "Current position: 190\n", "2017-01-10 09:54:00\n", "Training...\n", "Current basis: 0.496, predicted basis: 0.730\n", "Current position: 190\n", "2017-01-10 09:55:00\n", "Training...\n", "Current basis: 0.446, predicted basis: 0.719\n", "Current position: 190\n", "2017-01-10 09:56:00\n", "Training...\n", "Current basis: 0.596, predicted basis: 0.708\n", "Current position: 190\n", "2017-01-10 09:57:00\n", "Training...\n", "Current basis: 0.722, predicted basis: 0.697\n", "Current position: 190\n", "2017-01-10 09:58:00\n", "Training...\n", "Current basis: 0.674, predicted basis: 0.685\n", "Current position: 180\n", "2017-01-10 09:59:00\n", "Training...\n", "Current basis: 0.799, predicted basis: 0.674\n", "Current position: 170\n", "2017-01-10 10:00:00\n", "Training...\n", "Current basis: 0.946, predicted basis: 0.663\n", "Current position: 160\n", "2017-01-10 10:01:00\n", "Training...\n", "Current basis: 0.620, predicted basis: 0.652\n", "Current position: 150\n", "2017-01-10 10:02:00\n", "Training...\n", "Current basis: 0.691, predicted basis: 0.640\n", "Current position: 150\n", "2017-01-10 10:03:00\n", "Training...\n", "Current basis: 0.665, predicted basis: 0.629\n", "Current position: 140\n", "2017-01-10 10:04:00\n", "Training...\n", "Current basis: 0.814, predicted basis: 0.618\n", "Current position: 130\n", "2017-01-10 10:05:00\n", "Training...\n", "Current basis: 0.864, predicted basis: 0.607\n", "Current position: 120\n", "2017-01-10 10:06:00\n", "Training...\n", "Current basis: 0.739, predicted basis: 0.596\n", "Current position: 110\n", "2017-01-10 10:07:00\n", "Training...\n", "Current basis: 0.765, predicted basis: 0.584\n", "Current position: 110\n", "2017-01-10 10:08:00\n", "Training...\n", "Current basis: 0.791, predicted basis: 0.573\n", "Current position: 100\n", "2017-01-10 10:09:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 0.767, predicted basis: 0.562\n", "Current position: 90\n", "2017-01-10 10:10:00\n", "Training...\n", "Current basis: 0.915, predicted basis: 0.551\n", "Current position: 90\n", "2017-01-10 10:11:00\n", "Training...\n", "Current basis: 0.989, predicted basis: 0.539\n", "Current position: 90\n", "2017-01-10 10:12:00\n", "Training...\n", "Current basis: 0.793, predicted basis: 0.528\n", "Current position: 90\n", "2017-01-10 10:13:00\n", "Training...\n", "Current basis: 0.740, predicted basis: 0.517\n", "Current position: 90\n", "2017-01-10 10:14:00\n", "Training...\n", "Current basis: 0.989, predicted basis: 0.506\n", "Current position: 90\n", "2017-01-10 10:15:00\n", "Training...\n", "Current basis: 0.716, predicted basis: 0.494\n", "Current position: 90\n", "2017-01-10 10:16:00\n", "Training...\n", "Current basis: 0.839, predicted basis: 0.483\n", "Current position: 90\n", "2017-01-10 10:17:00\n", "Training...\n", "Current basis: 1.154, predicted basis: 0.483\n", "Current position: 90\n", "2017-01-10 10:18:00\n", "Training...\n", "Current basis: 0.831, predicted basis: 0.472\n", "Current position: 90\n", "2017-01-10 10:19:00\n", "Training...\n", "Current basis: 0.702, predicted basis: 0.472\n", "Current position: 80\n", "2017-01-10 10:20:00\n", "Training...\n", "Current basis: 1.125, predicted basis: 0.472\n", "Current position: 80\n", "2017-01-10 10:21:00\n", "Training...\n", "Current basis: 1.196, predicted basis: 0.472\n", "Current position: 80\n", "2017-01-10 10:22:00\n", "Training...\n", "Current basis: 1.003, predicted basis: 0.472\n", "Current position: 70\n", "2017-01-10 10:23:00\n", "Training...\n", "Current basis: 1.230, predicted basis: 0.472\n", "Current position: 60\n", "2017-01-10 10:24:00\n", "Training...\n", "Current basis: 1.397, predicted basis: 0.472\n", "Current position: 50\n", "2017-01-10 10:25:00\n", "Training...\n", "Current basis: 1.148, predicted basis: 0.472\n", "Current position: 40\n", "2017-01-10 10:26:00\n", "Training...\n", "Current basis: 1.295, predicted basis: 0.472\n", "Current position: 30\n", "2017-01-10 10:27:00\n", "Training...\n", "Current basis: 1.246, predicted basis: 0.472\n", "Current position: 20\n", "2017-01-10 10:28:00\n", "Training...\n", "Current basis: 1.194, predicted basis: 0.461\n", "Current position: 10\n", "2017-01-10 10:29:00\n", "Training...\n", "Current basis: 1.144, predicted basis: 0.449\n", "Current position: 0\n", "2017-01-10 10:30:00\n", "Training...\n", "Current basis: 0.943, predicted basis: 0.438\n", "Current position: -10\n", "2017-01-10 10:31:00\n", "Training...\n", "Current basis: 0.743, predicted basis: 0.427\n", "Current position: -20\n", "2017-01-10 10:32:00\n", "Training...\n", "Current basis: 0.920, predicted basis: 0.416\n", "Current position: -30\n", "2017-01-10 10:33:00\n", "Training...\n", "Current basis: 1.044, predicted basis: 0.416\n", "Current position: -30\n", "2017-01-10 10:34:00\n", "Training...\n", "Current basis: 1.044, predicted basis: 0.416\n", "Current position: -40\n", "2017-01-10 10:35:00\n", "Training...\n", "Current basis: 0.945, predicted basis: 0.416\n", "Current position: -50\n", "2017-01-10 10:36:00\n", "Training...\n", "Current basis: 0.920, predicted basis: 0.416\n", "Current position: -60\n", "2017-01-10 10:37:00\n", "Training...\n", "Current basis: 1.218, predicted basis: 0.416\n", "Current position: -70\n", "2017-01-10 10:38:00\n", "Training...\n", "Current basis: 1.144, predicted basis: 0.404\n", "Current position: -80\n", "2017-01-10 10:39:00\n", "Training...\n", "Current basis: 1.044, predicted basis: 0.393\n", "Current position: -90\n", "2017-01-10 10:40:00\n", "Training...\n", "Current basis: 0.970, predicted basis: 0.382\n", "Current position: -100\n", "2017-01-10 10:41:00\n", "Training...\n", "Current basis: 0.871, predicted basis: 0.371\n", "Current position: -110\n", "2017-01-10 10:42:00\n", "Training...\n", "Current basis: 0.870, predicted basis: 0.360\n", "Current position: -120\n", "2017-01-10 10:43:00\n", "Training...\n", "Current basis: 1.069, predicted basis: 0.360\n", "Current position: -130\n", "2017-01-10 10:44:00\n", "Training...\n", "Current basis: 0.920, predicted basis: 0.360\n", "Current position: -140\n", "2017-01-10 10:45:00\n", "Training...\n", "Current basis: 0.995, predicted basis: 0.360\n", "Current position: -150\n", "2017-01-10 10:46:00\n", "Training...\n", "Current basis: 1.095, predicted basis: 0.348\n", "Current position: -160\n", "2017-01-10 10:47:00\n", "Training...\n", "Current basis: 1.020, predicted basis: 0.337\n", "Current position: -170\n", "2017-01-10 10:48:00\n", "Training...\n", "Current basis: 1.097, predicted basis: 0.326\n", "Current position: -180\n", "2017-01-10 10:49:00\n", "Training...\n", "Current basis: 1.175, predicted basis: 0.315\n", "Current position: -190\n", "2017-01-10 10:50:00\n", "Training...\n", "Current basis: 0.557, predicted basis: 0.303\n", "Current position: -200\n", "2017-01-10 10:51:00\n", "Training...\n", "Current basis: 0.680, predicted basis: 0.292\n", "Current position: -210\n", "2017-01-10 10:52:00\n", "Training...\n", "Current basis: 0.706, predicted basis: 0.281\n", "Current position: -210\n", "2017-01-10 10:53:00\n", "Training...\n", "Current basis: 0.853, predicted basis: 0.270\n", "Current position: -210\n", "2017-01-10 10:54:00\n", "Training...\n", "Current basis: 0.852, predicted basis: 0.258\n", "Current position: -210\n", "2017-01-10 10:55:00\n", "Training...\n", "Current basis: 0.827, predicted basis: 0.247\n", "Current position: -220\n", "2017-01-10 10:56:00\n", "Training...\n", "Current basis: 0.727, predicted basis: 0.236\n", "Current position: -230\n", "2017-01-10 10:57:00\n", "Training...\n", "Current basis: 0.702, predicted basis: 0.225\n", "Current position: -240\n", "2017-01-10 10:58:00\n", "Training...\n", "Current basis: 0.627, predicted basis: 0.213\n", "Current position: -240\n", "2017-01-10 10:59:00\n", "Training...\n", "Current basis: 0.926, predicted basis: 0.213\n", "Current position: -240\n", "2017-01-10 11:00:00\n", "Training...\n", "Current basis: 0.976, predicted basis: 0.225\n", "Current position: -240\n", "2017-01-10 11:01:00\n", "Training...\n", "Current basis: 1.150, predicted basis: 0.236\n", "Current position: -250\n", "2017-01-10 11:02:00\n", "Training...\n", "Current basis: 1.151, predicted basis: 0.247\n", "Current position: -250\n", "2017-01-10 11:03:00\n", "Training...\n", "Current basis: 1.222, predicted basis: 0.258\n", "Current position: -250\n", "2017-01-10 11:04:00\n", "Training...\n", "Current basis: 1.171, predicted basis: 0.270\n", "Current position: -250\n", "2017-01-10 11:05:00\n", "Training...\n", "Current basis: 1.198, predicted basis: 0.281\n", "Current position: -250\n", "2017-01-10 11:06:00\n", "Training...\n", "Current basis: 1.172, predicted basis: 0.292\n", "Current position: -250\n", "2017-01-10 11:07:00\n", "Training...\n", "Current basis: 1.072, predicted basis: 0.303\n", "Current position: -250\n", "2017-01-10 11:08:00\n", "Training...\n", "Current basis: 1.046, predicted basis: 0.315\n", "Current position: -250\n", "2017-01-10 11:09:00\n", "Training...\n", "Current basis: 1.096, predicted basis: 0.326\n", "Current position: -250\n", "2017-01-10 11:10:00\n", "Training...\n", "Current basis: 0.944, predicted basis: 0.337\n", "Current position: -250\n", "2017-01-10 11:11:00\n", "Training...\n", "Current basis: 1.029, predicted basis: 0.348\n", "Current position: -250\n", "2017-01-10 11:12:00\n", "Training...\n", "Current basis: 1.083, predicted basis: 0.360\n", "Current position: -250\n", "2017-01-10 11:13:00\n", "Training...\n", "Current basis: 1.006, predicted basis: 0.371\n", "Current position: -250\n", "2017-01-10 11:14:00\n", "Training...\n", "Current basis: 1.279, predicted basis: 0.382\n", "Current position: -250\n", "2017-01-10 11:15:00\n", "Training...\n", "Current basis: 1.230, predicted basis: 0.393\n", "Current position: -250\n", "2017-01-10 11:16:00\n", "Training...\n", "Current basis: 1.230, predicted basis: 0.404\n", "Current position: -250\n", "2017-01-10 11:17:00\n", "Training...\n", "Current basis: 0.912, predicted basis: 0.416\n", "Current position: -250\n", "2017-01-10 11:18:00\n", "Training...\n", "Current basis: 1.158, predicted basis: 0.427\n", "Current position: -250\n", "2017-01-10 11:19:00\n", "Training...\n", "Current basis: 1.032, predicted basis: 0.438\n", "Current position: -250\n", "2017-01-10 11:20:00\n", "Training...\n", "Current basis: 1.236, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:21:00\n", "Training...\n", "Current basis: 1.088, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:22:00\n", "Training...\n", "Current basis: 1.139, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:23:00\n", "Training...\n", "Current basis: 0.865, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:24:00\n", "Training...\n", "Current basis: 0.791, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:25:00\n", "Training...\n", "Current basis: 0.415, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:26:00\n", "Training...\n", "Current basis: 0.564, predicted basis: 0.449\n", "Current position: -250\n", "2017-01-10 11:27:00\n", "Training...\n", "Current basis: 0.615, predicted basis: 0.449\n", "Current position: -240\n", "2017-01-10 11:28:00\n", "Training...\n", "Current basis: 0.562, predicted basis: 0.449\n", "Current position: -230\n", "2017-01-10 11:29:00\n", "Training...\n", "Current basis: 0.737, predicted basis: 0.449\n", "Current position: -220\n", "2017-01-10 11:30:00\n", "Training...\n", "Current basis: 0.861, predicted basis: 0.449\n", "Current position: -210\n", "2017-01-10 11:31:00\n", "Training...\n", "Current basis: 0.858, predicted basis: 0.449\n", "Current position: -210\n", "2017-01-10 11:32:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 0.684, predicted basis: 0.449\n", "Current position: -210\n", "2017-01-10 11:33:00\n", "Training...\n", "Current basis: 0.808, predicted basis: 0.449\n", "Current position: -210\n", "2017-01-10 11:34:00\n", "Training...\n", "Current basis: 0.759, predicted basis: 0.461\n", "Current position: -210\n", "2017-01-10 11:35:00\n", "Training...\n", "Current basis: 0.983, predicted basis: 0.472\n", "Current position: -210\n", "2017-01-10 11:36:00\n", "Training...\n", "Current basis: 1.006, predicted basis: 0.483\n", "Current position: -210\n", "2017-01-10 11:37:00\n", "Training...\n", "Current basis: 1.257, predicted basis: 0.494\n", "Current position: -220\n", "2017-01-10 11:38:00\n", "Training...\n", "Current basis: 1.182, predicted basis: 0.506\n", "Current position: -230\n", "2017-01-10 11:39:00\n", "Training...\n", "Current basis: 1.107, predicted basis: 0.506\n", "Current position: -240\n", "2017-01-10 11:40:00\n", "Training...\n", "Current basis: 1.182, predicted basis: 0.506\n", "Current position: -250\n", "2017-01-10 11:41:00\n", "Training...\n", "Current basis: 0.932, predicted basis: 0.506\n", "Current position: -250\n", "2017-01-10 11:42:00\n", "Training...\n", "Current basis: 0.901, predicted basis: 0.517\n", "Current position: -250\n", "2017-01-10 11:43:00\n", "Training...\n", "Current basis: 0.529, predicted basis: 0.528\n", "Current position: -250\n", "2017-01-10 11:44:00\n", "Training...\n", "Current basis: 0.828, predicted basis: 0.539\n", "Current position: -250\n", "2017-01-10 11:45:00\n", "Training...\n", "Current basis: 1.422, predicted basis: 0.539\n", "Current position: -240\n", "2017-01-10 11:46:00\n", "Training...\n", "Current basis: 1.615, predicted basis: 0.528\n", "Current position: -240\n", "2017-01-10 11:47:00\n", "Training...\n", "Current basis: 1.036, predicted basis: 0.528\n", "Current position: -250\n", "2017-01-10 11:48:00\n", "Training...\n", "Current basis: 0.236, predicted basis: 0.517\n", "Current position: -250\n", "2017-01-10 11:49:00\n", "Training...\n", "Current basis: 0.590, predicted basis: 0.506\n", "Current position: -250\n", "2017-01-10 11:50:00\n", "Training...\n", "Current basis: 0.241, predicted basis: 0.494\n", "Current position: -250\n", "2017-01-10 11:51:00\n", "Training...\n", "Current basis: -0.305, predicted basis: 0.483\n", "Current position: -240\n", "2017-01-10 11:52:00\n", "Training...\n", "Current basis: -0.354, predicted basis: 0.472\n", "Current position: -240\n", "2017-01-10 11:53:00\n", "Training...\n", "Current basis: -0.500, predicted basis: 0.461\n", "Current position: -230\n", "2017-01-10 11:54:00\n", "Training...\n", "Current basis: -0.501, predicted basis: 0.449\n", "Current position: -220\n", "2017-01-10 11:55:00\n", "Training...\n", "Current basis: -0.552, predicted basis: 0.438\n", "Current position: -210\n", "2017-01-10 11:56:00\n", "Training...\n", "Current basis: -0.479, predicted basis: 0.427\n", "Current position: -200\n", "2017-01-10 11:57:00\n", "Training...\n", "Current basis: -0.430, predicted basis: 0.427\n", "Current position: -190\n", "2017-01-10 11:58:00\n", "Training...\n", "Current basis: -0.354, predicted basis: 0.427\n", "Current position: -180\n", "2017-01-10 11:59:00\n", "Training...\n", "Current basis: -0.402, predicted basis: 0.427\n", "Current position: -170\n", "2017-01-10 12:00:00\n", "Training...\n", "Current basis: -0.452, predicted basis: 0.427\n", "Current position: -160\n", "2017-01-10 12:01:00\n", "Training...\n", "Current basis: -0.476, predicted basis: 0.427\n", "Current position: -150\n", "2017-01-10 12:02:00\n", "Training...\n", "Current basis: -0.300, predicted basis: 0.416\n", "Current position: -140\n", "2017-01-10 12:03:00\n", "Training...\n", "Current basis: -0.273, predicted basis: 0.404\n", "Current position: -130\n", "2017-01-10 12:04:00\n", "Training...\n", "Current basis: -0.172, predicted basis: 0.393\n", "Current position: -120\n", "2017-01-10 12:05:00\n", "Training...\n", "Current basis: -0.222, predicted basis: 0.382\n", "Current position: -110\n", "2017-01-10 12:06:00\n", "Training...\n", "Current basis: -0.274, predicted basis: 0.371\n", "Current position: -100\n", "2017-01-10 12:07:00\n", "Training...\n", "Current basis: -0.572, predicted basis: 0.371\n", "Current position: -90\n", "2017-01-10 12:08:00\n", "Training...\n", "Current basis: -0.445, predicted basis: 0.371\n", "Current position: -80\n", "2017-01-10 12:09:00\n", "Training...\n", "Current basis: -0.296, predicted basis: 0.371\n", "Current position: -70\n", "2017-01-10 12:10:00\n", "Training...\n", "Current basis: -0.371, predicted basis: 0.371\n", "Current position: -60\n", "2017-01-10 12:11:00\n", "Training...\n", "Current basis: -0.398, predicted basis: 0.371\n", "Current position: -50\n", "2017-01-10 12:12:00\n", "Training...\n", "Current basis: -0.448, predicted basis: 0.360\n", "Current position: -40\n", "2017-01-10 12:13:00\n", "Training...\n", "Current basis: -0.325, predicted basis: 0.348\n", "Current position: -30\n", "2017-01-10 12:14:00\n", "Training...\n", "Current basis: -0.275, predicted basis: 0.337\n", "Current position: -20\n", "2017-01-10 12:15:00\n", "Training...\n", "Current basis: -0.125, predicted basis: 0.337\n", "Current position: -10\n", "2017-01-10 12:16:00\n", "Training...\n", "Current basis: -0.079, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:17:00\n", "Training...\n", "Current basis: 0.047, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:18:00\n", "Training...\n", "Current basis: 0.243, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:19:00\n", "Training...\n", "Current basis: 0.195, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:20:00\n", "Training...\n", "Current basis: 0.295, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:21:00\n", "Training...\n", "Current basis: 0.272, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:22:00\n", "Training...\n", "Current basis: 0.050, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:23:00\n", "Training...\n", "Current basis: -0.100, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:24:00\n", "Training...\n", "Current basis: -0.075, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:25:00\n", "Training...\n", "Current basis: -0.148, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:26:00\n", "Training...\n", "Current basis: -0.320, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:27:00\n", "Training...\n", "Current basis: -0.171, predicted basis: 0.337\n", "Current position: 0\n", "2017-01-10 12:28:00\n", "Training...\n", "Current basis: -0.221, predicted basis: 0.326\n", "Current position: 10\n", "2017-01-10 12:29:00\n", "Training...\n", "Current basis: -0.071, predicted basis: 0.315\n", "Current position: 20\n", "2017-01-10 12:30:00\n", "Training...\n", "Current basis: -0.419, predicted basis: 0.303\n", "Current position: 30\n", "2017-01-10 12:31:00\n", "Training...\n", "Current basis: -0.369, predicted basis: 0.292\n", "Current position: 30\n", "2017-01-10 12:32:00\n", "Training...\n", "Current basis: -0.273, predicted basis: 0.281\n", "Current position: 40\n", "2017-01-10 12:33:00\n", "Training...\n", "Current basis: -0.074, predicted basis: 0.270\n", "Current position: 50\n", "2017-01-10 12:34:00\n", "Training...\n", "Current basis: -0.074, predicted basis: 0.258\n", "Current position: 60\n", "2017-01-10 12:35:00\n", "Training...\n", "Current basis: 0.026, predicted basis: 0.247\n", "Current position: 60\n", "2017-01-10 12:36:00\n", "Training...\n", "Current basis: -0.149, predicted basis: 0.236\n", "Current position: 60\n", "2017-01-10 12:37:00\n", "Training...\n", "Current basis: -0.124, predicted basis: 0.225\n", "Current position: 60\n", "2017-01-10 12:38:00\n", "Training...\n", "Current basis: 0.175, predicted basis: 0.213\n", "Current position: 60\n", "2017-01-10 12:39:00\n", "Training...\n", "Current basis: 0.347, predicted basis: 0.202\n", "Current position: 60\n", "2017-01-10 12:40:00\n", "Training...\n", "Current basis: 0.296, predicted basis: 0.191\n", "Current position: 50\n", "2017-01-10 12:41:00\n", "Training...\n", "Current basis: -0.075, predicted basis: 0.180\n", "Current position: 40\n", "2017-01-10 12:42:00\n", "Training...\n", "Current basis: -0.200, predicted basis: 0.169\n", "Current position: 30\n", "2017-01-10 12:43:00\n", "Training...\n", "Current basis: -0.124, predicted basis: 0.157\n", "Current position: 30\n", "2017-01-10 12:44:00\n", "Training...\n", "Current basis: -0.323, predicted basis: 0.146\n", "Current position: 30\n", "2017-01-10 12:45:00\n", "Training...\n", "Current basis: -0.274, predicted basis: 0.135\n", "Current position: 30\n", "2017-01-10 12:46:00\n", "Training...\n", "Current basis: -0.201, predicted basis: 0.124\n", "Current position: 30\n", "2017-01-10 12:47:00\n", "Training...\n", "Current basis: -0.178, predicted basis: 0.112\n", "Current position: 30\n", "2017-01-10 12:48:00\n", "Training...\n", "Current basis: -0.052, predicted basis: 0.101\n", "Current position: 30\n", "2017-01-10 12:49:00\n", "Training...\n", "Current basis: 0.022, predicted basis: 0.090\n", "Current position: 30\n", "2017-01-10 12:50:00\n", "Training...\n", "Current basis: 0.048, predicted basis: 0.090\n", "Current position: 20\n", "2017-01-10 12:51:00\n", "Training...\n", "Current basis: -0.075, predicted basis: 0.090\n", "Current position: 10\n", "2017-01-10 12:52:00\n", "Training...\n", "Current basis: -0.029, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:53:00\n", "Training...\n", "Current basis: 0.222, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:54:00\n", "Training...\n", "Current basis: 0.123, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:55:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: -0.351, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:56:00\n", "Training...\n", "Current basis: -0.176, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:57:00\n", "Training...\n", "Current basis: -0.275, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:58:00\n", "Training...\n", "Current basis: -0.325, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 12:59:00\n", "Training...\n", "Current basis: -0.300, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 13:00:00\n", "Training...\n", "Current basis: -0.199, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 13:01:00\n", "Training...\n", "Current basis: -0.074, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 13:02:00\n", "Training...\n", "Current basis: -0.224, predicted basis: 0.090\n", "Current position: 0\n", "2017-01-10 13:03:00\n", "Training...\n", "Current basis: -0.244, predicted basis: 0.079\n", "Current position: 0\n", "2017-01-10 13:04:00\n", "Training...\n", "Current basis: -0.195, predicted basis: 0.067\n", "Current position: 0\n", "2017-01-10 13:05:00\n", "Training...\n", "Current basis: -0.019, predicted basis: 0.056\n", "Current position: 0\n", "2017-01-10 13:06:00\n", "Training...\n", "Current basis: 0.006, predicted basis: 0.045\n", "Current position: 0\n", "2017-01-10 13:07:00\n", "Training...\n", "Current basis: -0.070, predicted basis: 0.034\n", "Current position: 0\n", "2017-01-10 13:08:00\n", "Training...\n", "Current basis: -0.094, predicted basis: 0.034\n", "Current position: 0\n", "2017-01-10 13:09:00\n", "Training...\n", "Current basis: -0.020, predicted basis: 0.034\n", "Current position: 0\n", "2017-01-10 13:10:00\n", "Training...\n", "Current basis: 0.077, predicted basis: 0.034\n", "Current position: 0\n", "2017-01-10 13:11:00\n", "Training...\n", "Current basis: -0.076, predicted basis: 0.022\n", "Current position: 0\n", "2017-01-10 13:12:00\n", "Training...\n", "Current basis: 0.274, predicted basis: 0.011\n", "Current position: 0\n", "2017-01-10 13:13:00\n", "Training...\n", "Current basis: 0.275, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:14:00\n", "Training...\n", "Current basis: 0.324, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:15:00\n", "Training...\n", "Current basis: 0.250, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:16:00\n", "Training...\n", "Current basis: 0.150, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:17:00\n", "Training...\n", "Current basis: -0.025, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:18:00\n", "Training...\n", "Current basis: -0.076, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:19:00\n", "Training...\n", "Current basis: -0.126, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:20:00\n", "Training...\n", "Current basis: -0.051, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:21:00\n", "Training...\n", "Current basis: -0.125, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:22:00\n", "Training...\n", "Current basis: -0.200, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:23:00\n", "Training...\n", "Current basis: -0.150, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:24:00\n", "Training...\n", "Current basis: -0.251, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:25:00\n", "Training...\n", "Current basis: -0.351, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:26:00\n", "Training...\n", "Current basis: -0.401, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:27:00\n", "Training...\n", "Current basis: -0.226, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:28:00\n", "Training...\n", "Current basis: -0.176, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:29:00\n", "Training...\n", "Current basis: -0.351, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:30:00\n", "Training...\n", "Current basis: -0.400, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:31:00\n", "Training...\n", "Current basis: -0.375, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:32:00\n", "Training...\n", "Current basis: -0.300, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:33:00\n", "Training...\n", "Current basis: -0.300, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:34:00\n", "Training...\n", "Current basis: -0.125, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:35:00\n", "Training...\n", "Current basis: -0.201, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:36:00\n", "Training...\n", "Current basis: -0.225, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:37:00\n", "Training...\n", "Current basis: -0.300, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:38:00\n", "Training...\n", "Current basis: -0.600, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:39:00\n", "Training...\n", "Current basis: -0.450, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:40:00\n", "Training...\n", "Current basis: -0.401, predicted basis: 0.000\n", "Current position: 10\n", "2017-01-10 13:41:00\n", "Training...\n", "Current basis: -0.127, predicted basis: 0.000\n", "Current position: 10\n", "2017-01-10 13:42:00\n", "Training...\n", "Current basis: 0.121, predicted basis: 0.000\n", "Current position: 10\n", "2017-01-10 13:43:00\n", "Training...\n", "Current basis: -0.156, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:44:00\n", "Training...\n", "Current basis: -0.236, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:45:00\n", "Training...\n", "Current basis: 0.038, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:46:00\n", "Training...\n", "Current basis: -0.062, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:47:00\n", "Training...\n", "Current basis: -0.388, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:48:00\n", "Training...\n", "Current basis: 0.057, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:49:00\n", "Training...\n", "Current basis: 0.260, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:50:00\n", "Training...\n", "Current basis: -0.189, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:51:00\n", "Training...\n", "Current basis: -0.163, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:52:00\n", "Training...\n", "Current basis: -0.064, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:53:00\n", "Training...\n", "Current basis: -0.138, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:54:00\n", "Training...\n", "Current basis: -0.263, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:55:00\n", "Training...\n", "Current basis: -0.238, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:56:00\n", "Training...\n", "Current basis: -0.063, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:57:00\n", "Training...\n", "Current basis: -0.163, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:58:00\n", "Training...\n", "Current basis: -0.113, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 13:59:00\n", "Training...\n", "Current basis: -0.366, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:00:00\n", "Training...\n", "Current basis: -0.215, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:01:00\n", "Training...\n", "Current basis: -0.218, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:02:00\n", "Training...\n", "Current basis: 0.401, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:03:00\n", "Training...\n", "Current basis: 0.397, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:04:00\n", "Training...\n", "Current basis: 0.494, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:05:00\n", "Training...\n", "Current basis: 0.737, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:06:00\n", "Training...\n", "Current basis: 0.566, predicted basis: 0.000\n", "Current position: 0\n", "2017-01-10 14:07:00\n", "Training...\n", "Current basis: 0.569, predicted basis: 0.000\n", "Current position: -10\n", "2017-01-10 14:08:00\n", "Training...\n", "Current basis: 0.444, predicted basis: 0.000\n", "Current position: -20\n", "2017-01-10 14:09:00\n", "Training...\n", "Current basis: 0.469, predicted basis: 0.000\n", "Current position: -30\n", "2017-01-10 14:10:00\n", "Training...\n", "Current basis: 0.671, predicted basis: 0.000\n", "Current position: -30\n", "2017-01-10 14:11:00\n", "Training...\n", "Current basis: 0.618, predicted basis: 0.000\n", "Current position: -30\n", "2017-01-10 14:12:00\n", "Training...\n", "Current basis: 0.762, predicted basis: 0.000\n", "Current position: -40\n", "2017-01-10 14:13:00\n", "Training...\n", "Current basis: 0.767, predicted basis: 0.000\n", "Current position: -50\n", "2017-01-10 14:14:00\n", "Training...\n", "Current basis: 0.392, predicted basis: 0.000\n", "Current position: -60\n", "2017-01-10 14:15:00\n", "Training...\n", "Current basis: 0.566, predicted basis: 0.000\n", "Current position: -70\n", "2017-01-10 14:16:00\n", "Training...\n", "Current basis: 0.791, predicted basis: 0.000\n", "Current position: -70\n", "2017-01-10 14:17:00\n", "Training...\n", "Current basis: 0.641, predicted basis: 0.000\n", "Current position: -80\n", "2017-01-10 14:18:00\n", "Training...\n", "Current basis: 0.572, predicted basis: 0.000\n", "Current position: -90\n", "2017-01-10 14:19:00\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Training...\n", "Current basis: 0.324, predicted basis: 0.000\n", "Current position: -100\n", "2017-01-10 14:20:00\n", "Training...\n", "Current basis: 0.275, predicted basis: 0.000\n", "Current position: -110\n", "2017-01-10 14:21:00\n", "Training...\n", "Current basis: 0.548, predicted basis: 0.000\n", "Current position: -110\n", "2017-01-10 14:22:00\n", "Training...\n", "Current basis: 0.742, predicted basis: 0.000\n", "Current position: -110\n", "2017-01-10 14:23:00\n", "Training...\n", "Current basis: 0.393, predicted basis: 0.000\n", "Current position: -120\n", "2017-01-10 14:24:00\n", "Training...\n", "Current basis: 0.744, predicted basis: 0.000\n", "Current position: -130\n", "2017-01-10 14:25:00\n", "Training...\n", "Current basis: 0.473, predicted basis: 0.000\n", "Current position: -130\n", "2017-01-10 14:26:00\n", "Training...\n", "Current basis: 0.525, predicted basis: 0.000\n", "Current position: -140\n", "2017-01-10 14:27:00\n", "Training...\n", "Current basis: 0.901, predicted basis: 0.000\n", "Current position: -140\n", "2017-01-10 14:28:00\n", "Training...\n", "Current basis: 0.601, predicted basis: 0.000\n", "Current position: -150\n", "2017-01-10 14:29:00\n", "Training...\n", "Current basis: 0.697, predicted basis: 0.000\n", "Current position: -160\n", "2017-01-10 14:30:00\n", "Training...\n", "Current basis: 0.922, predicted basis: 0.000\n", "Current position: -170\n", "2017-01-10 14:31:00\n", "Training...\n", "Current basis: 0.747, predicted basis: 0.000\n", "Current position: -180\n", "2017-01-10 14:32:00\n", "Training...\n", "Current basis: 0.897, predicted basis: 0.011\n", "Current position: -190\n", "2017-01-10 14:33:00\n", "Training...\n", "Current basis: 1.069, predicted basis: 0.011\n", "Current position: -200\n", "2017-01-10 14:34:00\n", "Training...\n", "Current basis: 1.017, predicted basis: 0.011\n", "Current position: -210\n", "2017-01-10 14:35:00\n", "Training...\n", "Current basis: 1.018, predicted basis: 0.011\n", "Current position: -220\n", "2017-01-10 14:36:00\n", "Training...\n", "Current basis: 1.019, predicted basis: 0.011\n", "Current position: -230\n", "2017-01-10 14:37:00\n", "Training...\n", "Current basis: 0.821, predicted basis: 0.011\n", "Current position: -240\n", "2017-01-10 14:38:00\n", "Training...\n", "Current basis: 0.845, predicted basis: 0.011\n", "Current position: -250\n", "2017-01-10 14:39:00\n", "Training...\n", "Current basis: 0.646, predicted basis: 0.011\n", "Current position: -250\n", "2017-01-10 14:40:00\n", "Training...\n", "Current basis: 0.823, predicted basis: 0.011\n", "Current position: -250\n", "2017-01-10 14:41:00\n", "Training...\n", "Current basis: 0.846, predicted basis: 0.022\n", "Current position: -250\n", "2017-01-10 14:42:00\n", "Training...\n", "Current basis: 1.075, predicted basis: 0.034\n", "Current position: -250\n", "2017-01-10 14:43:00\n", "Training...\n", "Current basis: 0.851, predicted basis: 0.045\n", "Current position: -250\n", "2017-01-10 14:44:00\n", "Training...\n", "Current basis: 1.123, predicted basis: 0.056\n", "Current position: -250\n", "2017-01-10 14:45:00\n", "Training...\n", "Current basis: 1.421, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:46:00\n", "Training...\n", "Current basis: 1.369, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:47:00\n", "Training...\n", "Current basis: 1.668, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:48:00\n", "Training...\n", "Current basis: 1.514, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:49:00\n", "Training...\n", "Current basis: 0.010, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:50:00\n", "Training...\n", "Current basis: 0.189, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 14:51:00\n", "Training...\n", "Current basis: -0.417, predicted basis: 0.067\n", "Current position: -240\n", "2017-01-10 14:52:00\n", "Training...\n", "Current basis: -0.544, predicted basis: 0.067\n", "Current position: -230\n", "2017-01-10 14:53:00\n", "Training...\n", "Current basis: -0.372, predicted basis: 0.067\n", "Current position: -230\n", "2017-01-10 14:54:00\n", "Training...\n", "Current basis: -0.148, predicted basis: 0.067\n", "Current position: -220\n", "2017-01-10 14:55:00\n", "Training...\n", "Current basis: 0.093, predicted basis: 0.067\n", "Current position: -220\n", "2017-01-10 14:56:00\n", "Training...\n", "Current basis: 0.312, predicted basis: 0.067\n", "Current position: -220\n", "2017-01-10 14:57:00\n", "Training...\n", "Current basis: 0.414, predicted basis: 0.067\n", "Current position: -210\n", "2017-01-10 14:58:00\n", "Training...\n", "Current basis: 0.538, predicted basis: 0.067\n", "Current position: -210\n", "2017-01-10 14:59:00\n", "Training...\n", "Current basis: 0.765, predicted basis: 0.067\n", "Current position: -210\n", "2017-01-10 15:00:00\n", "Training...\n", "Current basis: 0.857, predicted basis: 0.067\n", "Current position: -210\n", "2017-01-10 15:01:00\n", "Training...\n", "Current basis: 0.808, predicted basis: 0.067\n", "Current position: -220\n", "2017-01-10 15:02:00\n", "Training...\n", "Current basis: 0.858, predicted basis: 0.067\n", "Current position: -230\n", "2017-01-10 15:03:00\n", "Training...\n", "Current basis: 0.907, predicted basis: 0.067\n", "Current position: -240\n", "2017-01-10 15:04:00\n", "Training...\n", "Current basis: 0.367, predicted basis: 0.067\n", "Current position: -250\n", "2017-01-10 15:05:00\n", "Training...\n", "Current basis: 0.538, predicted basis: 0.079\n", "Current position: -250\n", "2017-01-10 15:06:00\n", "Training...\n", "Current basis: 0.713, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:07:00\n", "Training...\n", "Current basis: 1.058, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:08:00\n", "Training...\n", "Current basis: 1.577, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:09:00\n", "Training...\n", "Current basis: 1.424, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:10:00\n", "Training...\n", "Current basis: 0.576, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:11:00\n", "Training...\n", "Current basis: 0.131, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:12:00\n", "Training...\n", "Current basis: -0.016, predicted basis: 0.090\n", "Current position: -250\n", "2017-01-10 15:13:00\n", "Training...\n", "Current basis: 0.504, predicted basis: 0.101\n", "Current position: -240\n", "2017-01-10 15:14:00\n", "Training...\n", "Current basis: 1.023, predicted basis: 0.112\n", "Current position: -230\n", "2017-01-10 15:15:00\n", "Training...\n", "Current basis: 1.222, predicted basis: 0.124\n", "Current position: -230\n", "2017-01-10 15:16:00\n", "Training...\n", "Current basis: 1.223, predicted basis: 0.135\n", "Current position: -240\n", "2017-01-10 15:17:00\n", "Training...\n", "Current basis: 1.300, predicted basis: 0.135\n", "Current position: -250\n", "2017-01-10 15:18:00\n", "Training...\n", "Current basis: 1.080, predicted basis: 0.135\n", "Current position: -250\n", "2017-01-10 15:19:00\n", "Training...\n", "Current basis: 0.829, predicted basis: 0.135\n", "Current position: -250\n", "2017-01-10 15:20:00\n", "Training...\n", "Current basis: 0.882, predicted basis: 0.146\n", "Current position: -250\n", "2017-01-10 15:21:00\n", "Training...\n", "Current basis: 0.683, predicted basis: 0.157\n", "Current position: -250\n", "2017-01-10 15:22:00\n", "Training...\n", "Current basis: 0.928, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:23:00\n", "Training...\n", "Current basis: 1.500, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:24:00\n", "Training...\n", "Current basis: 1.251, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:25:00\n", "Training...\n", "Current basis: 1.276, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:26:00\n", "Training...\n", "Current basis: 0.481, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:27:00\n", "Training...\n", "Current basis: -0.387, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:28:00\n", "Training...\n", "Current basis: -0.709, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:29:00\n", "Training...\n", "Current basis: -0.464, predicted basis: 0.169\n", "Current position: -250\n", "2017-01-10 15:30:00\n", "Training...\n", "Current basis: -0.464, predicted basis: 0.169\n", "Current position: -250\n", "[Timestamp('2017-01-06 09:30:00'), datetime.datetime(2017, 1, 11, 9, 17)]\n" ] } ], "source": [ "if updateCheck():\n", " print('Your version of the auquan toolbox package is old. Please update by running the following command:')\n", " print('pip install -U auquan_toolbox')\n", "else:\n", " tsParams = MyTradingParams()\n", "# import pdb;pdb.set_trace()\n", " tradingSystem = TradingSystem(tsParams)\n", " \n", " results = tradingSystem.startTrading(onlyAnalyze=False, shouldPlot=False, makeInstrumentCsvs=False)\n", " # Set onlyAnalyze to True to quickly generate csv files with all the features\n", " # Set onlyAnalyze to False to run a full backtest\n", " # Set makeInstrumentCsvs to False to not make instrument specific csvs in runLogs. \n", " # This improves the performance BY A LOT\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can view the results of this backtest below. The toolbox shows you the Mean squared error (`score`), the pnl from trading the strategy as well as other metrics below" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Check the results!" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'instrument_names': ['MQK'],\n", " 'instrument_stats': [{'pnl': {'MQK': 0.11692330000000006},\n", " 'score': {'MQK': 0.5270070414825269}}],\n", " 'pnl': 0.11692330000000006,\n", " 'trading_days': 3,\n", " 'score': 0.5270070414825269,\n", " 'portfolio_value': 11169.233,\n", " 'maxDrawdown': 483.66499999999905,\n", " 'maxPortfolioValue': 11230.483,\n", " 'capitalUsage': 1324.7970000000041,\n", " 'variance': 790.2561871673435,\n", " 'capital': 9936.30299999999,\n", " 'count_loss': 222,\n", " 'total_loss': 4699.115000000002,\n", " 'total_profit': 5868.347999999998,\n", " 'count_profit': 228}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Continue running the above backtester with your own model and parameters. See which model works best in backtesting!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also view live plots of how the features/prediction/pnl evolves in realtime in tensorboard. Simply type this in your terminal (from the same folder where you have this notebook)\n", "\n", "`tensorboard --logdir=tb_logs/`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is important to remember that if you don’t like the results of your backtest on test data, discard the model and start again. DO NOT go back and re-optimize your model, this will lead to over fitting! (Also recommend to create a new test data set, since this one is now tainted; in discarding a model, we implicitly know something about the dataset)." ] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }