├── .gitignore ├── .idea ├── .name ├── encodings.xml ├── ig basic.iml ├── misc.xml ├── modules.xml ├── scopes │ └── scope_settings.xml ├── vcs.xml └── workspace.xml ├── README.md ├── __pycache__ ├── ig_service.cpython-35.pyc └── ig_service_config.cpython-35.pyc ├── application.py ├── data ├── 2018-12-07.csv ├── 2018-12-08.csv ├── 2018-12-10.csv ├── 2018-12-11.csv ├── 2018-12-12.csv ├── 2018-12-13.csv ├── 2018-12-14.csv ├── 2018-12-15.csv ├── 2018-12-17.csv ├── 2018-12-18.csv ├── 2018-12-19.csv ├── 2018-12-20.csv ├── 2018-12-21.csv ├── 2018-12-22.csv ├── 2018-12-24.csv ├── 2018-12-25.csv ├── 2018-12-26.csv ├── 2018-12-27.csv ├── 2018-12-28.csv ├── 2018-12-29.csv ├── 2018-12-31.csv ├── 2019-01-01.csv ├── 2019-01-02.csv ├── 2019-01-03.csv ├── 2019-01-04.csv ├── 2019-01-05.csv ├── 2019-01-07.csv ├── 2019-01-08.csv ├── 2019-01-09.csv ├── 2019-01-10.csv ├── 2019-01-11.csv ├── 2019-01-12.csv ├── 2019-01-14.csv ├── 2019-01-15.csv ├── 2019-01-16.csv ├── 2019-01-17.csv ├── 2019-01-18.csv ├── 2019-01-19.csv ├── 2019-01-21.csv ├── 2019-01-22.csv ├── 2019-01-23.csv ├── 2019-01-24.csv ├── 2019-01-25.csv ├── 2019-01-26.csv ├── 2019-01-28.csv ├── 2019-01-29.csv ├── 2019-01-30.csv ├── 2019-01-31.csv ├── 2019-02-01.csv ├── 2019-02-02.csv ├── 2019-02-04.csv ├── 2019-02-05.csv ├── 2019-02-06.csv ├── 2019-02-07.csv ├── 2019-02-08.csv ├── 2019-02-09.csv ├── 2019-02-11.csv ├── 2019-02-12.csv ├── 2019-02-13.csv ├── 2019-02-14.csv ├── 2019-02-15.csv ├── 2019-02-16.csv ├── 2019-02-18.csv ├── 2019-02-19.csv ├── 2019-02-20.csv ├── 2019-02-21.csv ├── 2019-02-22.csv ├── 2019-02-23.csv ├── 2019-02-25.csv ├── 2019-02-26.csv ├── 2019-02-27.csv ├── 2019-02-28.csv ├── 2019-03-01.csv ├── 2019-03-02.csv ├── 2019-03-04.csv ├── 2019-03-05.csv ├── 2019-03-06.csv ├── 2019-03-07.csv ├── 2019-03-08.csv ├── 2019-03-09.csv ├── 2019-03-11.csv ├── 2019-03-12.csv ├── 2019-03-13.csv ├── 2019-03-14.csv ├── 2019-03-15.csv ├── 2019-03-16.csv ├── 2019-03-18.csv ├── 2019-03-19.csv ├── 2019-03-20.csv ├── 2019-03-21.csv ├── 2019-03-22.csv ├── 2019-03-23.csv ├── 2019-03-25.csv ├── 2019-03-26.csv ├── 2019-03-27.csv ├── 2019-03-28.csv ├── 2019-03-29.csv ├── 2019-03-30.csv ├── 2019-04-01.csv ├── 2019-04-02.csv ├── 2019-04-03.csv ├── 2019-04-04.csv ├── 2019-04-05.csv ├── 2019-04-06.csv ├── 2019-04-08.csv ├── 2019-04-09.csv ├── 2019-04-10.csv ├── 2019-04-11.csv ├── 2019-04-12.csv ├── 2019-04-13.csv ├── 2019-04-15.csv ├── 2019-04-16.csv ├── 2019-04-17.csv └── 2019-04-18.csv ├── dataprovider ├── ig_service.py └── test_ig_service.py ├── mlcore ├── custom_gym.py ├── ml_model.py └── rl_agent.py └── risk_adjusted_metrics.py /.gitignore: -------------------------------------------------------------------------------- 1 | ig_service_config.py -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | ig basic -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/ig basic.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/scopes/scope_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AutoTrading 2 | ## Key Objective 3 | --------------- 4 | 1) reinforcement machine learning algorithm to trade profitably daily basis (pending <-- most likely dqn or rdn) 5 | 2) robust when back tested against historical data 2 month (Downloaded <-- calmar ratio writen) 6 | 3) automate trade demo using model and algorithm (completed custom gym environment for agent to interact with based on ig dow jones data in 5min resolution) 7 | 8 | 9 | ## IG Markets REST API - Python Library 10 | -------------------------------------- 11 | 12 | A lightweight Python library that can be used to connect to the IG Markets REST API with a LIVE or DEMO account. 13 | 14 | You can use the IG Markets HTTP / REST API to submit trade orders, open positions, close positions and view market sentiment. IG Markets provide Retail Spread Betting and CFD accounts for trading Equities, Forex, Commodities, Indices and much more. 15 | 16 | Full details about the API along with information about how to open an account with IG can be found at the link below: 17 | 18 | [http://labs.ig.com/](http://labs.ig.com/) 19 | 20 | ### How To Use The Library 21 | -------------------------- 22 | 23 | Using this library to connect to the IG Markets API is extremely easy. All you need to do is import the IGService class, create an instance, and call the methods you wish to use. There is a method for each endpoint exposed by their API. The code sample below shows you how to connect to the API, switch to a secondary account and retrieve all open positions for the active account. 24 | 25 | **Note:** The secure session with IG is established when you create an instance of the IGService class. 26 | 27 | ```python 28 | from ig_service import IGService 29 | from ig_service_config import * 30 | 31 | ig_service = IGService(username, password, api_key, acc_type) 32 | ig_service.create_session() 33 | 34 | account_info = ig_service.switch_account(acc_number, False) 35 | print(account_info) 36 | 37 | open_positions = ig_service.fetch_open_positions() 38 | print(open_positions) 39 | ``` 40 | 41 | **Note:** For Singapore account password has to be encrypted via RSA with timestamp using token received 42 | 43 | ```python 44 | # get encrypted key for singaporean x.x 45 | requestKeyAndTimestamp = requests.get(self.BASE_URL + '/session/encryptionKey', headers=self.BASIC_HEADERS) 46 | 47 | m_data = requestKeyAndTimestamp.json() 48 | 49 | decoded = base64.b64decode(m_data['encryptionKey']) 50 | rsakey = RSA.importKey(decoded) 51 | 52 | # using rsaKey, encrypt password + "|" + timestamp 53 | message = self.IG_PASSWORD + '|' + str(m_data['timeStamp']) 54 | #print(message.encode('utf-8')) 55 | input = base64.b64encode(message.encode('utf-8')) 56 | # we encode and decode from base 64 string so that the byte is read in same format b4 converting back to string for our json payload 57 | encryptedPassword = base64.b64encode(PKCS1_v1_5.new(rsakey).encrypt(input)).decode('utf-8') 58 | 59 | # yup replace plain clear text password with the rsa encrypted password 60 | params['password'] = encryptedPassword 61 | 62 | response = requests.post(self.BASE_URL + '/session', data=json.dumps(params), headers=self.BASIC_HEADERS) 63 | ``` 64 | 65 | with `ig_service_config.py` 66 | 67 | ```python 68 | username = "YOUR_USERNAME" 69 | password = "YOUR_PASSWORD" 70 | api_key = "YOUR_API_KEY" 71 | acc_type = "DEMO" # LIVE / DEMO 72 | acc_number = "ABC123" 73 | ``` 74 | -------------------------------------------------------------------------------- /__pycache__/ig_service.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poryee/AutoTrading/eefee75de3e67a90b6eb2c2da5ea87eb250fa6c4/__pycache__/ig_service.cpython-35.pyc -------------------------------------------------------------------------------- /__pycache__/ig_service_config.cpython-35.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/poryee/AutoTrading/eefee75de3e67a90b6eb2c2da5ea87eb250fa6c4/__pycache__/ig_service_config.cpython-35.pyc -------------------------------------------------------------------------------- /application.py: -------------------------------------------------------------------------------- 1 | from mlcore.custom_gym import CustomEnv 2 | 3 | __author__ = 'po' 4 | 5 | # scheduler 6 | from datetime import datetime, timedelta 7 | 8 | # plot indicator charts 9 | import matplotlib.pyplot as plt 10 | 11 | # ig services 12 | from dataprovider.ig_service import IGService 13 | # defines username, password, api_key, acc_type 14 | from dataprovider.ig_service_config import * 15 | # libs 16 | from risk_adjusted_metrics import * 17 | from mlcore.rl_agent import torchDQN 18 | import glob 19 | import pandas as pd 20 | import collections 21 | 22 | # fetch the open high low and close at daily time resolution for the past 20 days for analysis 23 | def getHistoricalData(specificDate): 24 | ig_service = IGService(username, password, api_key, acc_type) 25 | ig_service.create_session() 26 | 27 | ''' 28 | # dynamically retrieve the epic/product code 29 | print("fetch_all_watchlists") 30 | response = ig_service.fetch_all_watchlists() 31 | # get "MyWatchlist" 32 | watchlist_id = response['id'].iloc[2] 33 | 34 | print("fetch_watchlist_markets") 35 | response = ig_service.fetch_watchlist_markets(watchlist_id) 36 | print(response) 37 | epic = response['epic'].iloc[0] 38 | 39 | print("fetch_market_by_epic") 40 | response = ig_service.fetch_market_by_epic(epic) 41 | print(response) 42 | ''' 43 | 44 | print("search_pricing") 45 | # Instrument tag # US500 DFB 46 | epic = 'IX.D.DOW.IGD.IP' 47 | 48 | # Price resolution (SECOND, MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK, MONTH) 49 | resolution = 'MINUTE_5' # resolution = 'H', '1Min' 50 | 51 | 52 | 53 | # (yyyy:MM:dd-HH:mm:ss) 54 | # today = datetime.today() 55 | # startDate = str(today.date() - timedelta(days=2)).replace("-", ":") + "-00:00:00" 56 | #endDate = str(today.date() - timedelta(days=0)).replace("-", ":") + "-00:00:00" 57 | 58 | startDate = specificDate.date().strftime('%Y:%m:%d') + "-00:00:00" 59 | endDate = (specificDate + timedelta(days=1)).date().strftime('%Y:%m:%d') + "-23:55:00" 60 | 61 | response = ig_service.fetch_historical_prices_by_epic_and_date_range(epic, resolution, startDate, endDate) 62 | return response['prices'] 63 | 64 | 65 | def bulkDownload(date, numberOfDays): 66 | specificDate = datetime.strptime(date, '%Y-%m-%d') 67 | 68 | # 10 days 69 | for i in range(numberOfDays): 70 | if (specificDate.weekday() != 6): 71 | pastData = getHistoricalData(specificDate) 72 | saveSpecificDate(pastData, specificDate) 73 | specificDate -= timedelta(days=1) 74 | 75 | 76 | def getAverage(dataArray): 77 | tempList = [] 78 | for priceObject in dataArray: 79 | if (priceObject['bid'] != None and priceObject['ask'] != None): 80 | tempList.append(round((priceObject['ask'] + priceObject['bid']) / 2, 2)) 81 | else: 82 | tempList.append(0) 83 | return tempList 84 | 85 | 86 | def saveSpecificDate(pastData, date): 87 | # iterate list of json and average up the results 88 | pastData['averageOpen'] = getAverage(pastData['openPrice']) 89 | pastData['averageLow'] = getAverage(pastData['lowPrice']) 90 | pastData['averageHigh'] = getAverage(pastData['highPrice']) 91 | pastData['averageClose'] = getAverage(pastData['closePrice']) 92 | 93 | pastData.to_csv("data/" + str(date.date()) + ".csv") 94 | 95 | 96 | # construct stochastic indicator to determine momentum in direction using (formula is just highest high - close/ highest high - lowest low)* 100 to get percentage 97 | def constructIndicator(pastData): 98 | # http://www.andrewshamlet.net/2017/07/13/python-tutorial-stochastic-oscillator/ 99 | # http://www.pythonforfinance.net/2017/10/10/stochastic-oscillator-trading-strategy-backtest-in-python/ 100 | 101 | # Create the "lowestLow" column in the DataFrame 102 | pastData['lowestLow'] = pastData['averageLow'].rolling(window=14).min() 103 | 104 | # Create the "highestHigh" column in the DataFrame 105 | pastData['highestHigh'] = pastData['averageHigh'].rolling(window=14).max() 106 | 107 | # Create the "%K" column in the DataFrame refer to the function comment for formula of stochastic ociliator 108 | pastData['%K'] = ((pastData['averageClose'] - pastData['lowestLow']) / ( 109 | pastData['highestHigh'] - pastData['lowestLow'])) * 100 110 | 111 | 112 | # Create the "%D" column in the DataFrame moving average of calculated K 113 | pastData['%D'] = pastData['%K'].rolling(window=3).mean() 114 | 115 | # drop 14 bar ago cut away parts of chart without indicator 116 | # pastData.drop(pastData.index[:15], inplace=True) 117 | 118 | fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(20, 10)) 119 | 120 | pastData['averageClose'].plot(ax=axes[0]); 121 | axes[0].set_title('Close') 122 | pastData[['%K', '%D']].plot(ax=axes[1]); 123 | axes[1].set_title('Oscillator') 124 | # plt.show() 125 | 126 | return pastData 127 | # consider building other indicator 128 | 129 | 130 | # measure and evaluate system developed 131 | def performanceTest(returns): 132 | # Calmar 133 | # The Calmar ratio discounts the expected excess return of a portfolio by the worst expected maximum draw down for that portfolio, 134 | 135 | # simulation 136 | # Returns from the portfolio (r) and market (m) 137 | # returns = nrand.uniform(-1, 1, 50) 138 | 139 | # Expected return 140 | averageExpectedReturn = np.mean(returns) 141 | 142 | # Risk Free Rate assumption that 6% from other investment as benchmark (Opportunity cost) 143 | riskFreeRate = 0.06 144 | 145 | print("Calmar Ratio =", calmar_ratio(averageExpectedReturn, returns, riskFreeRate)) 146 | 147 | 148 | # retrieve all downloaded data concatenated in dataframe 149 | def retrievePastDataDataframe(): 150 | # retrieve all csv in data folder 151 | allFiles = glob.glob("data/*.csv") 152 | 153 | # concat csv 154 | list_ = [] 155 | for file_ in allFiles: 156 | df = pd.read_csv(file_, sep=',', index_col=0, header=0) 157 | list_.append(df) 158 | # concatenate every row in the list and reset index to sequential 159 | pastData = pd.concat(list_, axis=0, ignore_index=True) 160 | 161 | # setsnapshotTime as index 162 | pastDataAsState = pastData[ 163 | ['snapshotTime', 'averageOpen', 'averageHigh', 'averageLow', 'averageClose', 'lastTradedVolume']] 164 | pastDataAsState.snapshotTime = pd.to_datetime(pastData['snapshotTime'], format='%Y:%m:%d-%H:%M:%S') 165 | pastDataAsState.set_index('snapshotTime', inplace=True) 166 | 167 | # print(pastDataAsState.info()) 168 | # asd=pastDataAsState.iloc[0,:] 169 | # print(pastDataAsState.loc['2019-02-01']) 170 | # print(type(pastDataAsState.loc['2019-02-01'])) 171 | 172 | return pastDataAsState 173 | 174 | 175 | def resampleDataframe(dataframe, timeframe): 176 | pd.set_option('display.max_columns', None) 177 | 178 | data = dataframe.resample(timeframe).agg({'averageOpen': 'first', 179 | 'averageHigh': 'max', 180 | 'averageLow': 'min', 181 | 'averageClose': 'last', 182 | 'lastTradedVolume': 'sum' 183 | }) 184 | data.dropna(inplace=True) 185 | return data 186 | 187 | 188 | def visualise(dataframe, episodeAction, episodeReward): 189 | fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(15, 15)) 190 | 191 | dataframe.plot(y="averageClose", ax=ax1) 192 | buyTime, buyPrice, sellTime, sellPrice = [], [], [], [] 193 | for index, action in enumerate(episodeAction): 194 | if (action == 0): 195 | buyTime.append(dataframe.index[index]) 196 | buyPrice.append(dataframe.averageClose[index]) 197 | elif action == 2: 198 | sellTime.append(dataframe.index[index]) 199 | sellPrice.append(dataframe.averageClose[index]) 200 | 201 | ax1.scatter(buyTime, buyPrice, c='g', marker="^", s=25) 202 | ax1.scatter(sellTime, sellPrice, c='r', marker="v", s=25) 203 | 204 | ax2.plot(episodeReward) 205 | fig.subplots_adjust(hspace=1) 206 | 207 | plt.show() 208 | 209 | 210 | def trainMLModel(endDate, timeResolution, trainingDays, totalEpisodes): 211 | # retrieve pastdata 212 | pastDataAsState = retrievePastDataDataframe() 213 | pastDataAsState = resampleDataframe(pastDataAsState, timeResolution) 214 | 215 | dqn = torchDQN(tensorboard=True) 216 | total_reward = [] 217 | total_action = [] 218 | total_steps = 0 219 | 220 | endDate = datetime.strptime(endDate, '%Y-%m-%d') 221 | 222 | # because we want to include endDate in the training hence -1 223 | traingDate = endDate - timedelta(days=trainingDays - 1) 224 | 225 | # so we end up with largest quotient when dividing totalEpisodes with trainingDays so we end training on endDate 226 | trainingEpisode = (totalEpisodes // trainingDays) * trainingDays 227 | 228 | print('\nCollecting experience...') 229 | for i_episode in range(trainingEpisode): 230 | if (i_episode % (trainingDays) == 0): 231 | # because we want to include endDate in the training hence -1 232 | traingDate = endDate - timedelta(days=trainingDays - 1) 233 | 234 | if (pastDataAsState[traingDate.date().strftime('%Y-%m-%d')].empty): 235 | traingDate += timedelta(days=1) 236 | continue 237 | 238 | # initialise gym environment with single day slice of past data 239 | env = CustomEnv(pastDataAsState.loc[traingDate.date().strftime('%Y-%m-%d')]) 240 | 241 | # multiday training do we reset the balance? 242 | s = env.reset() 243 | ep_r = 0 244 | while True: 245 | # env.render() 246 | # see how random trading with 2:1 RRR will perform 247 | # a = np.random.randint(0, 4) 248 | 249 | a = dqn.choose_action(s) 250 | total_action.append(a) 251 | # take action 252 | s_, r, done, info = env.step(a) 253 | 254 | # modify the reward 255 | # x, x_dot, theta, theta_dot = s_ 256 | # r1 = (env.x_threshold - abs(x)) / env.x_threshold - 0.8 257 | # r2 = (env.theta_threshold_radians - abs(theta)) / env.theta_threshold_radians - 0.5 258 | # r = r1 + r2 259 | 260 | dqn.store_transition(s, a, r, s_) 261 | ep_r += r 262 | 263 | # every 10k steps we train our model both eval and target 264 | if dqn.memory_counter > 10000: 265 | # but target updates at a slower rate so learning is more stable 266 | # think of eval as the hyper active child and target as the parent that critics the child exploration 267 | dqn.learn(total_steps) 268 | 269 | if done: 270 | print('Ep: ', i_episode, '| Training Date: ', traingDate.date().strftime('%Y-%m-%d'), '| Ep_r: ', 271 | round(r, 2)) 272 | ep_r = r 273 | break 274 | s = s_ 275 | total_steps+=1 276 | 277 | total_reward.append(ep_r) 278 | traingDate += timedelta(days=1) 279 | 280 | counter = collections.Counter(total_action) 281 | print("total unique action ", print(counter)) 282 | 283 | # display visualisation of training result 284 | plt.title('Reward') 285 | plt.xlabel('No of Episodes') 286 | plt.ylabel('Total reward') 287 | plt.plot(np.arange(len(total_reward)), total_reward, 'r-', lw=5) 288 | plt.show() 289 | 290 | # save trained model 291 | dqn.save() 292 | 293 | 294 | def evaluateMLModel(evalutionDate, timeResolution="5min", showChart=False): 295 | # retrieve past data 296 | pastDataAsState = retrievePastDataDataframe() 297 | pastDataAsState = resampleDataframe(pastDataAsState, timeResolution) 298 | 299 | # initialise gym environment with single day slice of past data 300 | env = CustomEnv(pastDataAsState.loc[evalutionDate]) 301 | 302 | dqn = torchDQN() 303 | totalFinalReward = [] 304 | totalAction = [] 305 | print('\nCollecting experience...') 306 | 307 | # trade the same day 10 times 308 | for i_episode in range(100): 309 | s = env.reset() 310 | episodeAction = [] 311 | episodeBalance = [env.balance] 312 | while True: 313 | # env.render() 314 | # see how random trading with 2:1 RRR will perform 315 | # a = np.random.randint(0, 4) 316 | 317 | a = dqn.choose_action(s) 318 | episodeAction.append(a) 319 | # take action 320 | s_, r, done, info = env.step(a) 321 | 322 | # store balance note that reward is balance - initial capital hence 0 323 | episodeBalance.append(env.balance) 324 | 325 | # no training for evaluation 326 | 327 | if done: 328 | print('Ep: ', i_episode, '| Ep_r: ', round(r, 2)) 329 | if (showChart == True): 330 | visualise(env.dataframe, episodeAction, episodeBalance) 331 | 332 | break 333 | s = s_ 334 | # collect stats 335 | totalFinalReward.append(r) 336 | totalAction.extend(episodeAction) 337 | 338 | counter = collections.Counter(totalAction) 339 | print("total unique action ", print(counter)) 340 | 341 | plt.title('Reward') 342 | plt.xlabel('No of Episodes') 343 | plt.ylabel('Total Final Reward') 344 | plt.plot(np.arange(len(totalFinalReward)), totalFinalReward, 'r-', lw=5) 345 | 346 | # Calculate the simple average of the rewards 347 | yMean = [np.mean(totalFinalReward)] * len(totalFinalReward) 348 | plt.plot(yMean, label='Mean', linestyle='--') 349 | plt.text(1, yMean[0], "Average Returns: {:.3f}".format(yMean[0])) 350 | plt.show() 351 | 352 | winloseRatio = len(list(filter(lambda x: x > 0, totalFinalReward))) / len(totalFinalReward) 353 | print(winloseRatio) 354 | # temporary placeholder for balance 355 | return True 356 | 357 | 358 | def automateTrading(): 359 | pass 360 | # pastDataWithIndicator = constructIndicator(pastData) 361 | 362 | # using past 20 day data 363 | # machineLearning(pastData) 364 | 365 | 366 | ''' 367 | what is the key outcome? 368 | 1) reinforcement to trade profitably daily basis <-- Done DDQN will trt rdn when got time 369 | 2) robust when back tested against historical data 2 month <-- Done 370 | 3) automate trade demo using model and algorithm (completed custom gym environment for agent to interact with based on ig dow jones data in 5min resolution) 371 | 4) unrealised profit or loss into state & new action close position <-- Done 372 | 5) Multiday training and validation <-- Done only slight gains from 25points sl 50tp 2:1 RRR 373 | 6) resample to high time frame for evaluation (Check if need to do that for training as well) <-- Done (so that we don't have to trade that late at night) 374 | 7) custom env to provide returns array via info for performanceTest (Optimise hyper param) 1 month training plus 1 week walk forward 375 | (have yet to test other point base sl:tp, e.g 40:80 okok but must make sure loss is low, 50:100 seems lit, 25:75 cmi, 50:25 not worth the drawdowns) 376 | (100:50 crazy drawdown on certain days, 150:50 high winrate but not much profit a few losses would wipe the floor) <-- seems like scalping isnt the way to go here 377 | 8) check if underfit or overfit model <-- Done added tensorboard to monitor loss overtime noticed that beyond 20k steps aka 600ish episode the model starts to diverge 378 | 9) Trade profiler for evaluation Average High/Low + Max High/Low, Win/Lose Rate, RRR 379 | 10) https://www.kaggle.com/itoeiji/deep-reinforcement-learning-on-stock-data 380 | 11) check for shitty data 0.0,0.0,0.0,0.0 ctrl+shift+f 381 | ''' 382 | if __name__ == "__main__": 383 | #bulkDownload('2019-05-08', 4) 384 | #trainMLModel(endDate="2019-04-13", timeResolution="30min", trainingDays=30, totalEpisodes=600) 385 | 386 | # exactly the same steps as trainMLModel but without saving while loading trained model 387 | results = evaluateMLModel(evalutionDate="2019-04-17", timeResolution="30min", showChart=False) 388 | # performanceTest(results)list(filter(lambda x: x >0, nums)) 389 | 390 | # automateTrading() 391 | # TODO after all is set and done final todo is to use it on CFD account -------------------------------------------------------------------------------- /data/2019-01-12.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'ask': 23902.0, 'lastTraded': None, 'bid': 23900.4}","{'ask': 23924.0, 'lastTraded': None, 'bid': 23922.4}",1956,"{'ask': 23897.0, 'lastTraded': None, 'bid': 23895.4}","{'ask': 23912.0, 'lastTraded': None, 'bid': 23910.4}",2019:01:12-00:00:00,23911.2,23896.2,23923.2,23901.2 3 | 1,"{'ask': 23898.5, 'lastTraded': None, 'bid': 23896.9}","{'ask': 23905.0, 'lastTraded': None, 'bid': 23903.4}",1587,"{'ask': 23885.0, 'lastTraded': None, 'bid': 23883.4}","{'ask': 23901.0, 'lastTraded': None, 'bid': 23899.4}",2019:01:12-00:05:00,23900.2,23884.2,23904.2,23897.7 4 | 2,"{'ask': 23865.5, 'lastTraded': None, 'bid': 23863.9}","{'ask': 23899.5, 'lastTraded': None, 'bid': 23897.9}",2728,"{'ask': 23852.0, 'lastTraded': None, 'bid': 23850.4}","{'ask': 23899.0, 'lastTraded': None, 'bid': 23897.4}",2019:01:12-00:10:00,23898.2,23851.2,23898.7,23864.7 5 | 3,"{'ask': 23893.0, 'lastTraded': None, 'bid': 23891.4}","{'ask': 23899.0, 'lastTraded': None, 'bid': 23897.4}",1632,"{'ask': 23858.5, 'lastTraded': None, 'bid': 23856.9}","{'ask': 23866.0, 'lastTraded': None, 'bid': 23864.4}",2019:01:12-00:15:00,23865.2,23857.7,23898.2,23892.2 6 | 4,"{'ask': 23894.0, 'lastTraded': None, 'bid': 23892.4}","{'ask': 23904.5, 'lastTraded': None, 'bid': 23902.9}",1325,"{'ask': 23873.5, 'lastTraded': None, 'bid': 23871.9}","{'ask': 23892.5, 'lastTraded': None, 'bid': 23890.9}",2019:01:12-00:20:00,23891.7,23872.7,23903.7,23893.2 7 | 5,"{'ask': 23890.5, 'lastTraded': None, 'bid': 23888.9}","{'ask': 23899.0, 'lastTraded': None, 'bid': 23897.4}",1433,"{'ask': 23877.0, 'lastTraded': None, 'bid': 23875.4}","{'ask': 23895.0, 'lastTraded': None, 'bid': 23893.4}",2019:01:12-00:25:00,23894.2,23876.2,23898.2,23889.7 8 | 6,"{'ask': 23899.0, 'lastTraded': None, 'bid': 23897.4}","{'ask': 23902.5, 'lastTraded': None, 'bid': 23900.9}",1248,"{'ask': 23883.0, 'lastTraded': None, 'bid': 23881.4}","{'ask': 23891.0, 'lastTraded': None, 'bid': 23889.4}",2019:01:12-00:30:00,23890.2,23882.2,23901.7,23898.2 9 | 7,"{'ask': 23896.5, 'lastTraded': None, 'bid': 23894.9}","{'ask': 23907.0, 'lastTraded': None, 'bid': 23905.4}",995,"{'ask': 23894.0, 'lastTraded': None, 'bid': 23892.4}","{'ask': 23899.5, 'lastTraded': None, 'bid': 23897.9}",2019:01:12-00:35:00,23898.7,23893.2,23906.2,23895.7 10 | 8,"{'ask': 23917.5, 'lastTraded': None, 'bid': 23915.9}","{'ask': 23922.0, 'lastTraded': None, 'bid': 23920.4}",1387,"{'ask': 23895.5, 'lastTraded': None, 'bid': 23893.9}","{'ask': 23897.0, 'lastTraded': None, 'bid': 23895.4}",2019:01:12-00:40:00,23896.2,23894.7,23921.2,23916.7 11 | 9,"{'ask': 23940.0, 'lastTraded': None, 'bid': 23938.4}","{'ask': 23940.5, 'lastTraded': None, 'bid': 23938.9}",2057,"{'ask': 23917.0, 'lastTraded': None, 'bid': 23915.4}","{'ask': 23917.0, 'lastTraded': None, 'bid': 23915.4}",2019:01:12-00:45:00,23916.2,23916.2,23939.7,23939.2 12 | 10,"{'ask': 23923.0, 'lastTraded': None, 'bid': 23921.4}","{'ask': 23942.0, 'lastTraded': None, 'bid': 23940.4}",1321,"{'ask': 23919.5, 'lastTraded': None, 'bid': 23917.9}","{'ask': 23940.5, 'lastTraded': None, 'bid': 23938.9}",2019:01:12-00:50:00,23939.7,23918.7,23941.2,23922.2 13 | 11,"{'ask': 23938.0, 'lastTraded': None, 'bid': 23936.4}","{'ask': 23939.5, 'lastTraded': None, 'bid': 23937.9}",760,"{'ask': 23919.0, 'lastTraded': None, 'bid': 23917.4}","{'ask': 23922.5, 'lastTraded': None, 'bid': 23920.9}",2019:01:12-00:55:00,23921.7,23918.2,23938.7,23937.2 14 | 12,"{'ask': 23946.5, 'lastTraded': None, 'bid': 23944.9}","{'ask': 23956.5, 'lastTraded': None, 'bid': 23954.9}",1654,"{'ask': 23933.0, 'lastTraded': None, 'bid': 23931.4}","{'ask': 23937.5, 'lastTraded': None, 'bid': 23935.9}",2019:01:12-01:00:00,23936.7,23932.2,23955.7,23945.7 15 | 13,"{'ask': 23942.0, 'lastTraded': None, 'bid': 23940.4}","{'ask': 23966.0, 'lastTraded': None, 'bid': 23964.4}",1285,"{'ask': 23942.0, 'lastTraded': None, 'bid': 23940.4}","{'ask': 23947.0, 'lastTraded': None, 'bid': 23945.4}",2019:01:12-01:05:00,23946.2,23941.2,23965.2,23941.2 16 | 14,"{'ask': 23945.0, 'lastTraded': None, 'bid': 23943.4}","{'ask': 23946.0, 'lastTraded': None, 'bid': 23944.4}",809,"{'ask': 23930.0, 'lastTraded': None, 'bid': 23928.4}","{'ask': 23942.5, 'lastTraded': None, 'bid': 23940.9}",2019:01:12-01:10:00,23941.7,23929.2,23945.2,23944.2 17 | 15,"{'ask': 23944.0, 'lastTraded': None, 'bid': 23942.4}","{'ask': 23950.0, 'lastTraded': None, 'bid': 23948.4}",568,"{'ask': 23940.0, 'lastTraded': None, 'bid': 23938.4}","{'ask': 23945.5, 'lastTraded': None, 'bid': 23943.9}",2019:01:12-01:15:00,23944.7,23939.2,23949.2,23943.2 18 | 16,"{'ask': 23943.0, 'lastTraded': None, 'bid': 23941.4}","{'ask': 23946.0, 'lastTraded': None, 'bid': 23944.4}",935,"{'ask': 23927.0, 'lastTraded': None, 'bid': 23925.4}","{'ask': 23944.5, 'lastTraded': None, 'bid': 23942.9}",2019:01:12-01:20:00,23943.7,23926.2,23945.2,23942.2 19 | 17,"{'ask': 23948.0, 'lastTraded': None, 'bid': 23946.4}","{'ask': 23963.5, 'lastTraded': None, 'bid': 23961.9}",1298,"{'ask': 23942.5, 'lastTraded': None, 'bid': 23940.9}","{'ask': 23942.5, 'lastTraded': None, 'bid': 23940.9}",2019:01:12-01:25:00,23941.7,23941.7,23962.7,23947.2 20 | 18,"{'ask': 23969.5, 'lastTraded': None, 'bid': 23967.9}","{'ask': 23976.0, 'lastTraded': None, 'bid': 23974.4}",1244,"{'ask': 23942.0, 'lastTraded': None, 'bid': 23940.4}","{'ask': 23948.5, 'lastTraded': None, 'bid': 23946.9}",2019:01:12-01:30:00,23947.7,23941.2,23975.2,23968.7 21 | 19,"{'ask': 23972.0, 'lastTraded': None, 'bid': 23970.4}","{'ask': 23981.0, 'lastTraded': None, 'bid': 23979.4}",1210,"{'ask': 23958.5, 'lastTraded': None, 'bid': 23956.9}","{'ask': 23970.0, 'lastTraded': None, 'bid': 23968.4}",2019:01:12-01:35:00,23969.2,23957.7,23980.2,23971.2 22 | 20,"{'ask': 23973.0, 'lastTraded': None, 'bid': 23971.4}","{'ask': 23981.5, 'lastTraded': None, 'bid': 23979.9}",1261,"{'ask': 23971.0, 'lastTraded': None, 'bid': 23969.4}","{'ask': 23971.5, 'lastTraded': None, 'bid': 23969.9}",2019:01:12-01:40:00,23970.7,23970.2,23980.7,23972.2 23 | 21,"{'ask': 23950.5, 'lastTraded': None, 'bid': 23948.9}","{'ask': 23973.5, 'lastTraded': None, 'bid': 23971.9}",1335,"{'ask': 23944.5, 'lastTraded': None, 'bid': 23942.9}","{'ask': 23972.5, 'lastTraded': None, 'bid': 23970.9}",2019:01:12-01:45:00,23971.7,23943.7,23972.7,23949.7 24 | 22,"{'ask': 23955.5, 'lastTraded': None, 'bid': 23953.9}","{'ask': 23968.0, 'lastTraded': None, 'bid': 23966.4}",858,"{'ask': 23949.5, 'lastTraded': None, 'bid': 23947.9}","{'ask': 23951.0, 'lastTraded': None, 'bid': 23949.4}",2019:01:12-01:50:00,23950.2,23948.7,23967.2,23954.7 25 | 23,"{'ask': 23959.0, 'lastTraded': None, 'bid': 23957.4}","{'ask': 23967.0, 'lastTraded': None, 'bid': 23965.4}",673,"{'ask': 23954.0, 'lastTraded': None, 'bid': 23952.4}","{'ask': 23956.0, 'lastTraded': None, 'bid': 23954.4}",2019:01:12-01:55:00,23955.2,23953.2,23966.2,23958.2 26 | 24,"{'ask': 23924.0, 'lastTraded': None, 'bid': 23922.4}","{'ask': 23960.0, 'lastTraded': None, 'bid': 23958.4}",1801,"{'ask': 23919.5, 'lastTraded': None, 'bid': 23917.9}","{'ask': 23958.5, 'lastTraded': None, 'bid': 23956.9}",2019:01:12-02:00:00,23957.7,23918.7,23959.2,23923.2 27 | 25,"{'ask': 23928.0, 'lastTraded': None, 'bid': 23926.4}","{'ask': 23940.5, 'lastTraded': None, 'bid': 23938.9}",888,"{'ask': 23922.5, 'lastTraded': None, 'bid': 23920.9}","{'ask': 23924.5, 'lastTraded': None, 'bid': 23922.9}",2019:01:12-02:05:00,23923.7,23921.7,23939.7,23927.2 28 | 26,"{'ask': 23902.0, 'lastTraded': None, 'bid': 23900.4}","{'ask': 23933.0, 'lastTraded': None, 'bid': 23931.4}",1439,"{'ask': 23894.0, 'lastTraded': None, 'bid': 23892.4}","{'ask': 23927.5, 'lastTraded': None, 'bid': 23925.9}",2019:01:12-02:10:00,23926.7,23893.2,23932.2,23901.2 29 | 27,"{'ask': 23908.0, 'lastTraded': None, 'bid': 23906.4}","{'ask': 23912.0, 'lastTraded': None, 'bid': 23910.4}",1634,"{'ask': 23888.0, 'lastTraded': None, 'bid': 23886.4}","{'ask': 23901.5, 'lastTraded': None, 'bid': 23899.9}",2019:01:12-02:15:00,23900.7,23887.2,23911.2,23907.2 30 | 28,"{'ask': 23889.0, 'lastTraded': None, 'bid': 23887.4}","{'ask': 23909.0, 'lastTraded': None, 'bid': 23907.4}",3098,"{'ask': 23889.0, 'lastTraded': None, 'bid': 23887.4}","{'ask': 23909.0, 'lastTraded': None, 'bid': 23907.4}",2019:01:12-02:20:00,23908.2,23888.2,23908.2,23888.2 31 | 29,"{'ask': 23906.0, 'lastTraded': None, 'bid': 23904.4}","{'ask': 23909.0, 'lastTraded': None, 'bid': 23907.4}",1290,"{'ask': 23880.0, 'lastTraded': None, 'bid': 23878.4}","{'ask': 23889.5, 'lastTraded': None, 'bid': 23887.9}",2019:01:12-02:25:00,23888.7,23879.2,23908.2,23905.2 32 | 30,"{'ask': 23908.5, 'lastTraded': None, 'bid': 23906.9}","{'ask': 23917.0, 'lastTraded': None, 'bid': 23915.4}",735,"{'ask': 23900.0, 'lastTraded': None, 'bid': 23898.4}","{'ask': 23905.5, 'lastTraded': None, 'bid': 23903.9}",2019:01:12-02:30:00,23904.7,23899.2,23916.2,23907.7 33 | 31,"{'ask': 23911.0, 'lastTraded': None, 'bid': 23909.4}","{'ask': 23919.0, 'lastTraded': None, 'bid': 23917.4}",592,"{'ask': 23897.0, 'lastTraded': None, 'bid': 23895.4}","{'ask': 23908.0, 'lastTraded': None, 'bid': 23906.4}",2019:01:12-02:35:00,23907.2,23896.2,23918.2,23910.2 34 | 32,"{'ask': 23925.3, 'lastTraded': None, 'bid': 23923.7}","{'ask': 23928.3, 'lastTraded': None, 'bid': 23926.7}",741,"{'ask': 23910.5, 'lastTraded': None, 'bid': 23908.9}","{'ask': 23910.5, 'lastTraded': None, 'bid': 23908.9}",2019:01:12-02:40:00,23909.7,23909.7,23927.5,23924.5 35 | 33,"{'ask': 23917.3, 'lastTraded': None, 'bid': 23915.7}","{'ask': 23930.8, 'lastTraded': None, 'bid': 23929.2}",778,"{'ask': 23916.3, 'lastTraded': None, 'bid': 23914.7}","{'ask': 23924.8, 'lastTraded': None, 'bid': 23923.2}",2019:01:12-02:45:00,23924.0,23915.5,23930.0,23916.5 36 | 34,"{'ask': 23929.3, 'lastTraded': None, 'bid': 23927.7}","{'ask': 23931.3, 'lastTraded': None, 'bid': 23929.7}",471,"{'ask': 23913.3, 'lastTraded': None, 'bid': 23911.7}","{'ask': 23916.8, 'lastTraded': None, 'bid': 23915.2}",2019:01:12-02:50:00,23916.0,23912.5,23930.5,23928.5 37 | 35,"{'ask': 23925.8, 'lastTraded': None, 'bid': 23924.2}","{'ask': 23936.3, 'lastTraded': None, 'bid': 23934.7}",787,"{'ask': 23917.8, 'lastTraded': None, 'bid': 23916.2}","{'ask': 23928.8, 'lastTraded': None, 'bid': 23927.2}",2019:01:12-02:55:00,23928.0,23917.0,23935.5,23925.0 38 | 36,"{'ask': 23922.8, 'lastTraded': None, 'bid': 23921.2}","{'ask': 23936.8, 'lastTraded': None, 'bid': 23935.2}",1242,"{'ask': 23905.8, 'lastTraded': None, 'bid': 23904.2}","{'ask': 23925.3, 'lastTraded': None, 'bid': 23923.7}",2019:01:12-03:00:00,23924.5,23905.0,23936.0,23922.0 39 | 37,"{'ask': 23931.3, 'lastTraded': None, 'bid': 23929.7}","{'ask': 23934.3, 'lastTraded': None, 'bid': 23932.7}",565,"{'ask': 23920.3, 'lastTraded': None, 'bid': 23918.7}","{'ask': 23922.3, 'lastTraded': None, 'bid': 23920.7}",2019:01:12-03:05:00,23921.5,23919.5,23933.5,23930.5 40 | 38,"{'ask': 23941.3, 'lastTraded': None, 'bid': 23939.7}","{'ask': 23950.3, 'lastTraded': None, 'bid': 23948.7}",1047,"{'ask': 23928.3, 'lastTraded': None, 'bid': 23926.7}","{'ask': 23931.8, 'lastTraded': None, 'bid': 23930.2}",2019:01:12-03:10:00,23931.0,23927.5,23949.5,23940.5 41 | 39,"{'ask': 23936.8, 'lastTraded': None, 'bid': 23935.2}","{'ask': 23947.8, 'lastTraded': None, 'bid': 23946.2}",544,"{'ask': 23935.3, 'lastTraded': None, 'bid': 23933.7}","{'ask': 23940.8, 'lastTraded': None, 'bid': 23939.2}",2019:01:12-03:15:00,23940.0,23934.5,23947.0,23936.0 42 | 40,"{'ask': 23934.8, 'lastTraded': None, 'bid': 23933.2}","{'ask': 23941.8, 'lastTraded': None, 'bid': 23940.2}",555,"{'ask': 23930.3, 'lastTraded': None, 'bid': 23928.7}","{'ask': 23937.3, 'lastTraded': None, 'bid': 23935.7}",2019:01:12-03:20:00,23936.5,23929.5,23941.0,23934.0 43 | 41,"{'ask': 23943.3, 'lastTraded': None, 'bid': 23941.7}","{'ask': 23949.8, 'lastTraded': None, 'bid': 23948.2}",753,"{'ask': 23926.8, 'lastTraded': None, 'bid': 23925.2}","{'ask': 23935.3, 'lastTraded': None, 'bid': 23933.7}",2019:01:12-03:25:00,23934.5,23926.0,23949.0,23942.5 44 | 42,"{'ask': 23941.8, 'lastTraded': None, 'bid': 23940.2}","{'ask': 23948.3, 'lastTraded': None, 'bid': 23946.7}",792,"{'ask': 23928.3, 'lastTraded': None, 'bid': 23926.7}","{'ask': 23943.8, 'lastTraded': None, 'bid': 23942.2}",2019:01:12-03:30:00,23943.0,23927.5,23947.5,23941.0 45 | 43,"{'ask': 23947.8, 'lastTraded': None, 'bid': 23946.2}","{'ask': 23952.3, 'lastTraded': None, 'bid': 23950.7}",597,"{'ask': 23941.3, 'lastTraded': None, 'bid': 23939.7}","{'ask': 23942.3, 'lastTraded': None, 'bid': 23940.7}",2019:01:12-03:35:00,23941.5,23940.5,23951.5,23947.0 46 | 44,"{'ask': 23951.3, 'lastTraded': None, 'bid': 23949.7}","{'ask': 23957.8, 'lastTraded': None, 'bid': 23956.2}",723,"{'ask': 23935.3, 'lastTraded': None, 'bid': 23933.7}","{'ask': 23948.3, 'lastTraded': None, 'bid': 23946.7}",2019:01:12-03:40:00,23947.5,23934.5,23957.0,23950.5 47 | 45,"{'ask': 23943.8, 'lastTraded': None, 'bid': 23942.2}","{'ask': 23952.3, 'lastTraded': None, 'bid': 23950.7}",896,"{'ask': 23932.3, 'lastTraded': None, 'bid': 23930.7}","{'ask': 23951.8, 'lastTraded': None, 'bid': 23950.2}",2019:01:12-03:45:00,23951.0,23931.5,23951.5,23943.0 48 | 46,"{'ask': 23930.8, 'lastTraded': None, 'bid': 23929.2}","{'ask': 23952.3, 'lastTraded': None, 'bid': 23950.7}",1071,"{'ask': 23928.3, 'lastTraded': None, 'bid': 23926.7}","{'ask': 23944.3, 'lastTraded': None, 'bid': 23942.7}",2019:01:12-03:50:00,23943.5,23927.5,23951.5,23930.0 49 | 47,"{'ask': 23926.3, 'lastTraded': None, 'bid': 23924.7}","{'ask': 23936.3, 'lastTraded': None, 'bid': 23934.7}",1459,"{'ask': 23919.8, 'lastTraded': None, 'bid': 23918.2}","{'ask': 23930.3, 'lastTraded': None, 'bid': 23928.7}",2019:01:12-03:55:00,23929.5,23919.0,23935.5,23925.5 50 | 48,"{'ask': 23924.3, 'lastTraded': None, 'bid': 23922.7}","{'ask': 23935.8, 'lastTraded': None, 'bid': 23934.2}",849,"{'ask': 23919.3, 'lastTraded': None, 'bid': 23917.7}","{'ask': 23925.8, 'lastTraded': None, 'bid': 23924.2}",2019:01:12-04:00:00,23925.0,23918.5,23935.0,23923.5 51 | 49,"{'ask': 23945.8, 'lastTraded': None, 'bid': 23944.2}","{'ask': 23957.3, 'lastTraded': None, 'bid': 23955.7}",1010,"{'ask': 23923.8, 'lastTraded': None, 'bid': 23922.2}","{'ask': 23923.8, 'lastTraded': None, 'bid': 23922.2}",2019:01:12-04:05:00,23923.0,23923.0,23956.5,23945.0 52 | 50,"{'ask': 23945.3, 'lastTraded': None, 'bid': 23943.7}","{'ask': 23958.3, 'lastTraded': None, 'bid': 23956.7}",612,"{'ask': 23944.3, 'lastTraded': None, 'bid': 23942.7}","{'ask': 23946.3, 'lastTraded': None, 'bid': 23944.7}",2019:01:12-04:10:00,23945.5,23943.5,23957.5,23944.5 53 | 51,"{'ask': 23944.3, 'lastTraded': None, 'bid': 23942.7}","{'ask': 23950.3, 'lastTraded': None, 'bid': 23948.7}",713,"{'ask': 23936.3, 'lastTraded': None, 'bid': 23934.7}","{'ask': 23944.8, 'lastTraded': None, 'bid': 23943.2}",2019:01:12-04:15:00,23944.0,23935.5,23949.5,23943.5 54 | 52,"{'ask': 23939.3, 'lastTraded': None, 'bid': 23937.7}","{'ask': 23948.3, 'lastTraded': None, 'bid': 23946.7}",512,"{'ask': 23937.3, 'lastTraded': None, 'bid': 23935.7}","{'ask': 23943.3, 'lastTraded': None, 'bid': 23941.7}",2019:01:12-04:20:00,23942.5,23936.5,23947.5,23938.5 55 | 53,"{'ask': 23928.8, 'lastTraded': None, 'bid': 23927.2}","{'ask': 23940.3, 'lastTraded': None, 'bid': 23938.7}",759,"{'ask': 23926.3, 'lastTraded': None, 'bid': 23924.7}","{'ask': 23939.8, 'lastTraded': None, 'bid': 23938.2}",2019:01:12-04:25:00,23939.0,23925.5,23939.5,23928.0 56 | 54,"{'ask': 23950.3, 'lastTraded': None, 'bid': 23948.7}","{'ask': 23954.8, 'lastTraded': None, 'bid': 23953.2}",1176,"{'ask': 23927.8, 'lastTraded': None, 'bid': 23926.2}","{'ask': 23928.3, 'lastTraded': None, 'bid': 23926.7}",2019:01:12-04:30:00,23927.5,23927.0,23954.0,23949.5 57 | 55,"{'ask': 23971.3, 'lastTraded': None, 'bid': 23969.7}","{'ask': 23978.3, 'lastTraded': None, 'bid': 23976.7}",1723,"{'ask': 23947.8, 'lastTraded': None, 'bid': 23946.2}","{'ask': 23950.8, 'lastTraded': None, 'bid': 23949.2}",2019:01:12-04:35:00,23950.0,23947.0,23977.5,23970.5 58 | 56,"{'ask': 23972.3, 'lastTraded': None, 'bid': 23970.7}","{'ask': 23983.3, 'lastTraded': None, 'bid': 23981.7}",887,"{'ask': 23969.3, 'lastTraded': None, 'bid': 23967.7}","{'ask': 23970.3, 'lastTraded': None, 'bid': 23968.7}",2019:01:12-04:40:00,23969.5,23968.5,23982.5,23971.5 59 | 57,"{'ask': 23986.3, 'lastTraded': None, 'bid': 23984.7}","{'ask': 23988.3, 'lastTraded': None, 'bid': 23986.7}",799,"{'ask': 23973.3, 'lastTraded': None, 'bid': 23971.7}","{'ask': 23973.3, 'lastTraded': None, 'bid': 23971.7}",2019:01:12-04:45:00,23972.5,23972.5,23987.5,23985.5 60 | 58,"{'ask': 23972.3, 'lastTraded': None, 'bid': 23970.7}","{'ask': 23990.3, 'lastTraded': None, 'bid': 23988.7}",1094,"{'ask': 23969.3, 'lastTraded': None, 'bid': 23967.7}","{'ask': 23987.3, 'lastTraded': None, 'bid': 23985.7}",2019:01:12-04:50:00,23986.5,23968.5,23989.5,23971.5 61 | 59,"{'ask': 23992.3, 'lastTraded': None, 'bid': 23990.7}","{'ask': 23995.3, 'lastTraded': None, 'bid': 23993.7}",4179,"{'ask': 23967.3, 'lastTraded': None, 'bid': 23965.7}","{'ask': 23978.3, 'lastTraded': None, 'bid': 23976.7}",2019:01:12-04:55:00,23977.5,23966.5,23994.5,23991.5 62 | 60,"{'ask': 23992.9, 'lastTraded': None, 'bid': 23989.1}","{'ask': 24000.4, 'lastTraded': None, 'bid': 23996.6}",1822,"{'ask': 23982.4, 'lastTraded': None, 'bid': 23978.6}","{'ask': 23993.4, 'lastTraded': None, 'bid': 23989.6}",2019:01:12-05:00:00,23991.5,23980.5,23998.5,23991.0 63 | 61,"{'ask': 23981.9, 'lastTraded': None, 'bid': 23978.1}","{'ask': 23992.9, 'lastTraded': None, 'bid': 23989.1}",355,"{'ask': 23978.4, 'lastTraded': None, 'bid': 23974.6}","{'ask': 23992.4, 'lastTraded': None, 'bid': 23988.6}",2019:01:12-05:05:00,23990.5,23976.5,23991.0,23980.0 64 | 62,"{'ask': 23981.6, 'lastTraded': None, 'bid': 23971.8}","{'ask': 23984.5, 'lastTraded': None, 'bid': 23980.6}",573,"{'ask': 23973.4, 'lastTraded': None, 'bid': 23969.6}","{'ask': 23981.4, 'lastTraded': None, 'bid': 23977.6}",2019:01:12-05:10:00,23979.5,23971.5,23982.55,23976.7 65 | 63,"{'ask': 23982.6, 'lastTraded': None, 'bid': 23972.8}","{'ask': 23986.3, 'lastTraded': None, 'bid': 23976.5}",2,"{'ask': 23980.2, 'lastTraded': None, 'bid': 23970.4}","{'ask': 23983.2, 'lastTraded': None, 'bid': 23973.4}",2019:01:12-05:15:00,23978.3,23975.3,23981.4,23977.7 66 | 64,"{'ask': 23982.6, 'lastTraded': None, 'bid': 23972.8}","{'ask': 23983.6, 'lastTraded': None, 'bid': 23973.8}",0,"{'ask': 23980.9, 'lastTraded': None, 'bid': 23971.1}","{'ask': 23982.2, 'lastTraded': None, 'bid': 23972.4}",2019:01:12-05:20:00,23977.3,23976.0,23978.7,23977.7 67 | 65,"{'ask': 23980.2, 'lastTraded': None, 'bid': 23970.4}","{'ask': 23982.9, 'lastTraded': None, 'bid': 23973.1}",0,"{'ask': 23979.5, 'lastTraded': None, 'bid': 23969.7}","{'ask': 23982.9, 'lastTraded': None, 'bid': 23973.1}",2019:01:12-05:25:00,23978.0,23974.6,23978.0,23975.3 68 | 66,"{'ask': 23980.9, 'lastTraded': None, 'bid': 23977.1}","{'ask': 23985.9, 'lastTraded': None, 'bid': 23982.1}",75,"{'ask': 23975.9, 'lastTraded': None, 'bid': 23970.7}","{'ask': 23980.5, 'lastTraded': None, 'bid': 23970.7}",2019:01:12-05:30:00,23975.6,23973.3,23984.0,23979.0 69 | 67,"{'ask': 23983.9, 'lastTraded': None, 'bid': 23980.1}","{'ask': 23984.9, 'lastTraded': None, 'bid': 23981.1}",56,"{'ask': 23975.9, 'lastTraded': None, 'bid': 23972.1}","{'ask': 23979.9, 'lastTraded': None, 'bid': 23976.1}",2019:01:12-05:35:00,23978.0,23974.0,23983.0,23982.0 70 | 68,"{'ask': 23978.9, 'lastTraded': None, 'bid': 23975.1}","{'ask': 23984.9, 'lastTraded': None, 'bid': 23981.1}",85,"{'ask': 23977.9, 'lastTraded': None, 'bid': 23974.1}","{'ask': 23984.9, 'lastTraded': None, 'bid': 23981.1}",2019:01:12-05:40:00,23983.0,23976.0,23983.0,23977.0 71 | 69,"{'ask': 23982.9, 'lastTraded': None, 'bid': 23979.1}","{'ask': 23982.9, 'lastTraded': None, 'bid': 23979.1}",104,"{'ask': 23976.9, 'lastTraded': None, 'bid': 23973.1}","{'ask': 23979.9, 'lastTraded': None, 'bid': 23976.1}",2019:01:12-05:45:00,23978.0,23975.0,23981.0,23981.0 72 | 70,"{'ask': 23987.9, 'lastTraded': None, 'bid': 23984.1}","{'ask': 23987.9, 'lastTraded': None, 'bid': 23984.1}",55,"{'ask': 23977.9, 'lastTraded': None, 'bid': 23974.1}","{'ask': 23979.9, 'lastTraded': None, 'bid': 23976.1}",2019:01:12-05:50:00,23978.0,23976.0,23986.0,23986.0 73 | 71,"{'ask': 23986.5, 'lastTraded': None, 'bid': 23976.7}","{'ask': 23989.9, 'lastTraded': None, 'bid': 23986.1}",124,"{'ask': 23980.9, 'lastTraded': None, 'bid': 23976.7}","{'ask': 23988.9, 'lastTraded': None, 'bid': 23985.1}",2019:01:12-05:55:00,23987.0,23978.8,23988.0,23981.6 74 | -------------------------------------------------------------------------------- /data/2019-02-02.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'ask': 25099.5, 'lastTraded': None, 'bid': 25097.9}","{'ask': 25108.5, 'lastTraded': None, 'bid': 25106.9}",3214,"{'ask': 25066.0, 'lastTraded': None, 'bid': 25064.4}","{'ask': 25095.0, 'lastTraded': None, 'bid': 25093.4}",2019:02:02-00:00:00,25094.2,25065.2,25107.7,25098.7 3 | 1,"{'ask': 25122.5, 'lastTraded': None, 'bid': 25120.9}","{'ask': 25128.0, 'lastTraded': None, 'bid': 25126.4}",1871,"{'ask': 25095.5, 'lastTraded': None, 'bid': 25093.9}","{'ask': 25100.0, 'lastTraded': None, 'bid': 25098.4}",2019:02:02-00:05:00,25099.2,25094.7,25127.2,25121.7 4 | 2,"{'ask': 25126.5, 'lastTraded': None, 'bid': 25124.9}","{'ask': 25128.5, 'lastTraded': None, 'bid': 25126.9}",1451,"{'ask': 25113.0, 'lastTraded': None, 'bid': 25111.4}","{'ask': 25123.0, 'lastTraded': None, 'bid': 25121.4}",2019:02:02-00:10:00,25122.2,25112.2,25127.7,25125.7 5 | 3,"{'ask': 25117.0, 'lastTraded': None, 'bid': 25115.4}","{'ask': 25144.5, 'lastTraded': None, 'bid': 25142.9}",1815,"{'ask': 25114.5, 'lastTraded': None, 'bid': 25112.9}","{'ask': 25125.5, 'lastTraded': None, 'bid': 25123.9}",2019:02:02-00:15:00,25124.7,25113.7,25143.7,25116.2 6 | 4,"{'ask': 25132.5, 'lastTraded': None, 'bid': 25130.9}","{'ask': 25142.0, 'lastTraded': None, 'bid': 25140.4}",1967,"{'ask': 25110.5, 'lastTraded': None, 'bid': 25108.9}","{'ask': 25116.5, 'lastTraded': None, 'bid': 25114.9}",2019:02:02-00:20:00,25115.7,25109.7,25141.2,25131.7 7 | 5,"{'ask': 25140.5, 'lastTraded': None, 'bid': 25138.9}","{'ask': 25158.5, 'lastTraded': None, 'bid': 25156.9}",1575,"{'ask': 25133.5, 'lastTraded': None, 'bid': 25131.9}","{'ask': 25133.5, 'lastTraded': None, 'bid': 25131.9}",2019:02:02-00:25:00,25132.7,25132.7,25157.7,25139.7 8 | 6,"{'ask': 25139.0, 'lastTraded': None, 'bid': 25137.4}","{'ask': 25148.5, 'lastTraded': None, 'bid': 25146.9}",1347,"{'ask': 25133.5, 'lastTraded': None, 'bid': 25131.9}","{'ask': 25140.0, 'lastTraded': None, 'bid': 25138.4}",2019:02:02-00:30:00,25139.2,25132.7,25147.7,25138.2 9 | 7,"{'ask': 25136.5, 'lastTraded': None, 'bid': 25134.9}","{'ask': 25150.5, 'lastTraded': None, 'bid': 25148.9}",1080,"{'ask': 25132.5, 'lastTraded': None, 'bid': 25130.9}","{'ask': 25139.5, 'lastTraded': None, 'bid': 25137.9}",2019:02:02-00:35:00,25138.7,25131.7,25149.7,25135.7 10 | 8,"{'ask': 25145.5, 'lastTraded': None, 'bid': 25143.9}","{'ask': 25149.5, 'lastTraded': None, 'bid': 25147.9}",909,"{'ask': 25135.5, 'lastTraded': None, 'bid': 25133.9}","{'ask': 25136.0, 'lastTraded': None, 'bid': 25134.4}",2019:02:02-00:40:00,25135.2,25134.7,25148.7,25144.7 11 | 9,"{'ask': 25152.5, 'lastTraded': None, 'bid': 25150.9}","{'ask': 25154.5, 'lastTraded': None, 'bid': 25152.9}",1205,"{'ask': 25129.5, 'lastTraded': None, 'bid': 25127.9}","{'ask': 25146.0, 'lastTraded': None, 'bid': 25144.4}",2019:02:02-00:45:00,25145.2,25128.7,25153.7,25151.7 12 | 10,"{'ask': 25170.5, 'lastTraded': None, 'bid': 25168.9}","{'ask': 25171.5, 'lastTraded': None, 'bid': 25169.9}",1357,"{'ask': 25149.5, 'lastTraded': None, 'bid': 25147.9}","{'ask': 25153.0, 'lastTraded': None, 'bid': 25151.4}",2019:02:02-00:50:00,25152.2,25148.7,25170.7,25169.7 13 | 11,"{'ask': 25177.5, 'lastTraded': None, 'bid': 25175.9}","{'ask': 25181.0, 'lastTraded': None, 'bid': 25179.4}",1506,"{'ask': 25166.0, 'lastTraded': None, 'bid': 25164.4}","{'ask': 25171.5, 'lastTraded': None, 'bid': 25169.9}",2019:02:02-00:55:00,25170.7,25165.2,25180.2,25176.7 14 | 12,"{'ask': 25151.5, 'lastTraded': None, 'bid': 25149.9}","{'ask': 25180.5, 'lastTraded': None, 'bid': 25178.9}",1534,"{'ask': 25149.5, 'lastTraded': None, 'bid': 25147.9}","{'ask': 25178.0, 'lastTraded': None, 'bid': 25176.4}",2019:02:02-01:00:00,25177.2,25148.7,25179.7,25150.7 15 | 13,"{'ask': 25143.5, 'lastTraded': None, 'bid': 25141.9}","{'ask': 25158.5, 'lastTraded': None, 'bid': 25156.9}",827,"{'ask': 25139.0, 'lastTraded': None, 'bid': 25137.4}","{'ask': 25152.0, 'lastTraded': None, 'bid': 25150.4}",2019:02:02-01:05:00,25151.2,25138.2,25157.7,25142.7 16 | 14,"{'ask': 25132.5, 'lastTraded': None, 'bid': 25130.9}","{'ask': 25147.5, 'lastTraded': None, 'bid': 25145.9}",1114,"{'ask': 25131.0, 'lastTraded': None, 'bid': 25129.4}","{'ask': 25143.0, 'lastTraded': None, 'bid': 25141.4}",2019:02:02-01:10:00,25142.2,25130.2,25146.7,25131.7 17 | 15,"{'ask': 25116.5, 'lastTraded': None, 'bid': 25114.9}","{'ask': 25135.5, 'lastTraded': None, 'bid': 25133.9}",844,"{'ask': 25114.5, 'lastTraded': None, 'bid': 25112.9}","{'ask': 25133.5, 'lastTraded': None, 'bid': 25131.9}",2019:02:02-01:15:00,25132.7,25113.7,25134.7,25115.7 18 | 16,"{'ask': 25083.5, 'lastTraded': None, 'bid': 25081.9}","{'ask': 25119.5, 'lastTraded': None, 'bid': 25117.9}",1997,"{'ask': 25083.5, 'lastTraded': None, 'bid': 25081.9}","{'ask': 25116.0, 'lastTraded': None, 'bid': 25114.4}",2019:02:02-01:20:00,25115.2,25082.7,25118.7,25082.7 19 | 17,"{'ask': 25093.0, 'lastTraded': None, 'bid': 25091.4}","{'ask': 25094.5, 'lastTraded': None, 'bid': 25092.9}",1623,"{'ask': 25072.0, 'lastTraded': None, 'bid': 25070.4}","{'ask': 25084.5, 'lastTraded': None, 'bid': 25082.9}",2019:02:02-01:25:00,25083.7,25071.2,25093.7,25092.2 20 | 18,"{'ask': 25102.0, 'lastTraded': None, 'bid': 25100.4}","{'ask': 25103.0, 'lastTraded': None, 'bid': 25101.4}",1333,"{'ask': 25078.5, 'lastTraded': None, 'bid': 25076.9}","{'ask': 25092.0, 'lastTraded': None, 'bid': 25090.4}",2019:02:02-01:30:00,25091.2,25077.7,25102.2,25101.2 21 | 19,"{'ask': 25089.5, 'lastTraded': None, 'bid': 25087.9}","{'ask': 25115.5, 'lastTraded': None, 'bid': 25113.9}",1418,"{'ask': 25089.0, 'lastTraded': None, 'bid': 25087.4}","{'ask': 25101.5, 'lastTraded': None, 'bid': 25099.9}",2019:02:02-01:35:00,25100.7,25088.2,25114.7,25088.7 22 | 20,"{'ask': 25114.0, 'lastTraded': None, 'bid': 25112.4}","{'ask': 25115.0, 'lastTraded': None, 'bid': 25113.4}",1138,"{'ask': 25083.0, 'lastTraded': None, 'bid': 25081.4}","{'ask': 25089.0, 'lastTraded': None, 'bid': 25087.4}",2019:02:02-01:40:00,25088.2,25082.2,25114.2,25113.2 23 | 21,"{'ask': 25117.0, 'lastTraded': None, 'bid': 25115.4}","{'ask': 25120.5, 'lastTraded': None, 'bid': 25118.9}",921,"{'ask': 25101.0, 'lastTraded': None, 'bid': 25099.4}","{'ask': 25113.5, 'lastTraded': None, 'bid': 25111.9}",2019:02:02-01:45:00,25112.7,25100.2,25119.7,25116.2 24 | 22,"{'ask': 25107.0, 'lastTraded': None, 'bid': 25105.4}","{'ask': 25123.5, 'lastTraded': None, 'bid': 25121.9}",853,"{'ask': 25106.5, 'lastTraded': None, 'bid': 25104.9}","{'ask': 25117.5, 'lastTraded': None, 'bid': 25115.9}",2019:02:02-01:50:00,25116.7,25105.7,25122.7,25106.2 25 | 23,"{'ask': 25110.0, 'lastTraded': None, 'bid': 25108.4}","{'ask': 25120.5, 'lastTraded': None, 'bid': 25118.9}",725,"{'ask': 25106.5, 'lastTraded': None, 'bid': 25104.9}","{'ask': 25106.5, 'lastTraded': None, 'bid': 25104.9}",2019:02:02-01:55:00,25105.7,25105.7,25119.7,25109.2 26 | 24,"{'ask': 25102.0, 'lastTraded': None, 'bid': 25100.4}","{'ask': 25117.0, 'lastTraded': None, 'bid': 25115.4}",690,"{'ask': 25099.5, 'lastTraded': None, 'bid': 25097.9}","{'ask': 25109.5, 'lastTraded': None, 'bid': 25107.9}",2019:02:02-02:00:00,25108.7,25098.7,25116.2,25101.2 27 | 25,"{'ask': 25111.5, 'lastTraded': None, 'bid': 25109.9}","{'ask': 25116.5, 'lastTraded': None, 'bid': 25114.9}",814,"{'ask': 25096.5, 'lastTraded': None, 'bid': 25094.9}","{'ask': 25102.5, 'lastTraded': None, 'bid': 25100.9}",2019:02:02-02:05:00,25101.7,25095.7,25115.7,25110.7 28 | 26,"{'ask': 25095.0, 'lastTraded': None, 'bid': 25093.4}","{'ask': 25113.5, 'lastTraded': None, 'bid': 25111.9}",583,"{'ask': 25095.0, 'lastTraded': None, 'bid': 25093.4}","{'ask': 25111.0, 'lastTraded': None, 'bid': 25109.4}",2019:02:02-02:10:00,25110.2,25094.2,25112.7,25094.2 29 | 27,"{'ask': 25082.5, 'lastTraded': None, 'bid': 25080.9}","{'ask': 25101.5, 'lastTraded': None, 'bid': 25099.9}",1084,"{'ask': 25071.5, 'lastTraded': None, 'bid': 25069.9}","{'ask': 25095.5, 'lastTraded': None, 'bid': 25093.9}",2019:02:02-02:15:00,25094.7,25070.7,25100.7,25081.7 30 | 28,"{'ask': 25075.5, 'lastTraded': None, 'bid': 25073.9}","{'ask': 25084.5, 'lastTraded': None, 'bid': 25082.9}",1006,"{'ask': 25064.5, 'lastTraded': None, 'bid': 25062.9}","{'ask': 25083.0, 'lastTraded': None, 'bid': 25081.4}",2019:02:02-02:20:00,25082.2,25063.7,25083.7,25074.7 31 | 29,"{'ask': 25089.0, 'lastTraded': None, 'bid': 25087.4}","{'ask': 25090.5, 'lastTraded': None, 'bid': 25088.9}",845,"{'ask': 25074.5, 'lastTraded': None, 'bid': 25072.9}","{'ask': 25075.0, 'lastTraded': None, 'bid': 25073.4}",2019:02:02-02:25:00,25074.2,25073.7,25089.7,25088.2 32 | 30,"{'ask': 25094.0, 'lastTraded': None, 'bid': 25092.4}","{'ask': 25102.5, 'lastTraded': None, 'bid': 25100.9}",759,"{'ask': 25083.5, 'lastTraded': None, 'bid': 25081.9}","{'ask': 25088.5, 'lastTraded': None, 'bid': 25086.9}",2019:02:02-02:30:00,25087.7,25082.7,25101.7,25093.2 33 | 31,"{'ask': 25097.0, 'lastTraded': None, 'bid': 25095.4}","{'ask': 25101.5, 'lastTraded': None, 'bid': 25099.9}",569,"{'ask': 25088.5, 'lastTraded': None, 'bid': 25086.9}","{'ask': 25093.5, 'lastTraded': None, 'bid': 25091.9}",2019:02:02-02:35:00,25092.7,25087.7,25100.7,25096.2 34 | 32,"{'ask': 25071.5, 'lastTraded': None, 'bid': 25069.9}","{'ask': 25098.5, 'lastTraded': None, 'bid': 25096.9}",492,"{'ask': 25071.5, 'lastTraded': None, 'bid': 25069.9}","{'ask': 25096.0, 'lastTraded': None, 'bid': 25094.4}",2019:02:02-02:40:00,25095.2,25070.7,25097.7,25070.7 35 | 33,"{'ask': 25074.5, 'lastTraded': None, 'bid': 25072.9}","{'ask': 25075.5, 'lastTraded': None, 'bid': 25073.9}",1168,"{'ask': 25051.5, 'lastTraded': None, 'bid': 25049.9}","{'ask': 25072.5, 'lastTraded': None, 'bid': 25070.9}",2019:02:02-02:45:00,25071.7,25050.7,25074.7,25073.7 36 | 34,"{'ask': 25067.0, 'lastTraded': None, 'bid': 25065.4}","{'ask': 25079.0, 'lastTraded': None, 'bid': 25077.4}",542,"{'ask': 25065.0, 'lastTraded': None, 'bid': 25063.4}","{'ask': 25074.0, 'lastTraded': None, 'bid': 25072.4}",2019:02:02-02:50:00,25073.2,25064.2,25078.2,25066.2 37 | 35,"{'ask': 25074.0, 'lastTraded': None, 'bid': 25072.4}","{'ask': 25075.5, 'lastTraded': None, 'bid': 25073.9}",379,"{'ask': 25066.0, 'lastTraded': None, 'bid': 25064.4}","{'ask': 25066.5, 'lastTraded': None, 'bid': 25064.9}",2019:02:02-02:55:00,25065.7,25065.2,25074.7,25073.2 38 | 36,"{'ask': 25031.5, 'lastTraded': None, 'bid': 25029.9}","{'ask': 25076.0, 'lastTraded': None, 'bid': 25074.4}",1506,"{'ask': 25031.5, 'lastTraded': None, 'bid': 25029.9}","{'ask': 25074.5, 'lastTraded': None, 'bid': 25072.9}",2019:02:02-03:00:00,25073.7,25030.7,25075.2,25030.7 39 | 37,"{'ask': 25045.0, 'lastTraded': None, 'bid': 25043.4}","{'ask': 25050.5, 'lastTraded': None, 'bid': 25048.9}",1243,"{'ask': 25029.5, 'lastTraded': None, 'bid': 25027.9}","{'ask': 25030.5, 'lastTraded': None, 'bid': 25028.9}",2019:02:02-03:05:00,25029.7,25028.7,25049.7,25044.2 40 | 38,"{'ask': 25039.0, 'lastTraded': None, 'bid': 25037.4}","{'ask': 25051.5, 'lastTraded': None, 'bid': 25049.9}",1205,"{'ask': 25031.5, 'lastTraded': None, 'bid': 25029.9}","{'ask': 25045.5, 'lastTraded': None, 'bid': 25043.9}",2019:02:02-03:10:00,25044.7,25030.7,25050.7,25038.2 41 | 39,"{'ask': 25017.0, 'lastTraded': None, 'bid': 25015.4}","{'ask': 25043.5, 'lastTraded': None, 'bid': 25041.9}",1810,"{'ask': 25016.0, 'lastTraded': None, 'bid': 25014.4}","{'ask': 25039.5, 'lastTraded': None, 'bid': 25037.9}",2019:02:02-03:15:00,25038.7,25015.2,25042.7,25016.2 42 | 40,"{'ask': 25011.5, 'lastTraded': None, 'bid': 25009.9}","{'ask': 25033.5, 'lastTraded': None, 'bid': 25031.9}",1303,"{'ask': 25011.5, 'lastTraded': None, 'bid': 25009.9}","{'ask': 25017.5, 'lastTraded': None, 'bid': 25015.9}",2019:02:02-03:20:00,25016.7,25010.7,25032.7,25010.7 43 | 41,"{'ask': 25021.0, 'lastTraded': None, 'bid': 25019.4}","{'ask': 25022.5, 'lastTraded': None, 'bid': 25020.9}",937,"{'ask': 25007.0, 'lastTraded': None, 'bid': 25005.4}","{'ask': 25011.0, 'lastTraded': None, 'bid': 25009.4}",2019:02:02-03:25:00,25010.2,25006.2,25021.7,25020.2 44 | 42,"{'ask': 25041.0, 'lastTraded': None, 'bid': 25039.4}","{'ask': 25045.5, 'lastTraded': None, 'bid': 25043.9}",1294,"{'ask': 25016.0, 'lastTraded': None, 'bid': 25014.4}","{'ask': 25020.5, 'lastTraded': None, 'bid': 25018.9}",2019:02:02-03:30:00,25019.7,25015.2,25044.7,25040.2 45 | 43,"{'ask': 25033.5, 'lastTraded': None, 'bid': 25031.9}","{'ask': 25046.5, 'lastTraded': None, 'bid': 25044.9}",875,"{'ask': 25023.5, 'lastTraded': None, 'bid': 25021.9}","{'ask': 25038.5, 'lastTraded': None, 'bid': 25036.9}",2019:02:02-03:35:00,25037.7,25022.7,25045.7,25032.7 46 | 44,"{'ask': 25036.0, 'lastTraded': None, 'bid': 25034.4}","{'ask': 25041.5, 'lastTraded': None, 'bid': 25039.9}",614,"{'ask': 25029.0, 'lastTraded': None, 'bid': 25027.4}","{'ask': 25032.5, 'lastTraded': None, 'bid': 25030.9}",2019:02:02-03:40:00,25031.7,25028.2,25040.7,25035.2 47 | 45,"{'ask': 25020.5, 'lastTraded': None, 'bid': 25018.9}","{'ask': 25042.5, 'lastTraded': None, 'bid': 25040.9}",1126,"{'ask': 25016.0, 'lastTraded': None, 'bid': 25014.4}","{'ask': 25036.5, 'lastTraded': None, 'bid': 25034.9}",2019:02:02-03:45:00,25035.7,25015.2,25041.7,25019.7 48 | 46,"{'ask': 24996.5, 'lastTraded': None, 'bid': 24994.9}","{'ask': 25027.5, 'lastTraded': None, 'bid': 25025.9}",1707,"{'ask': 24991.5, 'lastTraded': None, 'bid': 24989.9}","{'ask': 25020.0, 'lastTraded': None, 'bid': 25018.4}",2019:02:02-03:50:00,25019.2,24990.7,25026.7,24995.7 49 | 47,"{'ask': 25004.0, 'lastTraded': None, 'bid': 25002.4}","{'ask': 25007.5, 'lastTraded': None, 'bid': 25005.9}",1087,"{'ask': 24988.5, 'lastTraded': None, 'bid': 24986.9}","{'ask': 24996.0, 'lastTraded': None, 'bid': 24994.4}",2019:02:02-03:55:00,24995.2,24987.7,25006.7,25003.2 50 | 48,"{'ask': 24999.5, 'lastTraded': None, 'bid': 24997.9}","{'ask': 25010.5, 'lastTraded': None, 'bid': 25008.9}",1657,"{'ask': 24984.0, 'lastTraded': None, 'bid': 24982.4}","{'ask': 25003.5, 'lastTraded': None, 'bid': 25001.9}",2019:02:02-04:00:00,25002.7,24983.2,25009.7,24998.7 51 | 49,"{'ask': 24991.5, 'lastTraded': None, 'bid': 24989.9}","{'ask': 25010.5, 'lastTraded': None, 'bid': 25008.9}",932,"{'ask': 24989.0, 'lastTraded': None, 'bid': 24987.4}","{'ask': 24999.0, 'lastTraded': None, 'bid': 24997.4}",2019:02:02-04:05:00,24998.2,24988.2,25009.7,24990.7 52 | 50,"{'ask': 25000.5, 'lastTraded': None, 'bid': 24998.9}","{'ask': 25006.5, 'lastTraded': None, 'bid': 25004.9}",880,"{'ask': 24983.5, 'lastTraded': None, 'bid': 24981.9}","{'ask': 24989.5, 'lastTraded': None, 'bid': 24987.9}",2019:02:02-04:10:00,24988.7,24982.7,25005.7,24999.7 53 | 51,"{'ask': 25019.5, 'lastTraded': None, 'bid': 25017.9}","{'ask': 25030.5, 'lastTraded': None, 'bid': 25028.9}",2226,"{'ask': 24997.5, 'lastTraded': None, 'bid': 24995.9}","{'ask': 25001.5, 'lastTraded': None, 'bid': 24999.9}",2019:02:02-04:15:00,25000.7,24996.7,25029.7,25018.7 54 | 52,"{'ask': 25027.0, 'lastTraded': None, 'bid': 25025.4}","{'ask': 25031.5, 'lastTraded': None, 'bid': 25029.9}",878,"{'ask': 25012.5, 'lastTraded': None, 'bid': 25010.9}","{'ask': 25019.0, 'lastTraded': None, 'bid': 25017.4}",2019:02:02-04:20:00,25018.2,25011.7,25030.7,25026.2 55 | 53,"{'ask': 25031.0, 'lastTraded': None, 'bid': 25029.4}","{'ask': 25032.5, 'lastTraded': None, 'bid': 25030.9}",780,"{'ask': 25009.5, 'lastTraded': None, 'bid': 25007.9}","{'ask': 25027.5, 'lastTraded': None, 'bid': 25025.9}",2019:02:02-04:25:00,25026.7,25008.7,25031.7,25030.2 56 | 54,"{'ask': 25045.5, 'lastTraded': None, 'bid': 25043.9}","{'ask': 25054.0, 'lastTraded': None, 'bid': 25052.4}",1248,"{'ask': 25030.5, 'lastTraded': None, 'bid': 25028.9}","{'ask': 25030.5, 'lastTraded': None, 'bid': 25028.9}",2019:02:02-04:30:00,25029.7,25029.7,25053.2,25044.7 57 | 55,"{'ask': 25052.0, 'lastTraded': None, 'bid': 25050.4}","{'ask': 25059.0, 'lastTraded': None, 'bid': 25057.4}",676,"{'ask': 25042.5, 'lastTraded': None, 'bid': 25040.9}","{'ask': 25046.5, 'lastTraded': None, 'bid': 25044.9}",2019:02:02-04:35:00,25045.7,25041.7,25058.2,25051.2 58 | 56,"{'ask': 25045.5, 'lastTraded': None, 'bid': 25043.9}","{'ask': 25052.0, 'lastTraded': None, 'bid': 25050.4}",787,"{'ask': 25037.0, 'lastTraded': None, 'bid': 25035.4}","{'ask': 25051.5, 'lastTraded': None, 'bid': 25049.9}",2019:02:02-04:40:00,25050.7,25036.2,25051.2,25044.7 59 | 57,"{'ask': 25031.0, 'lastTraded': None, 'bid': 25029.4}","{'ask': 25052.5, 'lastTraded': None, 'bid': 25050.9}",1217,"{'ask': 25029.5, 'lastTraded': None, 'bid': 25027.9}","{'ask': 25046.0, 'lastTraded': None, 'bid': 25044.4}",2019:02:02-04:45:00,25045.2,25028.7,25051.7,25030.2 60 | 58,"{'ask': 25032.5, 'lastTraded': None, 'bid': 25030.9}","{'ask': 25036.5, 'lastTraded': None, 'bid': 25034.9}",1194,"{'ask': 25020.5, 'lastTraded': None, 'bid': 25018.9}","{'ask': 25030.5, 'lastTraded': None, 'bid': 25028.9}",2019:02:02-04:50:00,25029.7,25019.7,25035.7,25031.7 61 | 59,"{'ask': 25059.0, 'lastTraded': None, 'bid': 25057.4}","{'ask': 25074.5, 'lastTraded': None, 'bid': 25072.9}",4066,"{'ask': 25022.0, 'lastTraded': None, 'bid': 25020.4}","{'ask': 25026.5, 'lastTraded': None, 'bid': 25024.9}",2019:02:02-04:55:00,25025.7,25021.2,25073.7,25058.2 62 | 60,"{'ask': 25066.1, 'lastTraded': None, 'bid': 25062.3}","{'ask': 25071.6, 'lastTraded': None, 'bid': 25067.8}",1889,"{'ask': 25053.1, 'lastTraded': None, 'bid': 25049.3}","{'ask': 25058.5, 'lastTraded': None, 'bid': 25056.9}",2019:02:02-05:00:00,25057.7,25051.2,25069.7,25064.2 63 | 61,"{'ask': 25057.6, 'lastTraded': None, 'bid': 25053.8}","{'ask': 25067.6, 'lastTraded': None, 'bid': 25063.8}",440,"{'ask': 25056.6, 'lastTraded': None, 'bid': 25052.8}","{'ask': 25066.6, 'lastTraded': None, 'bid': 25062.8}",2019:02:02-05:05:00,25064.7,25054.7,25065.7,25055.7 64 | 62,"{'ask': 25052.3, 'lastTraded': None, 'bid': 25042.5}","{'ask': 25060.6, 'lastTraded': None, 'bid': 25056.8}",1184,"{'ask': 25042.6, 'lastTraded': None, 'bid': 25038.8}","{'ask': 25058.1, 'lastTraded': None, 'bid': 25054.3}",2019:02:02-05:10:00,25056.2,25040.7,25058.7,25047.4 65 | 63,"{'ask': 25062.4, 'lastTraded': None, 'bid': 25052.6}","{'ask': 25062.9, 'lastTraded': None, 'bid': 25053.1}",0,"{'ask': 25050.6, 'lastTraded': None, 'bid': 25040.8}","{'ask': 25052.4, 'lastTraded': None, 'bid': 25042.6}",2019:02:02-05:15:00,25047.5,25045.7,25058.0,25057.5 66 | 64,"{'ask': 25062.4, 'lastTraded': None, 'bid': 25052.6}","{'ask': 25063.2, 'lastTraded': None, 'bid': 25053.4}",0,"{'ask': 25061.2, 'lastTraded': None, 'bid': 25051.4}","{'ask': 25062.3, 'lastTraded': None, 'bid': 25052.5}",2019:02:02-05:20:00,25057.4,25056.3,25058.3,25057.5 67 | 65,"{'ask': 25064.5, 'lastTraded': None, 'bid': 25054.7}","{'ask': 25064.6, 'lastTraded': None, 'bid': 25054.8}",0,"{'ask': 25061.4, 'lastTraded': None, 'bid': 25051.6}","{'ask': 25062.6, 'lastTraded': None, 'bid': 25052.8}",2019:02:02-05:25:00,25057.7,25056.5,25059.7,25059.6 68 | 66,"{'ask': 25055.1, 'lastTraded': None, 'bid': 25051.3}","{'ask': 25057.1, 'lastTraded': None, 'bid': 25053.3}",161,"{'ask': 25050.1, 'lastTraded': None, 'bid': 25046.3}","{'ask': 25055.1, 'lastTraded': None, 'bid': 25051.3}",2019:02:02-05:30:00,25053.2,25048.2,25055.2,25053.2 69 | 67,"{'ask': 25054.1, 'lastTraded': None, 'bid': 25050.3}","{'ask': 25057.1, 'lastTraded': None, 'bid': 25053.3}",48,"{'ask': 25052.1, 'lastTraded': None, 'bid': 25048.3}","{'ask': 25056.1, 'lastTraded': None, 'bid': 25052.3}",2019:02:02-05:35:00,25054.2,25050.2,25055.2,25052.2 70 | 68,"{'ask': 25054.1, 'lastTraded': None, 'bid': 25050.3}","{'ask': 25056.1, 'lastTraded': None, 'bid': 25052.3}",101,"{'ask': 25049.1, 'lastTraded': None, 'bid': 25045.3}","{'ask': 25053.1, 'lastTraded': None, 'bid': 25049.3}",2019:02:02-05:40:00,25051.2,25047.2,25054.2,25052.2 71 | 69,"{'ask': 25059.1, 'lastTraded': None, 'bid': 25055.3}","{'ask': 25059.1, 'lastTraded': None, 'bid': 25055.3}",128,"{'ask': 25051.1, 'lastTraded': None, 'bid': 25047.3}","{'ask': 25055.1, 'lastTraded': None, 'bid': 25051.3}",2019:02:02-05:45:00,25053.2,25049.2,25057.2,25057.2 72 | 70,"{'ask': 25062.1, 'lastTraded': None, 'bid': 25058.3}","{'ask': 25067.1, 'lastTraded': None, 'bid': 25063.3}",101,"{'ask': 25057.1, 'lastTraded': None, 'bid': 25053.3}","{'ask': 25057.1, 'lastTraded': None, 'bid': 25053.3}",2019:02:02-05:50:00,25055.2,25055.2,25065.2,25060.2 73 | 71,"{'ask': 25063.9, 'lastTraded': None, 'bid': 25054.1}","{'ask': 25064.1, 'lastTraded': None, 'bid': 25058.3}",95,"{'ask': 25050.1, 'lastTraded': None, 'bid': 25046.3}","{'ask': 25061.1, 'lastTraded': None, 'bid': 25057.3}",2019:02:02-05:55:00,25059.2,25048.2,25061.2,25059.0 74 | -------------------------------------------------------------------------------- /data/2019-02-16.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'lastTraded': None, 'ask': 25790.3, 'bid': 25788.7}","{'lastTraded': None, 'ask': 25791.8, 'bid': 25790.2}",2634,"{'lastTraded': None, 'ask': 25749.8, 'bid': 25748.2}","{'lastTraded': None, 'ask': 25752.8, 'bid': 25751.2}",2019:02:16-00:00:00,25752.0,25749.0,25791.0,25789.5 3 | 1,"{'lastTraded': None, 'ask': 25769.8, 'bid': 25768.2}","{'lastTraded': None, 'ask': 25792.8, 'bid': 25791.2}",2089,"{'lastTraded': None, 'ask': 25753.8, 'bid': 25752.2}","{'lastTraded': None, 'ask': 25790.8, 'bid': 25789.2}",2019:02:16-00:05:00,25790.0,25753.0,25792.0,25769.0 4 | 2,"{'lastTraded': None, 'ask': 25755.3, 'bid': 25753.7}","{'lastTraded': None, 'ask': 25770.8, 'bid': 25769.2}",2602,"{'lastTraded': None, 'ask': 25740.3, 'bid': 25738.7}","{'lastTraded': None, 'ask': 25768.8, 'bid': 25767.2}",2019:02:16-00:10:00,25768.0,25739.5,25770.0,25754.5 5 | 3,"{'lastTraded': None, 'ask': 25747.8, 'bid': 25746.2}","{'lastTraded': None, 'ask': 25760.8, 'bid': 25759.2}",1993,"{'lastTraded': None, 'ask': 25734.8, 'bid': 25733.2}","{'lastTraded': None, 'ask': 25754.8, 'bid': 25753.2}",2019:02:16-00:15:00,25754.0,25734.0,25760.0,25747.0 6 | 4,"{'lastTraded': None, 'ask': 25760.3, 'bid': 25758.7}","{'lastTraded': None, 'ask': 25761.8, 'bid': 25760.2}",2270,"{'lastTraded': None, 'ask': 25730.8, 'bid': 25729.2}","{'lastTraded': None, 'ask': 25748.8, 'bid': 25747.2}",2019:02:16-00:20:00,25748.0,25730.0,25761.0,25759.5 7 | 5,"{'lastTraded': None, 'ask': 25785.8, 'bid': 25784.2}","{'lastTraded': None, 'ask': 25787.8, 'bid': 25786.2}",2004,"{'lastTraded': None, 'ask': 25759.8, 'bid': 25758.2}","{'lastTraded': None, 'ask': 25759.8, 'bid': 25758.2}",2019:02:16-00:25:00,25759.0,25759.0,25787.0,25785.0 8 | 6,"{'lastTraded': None, 'ask': 25772.8, 'bid': 25771.2}","{'lastTraded': None, 'ask': 25785.8, 'bid': 25784.2}",1518,"{'lastTraded': None, 'ask': 25768.8, 'bid': 25767.2}","{'lastTraded': None, 'ask': 25785.3, 'bid': 25783.7}",2019:02:16-00:30:00,25784.5,25768.0,25785.0,25772.0 9 | 7,"{'lastTraded': None, 'ask': 25768.3, 'bid': 25766.7}","{'lastTraded': None, 'ask': 25773.8, 'bid': 25772.2}",1562,"{'lastTraded': None, 'ask': 25749.8, 'bid': 25748.2}","{'lastTraded': None, 'ask': 25771.8, 'bid': 25770.2}",2019:02:16-00:35:00,25771.0,25749.0,25773.0,25767.5 10 | 8,"{'lastTraded': None, 'ask': 25768.8, 'bid': 25767.2}","{'lastTraded': None, 'ask': 25780.8, 'bid': 25779.2}",1414,"{'lastTraded': None, 'ask': 25764.8, 'bid': 25763.2}","{'lastTraded': None, 'ask': 25768.8, 'bid': 25767.2}",2019:02:16-00:40:00,25768.0,25764.0,25780.0,25768.0 11 | 9,"{'lastTraded': None, 'ask': 25776.3, 'bid': 25774.7}","{'lastTraded': None, 'ask': 25780.3, 'bid': 25778.7}",1438,"{'lastTraded': None, 'ask': 25756.3, 'bid': 25754.7}","{'lastTraded': None, 'ask': 25769.8, 'bid': 25768.2}",2019:02:16-00:45:00,25769.0,25755.5,25779.5,25775.5 12 | 10,"{'lastTraded': None, 'ask': 25796.8, 'bid': 25795.2}","{'lastTraded': None, 'ask': 25802.8, 'bid': 25801.2}",1584,"{'lastTraded': None, 'ask': 25771.8, 'bid': 25770.2}","{'lastTraded': None, 'ask': 25775.8, 'bid': 25774.2}",2019:02:16-00:50:00,25775.0,25771.0,25802.0,25796.0 13 | 11,"{'lastTraded': None, 'ask': 25802.8, 'bid': 25801.2}","{'lastTraded': None, 'ask': 25811.3, 'bid': 25809.7}",1433,"{'lastTraded': None, 'ask': 25794.3, 'bid': 25792.7}","{'lastTraded': None, 'ask': 25797.8, 'bid': 25796.2}",2019:02:16-00:55:00,25797.0,25793.5,25810.5,25802.0 14 | 12,"{'lastTraded': None, 'ask': 25780.8, 'bid': 25779.2}","{'lastTraded': None, 'ask': 25807.8, 'bid': 25806.2}",1561,"{'lastTraded': None, 'ask': 25779.8, 'bid': 25778.2}","{'lastTraded': None, 'ask': 25803.8, 'bid': 25802.2}",2019:02:16-01:00:00,25803.0,25779.0,25807.0,25780.0 15 | 13,"{'lastTraded': None, 'ask': 25789.3, 'bid': 25787.7}","{'lastTraded': None, 'ask': 25791.3, 'bid': 25789.7}",1221,"{'lastTraded': None, 'ask': 25770.8, 'bid': 25769.2}","{'lastTraded': None, 'ask': 25780.3, 'bid': 25778.7}",2019:02:16-01:05:00,25779.5,25770.0,25790.5,25788.5 16 | 14,"{'lastTraded': None, 'ask': 25808.8, 'bid': 25807.2}","{'lastTraded': None, 'ask': 25808.8, 'bid': 25807.2}",1171,"{'lastTraded': None, 'ask': 25786.8, 'bid': 25785.2}","{'lastTraded': None, 'ask': 25788.8, 'bid': 25787.2}",2019:02:16-01:10:00,25788.0,25786.0,25808.0,25808.0 17 | 15,"{'lastTraded': None, 'ask': 25799.8, 'bid': 25798.2}","{'lastTraded': None, 'ask': 25815.3, 'bid': 25813.7}",1606,"{'lastTraded': None, 'ask': 25795.8, 'bid': 25794.2}","{'lastTraded': None, 'ask': 25809.8, 'bid': 25808.2}",2019:02:16-01:15:00,25809.0,25795.0,25814.5,25799.0 18 | 16,"{'lastTraded': None, 'ask': 25792.8, 'bid': 25791.2}","{'lastTraded': None, 'ask': 25803.8, 'bid': 25802.2}",877,"{'lastTraded': None, 'ask': 25790.8, 'bid': 25789.2}","{'lastTraded': None, 'ask': 25800.3, 'bid': 25798.7}",2019:02:16-01:20:00,25799.5,25790.0,25803.0,25792.0 19 | 17,"{'lastTraded': None, 'ask': 25793.8, 'bid': 25792.2}","{'lastTraded': None, 'ask': 25806.8, 'bid': 25805.2}",1304,"{'lastTraded': None, 'ask': 25791.8, 'bid': 25790.2}","{'lastTraded': None, 'ask': 25792.3, 'bid': 25790.7}",2019:02:16-01:25:00,25791.5,25791.0,25806.0,25793.0 20 | 18,"{'lastTraded': None, 'ask': 25784.8, 'bid': 25783.2}","{'lastTraded': None, 'ask': 25798.8, 'bid': 25797.2}",1184,"{'lastTraded': None, 'ask': 25776.8, 'bid': 25775.2}","{'lastTraded': None, 'ask': 25792.8, 'bid': 25791.2}",2019:02:16-01:30:00,25792.0,25776.0,25798.0,25784.0 21 | 19,"{'lastTraded': None, 'ask': 25793.8, 'bid': 25792.2}","{'lastTraded': None, 'ask': 25793.8, 'bid': 25792.2}",667,"{'lastTraded': None, 'ask': 25781.3, 'bid': 25779.7}","{'lastTraded': None, 'ask': 25785.3, 'bid': 25783.7}",2019:02:16-01:35:00,25784.5,25780.5,25793.0,25793.0 22 | 20,"{'lastTraded': None, 'ask': 25796.8, 'bid': 25795.2}","{'lastTraded': None, 'ask': 25800.8, 'bid': 25799.2}",652,"{'lastTraded': None, 'ask': 25791.8, 'bid': 25790.2}","{'lastTraded': None, 'ask': 25794.8, 'bid': 25793.2}",2019:02:16-01:40:00,25794.0,25791.0,25800.0,25796.0 23 | 21,"{'lastTraded': None, 'ask': 25790.8, 'bid': 25789.2}","{'lastTraded': None, 'ask': 25803.8, 'bid': 25802.2}",779,"{'lastTraded': None, 'ask': 25783.3, 'bid': 25781.7}","{'lastTraded': None, 'ask': 25797.3, 'bid': 25795.7}",2019:02:16-01:45:00,25796.5,25782.5,25803.0,25790.0 24 | 22,"{'lastTraded': None, 'ask': 25785.3, 'bid': 25783.7}","{'lastTraded': None, 'ask': 25791.3, 'bid': 25789.7}",670,"{'lastTraded': None, 'ask': 25780.8, 'bid': 25779.2}","{'lastTraded': None, 'ask': 25790.3, 'bid': 25788.7}",2019:02:16-01:50:00,25789.5,25780.0,25790.5,25784.5 25 | 23,"{'lastTraded': None, 'ask': 25784.8, 'bid': 25783.2}","{'lastTraded': None, 'ask': 25791.3, 'bid': 25789.7}",504,"{'lastTraded': None, 'ask': 25781.8, 'bid': 25780.2}","{'lastTraded': None, 'ask': 25784.8, 'bid': 25783.2}",2019:02:16-01:55:00,25784.0,25781.0,25790.5,25784.0 26 | 24,"{'lastTraded': None, 'ask': 25784.3, 'bid': 25782.7}","{'lastTraded': None, 'ask': 25796.3, 'bid': 25794.7}",764,"{'lastTraded': None, 'ask': 25782.3, 'bid': 25780.7}","{'lastTraded': None, 'ask': 25785.3, 'bid': 25783.7}",2019:02:16-02:00:00,25784.5,25781.5,25795.5,25783.5 27 | 25,"{'lastTraded': None, 'ask': 25771.8, 'bid': 25770.2}","{'lastTraded': None, 'ask': 25786.8, 'bid': 25785.2}",1494,"{'lastTraded': None, 'ask': 25764.8, 'bid': 25763.2}","{'lastTraded': None, 'ask': 25783.8, 'bid': 25782.2}",2019:02:16-02:05:00,25783.0,25764.0,25786.0,25771.0 28 | 26,"{'lastTraded': None, 'ask': 25766.3, 'bid': 25764.7}","{'lastTraded': None, 'ask': 25772.8, 'bid': 25771.2}",755,"{'lastTraded': None, 'ask': 25763.8, 'bid': 25762.2}","{'lastTraded': None, 'ask': 25771.3, 'bid': 25769.7}",2019:02:16-02:10:00,25770.5,25763.0,25772.0,25765.5 29 | 27,"{'lastTraded': None, 'ask': 25768.8, 'bid': 25767.2}","{'lastTraded': None, 'ask': 25774.8, 'bid': 25773.2}",727,"{'lastTraded': None, 'ask': 25765.8, 'bid': 25764.2}","{'lastTraded': None, 'ask': 25766.8, 'bid': 25765.2}",2019:02:16-02:15:00,25766.0,25765.0,25774.0,25768.0 30 | 28,"{'lastTraded': None, 'ask': 25769.8, 'bid': 25768.2}","{'lastTraded': None, 'ask': 25771.8, 'bid': 25770.2}",553,"{'lastTraded': None, 'ask': 25762.8, 'bid': 25761.2}","{'lastTraded': None, 'ask': 25769.3, 'bid': 25767.7}",2019:02:16-02:20:00,25768.5,25762.0,25771.0,25769.0 31 | 29,"{'lastTraded': None, 'ask': 25751.8, 'bid': 25750.2}","{'lastTraded': None, 'ask': 25774.3, 'bid': 25772.7}",935,"{'lastTraded': None, 'ask': 25750.8, 'bid': 25749.2}","{'lastTraded': None, 'ask': 25770.3, 'bid': 25768.7}",2019:02:16-02:25:00,25769.5,25750.0,25773.5,25751.0 32 | 30,"{'lastTraded': None, 'ask': 25760.8, 'bid': 25759.2}","{'lastTraded': None, 'ask': 25761.8, 'bid': 25760.2}",590,"{'lastTraded': None, 'ask': 25750.3, 'bid': 25748.7}","{'lastTraded': None, 'ask': 25752.8, 'bid': 25751.2}",2019:02:16-02:30:00,25752.0,25749.5,25761.0,25760.0 33 | 31,"{'lastTraded': None, 'ask': 25767.8, 'bid': 25766.2}","{'lastTraded': None, 'ask': 25768.3, 'bid': 25766.7}",539,"{'lastTraded': None, 'ask': 25760.8, 'bid': 25759.2}","{'lastTraded': None, 'ask': 25761.8, 'bid': 25760.2}",2019:02:16-02:35:00,25761.0,25760.0,25767.5,25767.0 34 | 32,"{'lastTraded': None, 'ask': 25765.5, 'bid': 25763.9}","{'lastTraded': None, 'ask': 25771.5, 'bid': 25769.9}",543,"{'lastTraded': None, 'ask': 25761.5, 'bid': 25759.9}","{'lastTraded': None, 'ask': 25766.5, 'bid': 25764.9}",2019:02:16-02:40:00,25765.7,25760.7,25770.7,25764.7 35 | 33,"{'lastTraded': None, 'ask': 25771.5, 'bid': 25769.9}","{'lastTraded': None, 'ask': 25774.0, 'bid': 25772.4}",514,"{'lastTraded': None, 'ask': 25763.5, 'bid': 25761.9}","{'lastTraded': None, 'ask': 25764.5, 'bid': 25762.9}",2019:02:16-02:45:00,25763.7,25762.7,25773.2,25770.7 36 | 34,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25796.0, 'bid': 25794.4}",896,"{'lastTraded': None, 'ask': 25771.5, 'bid': 25769.9}","{'lastTraded': None, 'ask': 25772.0, 'bid': 25770.4}",2019:02:16-02:50:00,25771.2,25770.7,25795.2,25793.7 37 | 35,"{'lastTraded': None, 'ask': 25778.5, 'bid': 25776.9}","{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}",645,"{'lastTraded': None, 'ask': 25777.5, 'bid': 25775.9}","{'lastTraded': None, 'ask': 25793.5, 'bid': 25791.9}",2019:02:16-02:55:00,25792.7,25776.7,25793.7,25777.7 38 | 36,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25796.5, 'bid': 25794.9}",1176,"{'lastTraded': None, 'ask': 25777.5, 'bid': 25775.9}","{'lastTraded': None, 'ask': 25778.0, 'bid': 25776.4}",2019:02:16-03:00:00,25777.2,25776.7,25795.7,25793.7 39 | 37,"{'lastTraded': None, 'ask': 25796.5, 'bid': 25794.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",670,"{'lastTraded': None, 'ask': 25792.5, 'bid': 25790.9}","{'lastTraded': None, 'ask': 25795.0, 'bid': 25793.4}",2019:02:16-03:05:00,25794.2,25791.7,25800.7,25795.7 40 | 38,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25800.5, 'bid': 25798.9}",870,"{'lastTraded': None, 'ask': 25789.5, 'bid': 25787.9}","{'lastTraded': None, 'ask': 25798.5, 'bid': 25796.9}",2019:02:16-03:10:00,25797.7,25788.7,25799.7,25793.7 41 | 39,"{'lastTraded': None, 'ask': 25802.0, 'bid': 25800.4}","{'lastTraded': None, 'ask': 25809.0, 'bid': 25807.4}",809,"{'lastTraded': None, 'ask': 25792.5, 'bid': 25790.9}","{'lastTraded': None, 'ask': 25795.0, 'bid': 25793.4}",2019:02:16-03:15:00,25794.2,25791.7,25808.2,25801.2 42 | 40,"{'lastTraded': None, 'ask': 25802.5, 'bid': 25800.9}","{'lastTraded': None, 'ask': 25806.0, 'bid': 25804.4}",690,"{'lastTraded': None, 'ask': 25795.5, 'bid': 25793.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",2019:02:16-03:20:00,25800.7,25794.7,25805.2,25801.7 43 | 41,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",877,"{'lastTraded': None, 'ask': 25787.5, 'bid': 25785.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",2019:02:16-03:25:00,25800.7,25786.7,25800.7,25793.7 44 | 42,"{'lastTraded': None, 'ask': 25799.5, 'bid': 25797.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",659,"{'lastTraded': None, 'ask': 25793.5, 'bid': 25791.9}","{'lastTraded': None, 'ask': 25794.0, 'bid': 25792.4}",2019:02:16-03:30:00,25793.2,25792.7,25800.7,25798.7 45 | 43,"{'lastTraded': None, 'ask': 25805.5, 'bid': 25803.9}","{'lastTraded': None, 'ask': 25808.5, 'bid': 25806.9}",1044,"{'lastTraded': None, 'ask': 25796.5, 'bid': 25794.9}","{'lastTraded': None, 'ask': 25798.5, 'bid': 25796.9}",2019:02:16-03:35:00,25797.7,25795.7,25807.7,25804.7 46 | 44,"{'lastTraded': None, 'ask': 25806.5, 'bid': 25804.9}","{'lastTraded': None, 'ask': 25809.0, 'bid': 25807.4}",477,"{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}","{'lastTraded': None, 'ask': 25805.0, 'bid': 25803.4}",2019:02:16-03:40:00,25804.2,25800.7,25808.2,25805.7 47 | 45,"{'lastTraded': None, 'ask': 25807.5, 'bid': 25805.9}","{'lastTraded': None, 'ask': 25810.5, 'bid': 25808.9}",386,"{'lastTraded': None, 'ask': 25803.5, 'bid': 25801.9}","{'lastTraded': None, 'ask': 25805.5, 'bid': 25803.9}",2019:02:16-03:45:00,25804.7,25802.7,25809.7,25806.7 48 | 46,"{'lastTraded': None, 'ask': 25814.5, 'bid': 25812.9}","{'lastTraded': None, 'ask': 25817.5, 'bid': 25815.9}",1082,"{'lastTraded': None, 'ask': 25808.5, 'bid': 25806.9}","{'lastTraded': None, 'ask': 25808.5, 'bid': 25806.9}",2019:02:16-03:50:00,25807.7,25807.7,25816.7,25813.7 49 | 47,"{'lastTraded': None, 'ask': 25825.5, 'bid': 25823.9}","{'lastTraded': None, 'ask': 25833.5, 'bid': 25831.9}",2067,"{'lastTraded': None, 'ask': 25808.0, 'bid': 25806.4}","{'lastTraded': None, 'ask': 25814.0, 'bid': 25812.4}",2019:02:16-03:55:00,25813.2,25807.2,25832.7,25824.7 50 | 48,"{'lastTraded': None, 'ask': 25823.5, 'bid': 25821.9}","{'lastTraded': None, 'ask': 25825.0, 'bid': 25823.4}",1200,"{'lastTraded': None, 'ask': 25811.5, 'bid': 25809.9}","{'lastTraded': None, 'ask': 25825.0, 'bid': 25823.4}",2019:02:16-04:00:00,25824.2,25810.7,25824.2,25822.7 51 | 49,"{'lastTraded': None, 'ask': 25814.5, 'bid': 25812.9}","{'lastTraded': None, 'ask': 25825.5, 'bid': 25823.9}",467,"{'lastTraded': None, 'ask': 25812.5, 'bid': 25810.9}","{'lastTraded': None, 'ask': 25823.0, 'bid': 25821.4}",2019:02:16-04:05:00,25822.2,25811.7,25824.7,25813.7 52 | 50,"{'lastTraded': None, 'ask': 25804.5, 'bid': 25802.9}","{'lastTraded': None, 'ask': 25814.5, 'bid': 25812.9}",779,"{'lastTraded': None, 'ask': 25803.5, 'bid': 25801.9}","{'lastTraded': None, 'ask': 25814.0, 'bid': 25812.4}",2019:02:16-04:10:00,25813.2,25802.7,25813.7,25803.7 53 | 51,"{'lastTraded': None, 'ask': 25793.5, 'bid': 25791.9}","{'lastTraded': None, 'ask': 25807.0, 'bid': 25805.4}",1272,"{'lastTraded': None, 'ask': 25789.5, 'bid': 25787.9}","{'lastTraded': None, 'ask': 25805.0, 'bid': 25803.4}",2019:02:16-04:15:00,25804.2,25788.7,25806.2,25792.7 54 | 52,"{'lastTraded': None, 'ask': 25797.5, 'bid': 25795.9}","{'lastTraded': None, 'ask': 25801.5, 'bid': 25799.9}",707,"{'lastTraded': None, 'ask': 25788.5, 'bid': 25786.9}","{'lastTraded': None, 'ask': 25792.5, 'bid': 25790.9}",2019:02:16-04:20:00,25791.7,25787.7,25800.7,25796.7 55 | 53,"{'lastTraded': None, 'ask': 25800.5, 'bid': 25798.9}","{'lastTraded': None, 'ask': 25803.5, 'bid': 25801.9}",715,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25798.0, 'bid': 25796.4}",2019:02:16-04:25:00,25797.2,25793.7,25802.7,25799.7 56 | 54,"{'lastTraded': None, 'ask': 25813.5, 'bid': 25811.9}","{'lastTraded': None, 'ask': 25817.5, 'bid': 25815.9}",1073,"{'lastTraded': None, 'ask': 25794.5, 'bid': 25792.9}","{'lastTraded': None, 'ask': 25800.0, 'bid': 25798.4}",2019:02:16-04:30:00,25799.2,25793.7,25816.7,25812.7 57 | 55,"{'lastTraded': None, 'ask': 25826.5, 'bid': 25824.9}","{'lastTraded': None, 'ask': 25828.0, 'bid': 25826.4}",1077,"{'lastTraded': None, 'ask': 25811.5, 'bid': 25809.9}","{'lastTraded': None, 'ask': 25813.0, 'bid': 25811.4}",2019:02:16-04:35:00,25812.2,25810.7,25827.2,25825.7 58 | 56,"{'lastTraded': None, 'ask': 25852.5, 'bid': 25850.9}","{'lastTraded': None, 'ask': 25854.5, 'bid': 25852.9}",2956,"{'lastTraded': None, 'ask': 25824.0, 'bid': 25822.4}","{'lastTraded': None, 'ask': 25824.0, 'bid': 25822.4}",2019:02:16-04:40:00,25823.2,25823.2,25853.7,25851.7 59 | 57,"{'lastTraded': None, 'ask': 25866.5, 'bid': 25864.9}","{'lastTraded': None, 'ask': 25872.5, 'bid': 25870.9}",3317,"{'lastTraded': None, 'ask': 25852.5, 'bid': 25850.9}","{'lastTraded': None, 'ask': 25853.0, 'bid': 25851.4}",2019:02:16-04:45:00,25852.2,25851.7,25871.7,25865.7 60 | 58,"{'lastTraded': None, 'ask': 25851.0, 'bid': 25849.4}","{'lastTraded': None, 'ask': 25867.0, 'bid': 25865.4}",2217,"{'lastTraded': None, 'ask': 25840.5, 'bid': 25838.9}","{'lastTraded': None, 'ask': 25867.0, 'bid': 25865.4}",2019:02:16-04:50:00,25866.2,25839.7,25866.2,25850.2 61 | 59,"{'lastTraded': None, 'ask': 25879.5, 'bid': 25877.9}","{'lastTraded': None, 'ask': 25882.5, 'bid': 25880.9}",5156,"{'lastTraded': None, 'ask': 25850.5, 'bid': 25848.9}","{'lastTraded': None, 'ask': 25850.5, 'bid': 25848.9}",2019:02:16-04:55:00,25849.7,25849.7,25881.7,25878.7 62 | 60,"{'lastTraded': None, 'ask': 25881.6, 'bid': 25877.8}","{'lastTraded': None, 'ask': 25900.6, 'bid': 25896.8}",2982,"{'lastTraded': None, 'ask': 25875.1, 'bid': 25871.3}","{'lastTraded': None, 'ask': 25880.6, 'bid': 25876.8}",2019:02:16-05:00:00,25878.7,25873.2,25898.7,25879.7 63 | 61,"{'lastTraded': None, 'ask': 25878.1, 'bid': 25874.3}","{'lastTraded': None, 'ask': 25887.6, 'bid': 25883.8}",831,"{'lastTraded': None, 'ask': 25878.1, 'bid': 25874.3}","{'lastTraded': None, 'ask': 25881.1, 'bid': 25877.3}",2019:02:16-05:05:00,25879.2,25876.2,25885.7,25876.2 64 | 62,"{'lastTraded': None, 'ask': 25893.5, 'bid': 25883.7}","{'lastTraded': None, 'ask': 25895.8, 'bid': 25891.3}",752,"{'lastTraded': None, 'ask': 25877.6, 'bid': 25873.8}","{'lastTraded': None, 'ask': 25878.6, 'bid': 25874.8}",2019:02:16-05:10:00,25876.7,25875.7,25893.55,25888.6 65 | 63,"{'lastTraded': None, 'ask': 25910.6, 'bid': 25900.8}","{'lastTraded': None, 'ask': 25917.5, 'bid': 25907.7}",2,"{'lastTraded': None, 'ask': 25893.9, 'bid': 25884.1}","{'lastTraded': None, 'ask': 25893.9, 'bid': 25884.1}",2019:02:16-05:15:00,25889.0,25889.0,25912.6,25905.7 66 | 64,"{'lastTraded': None, 'ask': 25906.2, 'bid': 25896.4}","{'lastTraded': None, 'ask': 25910.0, 'bid': 25900.2}",0,"{'lastTraded': None, 'ask': 25903.9, 'bid': 25894.1}","{'lastTraded': None, 'ask': 25910.0, 'bid': 25900.2}",2019:02:16-05:20:00,25905.1,25899.0,25905.1,25901.3 67 | 65,"{'lastTraded': None, 'ask': 25904.4, 'bid': 25894.6}","{'lastTraded': None, 'ask': 25907.4, 'bid': 25897.6}",0,"{'lastTraded': None, 'ask': 25903.7, 'bid': 25893.9}","{'lastTraded': None, 'ask': 25906.5, 'bid': 25896.7}",2019:02:16-05:25:00,25901.6,25898.8,25902.5,25899.5 68 | 66,"{'lastTraded': None, 'ask': 25896.1, 'bid': 25892.3}","{'lastTraded': None, 'ask': 25904.1, 'bid': 25898.3}",320,"{'lastTraded': None, 'ask': 25889.1, 'bid': 25885.3}","{'lastTraded': None, 'ask': 25904.1, 'bid': 25894.3}",2019:02:16-05:30:00,25899.2,25887.2,25901.2,25894.2 69 | 67,"{'lastTraded': None, 'ask': 25896.1, 'bid': 25892.3}","{'lastTraded': None, 'ask': 25899.1, 'bid': 25895.3}",77,"{'lastTraded': None, 'ask': 25896.1, 'bid': 25892.3}","{'lastTraded': None, 'ask': 25897.1, 'bid': 25893.3}",2019:02:16-05:35:00,25895.2,25894.2,25897.2,25894.2 70 | 68,"{'lastTraded': None, 'ask': 25899.1, 'bid': 25895.3}","{'lastTraded': None, 'ask': 25899.1, 'bid': 25895.3}",211,"{'lastTraded': None, 'ask': 25893.1, 'bid': 25889.3}","{'lastTraded': None, 'ask': 25897.1, 'bid': 25893.3}",2019:02:16-05:40:00,25895.2,25891.2,25897.2,25897.2 71 | 69,"{'lastTraded': None, 'ask': 25900.1, 'bid': 25896.3}","{'lastTraded': None, 'ask': 25900.1, 'bid': 25896.3}",111,"{'lastTraded': None, 'ask': 25896.1, 'bid': 25892.3}","{'lastTraded': None, 'ask': 25900.1, 'bid': 25896.3}",2019:02:16-05:45:00,25898.2,25894.2,25898.2,25898.2 72 | 70,"{'lastTraded': None, 'ask': 25904.1, 'bid': 25900.3}","{'lastTraded': None, 'ask': 25907.1, 'bid': 25903.3}",257,"{'lastTraded': None, 'ask': 25897.1, 'bid': 25893.3}","{'lastTraded': None, 'ask': 25897.1, 'bid': 25893.3}",2019:02:16-05:50:00,25895.2,25895.2,25905.2,25902.2 73 | 71,"{'lastTraded': None, 'ask': 25903.1, 'bid': 25893.3}","{'lastTraded': None, 'ask': 25911.1, 'bid': 25907.3}",256,"{'lastTraded': None, 'ask': 25894.1, 'bid': 25890.3}","{'lastTraded': None, 'ask': 25905.1, 'bid': 25901.3}",2019:02:16-05:55:00,25903.2,25892.2,25909.2,25898.2 74 | -------------------------------------------------------------------------------- /data/2019-02-23.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'bid': 25994.7, 'lastTraded': None, 'ask': 25996.3}","{'bid': 26001.7, 'lastTraded': None, 'ask': 26003.3}",1280,"{'bid': 25988.7, 'lastTraded': None, 'ask': 25990.3}","{'bid': 25998.7, 'lastTraded': None, 'ask': 26000.3}",2019:02:23-00:00:00,25999.5,25989.5,26002.5,25995.5 3 | 1,"{'bid': 26007.7, 'lastTraded': None, 'ask': 26009.3}","{'bid': 26011.7, 'lastTraded': None, 'ask': 26013.3}",2325,"{'bid': 25987.2, 'lastTraded': None, 'ask': 25988.8}","{'bid': 25994.2, 'lastTraded': None, 'ask': 25995.8}",2019:02:23-00:05:00,25995.0,25988.0,26012.5,26008.5 4 | 2,"{'bid': 26018.7, 'lastTraded': None, 'ask': 26020.3}","{'bid': 26019.2, 'lastTraded': None, 'ask': 26020.8}",1512,"{'bid': 26003.2, 'lastTraded': None, 'ask': 26004.8}","{'bid': 26008.2, 'lastTraded': None, 'ask': 26009.8}",2019:02:23-00:10:00,26009.0,26004.0,26020.0,26019.5 5 | 3,"{'bid': 26039.2, 'lastTraded': None, 'ask': 26040.8}","{'bid': 26042.7, 'lastTraded': None, 'ask': 26044.3}",2149,"{'bid': 26012.7, 'lastTraded': None, 'ask': 26014.3}","{'bid': 26019.2, 'lastTraded': None, 'ask': 26020.8}",2019:02:23-00:15:00,26020.0,26013.5,26043.5,26040.0 6 | 4,"{'bid': 26036.7, 'lastTraded': None, 'ask': 26038.3}","{'bid': 26044.2, 'lastTraded': None, 'ask': 26045.8}",2826,"{'bid': 26028.7, 'lastTraded': None, 'ask': 26030.3}","{'bid': 26039.7, 'lastTraded': None, 'ask': 26041.3}",2019:02:23-00:20:00,26040.5,26029.5,26045.0,26037.5 7 | 5,"{'bid': 26038.7, 'lastTraded': None, 'ask': 26040.3}","{'bid': 26044.2, 'lastTraded': None, 'ask': 26045.8}",1344,"{'bid': 26035.2, 'lastTraded': None, 'ask': 26036.8}","{'bid': 26036.2, 'lastTraded': None, 'ask': 26037.8}",2019:02:23-00:25:00,26037.0,26036.0,26045.0,26039.5 8 | 6,"{'bid': 26032.7, 'lastTraded': None, 'ask': 26034.3}","{'bid': 26044.7, 'lastTraded': None, 'ask': 26046.3}",2013,"{'bid': 26030.7, 'lastTraded': None, 'ask': 26032.3}","{'bid': 26038.2, 'lastTraded': None, 'ask': 26039.8}",2019:02:23-00:30:00,26039.0,26031.5,26045.5,26033.5 9 | 7,"{'bid': 26042.7, 'lastTraded': None, 'ask': 26044.3}","{'bid': 26044.7, 'lastTraded': None, 'ask': 26046.3}",1288,"{'bid': 26029.7, 'lastTraded': None, 'ask': 26031.3}","{'bid': 26033.2, 'lastTraded': None, 'ask': 26034.8}",2019:02:23-00:35:00,26034.0,26030.5,26045.5,26043.5 10 | 8,"{'bid': 26024.7, 'lastTraded': None, 'ask': 26026.3}","{'bid': 26047.7, 'lastTraded': None, 'ask': 26049.3}",1895,"{'bid': 26023.7, 'lastTraded': None, 'ask': 26025.3}","{'bid': 26043.2, 'lastTraded': None, 'ask': 26044.8}",2019:02:23-00:40:00,26044.0,26024.5,26048.5,26025.5 11 | 9,"{'bid': 26027.7, 'lastTraded': None, 'ask': 26029.3}","{'bid': 26034.7, 'lastTraded': None, 'ask': 26036.3}",877,"{'bid': 26022.7, 'lastTraded': None, 'ask': 26024.3}","{'bid': 26026.7, 'lastTraded': None, 'ask': 26028.3}",2019:02:23-00:45:00,26027.5,26023.5,26035.5,26028.5 12 | 10,"{'bid': 26015.7, 'lastTraded': None, 'ask': 26017.3}","{'bid': 26029.7, 'lastTraded': None, 'ask': 26031.3}",1773,"{'bid': 26011.7, 'lastTraded': None, 'ask': 26013.3}","{'bid': 26028.2, 'lastTraded': None, 'ask': 26029.8}",2019:02:23-00:50:00,26029.0,26012.5,26030.5,26016.5 13 | 11,"{'bid': 26032.7, 'lastTraded': None, 'ask': 26034.3}","{'bid': 26036.7, 'lastTraded': None, 'ask': 26038.3}",1290,"{'bid': 26016.7, 'lastTraded': None, 'ask': 26018.3}","{'bid': 26016.7, 'lastTraded': None, 'ask': 26018.3}",2019:02:23-00:55:00,26017.5,26017.5,26037.5,26033.5 14 | 12,"{'bid': 26046.7, 'lastTraded': None, 'ask': 26048.3}","{'bid': 26051.7, 'lastTraded': None, 'ask': 26053.3}",1899,"{'bid': 26024.7, 'lastTraded': None, 'ask': 26026.3}","{'bid': 26030.7, 'lastTraded': None, 'ask': 26032.3}",2019:02:23-01:00:00,26031.5,26025.5,26052.5,26047.5 15 | 13,"{'bid': 26043.2, 'lastTraded': None, 'ask': 26044.8}","{'bid': 26047.7, 'lastTraded': None, 'ask': 26049.3}",788,"{'bid': 26039.7, 'lastTraded': None, 'ask': 26041.3}","{'bid': 26047.7, 'lastTraded': None, 'ask': 26049.3}",2019:02:23-01:05:00,26048.5,26040.5,26048.5,26044.0 16 | 14,"{'bid': 26035.7, 'lastTraded': None, 'ask': 26037.3}","{'bid': 26044.7, 'lastTraded': None, 'ask': 26046.3}",737,"{'bid': 26035.7, 'lastTraded': None, 'ask': 26037.3}","{'bid': 26043.7, 'lastTraded': None, 'ask': 26045.3}",2019:02:23-01:10:00,26044.5,26036.5,26045.5,26036.5 17 | 15,"{'bid': 26023.7, 'lastTraded': None, 'ask': 26025.3}","{'bid': 26037.7, 'lastTraded': None, 'ask': 26039.3}",890,"{'bid': 26021.2, 'lastTraded': None, 'ask': 26022.8}","{'bid': 26036.2, 'lastTraded': None, 'ask': 26037.8}",2019:02:23-01:15:00,26037.0,26022.0,26038.5,26024.5 18 | 16,"{'bid': 26027.7, 'lastTraded': None, 'ask': 26029.3}","{'bid': 26027.7, 'lastTraded': None, 'ask': 26029.3}",811,"{'bid': 26018.7, 'lastTraded': None, 'ask': 26020.3}","{'bid': 26023.2, 'lastTraded': None, 'ask': 26024.8}",2019:02:23-01:20:00,26024.0,26019.5,26028.5,26028.5 19 | 17,"{'bid': 26022.7, 'lastTraded': None, 'ask': 26024.3}","{'bid': 26031.7, 'lastTraded': None, 'ask': 26033.3}",552,"{'bid': 26020.2, 'lastTraded': None, 'ask': 26021.8}","{'bid': 26027.2, 'lastTraded': None, 'ask': 26028.8}",2019:02:23-01:25:00,26028.0,26021.0,26032.5,26023.5 20 | 18,"{'bid': 26014.7, 'lastTraded': None, 'ask': 26016.3}","{'bid': 26024.7, 'lastTraded': None, 'ask': 26026.3}",874,"{'bid': 26011.7, 'lastTraded': None, 'ask': 26013.3}","{'bid': 26023.2, 'lastTraded': None, 'ask': 26024.8}",2019:02:23-01:30:00,26024.0,26012.5,26025.5,26015.5 21 | 19,"{'bid': 26018.7, 'lastTraded': None, 'ask': 26020.3}","{'bid': 26020.7, 'lastTraded': None, 'ask': 26022.3}",1000,"{'bid': 26005.7, 'lastTraded': None, 'ask': 26007.3}","{'bid': 26015.2, 'lastTraded': None, 'ask': 26016.8}",2019:02:23-01:35:00,26016.0,26006.5,26021.5,26019.5 22 | 20,"{'bid': 26018.7, 'lastTraded': None, 'ask': 26020.3}","{'bid': 26020.7, 'lastTraded': None, 'ask': 26022.3}",637,"{'bid': 26012.7, 'lastTraded': None, 'ask': 26014.3}","{'bid': 26017.7, 'lastTraded': None, 'ask': 26019.3}",2019:02:23-01:40:00,26018.5,26013.5,26021.5,26019.5 23 | 21,"{'bid': 26021.2, 'lastTraded': None, 'ask': 26022.8}","{'bid': 26022.7, 'lastTraded': None, 'ask': 26024.3}",930,"{'bid': 26014.7, 'lastTraded': None, 'ask': 26016.3}","{'bid': 26019.2, 'lastTraded': None, 'ask': 26020.8}",2019:02:23-01:45:00,26020.0,26015.5,26023.5,26022.0 24 | 22,"{'bid': 26005.7, 'lastTraded': None, 'ask': 26007.3}","{'bid': 26021.7, 'lastTraded': None, 'ask': 26023.3}",1511,"{'bid': 25995.7, 'lastTraded': None, 'ask': 25997.3}","{'bid': 26021.7, 'lastTraded': None, 'ask': 26023.3}",2019:02:23-01:50:00,26022.5,25996.5,26022.5,26006.5 25 | 23,"{'bid': 26013.7, 'lastTraded': None, 'ask': 26015.3}","{'bid': 26017.7, 'lastTraded': None, 'ask': 26019.3}",646,"{'bid': 26006.7, 'lastTraded': None, 'ask': 26008.3}","{'bid': 26006.7, 'lastTraded': None, 'ask': 26008.3}",2019:02:23-01:55:00,26007.5,26007.5,26018.5,26014.5 26 | 24,"{'bid': 26003.7, 'lastTraded': None, 'ask': 26005.3}","{'bid': 26016.7, 'lastTraded': None, 'ask': 26018.3}",816,"{'bid': 25999.7, 'lastTraded': None, 'ask': 26001.3}","{'bid': 26014.7, 'lastTraded': None, 'ask': 26016.3}",2019:02:23-02:00:00,26015.5,26000.5,26017.5,26004.5 27 | 25,"{'bid': 25999.7, 'lastTraded': None, 'ask': 26001.3}","{'bid': 26007.7, 'lastTraded': None, 'ask': 26009.3}",836,"{'bid': 25999.7, 'lastTraded': None, 'ask': 26001.3}","{'bid': 26004.7, 'lastTraded': None, 'ask': 26006.3}",2019:02:23-02:05:00,26005.5,26000.5,26008.5,26000.5 28 | 26,"{'bid': 25990.7, 'lastTraded': None, 'ask': 25992.3}","{'bid': 26000.7, 'lastTraded': None, 'ask': 26002.3}",1249,"{'bid': 25986.7, 'lastTraded': None, 'ask': 25988.3}","{'bid': 26000.2, 'lastTraded': None, 'ask': 26001.8}",2019:02:23-02:10:00,26001.0,25987.5,26001.5,25991.5 29 | 27,"{'bid': 25992.7, 'lastTraded': None, 'ask': 25994.3}","{'bid': 25998.7, 'lastTraded': None, 'ask': 26000.3}",2987,"{'bid': 25976.7, 'lastTraded': None, 'ask': 25978.3}","{'bid': 25989.7, 'lastTraded': None, 'ask': 25991.3}",2019:02:23-02:15:00,25990.5,25977.5,25999.5,25993.5 30 | 28,"{'bid': 25997.2, 'lastTraded': None, 'ask': 25998.8}","{'bid': 25997.7, 'lastTraded': None, 'ask': 25999.3}",567,"{'bid': 25987.7, 'lastTraded': None, 'ask': 25989.3}","{'bid': 25993.2, 'lastTraded': None, 'ask': 25994.8}",2019:02:23-02:20:00,25994.0,25988.5,25998.5,25998.0 31 | 29,"{'bid': 25999.2, 'lastTraded': None, 'ask': 26000.8}","{'bid': 26000.7, 'lastTraded': None, 'ask': 26002.3}",509,"{'bid': 25994.7, 'lastTraded': None, 'ask': 25996.3}","{'bid': 25997.7, 'lastTraded': None, 'ask': 25999.3}",2019:02:23-02:25:00,25998.5,25995.5,26001.5,26000.0 32 | 30,"{'bid': 26012.2, 'lastTraded': None, 'ask': 26013.8}","{'bid': 26012.2, 'lastTraded': None, 'ask': 26013.8}",957,"{'bid': 25997.7, 'lastTraded': None, 'ask': 25999.3}","{'bid': 25998.7, 'lastTraded': None, 'ask': 26000.3}",2019:02:23-02:30:00,25999.5,25998.5,26013.0,26013.0 33 | 31,"{'bid': 26005.7, 'lastTraded': None, 'ask': 26007.3}","{'bid': 26012.7, 'lastTraded': None, 'ask': 26014.3}",809,"{'bid': 26004.2, 'lastTraded': None, 'ask': 26005.8}","{'bid': 26011.7, 'lastTraded': None, 'ask': 26013.3}",2019:02:23-02:35:00,26012.5,26005.0,26013.5,26006.5 34 | 32,"{'bid': 25993.3, 'lastTraded': None, 'ask': 25994.9}","{'bid': 26007.3, 'lastTraded': None, 'ask': 26008.9}",698,"{'bid': 25990.3, 'lastTraded': None, 'ask': 25991.9}","{'bid': 26006.3, 'lastTraded': None, 'ask': 26007.9}",2019:02:23-02:40:00,26007.1,25991.1,26008.1,25994.1 35 | 33,"{'bid': 26000.3, 'lastTraded': None, 'ask': 26001.9}","{'bid': 26000.8, 'lastTraded': None, 'ask': 26002.4}",512,"{'bid': 25989.3, 'lastTraded': None, 'ask': 25990.9}","{'bid': 25992.3, 'lastTraded': None, 'ask': 25993.9}",2019:02:23-02:45:00,25993.1,25990.1,26001.6,26001.1 36 | 34,"{'bid': 25997.3, 'lastTraded': None, 'ask': 25998.9}","{'bid': 26001.3, 'lastTraded': None, 'ask': 26002.9}",581,"{'bid': 25990.8, 'lastTraded': None, 'ask': 25992.4}","{'bid': 26000.8, 'lastTraded': None, 'ask': 26002.4}",2019:02:23-02:50:00,26001.6,25991.6,26002.1,25998.1 37 | 35,"{'bid': 26003.8, 'lastTraded': None, 'ask': 26005.4}","{'bid': 26005.3, 'lastTraded': None, 'ask': 26006.9}",616,"{'bid': 25995.3, 'lastTraded': None, 'ask': 25996.9}","{'bid': 25998.3, 'lastTraded': None, 'ask': 25999.9}",2019:02:23-02:55:00,25999.1,25996.1,26006.1,26004.6 38 | 36,"{'bid': 26001.3, 'lastTraded': None, 'ask': 26002.9}","{'bid': 26005.3, 'lastTraded': None, 'ask': 26006.9}",558,"{'bid': 25994.3, 'lastTraded': None, 'ask': 25995.9}","{'bid': 26004.3, 'lastTraded': None, 'ask': 26005.9}",2019:02:23-03:00:00,26005.1,25995.1,26006.1,26002.1 39 | 37,"{'bid': 26014.3, 'lastTraded': None, 'ask': 26015.9}","{'bid': 26015.3, 'lastTraded': None, 'ask': 26016.9}",655,"{'bid': 25996.3, 'lastTraded': None, 'ask': 25997.9}","{'bid': 26000.8, 'lastTraded': None, 'ask': 26002.4}",2019:02:23-03:05:00,26001.6,25997.1,26016.1,26015.1 40 | 38,"{'bid': 26020.3, 'lastTraded': None, 'ask': 26021.9}","{'bid': 26025.3, 'lastTraded': None, 'ask': 26026.9}",930,"{'bid': 26013.3, 'lastTraded': None, 'ask': 26014.9}","{'bid': 26013.3, 'lastTraded': None, 'ask': 26014.9}",2019:02:23-03:10:00,26014.1,26014.1,26026.1,26021.1 41 | 39,"{'bid': 26001.3, 'lastTraded': None, 'ask': 26002.9}","{'bid': 26021.3, 'lastTraded': None, 'ask': 26022.9}",499,"{'bid': 26000.3, 'lastTraded': None, 'ask': 26001.9}","{'bid': 26020.8, 'lastTraded': None, 'ask': 26022.4}",2019:02:23-03:15:00,26021.6,26001.1,26022.1,26002.1 42 | 40,"{'bid': 25994.3, 'lastTraded': None, 'ask': 25995.9}","{'bid': 26001.3, 'lastTraded': None, 'ask': 26002.9}",644,"{'bid': 25989.3, 'lastTraded': None, 'ask': 25990.9}","{'bid': 26000.8, 'lastTraded': None, 'ask': 26002.4}",2019:02:23-03:20:00,26001.6,25990.1,26002.1,25995.1 43 | 41,"{'bid': 25990.3, 'lastTraded': None, 'ask': 25991.9}","{'bid': 25994.8, 'lastTraded': None, 'ask': 25996.4}",620,"{'bid': 25987.3, 'lastTraded': None, 'ask': 25988.9}","{'bid': 25994.8, 'lastTraded': None, 'ask': 25996.4}",2019:02:23-03:25:00,25995.6,25988.1,25995.6,25991.1 44 | 42,"{'bid': 25983.8, 'lastTraded': None, 'ask': 25985.4}","{'bid': 25997.3, 'lastTraded': None, 'ask': 25998.9}",820,"{'bid': 25981.3, 'lastTraded': None, 'ask': 25982.9}","{'bid': 25990.8, 'lastTraded': None, 'ask': 25992.4}",2019:02:23-03:30:00,25991.6,25982.1,25998.1,25984.6 45 | 43,"{'bid': 25940.8, 'lastTraded': None, 'ask': 25942.4}","{'bid': 25984.3, 'lastTraded': None, 'ask': 25985.9}",4973,"{'bid': 25920.3, 'lastTraded': None, 'ask': 25921.9}","{'bid': 25983.3, 'lastTraded': None, 'ask': 25984.9}",2019:02:23-03:35:00,25984.1,25921.1,25985.1,25941.6 46 | 44,"{'bid': 25926.3, 'lastTraded': None, 'ask': 25927.9}","{'bid': 25942.3, 'lastTraded': None, 'ask': 25943.9}",4645,"{'bid': 25910.3, 'lastTraded': None, 'ask': 25911.9}","{'bid': 25940.3, 'lastTraded': None, 'ask': 25941.9}",2019:02:23-03:40:00,25941.1,25911.1,25943.1,25927.1 47 | 45,"{'bid': 25931.3, 'lastTraded': None, 'ask': 25932.9}","{'bid': 25938.8, 'lastTraded': None, 'ask': 25940.4}",2060,"{'bid': 25912.8, 'lastTraded': None, 'ask': 25914.4}","{'bid': 25925.8, 'lastTraded': None, 'ask': 25927.4}",2019:02:23-03:45:00,25926.6,25913.6,25939.6,25932.1 48 | 46,"{'bid': 25934.3, 'lastTraded': None, 'ask': 25935.9}","{'bid': 25949.3, 'lastTraded': None, 'ask': 25950.9}",2377,"{'bid': 25924.8, 'lastTraded': None, 'ask': 25926.4}","{'bid': 25931.8, 'lastTraded': None, 'ask': 25933.4}",2019:02:23-03:50:00,25932.6,25925.6,25950.1,25935.1 49 | 47,"{'bid': 25931.3, 'lastTraded': None, 'ask': 25932.9}","{'bid': 25940.3, 'lastTraded': None, 'ask': 25941.9}",1407,"{'bid': 25924.3, 'lastTraded': None, 'ask': 25925.9}","{'bid': 25933.3, 'lastTraded': None, 'ask': 25934.9}",2019:02:23-03:55:00,25934.1,25925.1,25941.1,25932.1 50 | 48,"{'bid': 25953.3, 'lastTraded': None, 'ask': 25954.9}","{'bid': 25955.3, 'lastTraded': None, 'ask': 25956.9}",1479,"{'bid': 25921.3, 'lastTraded': None, 'ask': 25922.9}","{'bid': 25930.8, 'lastTraded': None, 'ask': 25932.4}",2019:02:23-04:00:00,25931.6,25922.1,25956.1,25954.1 51 | 49,"{'bid': 25951.3, 'lastTraded': None, 'ask': 25952.9}","{'bid': 25956.3, 'lastTraded': None, 'ask': 25957.9}",972,"{'bid': 25938.8, 'lastTraded': None, 'ask': 25940.4}","{'bid': 25954.3, 'lastTraded': None, 'ask': 25955.9}",2019:02:23-04:05:00,25955.1,25939.6,25957.1,25952.1 52 | 50,"{'bid': 25963.8, 'lastTraded': None, 'ask': 25965.4}","{'bid': 25966.8, 'lastTraded': None, 'ask': 25968.4}",1641,"{'bid': 25951.3, 'lastTraded': None, 'ask': 25952.9}","{'bid': 25952.3, 'lastTraded': None, 'ask': 25953.9}",2019:02:23-04:10:00,25953.1,25952.1,25967.6,25964.6 53 | 51,"{'bid': 25968.3, 'lastTraded': None, 'ask': 25969.9}","{'bid': 25971.3, 'lastTraded': None, 'ask': 25972.9}",942,"{'bid': 25955.3, 'lastTraded': None, 'ask': 25956.9}","{'bid': 25963.3, 'lastTraded': None, 'ask': 25964.9}",2019:02:23-04:15:00,25964.1,25956.1,25972.1,25969.1 54 | 52,"{'bid': 25966.3, 'lastTraded': None, 'ask': 25967.9}","{'bid': 25976.3, 'lastTraded': None, 'ask': 25977.9}",1151,"{'bid': 25963.3, 'lastTraded': None, 'ask': 25964.9}","{'bid': 25967.3, 'lastTraded': None, 'ask': 25968.9}",2019:02:23-04:20:00,25968.1,25964.1,25977.1,25967.1 55 | 53,"{'bid': 25995.3, 'lastTraded': None, 'ask': 25996.9}","{'bid': 26003.3, 'lastTraded': None, 'ask': 26004.9}",1759,"{'bid': 25967.3, 'lastTraded': None, 'ask': 25968.9}","{'bid': 25968.3, 'lastTraded': None, 'ask': 25969.9}",2019:02:23-04:25:00,25969.1,25968.1,26004.1,25996.1 56 | 54,"{'bid': 25987.3, 'lastTraded': None, 'ask': 25988.9}","{'bid': 25997.3, 'lastTraded': None, 'ask': 25998.9}",1861,"{'bid': 25980.3, 'lastTraded': None, 'ask': 25981.9}","{'bid': 25995.8, 'lastTraded': None, 'ask': 25997.4}",2019:02:23-04:30:00,25996.6,25981.1,25998.1,25988.1 57 | 55,"{'bid': 25975.3, 'lastTraded': None, 'ask': 25976.9}","{'bid': 25990.3, 'lastTraded': None, 'ask': 25991.9}",1541,"{'bid': 25969.3, 'lastTraded': None, 'ask': 25970.9}","{'bid': 25987.8, 'lastTraded': None, 'ask': 25989.4}",2019:02:23-04:35:00,25988.6,25970.1,25991.1,25976.1 58 | 56,"{'bid': 25999.8, 'lastTraded': None, 'ask': 26001.4}","{'bid': 26002.3, 'lastTraded': None, 'ask': 26003.9}",1412,"{'bid': 25974.8, 'lastTraded': None, 'ask': 25976.4}","{'bid': 25974.8, 'lastTraded': None, 'ask': 25976.4}",2019:02:23-04:40:00,25975.6,25975.6,26003.1,26000.6 59 | 57,"{'bid': 25989.3, 'lastTraded': None, 'ask': 25990.9}","{'bid': 26011.3, 'lastTraded': None, 'ask': 26012.9}",2233,"{'bid': 25987.8, 'lastTraded': None, 'ask': 25989.4}","{'bid': 26000.3, 'lastTraded': None, 'ask': 26001.9}",2019:02:23-04:45:00,26001.1,25988.6,26012.1,25990.1 60 | 58,"{'bid': 25997.8, 'lastTraded': None, 'ask': 25999.4}","{'bid': 26004.8, 'lastTraded': None, 'ask': 26006.4}",2163,"{'bid': 25978.3, 'lastTraded': None, 'ask': 25979.9}","{'bid': 25990.3, 'lastTraded': None, 'ask': 25991.9}",2019:02:23-04:50:00,25991.1,25979.1,26005.6,25998.6 61 | 59,"{'bid': 26024.3, 'lastTraded': None, 'ask': 26025.9}","{'bid': 26032.3, 'lastTraded': None, 'ask': 26033.9}",5743,"{'bid': 25998.3, 'lastTraded': None, 'ask': 25999.9}","{'bid': 25998.3, 'lastTraded': None, 'ask': 25999.9}",2019:02:23-04:55:00,25999.1,25999.1,26033.1,26025.1 62 | 60,"{'bid': 26010.1, 'lastTraded': None, 'ask': 26013.9}","{'bid': 26023.8, 'lastTraded': None, 'ask': 26025.4}",1932,"{'bid': 26002.6, 'lastTraded': None, 'ask': 26006.4}","{'bid': 26023.8, 'lastTraded': None, 'ask': 26025.4}",2019:02:23-05:00:00,26024.6,26004.5,26024.6,26012.0 63 | 61,"{'bid': 25998.1, 'lastTraded': None, 'ask': 26001.9}","{'bid': 26011.1, 'lastTraded': None, 'ask': 26014.9}",606,"{'bid': 25996.6, 'lastTraded': None, 'ask': 26000.4}","{'bid': 26009.6, 'lastTraded': None, 'ask': 26013.4}",2019:02:23-05:05:00,26011.5,25998.5,26013.0,26000.0 64 | 62,"{'bid': 26002.7, 'lastTraded': None, 'ask': 26012.5}","{'bid': 26006.6, 'lastTraded': None, 'ask': 26013.3}",999,"{'bid': 25986.1, 'lastTraded': None, 'ask': 25989.9}","{'bid': 25998.6, 'lastTraded': None, 'ask': 26002.4}",2019:02:23-05:10:00,26000.5,25988.0,26009.95,26007.6 65 | 63,"{'bid': 26000.7, 'lastTraded': None, 'ask': 26010.5}","{'bid': 26003.7, 'lastTraded': None, 'ask': 26013.5}",5,"{'bid': 25999.5, 'lastTraded': None, 'ask': 26009.3}","{'bid': 26003.0, 'lastTraded': None, 'ask': 26012.8}",2019:02:23-05:15:00,26007.9,26004.4,26008.6,26005.6 66 | 64,"{'bid': 26003.2, 'lastTraded': None, 'ask': 26013.0}","{'bid': 26003.7, 'lastTraded': None, 'ask': 26013.5}",0,"{'bid': 26000.6, 'lastTraded': None, 'ask': 26010.4}","{'bid': 26002.0, 'lastTraded': None, 'ask': 26011.8}",2019:02:23-05:20:00,26006.9,26005.5,26008.6,26008.1 67 | 65,"{'bid': 26001.8, 'lastTraded': None, 'ask': 26011.6}","{'bid': 26003.2, 'lastTraded': None, 'ask': 26013.0}",0,"{'bid': 26001.8, 'lastTraded': None, 'ask': 26011.6}","{'bid': 26002.9, 'lastTraded': None, 'ask': 26012.7}",2019:02:23-05:25:00,26007.8,26006.7,26008.1,26006.7 68 | 66,"{'bid': 26015.6, 'lastTraded': None, 'ask': 26019.4}","{'bid': 26017.6, 'lastTraded': None, 'ask': 26021.4}",430,"{'bid': 26004.6, 'lastTraded': None, 'ask': 26008.4}","{'bid': 26005.6, 'lastTraded': None, 'ask': 26009.4}",2019:02:23-05:30:00,26007.5,26006.5,26019.5,26017.5 69 | 67,"{'bid': 26017.6, 'lastTraded': None, 'ask': 26021.4}","{'bid': 26017.6, 'lastTraded': None, 'ask': 26021.4}",117,"{'bid': 26013.6, 'lastTraded': None, 'ask': 26017.4}","{'bid': 26014.6, 'lastTraded': None, 'ask': 26018.4}",2019:02:23-05:35:00,26016.5,26015.5,26019.5,26019.5 70 | 68,"{'bid': 26019.6, 'lastTraded': None, 'ask': 26023.4}","{'bid': 26019.6, 'lastTraded': None, 'ask': 26023.4}",77,"{'bid': 26014.6, 'lastTraded': None, 'ask': 26018.4}","{'bid': 26016.6, 'lastTraded': None, 'ask': 26020.4}",2019:02:23-05:40:00,26018.5,26016.5,26021.5,26021.5 71 | 69,"{'bid': 26022.6, 'lastTraded': None, 'ask': 26026.4}","{'bid': 26022.6, 'lastTraded': None, 'ask': 26026.4}",235,"{'bid': 26017.6, 'lastTraded': None, 'ask': 26021.4}","{'bid': 26017.6, 'lastTraded': None, 'ask': 26021.4}",2019:02:23-05:45:00,26019.5,26019.5,26024.5,26024.5 72 | 70,"{'bid': 26027.6, 'lastTraded': None, 'ask': 26031.4}","{'bid': 26027.6, 'lastTraded': None, 'ask': 26031.4}",135,"{'bid': 26020.6, 'lastTraded': None, 'ask': 26024.4}","{'bid': 26020.6, 'lastTraded': None, 'ask': 26024.4}",2019:02:23-05:50:00,26022.5,26022.5,26029.5,26029.5 73 | 71,"{'bid': 26038.1, 'lastTraded': None, 'ask': 26047.9}","{'bid': 26042.6, 'lastTraded': None, 'ask': 26047.9}",363,"{'bid': 26027.6, 'lastTraded': None, 'ask': 26031.4}","{'bid': 26028.6, 'lastTraded': None, 'ask': 26032.4}",2019:02:23-05:55:00,26030.5,26029.5,26045.25,26043.0 74 | -------------------------------------------------------------------------------- /data/2019-03-09.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'bid': 25349.7, 'ask': 25351.3, 'lastTraded': None}","{'bid': 25357.7, 'ask': 25359.3, 'lastTraded': None}",1553,"{'bid': 25333.2, 'ask': 25334.8, 'lastTraded': None}","{'bid': 25344.2, 'ask': 25345.8, 'lastTraded': None}",2019:03:09-00:00:00,25345.0,25334.0,25358.5,25350.5 3 | 1,"{'bid': 25334.2, 'ask': 25335.8, 'lastTraded': None}","{'bid': 25362.7, 'ask': 25364.3, 'lastTraded': None}",1555,"{'bid': 25322.7, 'ask': 25324.3, 'lastTraded': None}","{'bid': 25349.2, 'ask': 25350.8, 'lastTraded': None}",2019:03:09-00:05:00,25350.0,25323.5,25363.5,25335.0 4 | 2,"{'bid': 25357.7, 'ask': 25359.3, 'lastTraded': None}","{'bid': 25369.2, 'ask': 25370.8, 'lastTraded': None}",2287,"{'bid': 25320.7, 'ask': 25322.3, 'lastTraded': None}","{'bid': 25335.7, 'ask': 25337.3, 'lastTraded': None}",2019:03:09-00:10:00,25336.5,25321.5,25370.0,25358.5 5 | 3,"{'bid': 25349.7, 'ask': 25351.3, 'lastTraded': None}","{'bid': 25373.7, 'ask': 25375.3, 'lastTraded': None}",2793,"{'bid': 25347.2, 'ask': 25348.8, 'lastTraded': None}","{'bid': 25357.2, 'ask': 25358.8, 'lastTraded': None}",2019:03:09-00:15:00,25358.0,25348.0,25374.5,25350.5 6 | 4,"{'bid': 25360.2, 'ask': 25361.8, 'lastTraded': None}","{'bid': 25362.7, 'ask': 25364.3, 'lastTraded': None}",972,"{'bid': 25338.2, 'ask': 25339.8, 'lastTraded': None}","{'bid': 25351.7, 'ask': 25353.3, 'lastTraded': None}",2019:03:09-00:20:00,25352.5,25339.0,25363.5,25361.0 7 | 5,"{'bid': 25378.7, 'ask': 25380.3, 'lastTraded': None}","{'bid': 25394.2, 'ask': 25395.8, 'lastTraded': None}",1492,"{'bid': 25360.7, 'ask': 25362.3, 'lastTraded': None}","{'bid': 25360.7, 'ask': 25362.3, 'lastTraded': None}",2019:03:09-00:25:00,25361.5,25361.5,25395.0,25379.5 8 | 6,"{'bid': 25354.7, 'ask': 25356.3, 'lastTraded': None}","{'bid': 25393.7, 'ask': 25395.3, 'lastTraded': None}",1363,"{'bid': 25354.2, 'ask': 25355.8, 'lastTraded': None}","{'bid': 25378.2, 'ask': 25379.8, 'lastTraded': None}",2019:03:09-00:30:00,25379.0,25355.0,25394.5,25355.5 9 | 7,"{'bid': 25350.7, 'ask': 25352.3, 'lastTraded': None}","{'bid': 25361.2, 'ask': 25362.8, 'lastTraded': None}",1526,"{'bid': 25346.2, 'ask': 25347.8, 'lastTraded': None}","{'bid': 25354.2, 'ask': 25355.8, 'lastTraded': None}",2019:03:09-00:35:00,25355.0,25347.0,25362.0,25351.5 10 | 8,"{'bid': 25352.7, 'ask': 25354.3, 'lastTraded': None}","{'bid': 25360.7, 'ask': 25362.3, 'lastTraded': None}",601,"{'bid': 25346.2, 'ask': 25347.8, 'lastTraded': None}","{'bid': 25350.2, 'ask': 25351.8, 'lastTraded': None}",2019:03:09-00:40:00,25351.0,25347.0,25361.5,25353.5 11 | 9,"{'bid': 25362.7, 'ask': 25364.3, 'lastTraded': None}","{'bid': 25380.7, 'ask': 25382.3, 'lastTraded': None}",609,"{'bid': 25350.7, 'ask': 25352.3, 'lastTraded': None}","{'bid': 25352.2, 'ask': 25353.8, 'lastTraded': None}",2019:03:09-00:45:00,25353.0,25351.5,25381.5,25363.5 12 | 10,"{'bid': 25363.7, 'ask': 25365.3, 'lastTraded': None}","{'bid': 25374.7, 'ask': 25376.3, 'lastTraded': None}",819,"{'bid': 25341.7, 'ask': 25343.3, 'lastTraded': None}","{'bid': 25362.2, 'ask': 25363.8, 'lastTraded': None}",2019:03:09-00:50:00,25363.0,25342.5,25375.5,25364.5 13 | 11,"{'bid': 25342.2, 'ask': 25343.8, 'lastTraded': None}","{'bid': 25365.7, 'ask': 25367.3, 'lastTraded': None}",1137,"{'bid': 25342.2, 'ask': 25343.8, 'lastTraded': None}","{'bid': 25364.2, 'ask': 25365.8, 'lastTraded': None}",2019:03:09-00:55:00,25365.0,25343.0,25366.5,25343.0 14 | 12,"{'bid': 25335.2, 'ask': 25336.8, 'lastTraded': None}","{'bid': 25348.7, 'ask': 25350.3, 'lastTraded': None}",862,"{'bid': 25332.2, 'ask': 25333.8, 'lastTraded': None}","{'bid': 25342.7, 'ask': 25344.3, 'lastTraded': None}",2019:03:09-01:00:00,25343.5,25333.0,25349.5,25336.0 15 | 13,"{'bid': 25325.7, 'ask': 25327.3, 'lastTraded': None}","{'bid': 25335.2, 'ask': 25336.8, 'lastTraded': None}",825,"{'bid': 25324.2, 'ask': 25325.8, 'lastTraded': None}","{'bid': 25334.7, 'ask': 25336.3, 'lastTraded': None}",2019:03:09-01:05:00,25335.5,25325.0,25336.0,25326.5 16 | 14,"{'bid': 25344.7, 'ask': 25346.3, 'lastTraded': None}","{'bid': 25346.2, 'ask': 25347.8, 'lastTraded': None}",641,"{'bid': 25322.2, 'ask': 25323.8, 'lastTraded': None}","{'bid': 25326.2, 'ask': 25327.8, 'lastTraded': None}",2019:03:09-01:10:00,25327.0,25323.0,25347.0,25345.5 17 | 15,"{'bid': 25328.7, 'ask': 25330.3, 'lastTraded': None}","{'bid': 25348.7, 'ask': 25350.3, 'lastTraded': None}",402,"{'bid': 25328.2, 'ask': 25329.8, 'lastTraded': None}","{'bid': 25344.2, 'ask': 25345.8, 'lastTraded': None}",2019:03:09-01:15:00,25345.0,25329.0,25349.5,25329.5 18 | 16,"{'bid': 25311.2, 'ask': 25312.8, 'lastTraded': None}","{'bid': 25343.7, 'ask': 25345.3, 'lastTraded': None}",999,"{'bid': 25306.2, 'ask': 25307.8, 'lastTraded': None}","{'bid': 25329.2, 'ask': 25330.8, 'lastTraded': None}",2019:03:09-01:20:00,25330.0,25307.0,25344.5,25312.0 19 | 17,"{'bid': 25338.7, 'ask': 25340.3, 'lastTraded': None}","{'bid': 25344.7, 'ask': 25346.3, 'lastTraded': None}",1004,"{'bid': 25309.7, 'ask': 25311.3, 'lastTraded': None}","{'bid': 25310.7, 'ask': 25312.3, 'lastTraded': None}",2019:03:09-01:25:00,25311.5,25310.5,25345.5,25339.5 20 | 18,"{'bid': 25330.2, 'ask': 25331.8, 'lastTraded': None}","{'bid': 25347.2, 'ask': 25348.8, 'lastTraded': None}",525,"{'bid': 25328.2, 'ask': 25329.8, 'lastTraded': None}","{'bid': 25338.2, 'ask': 25339.8, 'lastTraded': None}",2019:03:09-01:30:00,25339.0,25329.0,25348.0,25331.0 21 | 19,"{'bid': 25315.2, 'ask': 25316.8, 'lastTraded': None}","{'bid': 25337.2, 'ask': 25338.8, 'lastTraded': None}",901,"{'bid': 25315.2, 'ask': 25316.8, 'lastTraded': None}","{'bid': 25330.7, 'ask': 25332.3, 'lastTraded': None}",2019:03:09-01:35:00,25331.5,25316.0,25338.0,25316.0 22 | 20,"{'bid': 25314.2, 'ask': 25315.8, 'lastTraded': None}","{'bid': 25327.7, 'ask': 25329.3, 'lastTraded': None}",370,"{'bid': 25309.7, 'ask': 25311.3, 'lastTraded': None}","{'bid': 25315.7, 'ask': 25317.3, 'lastTraded': None}",2019:03:09-01:40:00,25316.5,25310.5,25328.5,25315.0 23 | 21,"{'bid': 25299.7, 'ask': 25301.3, 'lastTraded': None}","{'bid': 25321.2, 'ask': 25322.8, 'lastTraded': None}",612,"{'bid': 25296.7, 'ask': 25298.3, 'lastTraded': None}","{'bid': 25313.7, 'ask': 25315.3, 'lastTraded': None}",2019:03:09-01:45:00,25314.5,25297.5,25322.0,25300.5 24 | 22,"{'bid': 25291.2, 'ask': 25292.8, 'lastTraded': None}","{'bid': 25303.2, 'ask': 25304.8, 'lastTraded': None}",857,"{'bid': 25284.2, 'ask': 25285.8, 'lastTraded': None}","{'bid': 25300.2, 'ask': 25301.8, 'lastTraded': None}",2019:03:09-01:50:00,25301.0,25285.0,25304.0,25292.0 25 | 23,"{'bid': 25283.7, 'ask': 25285.3, 'lastTraded': None}","{'bid': 25293.2, 'ask': 25294.8, 'lastTraded': None}",1913,"{'bid': 25279.7, 'ask': 25281.3, 'lastTraded': None}","{'bid': 25290.7, 'ask': 25292.3, 'lastTraded': None}",2019:03:09-01:55:00,25291.5,25280.5,25294.0,25284.5 26 | 24,"{'bid': 25293.2, 'ask': 25294.8, 'lastTraded': None}","{'bid': 25293.2, 'ask': 25294.8, 'lastTraded': None}",609,"{'bid': 25280.7, 'ask': 25282.3, 'lastTraded': None}","{'bid': 25283.2, 'ask': 25284.8, 'lastTraded': None}",2019:03:09-02:00:00,25284.0,25281.5,25294.0,25294.0 27 | 25,"{'bid': 25287.7, 'ask': 25289.3, 'lastTraded': None}","{'bid': 25301.7, 'ask': 25303.3, 'lastTraded': None}",600,"{'bid': 25283.2, 'ask': 25284.8, 'lastTraded': None}","{'bid': 25293.7, 'ask': 25295.3, 'lastTraded': None}",2019:03:09-02:05:00,25294.5,25284.0,25302.5,25288.5 28 | 26,"{'bid': 25308.2, 'ask': 25309.8, 'lastTraded': None}","{'bid': 25312.2, 'ask': 25313.8, 'lastTraded': None}",1671,"{'bid': 25287.7, 'ask': 25289.3, 'lastTraded': None}","{'bid': 25288.2, 'ask': 25289.8, 'lastTraded': None}",2019:03:09-02:10:00,25289.0,25288.5,25313.0,25309.0 29 | 27,"{'bid': 25301.2, 'ask': 25302.8, 'lastTraded': None}","{'bid': 25307.7, 'ask': 25309.3, 'lastTraded': None}",509,"{'bid': 25289.2, 'ask': 25290.8, 'lastTraded': None}","{'bid': 25307.7, 'ask': 25309.3, 'lastTraded': None}",2019:03:09-02:15:00,25308.5,25290.0,25308.5,25302.0 30 | 28,"{'bid': 25296.7, 'ask': 25298.3, 'lastTraded': None}","{'bid': 25301.7, 'ask': 25303.3, 'lastTraded': None}",617,"{'bid': 25286.2, 'ask': 25287.8, 'lastTraded': None}","{'bid': 25299.7, 'ask': 25301.3, 'lastTraded': None}",2019:03:09-02:20:00,25300.5,25287.0,25302.5,25297.5 31 | 29,"{'bid': 25306.2, 'ask': 25307.8, 'lastTraded': None}","{'bid': 25307.7, 'ask': 25309.3, 'lastTraded': None}",805,"{'bid': 25291.7, 'ask': 25293.3, 'lastTraded': None}","{'bid': 25297.2, 'ask': 25298.8, 'lastTraded': None}",2019:03:09-02:25:00,25298.0,25292.5,25308.5,25307.0 32 | 30,"{'bid': 25300.7, 'ask': 25302.3, 'lastTraded': None}","{'bid': 25311.7, 'ask': 25313.3, 'lastTraded': None}",474,"{'bid': 25293.7, 'ask': 25295.3, 'lastTraded': None}","{'bid': 25306.7, 'ask': 25308.3, 'lastTraded': None}",2019:03:09-02:30:00,25307.5,25294.5,25312.5,25301.5 33 | 31,"{'bid': 25322.7, 'ask': 25324.3, 'lastTraded': None}","{'bid': 25324.2, 'ask': 25325.8, 'lastTraded': None}",1038,"{'bid': 25296.7, 'ask': 25298.3, 'lastTraded': None}","{'bid': 25300.2, 'ask': 25301.8, 'lastTraded': None}",2019:03:09-02:35:00,25301.0,25297.5,25325.0,25323.5 34 | 32,"{'bid': 25320.3, 'ask': 25321.9, 'lastTraded': None}","{'bid': 25334.8, 'ask': 25336.4, 'lastTraded': None}",788,"{'bid': 25319.8, 'ask': 25321.4, 'lastTraded': None}","{'bid': 25321.3, 'ask': 25322.9, 'lastTraded': None}",2019:03:09-02:40:00,25322.1,25320.6,25335.6,25321.1 35 | 33,"{'bid': 25335.3, 'ask': 25336.9, 'lastTraded': None}","{'bid': 25336.3, 'ask': 25337.9, 'lastTraded': None}",1137,"{'bid': 25318.8, 'ask': 25320.4, 'lastTraded': None}","{'bid': 25319.3, 'ask': 25320.9, 'lastTraded': None}",2019:03:09-02:45:00,25320.1,25319.6,25337.1,25336.1 36 | 34,"{'bid': 25329.3, 'ask': 25330.9, 'lastTraded': None}","{'bid': 25338.8, 'ask': 25340.4, 'lastTraded': None}",416,"{'bid': 25325.8, 'ask': 25327.4, 'lastTraded': None}","{'bid': 25335.8, 'ask': 25337.4, 'lastTraded': None}",2019:03:09-02:50:00,25336.6,25326.6,25339.6,25330.1 37 | 35,"{'bid': 25329.8, 'ask': 25331.4, 'lastTraded': None}","{'bid': 25333.3, 'ask': 25334.9, 'lastTraded': None}",1501,"{'bid': 25322.8, 'ask': 25324.4, 'lastTraded': None}","{'bid': 25329.8, 'ask': 25331.4, 'lastTraded': None}",2019:03:09-02:55:00,25330.6,25323.6,25334.1,25330.6 38 | 36,"{'bid': 25307.3, 'ask': 25308.9, 'lastTraded': None}","{'bid': 25333.8, 'ask': 25335.4, 'lastTraded': None}",553,"{'bid': 25303.8, 'ask': 25305.4, 'lastTraded': None}","{'bid': 25330.8, 'ask': 25332.4, 'lastTraded': None}",2019:03:09-03:00:00,25331.6,25304.6,25334.6,25308.1 39 | 37,"{'bid': 25318.3, 'ask': 25319.9, 'lastTraded': None}","{'bid': 25318.3, 'ask': 25319.9, 'lastTraded': None}",324,"{'bid': 25303.8, 'ask': 25305.4, 'lastTraded': None}","{'bid': 25306.8, 'ask': 25308.4, 'lastTraded': None}",2019:03:09-03:05:00,25307.6,25304.6,25319.1,25319.1 40 | 38,"{'bid': 25318.3, 'ask': 25319.9, 'lastTraded': None}","{'bid': 25332.3, 'ask': 25333.9, 'lastTraded': None}",437,"{'bid': 25316.3, 'ask': 25317.9, 'lastTraded': None}","{'bid': 25318.8, 'ask': 25320.4, 'lastTraded': None}",2019:03:09-03:10:00,25319.6,25317.1,25333.1,25319.1 41 | 39,"{'bid': 25332.3, 'ask': 25333.9, 'lastTraded': None}","{'bid': 25340.8, 'ask': 25342.4, 'lastTraded': None}",950,"{'bid': 25318.8, 'ask': 25320.4, 'lastTraded': None}","{'bid': 25318.8, 'ask': 25320.4, 'lastTraded': None}",2019:03:09-03:15:00,25319.6,25319.6,25341.6,25333.1 42 | 40,"{'bid': 25343.3, 'ask': 25344.9, 'lastTraded': None}","{'bid': 25344.8, 'ask': 25346.4, 'lastTraded': None}",453,"{'bid': 25327.8, 'ask': 25329.4, 'lastTraded': None}","{'bid': 25331.8, 'ask': 25333.4, 'lastTraded': None}",2019:03:09-03:20:00,25332.6,25328.6,25345.6,25344.1 43 | 41,"{'bid': 25342.8, 'ask': 25344.4, 'lastTraded': None}","{'bid': 25351.8, 'ask': 25353.4, 'lastTraded': None}",472,"{'bid': 25338.3, 'ask': 25339.9, 'lastTraded': None}","{'bid': 25343.8, 'ask': 25345.4, 'lastTraded': None}",2019:03:09-03:25:00,25344.6,25339.1,25352.6,25343.6 44 | 42,"{'bid': 25346.3, 'ask': 25347.9, 'lastTraded': None}","{'bid': 25358.3, 'ask': 25359.9, 'lastTraded': None}",652,"{'bid': 25342.3, 'ask': 25343.9, 'lastTraded': None}","{'bid': 25343.3, 'ask': 25344.9, 'lastTraded': None}",2019:03:09-03:30:00,25344.1,25343.1,25359.1,25347.1 45 | 43,"{'bid': 25346.3, 'ask': 25347.9, 'lastTraded': None}","{'bid': 25355.3, 'ask': 25356.9, 'lastTraded': None}",421,"{'bid': 25343.3, 'ask': 25344.9, 'lastTraded': None}","{'bid': 25346.8, 'ask': 25348.4, 'lastTraded': None}",2019:03:09-03:35:00,25347.6,25344.1,25356.1,25347.1 46 | 44,"{'bid': 25366.3, 'ask': 25367.9, 'lastTraded': None}","{'bid': 25370.8, 'ask': 25372.4, 'lastTraded': None}",715,"{'bid': 25344.8, 'ask': 25346.4, 'lastTraded': None}","{'bid': 25346.8, 'ask': 25348.4, 'lastTraded': None}",2019:03:09-03:40:00,25347.6,25345.6,25371.6,25367.1 47 | 45,"{'bid': 25372.3, 'ask': 25373.9, 'lastTraded': None}","{'bid': 25377.8, 'ask': 25379.4, 'lastTraded': None}",1587,"{'bid': 25359.8, 'ask': 25361.4, 'lastTraded': None}","{'bid': 25366.8, 'ask': 25368.4, 'lastTraded': None}",2019:03:09-03:45:00,25367.6,25360.6,25378.6,25373.1 48 | 46,"{'bid': 25401.8, 'ask': 25403.4, 'lastTraded': None}","{'bid': 25411.8, 'ask': 25413.4, 'lastTraded': None}",1347,"{'bid': 25372.8, 'ask': 25374.4, 'lastTraded': None}","{'bid': 25372.8, 'ask': 25374.4, 'lastTraded': None}",2019:03:09-03:50:00,25373.6,25373.6,25412.6,25402.6 49 | 47,"{'bid': 25373.3, 'ask': 25374.9, 'lastTraded': None}","{'bid': 25405.8, 'ask': 25407.4, 'lastTraded': None}",1046,"{'bid': 25370.3, 'ask': 25371.9, 'lastTraded': None}","{'bid': 25402.3, 'ask': 25403.9, 'lastTraded': None}",2019:03:09-03:55:00,25403.1,25371.1,25406.6,25374.1 50 | 48,"{'bid': 25377.3, 'ask': 25378.9, 'lastTraded': None}","{'bid': 25387.8, 'ask': 25389.4, 'lastTraded': None}",772,"{'bid': 25365.8, 'ask': 25367.4, 'lastTraded': None}","{'bid': 25372.8, 'ask': 25374.4, 'lastTraded': None}",2019:03:09-04:00:00,25373.6,25366.6,25388.6,25378.1 51 | 49,"{'bid': 25387.8, 'ask': 25389.4, 'lastTraded': None}","{'bid': 25403.8, 'ask': 25405.4, 'lastTraded': None}",1149,"{'bid': 25369.8, 'ask': 25371.4, 'lastTraded': None}","{'bid': 25377.8, 'ask': 25379.4, 'lastTraded': None}",2019:03:09-04:05:00,25378.6,25370.6,25404.6,25388.6 52 | 50,"{'bid': 25372.8, 'ask': 25374.4, 'lastTraded': None}","{'bid': 25388.8, 'ask': 25390.4, 'lastTraded': None}",1213,"{'bid': 25356.3, 'ask': 25357.9, 'lastTraded': None}","{'bid': 25388.3, 'ask': 25389.9, 'lastTraded': None}",2019:03:09-04:10:00,25389.1,25357.1,25389.6,25373.6 53 | 51,"{'bid': 25355.3, 'ask': 25356.9, 'lastTraded': None}","{'bid': 25375.8, 'ask': 25377.4, 'lastTraded': None}",1465,"{'bid': 25347.3, 'ask': 25348.9, 'lastTraded': None}","{'bid': 25373.3, 'ask': 25374.9, 'lastTraded': None}",2019:03:09-04:15:00,25374.1,25348.1,25376.6,25356.1 54 | 52,"{'bid': 25347.3, 'ask': 25348.9, 'lastTraded': None}","{'bid': 25362.8, 'ask': 25364.4, 'lastTraded': None}",923,"{'bid': 25346.8, 'ask': 25348.4, 'lastTraded': None}","{'bid': 25355.8, 'ask': 25357.4, 'lastTraded': None}",2019:03:09-04:20:00,25356.6,25347.6,25363.6,25348.1 55 | 53,"{'bid': 25348.3, 'ask': 25349.9, 'lastTraded': None}","{'bid': 25362.8, 'ask': 25364.4, 'lastTraded': None}",873,"{'bid': 25343.3, 'ask': 25344.9, 'lastTraded': None}","{'bid': 25347.8, 'ask': 25349.4, 'lastTraded': None}",2019:03:09-04:25:00,25348.6,25344.1,25363.6,25349.1 56 | 54,"{'bid': 25386.3, 'ask': 25387.9, 'lastTraded': None}","{'bid': 25394.3, 'ask': 25395.9, 'lastTraded': None}",4098,"{'bid': 25340.8, 'ask': 25342.4, 'lastTraded': None}","{'bid': 25347.8, 'ask': 25349.4, 'lastTraded': None}",2019:03:09-04:30:00,25348.6,25341.6,25395.1,25387.1 57 | 55,"{'bid': 25365.3, 'ask': 25366.9, 'lastTraded': None}","{'bid': 25386.8, 'ask': 25388.4, 'lastTraded': None}",1393,"{'bid': 25356.3, 'ask': 25357.9, 'lastTraded': None}","{'bid': 25386.8, 'ask': 25388.4, 'lastTraded': None}",2019:03:09-04:35:00,25387.6,25357.1,25387.6,25366.1 58 | 56,"{'bid': 25404.3, 'ask': 25405.9, 'lastTraded': None}","{'bid': 25405.3, 'ask': 25406.9, 'lastTraded': None}",2026,"{'bid': 25364.3, 'ask': 25365.9, 'lastTraded': None}","{'bid': 25364.8, 'ask': 25366.4, 'lastTraded': None}",2019:03:09-04:40:00,25365.6,25365.1,25406.1,25405.1 59 | 57,"{'bid': 25410.3, 'ask': 25411.9, 'lastTraded': None}","{'bid': 25427.8, 'ask': 25429.4, 'lastTraded': None}",1965,"{'bid': 25400.3, 'ask': 25401.9, 'lastTraded': None}","{'bid': 25404.8, 'ask': 25406.4, 'lastTraded': None}",2019:03:09-04:45:00,25405.6,25401.1,25428.6,25411.1 60 | 58,"{'bid': 25439.8, 'ask': 25441.4, 'lastTraded': None}","{'bid': 25447.8, 'ask': 25449.4, 'lastTraded': None}",1871,"{'bid': 25411.3, 'ask': 25412.9, 'lastTraded': None}","{'bid': 25411.3, 'ask': 25412.9, 'lastTraded': None}",2019:03:09-04:50:00,25412.1,25412.1,25448.6,25440.6 61 | 59,"{'bid': 25449.8, 'ask': 25451.4, 'lastTraded': None}","{'bid': 25467.3, 'ask': 25468.9, 'lastTraded': None}",3111,"{'bid': 25431.3, 'ask': 25432.9, 'lastTraded': None}","{'bid': 25431.3, 'ask': 25432.9, 'lastTraded': None}",2019:03:09-04:55:00,25432.1,25432.1,25468.1,25450.6 62 | 60,"{'bid': 25481.7, 'ask': 25485.5, 'lastTraded': None}","{'bid': 25481.7, 'ask': 25485.5, 'lastTraded': None}",2647,"{'bid': 25446.7, 'ask': 25450.5, 'lastTraded': None}","{'bid': 25448.7, 'ask': 25452.5, 'lastTraded': None}",2019:03:09-05:00:00,25450.6,25448.6,25483.6,25483.6 63 | 61,"{'bid': 25498.7, 'ask': 25502.5, 'lastTraded': None}","{'bid': 25499.2, 'ask': 25503.0, 'lastTraded': None}",1524,"{'bid': 25474.7, 'ask': 25478.5, 'lastTraded': None}","{'bid': 25481.2, 'ask': 25485.0, 'lastTraded': None}",2019:03:09-05:05:00,25483.1,25476.6,25501.1,25500.6 64 | 62,"{'bid': 25494.6, 'ask': 25504.4, 'lastTraded': None}","{'bid': 25505.2, 'ask': 25509.0, 'lastTraded': None}",1014,"{'bid': 25483.7, 'ask': 25487.5, 'lastTraded': None}","{'bid': 25497.2, 'ask': 25501.0, 'lastTraded': None}",2019:03:09-05:10:00,25499.1,25485.6,25507.1,25499.5 65 | 63,"{'bid': 25475.4, 'ask': 25485.2, 'lastTraded': None}","{'bid': 25494.3, 'ask': 25504.1, 'lastTraded': None}",0,"{'bid': 25473.0, 'ask': 25482.8, 'lastTraded': None}","{'bid': 25494.3, 'ask': 25504.1, 'lastTraded': None}",2019:03:09-05:15:00,25499.2,25477.9,25499.2,25480.3 66 | 64,"{'bid': 25476.8, 'ask': 25486.6, 'lastTraded': None}","{'bid': 25477.1, 'ask': 25486.9, 'lastTraded': None}",0,"{'bid': 25476.1, 'ask': 25485.9, 'lastTraded': None}","{'bid': 25476.4, 'ask': 25486.2, 'lastTraded': None}",2019:03:09-05:20:00,25481.3,25481.0,25482.0,25481.7 67 | 65,"{'bid': 25478.8, 'ask': 25488.6, 'lastTraded': None}","{'bid': 25478.8, 'ask': 25488.6, 'lastTraded': None}",0,"{'bid': 25476.4, 'ask': 25486.2, 'lastTraded': None}","{'bid': 25476.4, 'ask': 25486.2, 'lastTraded': None}",2019:03:09-05:25:00,25481.3,25481.3,25483.7,25483.7 68 | 66,"{'bid': 25503.2, 'ask': 25507.0, 'lastTraded': None}","{'bid': 25509.2, 'ask': 25513.0, 'lastTraded': None}",153,"{'bid': 25499.2, 'ask': 25503.0, 'lastTraded': None}","{'bid': 25500.2, 'ask': 25504.0, 'lastTraded': None}",2019:03:09-05:30:00,25502.1,25501.1,25511.1,25505.1 69 | 67,"{'bid': 25507.2, 'ask': 25511.0, 'lastTraded': None}","{'bid': 25507.2, 'ask': 25511.0, 'lastTraded': None}",40,"{'bid': 25502.2, 'ask': 25506.0, 'lastTraded': None}","{'bid': 25502.2, 'ask': 25506.0, 'lastTraded': None}",2019:03:09-05:35:00,25504.1,25504.1,25509.1,25509.1 70 | 68,"{'bid': 25511.2, 'ask': 25515.0, 'lastTraded': None}","{'bid': 25516.2, 'ask': 25520.0, 'lastTraded': None}",156,"{'bid': 25506.2, 'ask': 25510.0, 'lastTraded': None}","{'bid': 25508.2, 'ask': 25512.0, 'lastTraded': None}",2019:03:09-05:40:00,25510.1,25508.1,25518.1,25513.1 71 | 69,"{'bid': 25513.2, 'ask': 25517.0, 'lastTraded': None}","{'bid': 25515.2, 'ask': 25519.0, 'lastTraded': None}",147,"{'bid': 25511.2, 'ask': 25515.0, 'lastTraded': None}","{'bid': 25512.2, 'ask': 25516.0, 'lastTraded': None}",2019:03:09-05:45:00,25514.1,25513.1,25517.1,25515.1 72 | 70,"{'bid': 25515.2, 'ask': 25519.0, 'lastTraded': None}","{'bid': 25520.2, 'ask': 25524.0, 'lastTraded': None}",165,"{'bid': 25513.2, 'ask': 25517.0, 'lastTraded': None}","{'bid': 25514.2, 'ask': 25518.0, 'lastTraded': None}",2019:03:09-05:50:00,25516.1,25515.1,25522.1,25517.1 73 | 71,"{'bid': 25515.9, 'ask': 25525.7, 'lastTraded': None}","{'bid': 25523.2, 'ask': 25527.0, 'lastTraded': None}",143,"{'bid': 25514.2, 'ask': 25518.0, 'lastTraded': None}","{'bid': 25514.2, 'ask': 25518.0, 'lastTraded': None}",2019:03:09-05:55:00,25516.1,25516.1,25525.1,25520.8 74 | -------------------------------------------------------------------------------- /data/2019-03-16.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'ask': 25882.2, 'bid': 25880.6, 'lastTraded': None}","{'ask': 25883.2, 'bid': 25881.6, 'lastTraded': None}",2144,"{'ask': 25858.2, 'bid': 25856.6, 'lastTraded': None}","{'ask': 25868.7, 'bid': 25867.1, 'lastTraded': None}",2019:03:16-00:00:00,25867.9,25857.4,25882.4,25881.4 3 | 1,"{'ask': 25908.2, 'bid': 25906.6, 'lastTraded': None}","{'ask': 25910.2, 'bid': 25908.6, 'lastTraded': None}",2270,"{'ask': 25881.2, 'bid': 25879.6, 'lastTraded': None}","{'ask': 25883.2, 'bid': 25881.6, 'lastTraded': None}",2019:03:16-00:05:00,25882.4,25880.4,25909.4,25907.4 4 | 2,"{'ask': 25912.2, 'bid': 25910.6, 'lastTraded': None}","{'ask': 25921.7, 'bid': 25920.1, 'lastTraded': None}",2410,"{'ask': 25906.2, 'bid': 25904.6, 'lastTraded': None}","{'ask': 25909.2, 'bid': 25907.6, 'lastTraded': None}",2019:03:16-00:10:00,25908.4,25905.4,25920.9,25911.4 5 | 3,"{'ask': 25900.2, 'bid': 25898.6, 'lastTraded': None}","{'ask': 25921.2, 'bid': 25919.6, 'lastTraded': None}",2127,"{'ask': 25899.2, 'bid': 25897.6, 'lastTraded': None}","{'ask': 25911.7, 'bid': 25910.1, 'lastTraded': None}",2019:03:16-00:15:00,25910.9,25898.4,25920.4,25899.4 6 | 4,"{'ask': 25910.2, 'bid': 25908.6, 'lastTraded': None}","{'ask': 25912.2, 'bid': 25910.6, 'lastTraded': None}",2115,"{'ask': 25890.2, 'bid': 25888.6, 'lastTraded': None}","{'ask': 25901.2, 'bid': 25899.6, 'lastTraded': None}",2019:03:16-00:20:00,25900.4,25889.4,25911.4,25909.4 7 | 5,"{'ask': 25884.2, 'bid': 25882.6, 'lastTraded': None}","{'ask': 25911.2, 'bid': 25909.6, 'lastTraded': None}",2523,"{'ask': 25877.2, 'bid': 25875.6, 'lastTraded': None}","{'ask': 25910.7, 'bid': 25909.1, 'lastTraded': None}",2019:03:16-00:25:00,25909.9,25876.4,25910.4,25883.4 8 | 6,"{'ask': 25890.2, 'bid': 25888.6, 'lastTraded': None}","{'ask': 25899.2, 'bid': 25897.6, 'lastTraded': None}",1622,"{'ask': 25883.2, 'bid': 25881.6, 'lastTraded': None}","{'ask': 25883.7, 'bid': 25882.1, 'lastTraded': None}",2019:03:16-00:30:00,25882.9,25882.4,25898.4,25889.4 9 | 7,"{'ask': 25901.2, 'bid': 25899.6, 'lastTraded': None}","{'ask': 25903.2, 'bid': 25901.6, 'lastTraded': None}",1264,"{'ask': 25887.2, 'bid': 25885.6, 'lastTraded': None}","{'ask': 25887.2, 'bid': 25885.6, 'lastTraded': None}",2019:03:16-00:35:00,25886.4,25886.4,25902.4,25900.4 10 | 8,"{'ask': 25905.7, 'bid': 25904.1, 'lastTraded': None}","{'ask': 25909.7, 'bid': 25908.1, 'lastTraded': None}",899,"{'ask': 25893.2, 'bid': 25891.6, 'lastTraded': None}","{'ask': 25901.7, 'bid': 25900.1, 'lastTraded': None}",2019:03:16-00:40:00,25900.9,25892.4,25908.9,25904.9 11 | 9,"{'ask': 25913.7, 'bid': 25912.1, 'lastTraded': None}","{'ask': 25915.2, 'bid': 25913.6, 'lastTraded': None}",801,"{'ask': 25901.2, 'bid': 25899.6, 'lastTraded': None}","{'ask': 25905.2, 'bid': 25903.6, 'lastTraded': None}",2019:03:16-00:45:00,25904.4,25900.4,25914.4,25912.9 12 | 10,"{'ask': 25916.2, 'bid': 25914.6, 'lastTraded': None}","{'ask': 25929.2, 'bid': 25927.6, 'lastTraded': None}",2309,"{'ask': 25905.2, 'bid': 25903.6, 'lastTraded': None}","{'ask': 25914.2, 'bid': 25912.6, 'lastTraded': None}",2019:03:16-00:50:00,25913.4,25904.4,25928.4,25915.4 13 | 11,"{'ask': 25907.2, 'bid': 25905.6, 'lastTraded': None}","{'ask': 25918.2, 'bid': 25916.6, 'lastTraded': None}",1582,"{'ask': 25894.2, 'bid': 25892.6, 'lastTraded': None}","{'ask': 25916.7, 'bid': 25915.1, 'lastTraded': None}",2019:03:16-00:55:00,25915.9,25893.4,25917.4,25906.4 14 | 12,"{'ask': 25911.2, 'bid': 25909.6, 'lastTraded': None}","{'ask': 25915.2, 'bid': 25913.6, 'lastTraded': None}",1067,"{'ask': 25906.2, 'bid': 25904.6, 'lastTraded': None}","{'ask': 25907.7, 'bid': 25906.1, 'lastTraded': None}",2019:03:16-01:00:00,25906.9,25905.4,25914.4,25910.4 15 | 13,"{'ask': 25910.2, 'bid': 25908.6, 'lastTraded': None}","{'ask': 25915.2, 'bid': 25913.6, 'lastTraded': None}",967,"{'ask': 25900.7, 'bid': 25899.1, 'lastTraded': None}","{'ask': 25910.2, 'bid': 25908.6, 'lastTraded': None}",2019:03:16-01:05:00,25909.4,25899.9,25914.4,25909.4 16 | 14,"{'ask': 25910.7, 'bid': 25909.1, 'lastTraded': None}","{'ask': 25915.7, 'bid': 25914.1, 'lastTraded': None}",980,"{'ask': 25907.2, 'bid': 25905.6, 'lastTraded': None}","{'ask': 25911.2, 'bid': 25909.6, 'lastTraded': None}",2019:03:16-01:10:00,25910.4,25906.4,25914.9,25909.9 17 | 15,"{'ask': 25902.2, 'bid': 25900.6, 'lastTraded': None}","{'ask': 25921.7, 'bid': 25920.1, 'lastTraded': None}",2462,"{'ask': 25902.2, 'bid': 25900.6, 'lastTraded': None}","{'ask': 25910.2, 'bid': 25908.6, 'lastTraded': None}",2019:03:16-01:15:00,25909.4,25901.4,25920.9,25901.4 18 | 16,"{'ask': 25891.2, 'bid': 25889.6, 'lastTraded': None}","{'ask': 25901.2, 'bid': 25899.6, 'lastTraded': None}",1847,"{'ask': 25888.2, 'bid': 25886.6, 'lastTraded': None}","{'ask': 25901.2, 'bid': 25899.6, 'lastTraded': None}",2019:03:16-01:20:00,25900.4,25887.4,25900.4,25890.4 19 | 17,"{'ask': 25887.2, 'bid': 25885.6, 'lastTraded': None}","{'ask': 25894.2, 'bid': 25892.6, 'lastTraded': None}",630,"{'ask': 25882.7, 'bid': 25881.1, 'lastTraded': None}","{'ask': 25892.2, 'bid': 25890.6, 'lastTraded': None}",2019:03:16-01:25:00,25891.4,25881.9,25893.4,25886.4 20 | 18,"{'ask': 25897.7, 'bid': 25896.1, 'lastTraded': None}","{'ask': 25899.2, 'bid': 25897.6, 'lastTraded': None}",625,"{'ask': 25884.7, 'bid': 25883.1, 'lastTraded': None}","{'ask': 25887.7, 'bid': 25886.1, 'lastTraded': None}",2019:03:16-01:30:00,25886.9,25883.9,25898.4,25896.9 21 | 19,"{'ask': 25895.2, 'bid': 25893.6, 'lastTraded': None}","{'ask': 25899.7, 'bid': 25898.1, 'lastTraded': None}",409,"{'ask': 25893.2, 'bid': 25891.6, 'lastTraded': None}","{'ask': 25897.2, 'bid': 25895.6, 'lastTraded': None}",2019:03:16-01:35:00,25896.4,25892.4,25898.9,25894.4 22 | 20,"{'ask': 25899.2, 'bid': 25897.6, 'lastTraded': None}","{'ask': 25902.2, 'bid': 25900.6, 'lastTraded': None}",1762,"{'ask': 25887.2, 'bid': 25885.6, 'lastTraded': None}","{'ask': 25896.2, 'bid': 25894.6, 'lastTraded': None}",2019:03:16-01:40:00,25895.4,25886.4,25901.4,25898.4 23 | 21,"{'ask': 25900.2, 'bid': 25898.6, 'lastTraded': None}","{'ask': 25911.2, 'bid': 25909.6, 'lastTraded': None}",831,"{'ask': 25897.2, 'bid': 25895.6, 'lastTraded': None}","{'ask': 25899.7, 'bid': 25898.1, 'lastTraded': None}",2019:03:16-01:45:00,25898.9,25896.4,25910.4,25899.4 24 | 22,"{'ask': 25890.2, 'bid': 25888.6, 'lastTraded': None}","{'ask': 25903.2, 'bid': 25901.6, 'lastTraded': None}",837,"{'ask': 25887.2, 'bid': 25885.6, 'lastTraded': None}","{'ask': 25899.2, 'bid': 25897.6, 'lastTraded': None}",2019:03:16-01:50:00,25898.4,25886.4,25902.4,25889.4 25 | 23,"{'ask': 25888.2, 'bid': 25886.6, 'lastTraded': None}","{'ask': 25894.7, 'bid': 25893.1, 'lastTraded': None}",1163,"{'ask': 25879.7, 'bid': 25878.1, 'lastTraded': None}","{'ask': 25890.7, 'bid': 25889.1, 'lastTraded': None}",2019:03:16-01:55:00,25889.9,25878.9,25893.9,25887.4 26 | 24,"{'ask': 25879.7, 'bid': 25878.1, 'lastTraded': None}","{'ask': 25892.2, 'bid': 25890.6, 'lastTraded': None}",1199,"{'ask': 25876.2, 'bid': 25874.6, 'lastTraded': None}","{'ask': 25887.7, 'bid': 25886.1, 'lastTraded': None}",2019:03:16-02:00:00,25886.9,25875.4,25891.4,25878.9 27 | 25,"{'ask': 25873.7, 'bid': 25872.1, 'lastTraded': None}","{'ask': 25882.2, 'bid': 25880.6, 'lastTraded': None}",951,"{'ask': 25870.7, 'bid': 25869.1, 'lastTraded': None}","{'ask': 25879.2, 'bid': 25877.6, 'lastTraded': None}",2019:03:16-02:05:00,25878.4,25869.9,25881.4,25872.9 28 | 26,"{'ask': 25860.7, 'bid': 25859.1, 'lastTraded': None}","{'ask': 25875.2, 'bid': 25873.6, 'lastTraded': None}",1082,"{'ask': 25859.2, 'bid': 25857.6, 'lastTraded': None}","{'ask': 25873.2, 'bid': 25871.6, 'lastTraded': None}",2019:03:16-02:10:00,25872.4,25858.4,25874.4,25859.9 29 | 27,"{'ask': 25856.2, 'bid': 25854.6, 'lastTraded': None}","{'ask': 25869.2, 'bid': 25867.6, 'lastTraded': None}",1010,"{'ask': 25856.2, 'bid': 25854.6, 'lastTraded': None}","{'ask': 25860.2, 'bid': 25858.6, 'lastTraded': None}",2019:03:16-02:15:00,25859.4,25855.4,25868.4,25855.4 30 | 28,"{'ask': 25843.2, 'bid': 25841.6, 'lastTraded': None}","{'ask': 25859.2, 'bid': 25857.6, 'lastTraded': None}",1535,"{'ask': 25841.2, 'bid': 25839.6, 'lastTraded': None}","{'ask': 25857.7, 'bid': 25856.1, 'lastTraded': None}",2019:03:16-02:20:00,25856.9,25840.4,25858.4,25842.4 31 | 29,"{'ask': 25847.7, 'bid': 25846.1, 'lastTraded': None}","{'ask': 25852.2, 'bid': 25850.6, 'lastTraded': None}",1141,"{'ask': 25842.7, 'bid': 25841.1, 'lastTraded': None}","{'ask': 25842.7, 'bid': 25841.1, 'lastTraded': None}",2019:03:16-02:25:00,25841.9,25841.9,25851.4,25846.9 32 | 30,"{'ask': 25862.2, 'bid': 25860.6, 'lastTraded': None}","{'ask': 25863.2, 'bid': 25861.6, 'lastTraded': None}",1351,"{'ask': 25846.2, 'bid': 25844.6, 'lastTraded': None}","{'ask': 25847.2, 'bid': 25845.6, 'lastTraded': None}",2019:03:16-02:30:00,25846.4,25845.4,25862.4,25861.4 33 | 31,"{'ask': 25866.2, 'bid': 25864.6, 'lastTraded': None}","{'ask': 25867.2, 'bid': 25865.6, 'lastTraded': None}",1471,"{'ask': 25850.2, 'bid': 25848.6, 'lastTraded': None}","{'ask': 25861.2, 'bid': 25859.6, 'lastTraded': None}",2019:03:16-02:35:00,25860.4,25849.4,25866.4,25865.4 34 | 32,"{'ask': 25867.2, 'bid': 25865.6, 'lastTraded': None}","{'ask': 25877.2, 'bid': 25875.6, 'lastTraded': None}",876,"{'ask': 25860.2, 'bid': 25858.6, 'lastTraded': None}","{'ask': 25866.7, 'bid': 25865.1, 'lastTraded': None}",2019:03:16-02:40:00,25865.9,25859.4,25876.4,25866.4 35 | 33,"{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}","{'ask': 25873.2, 'bid': 25871.6, 'lastTraded': None}",681,"{'ask': 25864.2, 'bid': 25862.6, 'lastTraded': None}","{'ask': 25866.2, 'bid': 25864.6, 'lastTraded': None}",2019:03:16-02:45:00,25865.4,25863.4,25872.4,25867.4 36 | 34,"{'ask': 25866.7, 'bid': 25865.1, 'lastTraded': None}","{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}",657,"{'ask': 25858.2, 'bid': 25856.6, 'lastTraded': None}","{'ask': 25867.2, 'bid': 25865.6, 'lastTraded': None}",2019:03:16-02:50:00,25866.4,25857.4,25867.4,25865.9 37 | 35,"{'ask': 25868.7, 'bid': 25867.1, 'lastTraded': None}","{'ask': 25871.2, 'bid': 25869.6, 'lastTraded': None}",579,"{'ask': 25864.2, 'bid': 25862.6, 'lastTraded': None}","{'ask': 25867.2, 'bid': 25865.6, 'lastTraded': None}",2019:03:16-02:55:00,25866.4,25863.4,25870.4,25867.9 38 | 36,"{'ask': 25859.2, 'bid': 25857.6, 'lastTraded': None}","{'ask': 25869.2, 'bid': 25867.6, 'lastTraded': None}",918,"{'ask': 25857.2, 'bid': 25855.6, 'lastTraded': None}","{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}",2019:03:16-03:00:00,25867.4,25856.4,25868.4,25858.4 39 | 37,"{'ask': 25850.2, 'bid': 25848.6, 'lastTraded': None}","{'ask': 25864.2, 'bid': 25862.6, 'lastTraded': None}",873,"{'ask': 25848.2, 'bid': 25846.6, 'lastTraded': None}","{'ask': 25861.2, 'bid': 25859.6, 'lastTraded': None}",2019:03:16-03:05:00,25860.4,25847.4,25863.4,25849.4 40 | 38,"{'ask': 25840.2, 'bid': 25838.6, 'lastTraded': None}","{'ask': 25849.2, 'bid': 25847.6, 'lastTraded': None}",1641,"{'ask': 25834.2, 'bid': 25832.6, 'lastTraded': None}","{'ask': 25849.2, 'bid': 25847.6, 'lastTraded': None}",2019:03:16-03:10:00,25848.4,25833.4,25848.4,25839.4 41 | 39,"{'ask': 25841.2, 'bid': 25839.6, 'lastTraded': None}","{'ask': 25842.2, 'bid': 25840.6, 'lastTraded': None}",1255,"{'ask': 25829.2, 'bid': 25827.6, 'lastTraded': None}","{'ask': 25839.2, 'bid': 25837.6, 'lastTraded': None}",2019:03:16-03:15:00,25838.4,25828.4,25841.4,25840.4 42 | 40,"{'ask': 25862.2, 'bid': 25860.6, 'lastTraded': None}","{'ask': 25862.2, 'bid': 25860.6, 'lastTraded': None}",1467,"{'ask': 25837.2, 'bid': 25835.6, 'lastTraded': None}","{'ask': 25840.2, 'bid': 25838.6, 'lastTraded': None}",2019:03:16-03:20:00,25839.4,25836.4,25861.4,25861.4 43 | 41,"{'ask': 25854.2, 'bid': 25852.6, 'lastTraded': None}","{'ask': 25863.2, 'bid': 25861.6, 'lastTraded': None}",1011,"{'ask': 25853.7, 'bid': 25852.1, 'lastTraded': None}","{'ask': 25862.7, 'bid': 25861.1, 'lastTraded': None}",2019:03:16-03:25:00,25861.9,25852.9,25862.4,25853.4 44 | 42,"{'ask': 25850.2, 'bid': 25848.6, 'lastTraded': None}","{'ask': 25858.2, 'bid': 25856.6, 'lastTraded': None}",1580,"{'ask': 25840.2, 'bid': 25838.6, 'lastTraded': None}","{'ask': 25854.7, 'bid': 25853.1, 'lastTraded': None}",2019:03:16-03:30:00,25853.9,25839.4,25857.4,25849.4 45 | 43,"{'ask': 25842.7, 'bid': 25841.1, 'lastTraded': None}","{'ask': 25856.2, 'bid': 25854.6, 'lastTraded': None}",1464,"{'ask': 25840.7, 'bid': 25839.1, 'lastTraded': None}","{'ask': 25849.7, 'bid': 25848.1, 'lastTraded': None}",2019:03:16-03:35:00,25848.9,25839.9,25855.4,25841.9 46 | 44,"{'ask': 25860.7, 'bid': 25859.1, 'lastTraded': None}","{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}",1451,"{'ask': 25842.2, 'bid': 25840.6, 'lastTraded': None}","{'ask': 25842.2, 'bid': 25840.6, 'lastTraded': None}",2019:03:16-03:40:00,25841.4,25841.4,25867.4,25859.9 47 | 45,"{'ask': 25857.2, 'bid': 25855.6, 'lastTraded': None}","{'ask': 25864.2, 'bid': 25862.6, 'lastTraded': None}",1482,"{'ask': 25846.2, 'bid': 25844.6, 'lastTraded': None}","{'ask': 25861.2, 'bid': 25859.6, 'lastTraded': None}",2019:03:16-03:45:00,25860.4,25845.4,25863.4,25856.4 48 | 46,"{'ask': 25820.2, 'bid': 25818.6, 'lastTraded': None}","{'ask': 25856.7, 'bid': 25855.1, 'lastTraded': None}",2675,"{'ask': 25818.2, 'bid': 25816.6, 'lastTraded': None}","{'ask': 25856.2, 'bid': 25854.6, 'lastTraded': None}",2019:03:16-03:50:00,25855.4,25817.4,25855.9,25819.4 49 | 47,"{'ask': 25850.2, 'bid': 25848.6, 'lastTraded': None}","{'ask': 25851.2, 'bid': 25849.6, 'lastTraded': None}",7943,"{'ask': 25817.7, 'bid': 25816.1, 'lastTraded': None}","{'ask': 25828.2, 'bid': 25826.6, 'lastTraded': None}",2019:03:16-03:55:00,25827.4,25816.9,25850.4,25849.4 50 | 48,"{'ask': 25851.3, 'bid': 25847.5, 'lastTraded': None}","{'ask': 25854.3, 'bid': 25850.5, 'lastTraded': None}",2331,"{'ask': 25832.3, 'bid': 25828.5, 'lastTraded': None}","{'ask': 25851.3, 'bid': 25847.5, 'lastTraded': None}",2019:03:16-04:00:00,25849.4,25830.4,25852.4,25849.4 51 | 49,"{'ask': 25849.3, 'bid': 25845.5, 'lastTraded': None}","{'ask': 25850.8, 'bid': 25847.0, 'lastTraded': None}",871,"{'ask': 25842.3, 'bid': 25838.5, 'lastTraded': None}","{'ask': 25850.8, 'bid': 25847.0, 'lastTraded': None}",2019:03:16-04:05:00,25848.9,25840.4,25848.9,25847.4 52 | 50,"{'ask': 25870.6, 'bid': 25860.8, 'lastTraded': None}","{'ask': 25880.3, 'bid': 25876.5, 'lastTraded': None}",1041,"{'ask': 25846.8, 'bid': 25843.0, 'lastTraded': None}","{'ask': 25849.8, 'bid': 25846.0, 'lastTraded': None}",2019:03:16-04:10:00,25847.9,25844.9,25878.4,25865.7 53 | 51,"{'ask': 25762.8, 'bid': 25753.0, 'lastTraded': None}","{'ask': 25871.1, 'bid': 25861.3, 'lastTraded': None}",5,"{'ask': 25759.3, 'bid': 25749.5, 'lastTraded': None}","{'ask': 25871.1, 'bid': 25861.3, 'lastTraded': None}",2019:03:16-04:15:00,25866.2,25754.4,25866.2,25757.9 54 | 52,"{'ask': 25770.3, 'bid': 25760.5, 'lastTraded': None}","{'ask': 25770.3, 'bid': 25760.5, 'lastTraded': None}",0,"{'ask': 25762.7, 'bid': 25752.9, 'lastTraded': None}","{'ask': 25762.7, 'bid': 25752.9, 'lastTraded': None}",2019:03:16-04:20:00,25757.8,25757.8,25765.4,25765.4 55 | 53,"{'ask': 25762.7, 'bid': 25752.9, 'lastTraded': None}","{'ask': 25770.3, 'bid': 25760.5, 'lastTraded': None}",0,"{'ask': 25762.7, 'bid': 25752.9, 'lastTraded': None}","{'ask': 25770.2, 'bid': 25760.4, 'lastTraded': None}",2019:03:16-04:25:00,25765.3,25757.8,25765.4,25757.8 56 | 54,"{'ask': 25861.8, 'bid': 25858.0, 'lastTraded': None}","{'ask': 25869.8, 'bid': 25866.0, 'lastTraded': None}",316,"{'ask': 25861.8, 'bid': 25858.0, 'lastTraded': None}","{'ask': 25864.8, 'bid': 25861.0, 'lastTraded': None}",2019:03:16-04:30:00,25862.9,25859.9,25867.9,25859.9 57 | 55,"{'ask': 25858.8, 'bid': 25855.0, 'lastTraded': None}","{'ask': 25866.3, 'bid': 25862.5, 'lastTraded': None}",122,"{'ask': 25858.3, 'bid': 25854.5, 'lastTraded': None}","{'ask': 25862.3, 'bid': 25858.5, 'lastTraded': None}",2019:03:16-04:35:00,25860.4,25856.4,25864.4,25856.9 58 | 56,"{'ask': 25863.8, 'bid': 25860.0, 'lastTraded': None}","{'ask': 25863.8, 'bid': 25860.0, 'lastTraded': None}",191,"{'ask': 25856.8, 'bid': 25853.0, 'lastTraded': None}","{'ask': 25859.3, 'bid': 25855.5, 'lastTraded': None}",2019:03:16-04:40:00,25857.4,25854.9,25861.9,25861.9 59 | 57,"{'ask': 25867.3, 'bid': 25863.5, 'lastTraded': None}","{'ask': 25869.8, 'bid': 25866.0, 'lastTraded': None}",87,"{'ask': 25863.3, 'bid': 25859.5, 'lastTraded': None}","{'ask': 25863.3, 'bid': 25859.5, 'lastTraded': None}",2019:03:16-04:45:00,25861.4,25861.4,25867.9,25865.4 60 | 58,"{'ask': 25868.3, 'bid': 25864.5, 'lastTraded': None}","{'ask': 25871.3, 'bid': 25867.5, 'lastTraded': None}",63,"{'ask': 25865.3, 'bid': 25861.5, 'lastTraded': None}","{'ask': 25867.8, 'bid': 25864.0, 'lastTraded': None}",2019:03:16-04:50:00,25865.9,25863.4,25869.4,25866.4 61 | 59,"{'ask': 25868.9, 'bid': 25859.1, 'lastTraded': None}","{'ask': 25868.9, 'bid': 25865.0, 'lastTraded': None}",115,"{'ask': 25859.8, 'bid': 25856.0, 'lastTraded': None}","{'ask': 25868.8, 'bid': 25865.0, 'lastTraded': None}",2019:03:16-04:55:00,25866.9,25857.9,25866.95,25864.0 62 | -------------------------------------------------------------------------------- /data/2019-03-23.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'ask': 25576.9, 'lastTraded': None, 'bid': 25575.3}","{'ask': 25587.9, 'lastTraded': None, 'bid': 25586.3}",4321,"{'ask': 25532.9, 'lastTraded': None, 'bid': 25531.3}","{'ask': 25539.9, 'lastTraded': None, 'bid': 25538.3}",2019:03:23-00:00:00,25539.1,25532.1,25587.1,25576.1 3 | 1,"{'ask': 25576.9, 'lastTraded': None, 'bid': 25575.3}","{'ask': 25593.9, 'lastTraded': None, 'bid': 25592.3}",2569,"{'ask': 25563.9, 'lastTraded': None, 'bid': 25562.3}","{'ask': 25575.9, 'lastTraded': None, 'bid': 25574.3}",2019:03:23-00:05:00,25575.1,25563.1,25593.1,25576.1 4 | 2,"{'ask': 25549.4, 'lastTraded': None, 'bid': 25547.8}","{'ask': 25579.9, 'lastTraded': None, 'bid': 25578.3}",2216,"{'ask': 25547.9, 'lastTraded': None, 'bid': 25546.3}","{'ask': 25577.9, 'lastTraded': None, 'bid': 25576.3}",2019:03:23-00:10:00,25577.1,25547.1,25579.1,25548.6 5 | 3,"{'ask': 25553.9, 'lastTraded': None, 'bid': 25552.3}","{'ask': 25584.9, 'lastTraded': None, 'bid': 25583.3}",2625,"{'ask': 25544.9, 'lastTraded': None, 'bid': 25543.3}","{'ask': 25549.9, 'lastTraded': None, 'bid': 25548.3}",2019:03:23-00:15:00,25549.1,25544.1,25584.1,25553.1 6 | 4,"{'ask': 25572.9, 'lastTraded': None, 'bid': 25571.3}","{'ask': 25588.9, 'lastTraded': None, 'bid': 25587.3}",2544,"{'ask': 25549.4, 'lastTraded': None, 'bid': 25547.8}","{'ask': 25554.9, 'lastTraded': None, 'bid': 25553.3}",2019:03:23-00:20:00,25554.1,25548.6,25588.1,25572.1 7 | 5,"{'ask': 25554.9, 'lastTraded': None, 'bid': 25553.3}","{'ask': 25575.9, 'lastTraded': None, 'bid': 25574.3}",2198,"{'ask': 25540.4, 'lastTraded': None, 'bid': 25538.8}","{'ask': 25571.9, 'lastTraded': None, 'bid': 25570.3}",2019:03:23-00:25:00,25571.1,25539.6,25575.1,25554.1 8 | 6,"{'ask': 25583.9, 'lastTraded': None, 'bid': 25582.3}","{'ask': 25587.9, 'lastTraded': None, 'bid': 25586.3}",2606,"{'ask': 25540.9, 'lastTraded': None, 'bid': 25539.3}","{'ask': 25553.9, 'lastTraded': None, 'bid': 25552.3}",2019:03:23-00:30:00,25553.1,25540.1,25587.1,25583.1 9 | 7,"{'ask': 25564.4, 'lastTraded': None, 'bid': 25562.8}","{'ask': 25584.4, 'lastTraded': None, 'bid': 25582.8}",1753,"{'ask': 25558.9, 'lastTraded': None, 'bid': 25557.3}","{'ask': 25583.4, 'lastTraded': None, 'bid': 25581.8}",2019:03:23-00:35:00,25582.6,25558.1,25583.6,25563.6 10 | 8,"{'ask': 25514.4, 'lastTraded': None, 'bid': 25512.8}","{'ask': 25564.9, 'lastTraded': None, 'bid': 25563.3}",3660,"{'ask': 25507.9, 'lastTraded': None, 'bid': 25506.3}","{'ask': 25564.9, 'lastTraded': None, 'bid': 25563.3}",2019:03:23-00:40:00,25564.1,25507.1,25564.1,25513.6 11 | 9,"{'ask': 25533.4, 'lastTraded': None, 'bid': 25531.8}","{'ask': 25543.9, 'lastTraded': None, 'bid': 25542.3}",2532,"{'ask': 25512.9, 'lastTraded': None, 'bid': 25511.3}","{'ask': 25514.9, 'lastTraded': None, 'bid': 25513.3}",2019:03:23-00:45:00,25514.1,25512.1,25543.1,25532.6 12 | 10,"{'ask': 25587.9, 'lastTraded': None, 'bid': 25586.3}","{'ask': 25589.4, 'lastTraded': None, 'bid': 25587.8}",3072,"{'ask': 25525.9, 'lastTraded': None, 'bid': 25524.3}","{'ask': 25532.9, 'lastTraded': None, 'bid': 25531.3}",2019:03:23-00:50:00,25532.1,25525.1,25588.6,25587.1 13 | 11,"{'ask': 25582.4, 'lastTraded': None, 'bid': 25580.8}","{'ask': 25587.4, 'lastTraded': None, 'bid': 25585.8}",2678,"{'ask': 25551.9, 'lastTraded': None, 'bid': 25550.3}","{'ask': 25587.4, 'lastTraded': None, 'bid': 25585.8}",2019:03:23-00:55:00,25586.6,25551.1,25586.6,25581.6 14 | 12,"{'ask': 25598.9, 'lastTraded': None, 'bid': 25597.3}","{'ask': 25618.9, 'lastTraded': None, 'bid': 25617.3}",2987,"{'ask': 25571.9, 'lastTraded': None, 'bid': 25570.3}","{'ask': 25581.9, 'lastTraded': None, 'bid': 25580.3}",2019:03:23-01:00:00,25581.1,25571.1,25618.1,25598.1 15 | 13,"{'ask': 25621.9, 'lastTraded': None, 'bid': 25620.3}","{'ask': 25623.9, 'lastTraded': None, 'bid': 25622.3}",1628,"{'ask': 25596.4, 'lastTraded': None, 'bid': 25594.8}","{'ask': 25599.9, 'lastTraded': None, 'bid': 25598.3}",2019:03:23-01:05:00,25599.1,25595.6,25623.1,25621.1 16 | 14,"{'ask': 25596.4, 'lastTraded': None, 'bid': 25594.8}","{'ask': 25621.9, 'lastTraded': None, 'bid': 25620.3}",1740,"{'ask': 25585.9, 'lastTraded': None, 'bid': 25584.3}","{'ask': 25620.9, 'lastTraded': None, 'bid': 25619.3}",2019:03:23-01:10:00,25620.1,25585.1,25621.1,25595.6 17 | 15,"{'ask': 25598.4, 'lastTraded': None, 'bid': 25596.8}","{'ask': 25611.9, 'lastTraded': None, 'bid': 25610.3}",1792,"{'ask': 25586.9, 'lastTraded': None, 'bid': 25585.3}","{'ask': 25596.9, 'lastTraded': None, 'bid': 25595.3}",2019:03:23-01:15:00,25596.1,25586.1,25611.1,25597.6 18 | 16,"{'ask': 25591.4, 'lastTraded': None, 'bid': 25589.8}","{'ask': 25608.4, 'lastTraded': None, 'bid': 25606.8}",2180,"{'ask': 25579.9, 'lastTraded': None, 'bid': 25578.3}","{'ask': 25597.9, 'lastTraded': None, 'bid': 25596.3}",2019:03:23-01:20:00,25597.1,25579.1,25607.6,25590.6 19 | 17,"{'ask': 25583.9, 'lastTraded': None, 'bid': 25582.3}","{'ask': 25594.9, 'lastTraded': None, 'bid': 25593.3}",1631,"{'ask': 25570.9, 'lastTraded': None, 'bid': 25569.3}","{'ask': 25590.9, 'lastTraded': None, 'bid': 25589.3}",2019:03:23-01:25:00,25590.1,25570.1,25594.1,25583.1 20 | 18,"{'ask': 25589.9, 'lastTraded': None, 'bid': 25588.3}","{'ask': 25616.9, 'lastTraded': None, 'bid': 25615.3}",1765,"{'ask': 25574.9, 'lastTraded': None, 'bid': 25573.3}","{'ask': 25584.4, 'lastTraded': None, 'bid': 25582.8}",2019:03:23-01:30:00,25583.6,25574.1,25616.1,25589.1 21 | 19,"{'ask': 25580.9, 'lastTraded': None, 'bid': 25579.3}","{'ask': 25600.4, 'lastTraded': None, 'bid': 25598.8}",1405,"{'ask': 25573.9, 'lastTraded': None, 'bid': 25572.3}","{'ask': 25590.4, 'lastTraded': None, 'bid': 25588.8}",2019:03:23-01:35:00,25589.6,25573.1,25599.6,25580.1 22 | 20,"{'ask': 25599.9, 'lastTraded': None, 'bid': 25598.3}","{'ask': 25602.4, 'lastTraded': None, 'bid': 25600.8}",1246,"{'ask': 25576.9, 'lastTraded': None, 'bid': 25575.3}","{'ask': 25581.9, 'lastTraded': None, 'bid': 25580.3}",2019:03:23-01:40:00,25581.1,25576.1,25601.6,25599.1 23 | 21,"{'ask': 25582.9, 'lastTraded': None, 'bid': 25581.3}","{'ask': 25604.9, 'lastTraded': None, 'bid': 25603.3}",1391,"{'ask': 25576.9, 'lastTraded': None, 'bid': 25575.3}","{'ask': 25600.4, 'lastTraded': None, 'bid': 25598.8}",2019:03:23-01:45:00,25599.6,25576.1,25604.1,25582.1 24 | 22,"{'ask': 25580.4, 'lastTraded': None, 'bid': 25578.8}","{'ask': 25590.4, 'lastTraded': None, 'bid': 25588.8}",1570,"{'ask': 25566.9, 'lastTraded': None, 'bid': 25565.3}","{'ask': 25582.4, 'lastTraded': None, 'bid': 25580.8}",2019:03:23-01:50:00,25581.6,25566.1,25589.6,25579.6 25 | 23,"{'ask': 25554.9, 'lastTraded': None, 'bid': 25553.3}","{'ask': 25582.9, 'lastTraded': None, 'bid': 25581.3}",1879,"{'ask': 25540.9, 'lastTraded': None, 'bid': 25539.3}","{'ask': 25579.9, 'lastTraded': None, 'bid': 25578.3}",2019:03:23-01:55:00,25579.1,25540.1,25582.1,25554.1 26 | 24,"{'ask': 25601.1, 'lastTraded': None, 'bid': 25599.5}","{'ask': 25602.6, 'lastTraded': None, 'bid': 25601.0}",2383,"{'ask': 25548.4, 'lastTraded': None, 'bid': 25546.8}","{'ask': 25553.9, 'lastTraded': None, 'bid': 25552.3}",2019:03:23-02:00:00,25553.1,25547.6,25601.8,25600.3 27 | 25,"{'ask': 25600.6, 'lastTraded': None, 'bid': 25599.0}","{'ask': 25610.1, 'lastTraded': None, 'bid': 25608.5}",1476,"{'ask': 25590.6, 'lastTraded': None, 'bid': 25589.0}","{'ask': 25600.6, 'lastTraded': None, 'bid': 25599.0}",2019:03:23-02:05:00,25599.8,25589.8,25609.3,25599.8 28 | 26,"{'ask': 25629.1, 'lastTraded': None, 'bid': 25627.5}","{'ask': 25631.1, 'lastTraded': None, 'bid': 25629.5}",1928,"{'ask': 25598.6, 'lastTraded': None, 'bid': 25597.0}","{'ask': 25600.1, 'lastTraded': None, 'bid': 25598.5}",2019:03:23-02:10:00,25599.3,25597.8,25630.3,25628.3 29 | 27,"{'ask': 25646.1, 'lastTraded': None, 'bid': 25644.5}","{'ask': 25675.1, 'lastTraded': None, 'bid': 25673.5}",3711,"{'ask': 25629.6, 'lastTraded': None, 'bid': 25628.0}","{'ask': 25630.1, 'lastTraded': None, 'bid': 25628.5}",2019:03:23-02:15:00,25629.3,25628.8,25674.3,25645.3 30 | 28,"{'ask': 25659.6, 'lastTraded': None, 'bid': 25658.0}","{'ask': 25668.1, 'lastTraded': None, 'bid': 25666.5}",2053,"{'ask': 25645.1, 'lastTraded': None, 'bid': 25643.5}","{'ask': 25646.6, 'lastTraded': None, 'bid': 25645.0}",2019:03:23-02:20:00,25645.8,25644.3,25667.3,25658.8 31 | 29,"{'ask': 25657.1, 'lastTraded': None, 'bid': 25655.5}","{'ask': 25671.1, 'lastTraded': None, 'bid': 25669.5}",2449,"{'ask': 25645.1, 'lastTraded': None, 'bid': 25643.5}","{'ask': 25659.1, 'lastTraded': None, 'bid': 25657.5}",2019:03:23-02:25:00,25658.3,25644.3,25670.3,25656.3 32 | 30,"{'ask': 25617.1, 'lastTraded': None, 'bid': 25615.5}","{'ask': 25666.1, 'lastTraded': None, 'bid': 25664.5}",2157,"{'ask': 25615.1, 'lastTraded': None, 'bid': 25613.5}","{'ask': 25656.6, 'lastTraded': None, 'bid': 25655.0}",2019:03:23-02:30:00,25655.8,25614.3,25665.3,25616.3 33 | 31,"{'ask': 25643.1, 'lastTraded': None, 'bid': 25641.5}","{'ask': 25648.1, 'lastTraded': None, 'bid': 25646.5}",1491,"{'ask': 25611.1, 'lastTraded': None, 'bid': 25609.5}","{'ask': 25617.6, 'lastTraded': None, 'bid': 25616.0}",2019:03:23-02:35:00,25616.8,25610.3,25647.3,25642.3 34 | 32,"{'ask': 25659.1, 'lastTraded': None, 'bid': 25657.5}","{'ask': 25675.1, 'lastTraded': None, 'bid': 25673.5}",1822,"{'ask': 25641.1, 'lastTraded': None, 'bid': 25639.5}","{'ask': 25642.1, 'lastTraded': None, 'bid': 25640.5}",2019:03:23-02:40:00,25641.3,25640.3,25674.3,25658.3 35 | 33,"{'ask': 25685.6, 'lastTraded': None, 'bid': 25684.0}","{'ask': 25694.1, 'lastTraded': None, 'bid': 25692.5}",2134,"{'ask': 25657.1, 'lastTraded': None, 'bid': 25655.5}","{'ask': 25658.6, 'lastTraded': None, 'bid': 25657.0}",2019:03:23-02:45:00,25657.8,25656.3,25693.3,25684.8 36 | 34,"{'ask': 25692.1, 'lastTraded': None, 'bid': 25690.5}","{'ask': 25716.1, 'lastTraded': None, 'bid': 25714.5}",2489,"{'ask': 25681.1, 'lastTraded': None, 'bid': 25679.5}","{'ask': 25686.1, 'lastTraded': None, 'bid': 25684.5}",2019:03:23-02:50:00,25685.3,25680.3,25715.3,25691.3 37 | 35,"{'ask': 25695.6, 'lastTraded': None, 'bid': 25694.0}","{'ask': 25710.1, 'lastTraded': None, 'bid': 25708.5}",1532,"{'ask': 25692.1, 'lastTraded': None, 'bid': 25690.5}","{'ask': 25692.6, 'lastTraded': None, 'bid': 25691.0}",2019:03:23-02:55:00,25691.8,25691.3,25709.3,25694.8 38 | 36,"{'ask': 25680.1, 'lastTraded': None, 'bid': 25678.5}","{'ask': 25723.1, 'lastTraded': None, 'bid': 25721.5}",2464,"{'ask': 25679.1, 'lastTraded': None, 'bid': 25677.5}","{'ask': 25696.1, 'lastTraded': None, 'bid': 25694.5}",2019:03:23-03:00:00,25695.3,25678.3,25722.3,25679.3 39 | 37,"{'ask': 25683.1, 'lastTraded': None, 'bid': 25681.5}","{'ask': 25701.1, 'lastTraded': None, 'bid': 25699.5}",1951,"{'ask': 25679.6, 'lastTraded': None, 'bid': 25678.0}","{'ask': 25681.1, 'lastTraded': None, 'bid': 25679.5}",2019:03:23-03:05:00,25680.3,25678.8,25700.3,25682.3 40 | 38,"{'ask': 25651.6, 'lastTraded': None, 'bid': 25650.0}","{'ask': 25691.6, 'lastTraded': None, 'bid': 25690.0}",2353,"{'ask': 25646.1, 'lastTraded': None, 'bid': 25644.5}","{'ask': 25684.1, 'lastTraded': None, 'bid': 25682.5}",2019:03:23-03:10:00,25683.3,25645.3,25690.8,25650.8 41 | 39,"{'ask': 25645.1, 'lastTraded': None, 'bid': 25643.5}","{'ask': 25672.1, 'lastTraded': None, 'bid': 25670.5}",1908,"{'ask': 25631.1, 'lastTraded': None, 'bid': 25629.5}","{'ask': 25651.1, 'lastTraded': None, 'bid': 25649.5}",2019:03:23-03:15:00,25650.3,25630.3,25671.3,25644.3 42 | 40,"{'ask': 25665.1, 'lastTraded': None, 'bid': 25663.5}","{'ask': 25669.1, 'lastTraded': None, 'bid': 25667.5}",1439,"{'ask': 25641.1, 'lastTraded': None, 'bid': 25639.5}","{'ask': 25644.6, 'lastTraded': None, 'bid': 25643.0}",2019:03:23-03:20:00,25643.8,25640.3,25668.3,25664.3 43 | 41,"{'ask': 25616.1, 'lastTraded': None, 'bid': 25614.5}","{'ask': 25668.1, 'lastTraded': None, 'bid': 25666.5}",1713,"{'ask': 25614.1, 'lastTraded': None, 'bid': 25612.5}","{'ask': 25665.6, 'lastTraded': None, 'bid': 25664.0}",2019:03:23-03:25:00,25664.8,25613.3,25667.3,25615.3 44 | 42,"{'ask': 25567.1, 'lastTraded': None, 'bid': 25565.5}","{'ask': 25620.1, 'lastTraded': None, 'bid': 25618.5}",3207,"{'ask': 25563.1, 'lastTraded': None, 'bid': 25561.5}","{'ask': 25616.6, 'lastTraded': None, 'bid': 25615.0}",2019:03:23-03:30:00,25615.8,25562.3,25619.3,25566.3 45 | 43,"{'ask': 25565.1, 'lastTraded': None, 'bid': 25563.5}","{'ask': 25587.1, 'lastTraded': None, 'bid': 25585.5}",3638,"{'ask': 25554.1, 'lastTraded': None, 'bid': 25552.5}","{'ask': 25566.1, 'lastTraded': None, 'bid': 25564.5}",2019:03:23-03:35:00,25565.3,25553.3,25586.3,25564.3 46 | 44,"{'ask': 25540.1, 'lastTraded': None, 'bid': 25538.5}","{'ask': 25570.6, 'lastTraded': None, 'bid': 25569.0}",3144,"{'ask': 25537.6, 'lastTraded': None, 'bid': 25536.0}","{'ask': 25564.1, 'lastTraded': None, 'bid': 25562.5}",2019:03:23-03:40:00,25563.3,25536.8,25569.8,25539.3 47 | 45,"{'ask': 25574.1, 'lastTraded': None, 'bid': 25572.5}","{'ask': 25581.1, 'lastTraded': None, 'bid': 25579.5}",2930,"{'ask': 25539.1, 'lastTraded': None, 'bid': 25537.5}","{'ask': 25540.6, 'lastTraded': None, 'bid': 25539.0}",2019:03:23-03:45:00,25539.8,25538.3,25580.3,25573.3 48 | 46,"{'ask': 25545.1, 'lastTraded': None, 'bid': 25543.5}","{'ask': 25574.1, 'lastTraded': None, 'bid': 25572.5}",2769,"{'ask': 25537.1, 'lastTraded': None, 'bid': 25535.5}","{'ask': 25573.6, 'lastTraded': None, 'bid': 25572.0}",2019:03:23-03:50:00,25572.8,25536.3,25573.3,25544.3 49 | 47,"{'ask': 25510.1, 'lastTraded': None, 'bid': 25508.5}","{'ask': 25551.1, 'lastTraded': None, 'bid': 25549.5}",8120,"{'ask': 25505.1, 'lastTraded': None, 'bid': 25503.5}","{'ask': 25546.1, 'lastTraded': None, 'bid': 25544.5}",2019:03:23-03:55:00,25545.3,25504.3,25550.3,25509.3 50 | 48,"{'ask': 25560.2, 'lastTraded': None, 'bid': 25556.4}","{'ask': 25569.7, 'lastTraded': None, 'bid': 25565.9}",3723,"{'ask': 25511.1, 'lastTraded': None, 'bid': 25508.4}","{'ask': 25511.1, 'lastTraded': None, 'bid': 25509.5}",2019:03:23-04:00:00,25510.3,25509.75,25567.8,25558.3 51 | 49,"{'ask': 25566.2, 'lastTraded': None, 'bid': 25562.4}","{'ask': 25577.2, 'lastTraded': None, 'bid': 25573.4}",1036,"{'ask': 25559.7, 'lastTraded': None, 'bid': 25555.9}","{'ask': 25561.2, 'lastTraded': None, 'bid': 25557.4}",2019:03:23-04:05:00,25559.3,25557.8,25575.3,25564.3 52 | 50,"{'ask': 25547.6, 'lastTraded': None, 'bid': 25537.8}","{'ask': 25568.2, 'lastTraded': None, 'bid': 25564.4}",962,"{'ask': 25540.7, 'lastTraded': None, 'bid': 25536.9}","{'ask': 25565.7, 'lastTraded': None, 'bid': 25561.9}",2019:03:23-04:10:00,25563.8,25538.8,25566.3,25542.7 53 | 51,"{'ask': 25556.1, 'lastTraded': None, 'bid': 25546.3}","{'ask': 25561.4, 'lastTraded': None, 'bid': 25551.6}",0,"{'ask': 25547.5, 'lastTraded': None, 'bid': 25537.7}","{'ask': 25547.5, 'lastTraded': None, 'bid': 25537.7}",2019:03:23-04:15:00,25542.6,25542.6,25556.5,25551.2 54 | 52,"{'ask': 25554.6, 'lastTraded': None, 'bid': 25544.8}","{'ask': 25557.8, 'lastTraded': None, 'bid': 25548.0}",0,"{'ask': 25554.6, 'lastTraded': None, 'bid': 25544.8}","{'ask': 25557.0, 'lastTraded': None, 'bid': 25547.2}",2019:03:23-04:20:00,25552.1,25549.7,25552.9,25549.7 55 | 53,"{'ask': 25554.5, 'lastTraded': None, 'bid': 25544.7}","{'ask': 25554.6, 'lastTraded': None, 'bid': 25544.8}",0,"{'ask': 25547.0, 'lastTraded': None, 'bid': 25537.2}","{'ask': 25554.4, 'lastTraded': None, 'bid': 25544.6}",2019:03:23-04:25:00,25549.5,25542.1,25549.7,25549.6 56 | 54,"{'ask': 25537.7, 'lastTraded': None, 'bid': 25533.9}","{'ask': 25554.6, 'lastTraded': None, 'bid': 25544.8}",269,"{'ask': 25524.7, 'lastTraded': None, 'bid': 25520.9}","{'ask': 25554.6, 'lastTraded': None, 'bid': 25544.8}",2019:03:23-04:30:00,25549.7,25522.8,25549.7,25535.8 57 | 55,"{'ask': 25531.7, 'lastTraded': None, 'bid': 25527.9}","{'ask': 25541.7, 'lastTraded': None, 'bid': 25537.9}",180,"{'ask': 25530.7, 'lastTraded': None, 'bid': 25526.9}","{'ask': 25537.2, 'lastTraded': None, 'bid': 25533.4}",2019:03:23-04:35:00,25535.3,25528.8,25539.8,25529.8 58 | 56,"{'ask': 25527.2, 'lastTraded': None, 'bid': 25523.4}","{'ask': 25531.2, 'lastTraded': None, 'bid': 25527.4}",180,"{'ask': 25525.2, 'lastTraded': None, 'bid': 25521.4}","{'ask': 25530.7, 'lastTraded': None, 'bid': 25526.9}",2019:03:23-04:40:00,25528.8,25523.3,25529.3,25525.3 59 | 57,"{'ask': 25528.7, 'lastTraded': None, 'bid': 25524.9}","{'ask': 25536.7, 'lastTraded': None, 'bid': 25532.9}",180,"{'ask': 25523.2, 'lastTraded': None, 'bid': 25519.4}","{'ask': 25526.7, 'lastTraded': None, 'bid': 25522.9}",2019:03:23-04:45:00,25524.8,25521.3,25534.8,25526.8 60 | 58,"{'ask': 25521.7, 'lastTraded': None, 'bid': 25517.9}","{'ask': 25532.2, 'lastTraded': None, 'bid': 25528.4}",232,"{'ask': 25518.7, 'lastTraded': None, 'bid': 25514.9}","{'ask': 25528.2, 'lastTraded': None, 'bid': 25524.4}",2019:03:23-04:50:00,25526.3,25516.8,25530.3,25519.8 61 | 59,"{'ask': 25519.6, 'lastTraded': None, 'bid': 25509.8}","{'ask': 25528.2, 'lastTraded': None, 'bid': 25524.4}",366,"{'ask': 25512.7, 'lastTraded': None, 'bid': 25503.5}","{'ask': 25521.2, 'lastTraded': None, 'bid': 25517.4}",2019:03:23-04:55:00,25519.3,25508.1,25526.3,25514.7 62 | -------------------------------------------------------------------------------- /data/2019-03-30.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'ask': 25867.2, 'bid': 25865.6, 'lastTraded': None}","{'ask': 25878.7, 'bid': 25877.1, 'lastTraded': None}",886,"{'ask': 25864.7, 'bid': 25863.1, 'lastTraded': None}","{'ask': 25873.2, 'bid': 25871.6, 'lastTraded': None}",2019:03:30-00:00:00,25872.4,25863.9,25877.9,25866.4 3 | 1,"{'ask': 25867.7, 'bid': 25866.1, 'lastTraded': None}","{'ask': 25868.7, 'bid': 25867.1, 'lastTraded': None}",811,"{'ask': 25857.2, 'bid': 25855.6, 'lastTraded': None}","{'ask': 25866.7, 'bid': 25865.1, 'lastTraded': None}",2019:03:30-00:05:00,25865.9,25856.4,25867.9,25866.9 4 | 2,"{'ask': 25857.7, 'bid': 25856.1, 'lastTraded': None}","{'ask': 25869.2, 'bid': 25867.6, 'lastTraded': None}",711,"{'ask': 25855.7, 'bid': 25854.1, 'lastTraded': None}","{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}",2019:03:30-00:10:00,25867.4,25854.9,25868.4,25856.9 5 | 3,"{'ask': 25852.7, 'bid': 25851.1, 'lastTraded': None}","{'ask': 25861.7, 'bid': 25860.1, 'lastTraded': None}",1046,"{'ask': 25847.7, 'bid': 25846.1, 'lastTraded': None}","{'ask': 25857.2, 'bid': 25855.6, 'lastTraded': None}",2019:03:30-00:15:00,25856.4,25846.9,25860.9,25851.9 6 | 4,"{'ask': 25859.2, 'bid': 25857.6, 'lastTraded': None}","{'ask': 25862.7, 'bid': 25861.1, 'lastTraded': None}",1275,"{'ask': 25834.7, 'bid': 25833.1, 'lastTraded': None}","{'ask': 25851.7, 'bid': 25850.1, 'lastTraded': None}",2019:03:30-00:20:00,25850.9,25833.9,25861.9,25858.4 7 | 5,"{'ask': 25865.2, 'bid': 25863.6, 'lastTraded': None}","{'ask': 25868.2, 'bid': 25866.6, 'lastTraded': None}",558,"{'ask': 25855.7, 'bid': 25854.1, 'lastTraded': None}","{'ask': 25858.7, 'bid': 25857.1, 'lastTraded': None}",2019:03:30-00:25:00,25857.9,25854.9,25867.4,25864.4 8 | 6,"{'ask': 25848.7, 'bid': 25847.1, 'lastTraded': None}","{'ask': 25864.7, 'bid': 25863.1, 'lastTraded': None}",762,"{'ask': 25848.2, 'bid': 25846.6, 'lastTraded': None}","{'ask': 25864.7, 'bid': 25863.1, 'lastTraded': None}",2019:03:30-00:30:00,25863.9,25847.4,25863.9,25847.9 9 | 7,"{'ask': 25856.7, 'bid': 25855.1, 'lastTraded': None}","{'ask': 25857.7, 'bid': 25856.1, 'lastTraded': None}",562,"{'ask': 25842.2, 'bid': 25840.6, 'lastTraded': None}","{'ask': 25849.7, 'bid': 25848.1, 'lastTraded': None}",2019:03:30-00:35:00,25848.9,25841.4,25856.9,25855.9 10 | 8,"{'ask': 25874.7, 'bid': 25873.1, 'lastTraded': None}","{'ask': 25875.7, 'bid': 25874.1, 'lastTraded': None}",808,"{'ask': 25853.7, 'bid': 25852.1, 'lastTraded': None}","{'ask': 25856.2, 'bid': 25854.6, 'lastTraded': None}",2019:03:30-00:40:00,25855.4,25852.9,25874.9,25873.9 11 | 9,"{'ask': 25865.2, 'bid': 25863.6, 'lastTraded': None}","{'ask': 25875.2, 'bid': 25873.6, 'lastTraded': None}",897,"{'ask': 25854.2, 'bid': 25852.6, 'lastTraded': None}","{'ask': 25874.2, 'bid': 25872.6, 'lastTraded': None}",2019:03:30-00:45:00,25873.4,25853.4,25874.4,25864.4 12 | 10,"{'ask': 25867.8, 'bid': 25866.2, 'lastTraded': None}","{'ask': 25871.3, 'bid': 25869.7, 'lastTraded': None}",660,"{'ask': 25860.2, 'bid': 25858.6, 'lastTraded': None}","{'ask': 25865.7, 'bid': 25864.1, 'lastTraded': None}",2019:03:30-00:50:00,25864.9,25859.4,25870.5,25867.0 13 | 11,"{'ask': 25865.3, 'bid': 25863.7, 'lastTraded': None}","{'ask': 25872.3, 'bid': 25870.7, 'lastTraded': None}",589,"{'ask': 25859.3, 'bid': 25857.7, 'lastTraded': None}","{'ask': 25868.3, 'bid': 25866.7, 'lastTraded': None}",2019:03:30-00:55:00,25867.5,25858.5,25871.5,25864.5 14 | 12,"{'ask': 25880.3, 'bid': 25878.7, 'lastTraded': None}","{'ask': 25881.3, 'bid': 25879.7, 'lastTraded': None}",1121,"{'ask': 25860.3, 'bid': 25858.7, 'lastTraded': None}","{'ask': 25865.8, 'bid': 25864.2, 'lastTraded': None}",2019:03:30-01:00:00,25865.0,25859.5,25880.5,25879.5 15 | 13,"{'ask': 25876.8, 'bid': 25875.2, 'lastTraded': None}","{'ask': 25882.3, 'bid': 25880.7, 'lastTraded': None}",790,"{'ask': 25873.3, 'bid': 25871.7, 'lastTraded': None}","{'ask': 25879.3, 'bid': 25877.7, 'lastTraded': None}",2019:03:30-01:05:00,25878.5,25872.5,25881.5,25876.0 16 | 14,"{'ask': 25883.8, 'bid': 25882.2, 'lastTraded': None}","{'ask': 25886.3, 'bid': 25884.7, 'lastTraded': None}",746,"{'ask': 25874.3, 'bid': 25872.7, 'lastTraded': None}","{'ask': 25877.3, 'bid': 25875.7, 'lastTraded': None}",2019:03:30-01:10:00,25876.5,25873.5,25885.5,25883.0 17 | 15,"{'ask': 25870.8, 'bid': 25869.2, 'lastTraded': None}","{'ask': 25887.3, 'bid': 25885.7, 'lastTraded': None}",782,"{'ask': 25869.3, 'bid': 25867.7, 'lastTraded': None}","{'ask': 25883.3, 'bid': 25881.7, 'lastTraded': None}",2019:03:30-01:15:00,25882.5,25868.5,25886.5,25870.0 18 | 16,"{'ask': 25874.3, 'bid': 25872.7, 'lastTraded': None}","{'ask': 25879.3, 'bid': 25877.7, 'lastTraded': None}",810,"{'ask': 25867.3, 'bid': 25865.7, 'lastTraded': None}","{'ask': 25871.3, 'bid': 25869.7, 'lastTraded': None}",2019:03:30-01:20:00,25870.5,25866.5,25878.5,25873.5 19 | 17,"{'ask': 25878.3, 'bid': 25876.7, 'lastTraded': None}","{'ask': 25883.3, 'bid': 25881.7, 'lastTraded': None}",609,"{'ask': 25872.8, 'bid': 25871.2, 'lastTraded': None}","{'ask': 25874.8, 'bid': 25873.2, 'lastTraded': None}",2019:03:30-01:25:00,25874.0,25872.0,25882.5,25877.5 20 | 18,"{'ask': 25874.3, 'bid': 25872.7, 'lastTraded': None}","{'ask': 25881.3, 'bid': 25879.7, 'lastTraded': None}",529,"{'ask': 25873.3, 'bid': 25871.7, 'lastTraded': None}","{'ask': 25877.8, 'bid': 25876.2, 'lastTraded': None}",2019:03:30-01:30:00,25877.0,25872.5,25880.5,25873.5 21 | 19,"{'ask': 25869.8, 'bid': 25868.2, 'lastTraded': None}","{'ask': 25876.3, 'bid': 25874.7, 'lastTraded': None}",517,"{'ask': 25869.3, 'bid': 25867.7, 'lastTraded': None}","{'ask': 25873.3, 'bid': 25871.7, 'lastTraded': None}",2019:03:30-01:35:00,25872.5,25868.5,25875.5,25869.0 22 | 20,"{'ask': 25865.3, 'bid': 25863.7, 'lastTraded': None}","{'ask': 25876.8, 'bid': 25875.2, 'lastTraded': None}",2190,"{'ask': 25853.3, 'bid': 25851.7, 'lastTraded': None}","{'ask': 25870.3, 'bid': 25868.7, 'lastTraded': None}",2019:03:30-01:40:00,25869.5,25852.5,25876.0,25864.5 23 | 21,"{'ask': 25879.8, 'bid': 25878.2, 'lastTraded': None}","{'ask': 25881.8, 'bid': 25880.2, 'lastTraded': None}",1824,"{'ask': 25856.8, 'bid': 25855.2, 'lastTraded': None}","{'ask': 25865.8, 'bid': 25864.2, 'lastTraded': None}",2019:03:30-01:45:00,25865.0,25856.0,25881.0,25879.0 24 | 22,"{'ask': 25913.3, 'bid': 25911.7, 'lastTraded': None}","{'ask': 25914.8, 'bid': 25913.2, 'lastTraded': None}",2673,"{'ask': 25876.8, 'bid': 25875.2, 'lastTraded': None}","{'ask': 25880.3, 'bid': 25878.7, 'lastTraded': None}",2019:03:30-01:50:00,25879.5,25876.0,25914.0,25912.5 25 | 23,"{'ask': 25909.8, 'bid': 25908.2, 'lastTraded': None}","{'ask': 25916.8, 'bid': 25915.2, 'lastTraded': None}",1262,"{'ask': 25903.3, 'bid': 25901.7, 'lastTraded': None}","{'ask': 25913.8, 'bid': 25912.2, 'lastTraded': None}",2019:03:30-01:55:00,25913.0,25902.5,25916.0,25909.0 26 | 24,"{'ask': 25913.8, 'bid': 25912.2, 'lastTraded': None}","{'ask': 25927.8, 'bid': 25926.2, 'lastTraded': None}",2114,"{'ask': 25909.8, 'bid': 25908.2, 'lastTraded': None}","{'ask': 25910.8, 'bid': 25909.2, 'lastTraded': None}",2019:03:30-02:00:00,25910.0,25909.0,25927.0,25913.0 27 | 25,"{'ask': 25902.8, 'bid': 25901.2, 'lastTraded': None}","{'ask': 25915.8, 'bid': 25914.2, 'lastTraded': None}",1324,"{'ask': 25897.8, 'bid': 25896.2, 'lastTraded': None}","{'ask': 25914.3, 'bid': 25912.7, 'lastTraded': None}",2019:03:30-02:05:00,25913.5,25897.0,25915.0,25902.0 28 | 26,"{'ask': 25887.3, 'bid': 25885.7, 'lastTraded': None}","{'ask': 25906.8, 'bid': 25905.2, 'lastTraded': None}",1304,"{'ask': 25886.8, 'bid': 25885.2, 'lastTraded': None}","{'ask': 25902.3, 'bid': 25900.7, 'lastTraded': None}",2019:03:30-02:10:00,25901.5,25886.0,25906.0,25886.5 29 | 27,"{'ask': 25889.8, 'bid': 25888.2, 'lastTraded': None}","{'ask': 25900.8, 'bid': 25899.2, 'lastTraded': None}",1346,"{'ask': 25880.8, 'bid': 25879.2, 'lastTraded': None}","{'ask': 25887.8, 'bid': 25886.2, 'lastTraded': None}",2019:03:30-02:15:00,25887.0,25880.0,25900.0,25889.0 30 | 28,"{'ask': 25874.8, 'bid': 25873.2, 'lastTraded': None}","{'ask': 25890.8, 'bid': 25889.2, 'lastTraded': None}",1506,"{'ask': 25874.8, 'bid': 25873.2, 'lastTraded': None}","{'ask': 25890.3, 'bid': 25888.7, 'lastTraded': None}",2019:03:30-02:20:00,25889.5,25874.0,25890.0,25874.0 31 | 29,"{'ask': 25878.3, 'bid': 25876.7, 'lastTraded': None}","{'ask': 25884.8, 'bid': 25883.2, 'lastTraded': None}",2342,"{'ask': 25861.8, 'bid': 25860.2, 'lastTraded': None}","{'ask': 25875.8, 'bid': 25874.2, 'lastTraded': None}",2019:03:30-02:25:00,25875.0,25861.0,25884.0,25877.5 32 | 30,"{'ask': 25891.8, 'bid': 25890.2, 'lastTraded': None}","{'ask': 25893.8, 'bid': 25892.2, 'lastTraded': None}",1726,"{'ask': 25866.8, 'bid': 25865.2, 'lastTraded': None}","{'ask': 25878.8, 'bid': 25877.2, 'lastTraded': None}",2019:03:30-02:30:00,25878.0,25866.0,25893.0,25891.0 33 | 31,"{'ask': 25893.3, 'bid': 25891.7, 'lastTraded': None}","{'ask': 25895.8, 'bid': 25894.2, 'lastTraded': None}",1153,"{'ask': 25878.8, 'bid': 25877.2, 'lastTraded': None}","{'ask': 25892.3, 'bid': 25890.7, 'lastTraded': None}",2019:03:30-02:35:00,25891.5,25878.0,25895.0,25892.5 34 | 32,"{'ask': 25893.8, 'bid': 25892.2, 'lastTraded': None}","{'ask': 25898.8, 'bid': 25897.2, 'lastTraded': None}",1535,"{'ask': 25885.3, 'bid': 25883.7, 'lastTraded': None}","{'ask': 25892.8, 'bid': 25891.2, 'lastTraded': None}",2019:03:30-02:40:00,25892.0,25884.5,25898.0,25893.0 35 | 33,"{'ask': 25887.8, 'bid': 25886.2, 'lastTraded': None}","{'ask': 25912.3, 'bid': 25910.7, 'lastTraded': None}",2020,"{'ask': 25881.8, 'bid': 25880.2, 'lastTraded': None}","{'ask': 25894.3, 'bid': 25892.7, 'lastTraded': None}",2019:03:30-02:45:00,25893.5,25881.0,25911.5,25887.0 36 | 34,"{'ask': 25887.8, 'bid': 25886.2, 'lastTraded': None}","{'ask': 25909.8, 'bid': 25908.2, 'lastTraded': None}",3344,"{'ask': 25873.8, 'bid': 25872.2, 'lastTraded': None}","{'ask': 25886.8, 'bid': 25885.2, 'lastTraded': None}",2019:03:30-02:50:00,25886.0,25873.0,25909.0,25887.0 37 | 35,"{'ask': 25927.3, 'bid': 25925.7, 'lastTraded': None}","{'ask': 25948.8, 'bid': 25947.2, 'lastTraded': None}",8722,"{'ask': 25891.8, 'bid': 25890.2, 'lastTraded': None}","{'ask': 25891.8, 'bid': 25890.2, 'lastTraded': None}",2019:03:30-02:55:00,25891.0,25891.0,25948.0,25926.5 38 | 36,"{'ask': 25933.9, 'bid': 25930.1, 'lastTraded': None}","{'ask': 25937.9, 'bid': 25934.1, 'lastTraded': None}",3552,"{'ask': 25908.9, 'bid': 25905.1, 'lastTraded': None}","{'ask': 25928.8, 'bid': 25927.2, 'lastTraded': None}",2019:03:30-03:00:00,25928.0,25907.0,25936.0,25932.0 39 | 37,"{'ask': 25933.9, 'bid': 25930.1, 'lastTraded': None}","{'ask': 25939.9, 'bid': 25936.1, 'lastTraded': None}",693,"{'ask': 25930.9, 'bid': 25927.1, 'lastTraded': None}","{'ask': 25934.4, 'bid': 25930.6, 'lastTraded': None}",2019:03:30-03:05:00,25932.5,25929.0,25938.0,25932.0 40 | 38,"{'ask': 25940.5, 'bid': 25930.7, 'lastTraded': None}","{'ask': 25940.5, 'bid': 25936.1, 'lastTraded': None}",502,"{'ask': 25932.4, 'bid': 25928.6, 'lastTraded': None}","{'ask': 25933.4, 'bid': 25929.6, 'lastTraded': None}",2019:03:30-03:10:00,25931.5,25930.5,25938.3,25935.6 41 | 39,"{'ask': 25941.9, 'bid': 25932.1, 'lastTraded': None}","{'ask': 25943.6, 'bid': 25933.8, 'lastTraded': None}",0,"{'ask': 25936.0, 'bid': 25926.2, 'lastTraded': None}","{'ask': 25940.6, 'bid': 25930.8, 'lastTraded': None}",2019:03:30-03:15:00,25935.7,25931.1,25938.7,25937.0 42 | 40,"{'ask': 25941.8, 'bid': 25932.0, 'lastTraded': None}","{'ask': 25941.9, 'bid': 25932.1, 'lastTraded': None}",0,"{'ask': 25941.6, 'bid': 25931.8, 'lastTraded': None}","{'ask': 25941.8, 'bid': 25932.0, 'lastTraded': None}",2019:03:30-03:20:00,25936.9,25936.7,25937.0,25936.9 43 | 41,"{'ask': 25949.2, 'bid': 25939.4, 'lastTraded': None}","{'ask': 25949.4, 'bid': 25939.6, 'lastTraded': None}",0,"{'ask': 25941.9, 'bid': 25932.1, 'lastTraded': None}","{'ask': 25941.9, 'bid': 25932.1, 'lastTraded': None}",2019:03:30-03:25:00,25937.0,25937.0,25944.5,25944.3 44 | 42,"{'ask': 25946.9, 'bid': 25943.1, 'lastTraded': None}","{'ask': 25948.9, 'bid': 25945.1, 'lastTraded': None}",217,"{'ask': 25940.4, 'bid': 25936.6, 'lastTraded': None}","{'ask': 25940.4, 'bid': 25936.6, 'lastTraded': None}",2019:03:30-03:30:00,25938.5,25938.5,25947.0,25945.0 45 | 43,"{'ask': 25947.9, 'bid': 25944.1, 'lastTraded': None}","{'ask': 25948.9, 'bid': 25945.1, 'lastTraded': None}",62,"{'ask': 25945.9, 'bid': 25942.1, 'lastTraded': None}","{'ask': 25946.4, 'bid': 25942.6, 'lastTraded': None}",2019:03:30-03:35:00,25944.5,25944.0,25947.0,25946.0 46 | 44,"{'ask': 25951.9, 'bid': 25948.1, 'lastTraded': None}","{'ask': 25951.9, 'bid': 25948.1, 'lastTraded': None}",121,"{'ask': 25946.4, 'bid': 25942.6, 'lastTraded': None}","{'ask': 25947.4, 'bid': 25943.6, 'lastTraded': None}",2019:03:30-03:40:00,25945.5,25944.5,25950.0,25950.0 47 | 45,"{'ask': 25954.4, 'bid': 25950.6, 'lastTraded': None}","{'ask': 25954.4, 'bid': 25950.6, 'lastTraded': None}",43,"{'ask': 25950.9, 'bid': 25947.1, 'lastTraded': None}","{'ask': 25950.9, 'bid': 25947.1, 'lastTraded': None}",2019:03:30-03:45:00,25949.0,25949.0,25952.5,25952.5 48 | 46,"{'ask': 25951.4, 'bid': 25947.6, 'lastTraded': None}","{'ask': 25956.4, 'bid': 25952.6, 'lastTraded': None}",140,"{'ask': 25951.4, 'bid': 25947.6, 'lastTraded': None}","{'ask': 25954.9, 'bid': 25951.1, 'lastTraded': None}",2019:03:30-03:50:00,25953.0,25949.5,25954.5,25949.5 49 | 47,"{'ask': 25952.5, 'bid': 25942.7, 'lastTraded': None}","{'ask': 25955.9, 'bid': 25952.1, 'lastTraded': None}",257,"{'ask': 25940.9, 'bid': 25937.1, 'lastTraded': None}","{'ask': 25951.9, 'bid': 25948.1, 'lastTraded': None}",2019:03:30-03:55:00,25950.0,25939.0,25954.0,25947.6 50 | -------------------------------------------------------------------------------- /data/2019-04-06.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'lastTraded': None, 'ask': 26411.0, 'bid': 26409.4}","{'lastTraded': None, 'ask': 26413.0, 'bid': 26411.4}",899,"{'lastTraded': None, 'ask': 26401.0, 'bid': 26399.4}","{'lastTraded': None, 'ask': 26404.5, 'bid': 26402.9}",2019:04:06-00:00:00,26403.7,26400.2,26412.2,26410.2 3 | 1,"{'lastTraded': None, 'ask': 26426.5, 'bid': 26424.9}","{'lastTraded': None, 'ask': 26428.0, 'bid': 26426.4}",1369,"{'lastTraded': None, 'ask': 26410.0, 'bid': 26408.4}","{'lastTraded': None, 'ask': 26412.0, 'bid': 26410.4}",2019:04:06-00:05:00,26411.2,26409.2,26427.2,26425.7 4 | 2,"{'lastTraded': None, 'ask': 26420.0, 'bid': 26418.4}","{'lastTraded': None, 'ask': 26428.0, 'bid': 26426.4}",574,"{'lastTraded': None, 'ask': 26419.0, 'bid': 26417.4}","{'lastTraded': None, 'ask': 26427.0, 'bid': 26425.4}",2019:04:06-00:10:00,26426.2,26418.2,26427.2,26419.2 5 | 3,"{'lastTraded': None, 'ask': 26421.0, 'bid': 26419.4}","{'lastTraded': None, 'ask': 26426.0, 'bid': 26424.4}",604,"{'lastTraded': None, 'ask': 26416.0, 'bid': 26414.4}","{'lastTraded': None, 'ask': 26420.5, 'bid': 26418.9}",2019:04:06-00:15:00,26419.7,26415.2,26425.2,26420.2 6 | 4,"{'lastTraded': None, 'ask': 26420.0, 'bid': 26418.4}","{'lastTraded': None, 'ask': 26425.0, 'bid': 26423.4}",713,"{'lastTraded': None, 'ask': 26414.0, 'bid': 26412.4}","{'lastTraded': None, 'ask': 26422.0, 'bid': 26420.4}",2019:04:06-00:20:00,26421.2,26413.2,26424.2,26419.2 7 | 5,"{'lastTraded': None, 'ask': 26416.5, 'bid': 26414.9}","{'lastTraded': None, 'ask': 26421.5, 'bid': 26419.9}",329,"{'lastTraded': None, 'ask': 26415.0, 'bid': 26413.4}","{'lastTraded': None, 'ask': 26419.5, 'bid': 26417.9}",2019:04:06-00:25:00,26418.7,26414.2,26420.7,26415.7 8 | 6,"{'lastTraded': None, 'ask': 26412.5, 'bid': 26410.9}","{'lastTraded': None, 'ask': 26421.0, 'bid': 26419.4}",459,"{'lastTraded': None, 'ask': 26410.0, 'bid': 26408.4}","{'lastTraded': None, 'ask': 26417.0, 'bid': 26415.4}",2019:04:06-00:30:00,26416.2,26409.2,26420.2,26411.7 9 | 7,"{'lastTraded': None, 'ask': 26382.0, 'bid': 26380.4}","{'lastTraded': None, 'ask': 26412.0, 'bid': 26410.4}",1825,"{'lastTraded': None, 'ask': 26379.0, 'bid': 26377.4}","{'lastTraded': None, 'ask': 26412.0, 'bid': 26410.4}",2019:04:06-00:35:00,26411.2,26378.2,26411.2,26381.2 10 | 8,"{'lastTraded': None, 'ask': 26381.0, 'bid': 26379.4}","{'lastTraded': None, 'ask': 26383.0, 'bid': 26381.4}",1751,"{'lastTraded': None, 'ask': 26365.0, 'bid': 26363.4}","{'lastTraded': None, 'ask': 26382.5, 'bid': 26380.9}",2019:04:06-00:40:00,26381.7,26364.2,26382.2,26380.2 11 | 9,"{'lastTraded': None, 'ask': 26397.0, 'bid': 26395.4}","{'lastTraded': None, 'ask': 26397.0, 'bid': 26395.4}",1056,"{'lastTraded': None, 'ask': 26379.5, 'bid': 26377.9}","{'lastTraded': None, 'ask': 26380.5, 'bid': 26378.9}",2019:04:06-00:45:00,26379.7,26378.7,26396.2,26396.2 12 | 10,"{'lastTraded': None, 'ask': 26390.5, 'bid': 26388.9}","{'lastTraded': None, 'ask': 26399.0, 'bid': 26397.4}",746,"{'lastTraded': None, 'ask': 26388.0, 'bid': 26386.4}","{'lastTraded': None, 'ask': 26398.0, 'bid': 26396.4}",2019:04:06-00:50:00,26397.2,26387.2,26398.2,26389.7 13 | 11,"{'lastTraded': None, 'ask': 26404.0, 'bid': 26402.4}","{'lastTraded': None, 'ask': 26405.0, 'bid': 26403.4}",645,"{'lastTraded': None, 'ask': 26389.0, 'bid': 26387.4}","{'lastTraded': None, 'ask': 26391.0, 'bid': 26389.4}",2019:04:06-00:55:00,26390.2,26388.2,26404.2,26403.2 14 | 12,"{'lastTraded': None, 'ask': 26401.0, 'bid': 26399.4}","{'lastTraded': None, 'ask': 26412.5, 'bid': 26410.9}",883,"{'lastTraded': None, 'ask': 26400.5, 'bid': 26398.9}","{'lastTraded': None, 'ask': 26404.5, 'bid': 26402.9}",2019:04:06-01:00:00,26403.7,26399.7,26411.7,26400.2 15 | 13,"{'lastTraded': None, 'ask': 26407.5, 'bid': 26405.9}","{'lastTraded': None, 'ask': 26409.0, 'bid': 26407.4}",762,"{'lastTraded': None, 'ask': 26394.0, 'bid': 26392.4}","{'lastTraded': None, 'ask': 26400.5, 'bid': 26398.9}",2019:04:06-01:05:00,26399.7,26393.2,26408.2,26406.7 16 | 14,"{'lastTraded': None, 'ask': 26408.5, 'bid': 26406.9}","{'lastTraded': None, 'ask': 26411.0, 'bid': 26409.4}",503,"{'lastTraded': None, 'ask': 26401.0, 'bid': 26399.4}","{'lastTraded': None, 'ask': 26408.0, 'bid': 26406.4}",2019:04:06-01:10:00,26407.2,26400.2,26410.2,26407.7 17 | 15,"{'lastTraded': None, 'ask': 26407.0, 'bid': 26405.4}","{'lastTraded': None, 'ask': 26413.0, 'bid': 26411.4}",492,"{'lastTraded': None, 'ask': 26403.0, 'bid': 26401.4}","{'lastTraded': None, 'ask': 26409.0, 'bid': 26407.4}",2019:04:06-01:15:00,26408.2,26402.2,26412.2,26406.2 18 | 16,"{'lastTraded': None, 'ask': 26407.0, 'bid': 26405.4}","{'lastTraded': None, 'ask': 26411.5, 'bid': 26409.9}",433,"{'lastTraded': None, 'ask': 26402.0, 'bid': 26400.4}","{'lastTraded': None, 'ask': 26407.5, 'bid': 26405.9}",2019:04:06-01:20:00,26406.7,26401.2,26410.7,26406.2 19 | 17,"{'lastTraded': None, 'ask': 26404.0, 'bid': 26402.4}","{'lastTraded': None, 'ask': 26410.5, 'bid': 26408.9}",555,"{'lastTraded': None, 'ask': 26403.0, 'bid': 26401.4}","{'lastTraded': None, 'ask': 26405.5, 'bid': 26403.9}",2019:04:06-01:25:00,26404.7,26402.2,26409.7,26403.2 20 | 18,"{'lastTraded': None, 'ask': 26401.0, 'bid': 26399.4}","{'lastTraded': None, 'ask': 26405.5, 'bid': 26403.9}",544,"{'lastTraded': None, 'ask': 26395.0, 'bid': 26393.4}","{'lastTraded': None, 'ask': 26403.5, 'bid': 26401.9}",2019:04:06-01:30:00,26402.7,26394.2,26404.7,26400.2 21 | 19,"{'lastTraded': None, 'ask': 26401.0, 'bid': 26399.4}","{'lastTraded': None, 'ask': 26406.0, 'bid': 26404.4}",686,"{'lastTraded': None, 'ask': 26397.0, 'bid': 26395.4}","{'lastTraded': None, 'ask': 26401.5, 'bid': 26399.9}",2019:04:06-01:35:00,26400.7,26396.2,26405.2,26400.2 22 | 20,"{'lastTraded': None, 'ask': 26404.5, 'bid': 26402.9}","{'lastTraded': None, 'ask': 26408.0, 'bid': 26406.4}",477,"{'lastTraded': None, 'ask': 26398.0, 'bid': 26396.4}","{'lastTraded': None, 'ask': 26400.5, 'bid': 26398.9}",2019:04:06-01:40:00,26399.7,26397.2,26407.2,26403.7 23 | 21,"{'lastTraded': None, 'ask': 26412.5, 'bid': 26410.9}","{'lastTraded': None, 'ask': 26413.0, 'bid': 26411.4}",747,"{'lastTraded': None, 'ask': 26395.0, 'bid': 26393.4}","{'lastTraded': None, 'ask': 26405.0, 'bid': 26403.4}",2019:04:06-01:45:00,26404.2,26394.2,26412.2,26411.7 24 | 22,"{'lastTraded': None, 'ask': 26409.5, 'bid': 26407.9}","{'lastTraded': None, 'ask': 26413.0, 'bid': 26411.4}",519,"{'lastTraded': None, 'ask': 26408.0, 'bid': 26406.4}","{'lastTraded': None, 'ask': 26413.0, 'bid': 26411.4}",2019:04:06-01:50:00,26412.2,26407.2,26412.2,26408.7 25 | 23,"{'lastTraded': None, 'ask': 26418.8, 'bid': 26417.2}","{'lastTraded': None, 'ask': 26419.8, 'bid': 26418.2}",867,"{'lastTraded': None, 'ask': 26404.0, 'bid': 26402.4}","{'lastTraded': None, 'ask': 26409.0, 'bid': 26407.4}",2019:04:06-01:55:00,26408.2,26403.2,26419.0,26418.0 26 | 24,"{'lastTraded': None, 'ask': 26420.8, 'bid': 26419.2}","{'lastTraded': None, 'ask': 26424.8, 'bid': 26423.2}",896,"{'lastTraded': None, 'ask': 26414.3, 'bid': 26412.7}","{'lastTraded': None, 'ask': 26418.3, 'bid': 26416.7}",2019:04:06-02:00:00,26417.5,26413.5,26424.0,26420.0 27 | 25,"{'lastTraded': None, 'ask': 26425.3, 'bid': 26423.7}","{'lastTraded': None, 'ask': 26426.8, 'bid': 26425.2}",699,"{'lastTraded': None, 'ask': 26416.8, 'bid': 26415.2}","{'lastTraded': None, 'ask': 26421.3, 'bid': 26419.7}",2019:04:06-02:05:00,26420.5,26416.0,26426.0,26424.5 28 | 26,"{'lastTraded': None, 'ask': 26419.3, 'bid': 26417.7}","{'lastTraded': None, 'ask': 26426.3, 'bid': 26424.7}",432,"{'lastTraded': None, 'ask': 26418.8, 'bid': 26417.2}","{'lastTraded': None, 'ask': 26425.8, 'bid': 26424.2}",2019:04:06-02:10:00,26425.0,26418.0,26425.5,26418.5 29 | 27,"{'lastTraded': None, 'ask': 26413.8, 'bid': 26412.2}","{'lastTraded': None, 'ask': 26425.8, 'bid': 26424.2}",987,"{'lastTraded': None, 'ask': 26409.8, 'bid': 26408.2}","{'lastTraded': None, 'ask': 26418.8, 'bid': 26417.2}",2019:04:06-02:15:00,26418.0,26409.0,26425.0,26413.0 30 | 28,"{'lastTraded': None, 'ask': 26405.8, 'bid': 26404.2}","{'lastTraded': None, 'ask': 26414.3, 'bid': 26412.7}",1067,"{'lastTraded': None, 'ask': 26399.8, 'bid': 26398.2}","{'lastTraded': None, 'ask': 26414.3, 'bid': 26412.7}",2019:04:06-02:20:00,26413.5,26399.0,26413.5,26405.0 31 | 29,"{'lastTraded': None, 'ask': 26406.3, 'bid': 26404.7}","{'lastTraded': None, 'ask': 26410.8, 'bid': 26409.2}",584,"{'lastTraded': None, 'ask': 26401.8, 'bid': 26400.2}","{'lastTraded': None, 'ask': 26406.3, 'bid': 26404.7}",2019:04:06-02:25:00,26405.5,26401.0,26410.0,26405.5 32 | 30,"{'lastTraded': None, 'ask': 26404.3, 'bid': 26402.7}","{'lastTraded': None, 'ask': 26410.8, 'bid': 26409.2}",685,"{'lastTraded': None, 'ask': 26400.8, 'bid': 26399.2}","{'lastTraded': None, 'ask': 26405.8, 'bid': 26404.2}",2019:04:06-02:30:00,26405.0,26400.0,26410.0,26403.5 33 | 31,"{'lastTraded': None, 'ask': 26408.8, 'bid': 26407.2}","{'lastTraded': None, 'ask': 26409.8, 'bid': 26408.2}",661,"{'lastTraded': None, 'ask': 26399.8, 'bid': 26398.2}","{'lastTraded': None, 'ask': 26404.8, 'bid': 26403.2}",2019:04:06-02:35:00,26404.0,26399.0,26409.0,26408.0 34 | 32,"{'lastTraded': None, 'ask': 26404.8, 'bid': 26403.2}","{'lastTraded': None, 'ask': 26409.8, 'bid': 26408.2}",672,"{'lastTraded': None, 'ask': 26400.8, 'bid': 26399.2}","{'lastTraded': None, 'ask': 26409.3, 'bid': 26407.7}",2019:04:06-02:40:00,26408.5,26400.0,26409.0,26404.0 35 | 33,"{'lastTraded': None, 'ask': 26406.3, 'bid': 26404.7}","{'lastTraded': None, 'ask': 26407.8, 'bid': 26406.2}",714,"{'lastTraded': None, 'ask': 26398.8, 'bid': 26397.2}","{'lastTraded': None, 'ask': 26404.3, 'bid': 26402.7}",2019:04:06-02:45:00,26403.5,26398.0,26407.0,26405.5 36 | 34,"{'lastTraded': None, 'ask': 26406.8, 'bid': 26405.2}","{'lastTraded': None, 'ask': 26407.8, 'bid': 26406.2}",395,"{'lastTraded': None, 'ask': 26397.8, 'bid': 26396.2}","{'lastTraded': None, 'ask': 26405.8, 'bid': 26404.2}",2019:04:06-02:50:00,26405.0,26397.0,26407.0,26406.0 37 | 35,"{'lastTraded': None, 'ask': 26409.8, 'bid': 26408.2}","{'lastTraded': None, 'ask': 26412.8, 'bid': 26411.2}",576,"{'lastTraded': None, 'ask': 26405.8, 'bid': 26404.2}","{'lastTraded': None, 'ask': 26406.3, 'bid': 26404.7}",2019:04:06-02:55:00,26405.5,26405.0,26412.0,26409.0 38 | 36,"{'lastTraded': None, 'ask': 26410.8, 'bid': 26409.2}","{'lastTraded': None, 'ask': 26414.8, 'bid': 26413.2}",560,"{'lastTraded': None, 'ask': 26406.8, 'bid': 26405.2}","{'lastTraded': None, 'ask': 26409.3, 'bid': 26407.7}",2019:04:06-03:00:00,26408.5,26406.0,26414.0,26410.0 39 | 37,"{'lastTraded': None, 'ask': 26404.3, 'bid': 26402.7}","{'lastTraded': None, 'ask': 26412.8, 'bid': 26411.2}",851,"{'lastTraded': None, 'ask': 26399.8, 'bid': 26398.2}","{'lastTraded': None, 'ask': 26411.8, 'bid': 26410.2}",2019:04:06-03:05:00,26411.0,26399.0,26412.0,26403.5 40 | 38,"{'lastTraded': None, 'ask': 26402.8, 'bid': 26401.2}","{'lastTraded': None, 'ask': 26405.3, 'bid': 26403.7}",1169,"{'lastTraded': None, 'ask': 26393.8, 'bid': 26392.2}","{'lastTraded': None, 'ask': 26404.8, 'bid': 26403.2}",2019:04:06-03:10:00,26404.0,26393.0,26404.5,26402.0 41 | 39,"{'lastTraded': None, 'ask': 26408.8, 'bid': 26407.2}","{'lastTraded': None, 'ask': 26408.8, 'bid': 26407.2}",783,"{'lastTraded': None, 'ask': 26396.8, 'bid': 26395.2}","{'lastTraded': None, 'ask': 26402.3, 'bid': 26400.7}",2019:04:06-03:15:00,26401.5,26396.0,26408.0,26408.0 42 | 40,"{'lastTraded': None, 'ask': 26427.8, 'bid': 26426.2}","{'lastTraded': None, 'ask': 26431.8, 'bid': 26430.2}",1495,"{'lastTraded': None, 'ask': 26408.8, 'bid': 26407.2}","{'lastTraded': None, 'ask': 26409.8, 'bid': 26408.2}",2019:04:06-03:20:00,26409.0,26408.0,26431.0,26427.0 43 | 41,"{'lastTraded': None, 'ask': 26431.3, 'bid': 26429.7}","{'lastTraded': None, 'ask': 26436.8, 'bid': 26435.2}",1016,"{'lastTraded': None, 'ask': 26425.8, 'bid': 26424.2}","{'lastTraded': None, 'ask': 26428.3, 'bid': 26426.7}",2019:04:06-03:25:00,26427.5,26425.0,26436.0,26430.5 44 | 42,"{'lastTraded': None, 'ask': 26441.8, 'bid': 26440.2}","{'lastTraded': None, 'ask': 26442.3, 'bid': 26440.7}",1380,"{'lastTraded': None, 'ask': 26425.8, 'bid': 26424.2}","{'lastTraded': None, 'ask': 26430.8, 'bid': 26429.2}",2019:04:06-03:30:00,26430.0,26425.0,26441.5,26441.0 45 | 43,"{'lastTraded': None, 'ask': 26436.3, 'bid': 26434.7}","{'lastTraded': None, 'ask': 26443.3, 'bid': 26441.7}",736,"{'lastTraded': None, 'ask': 26429.8, 'bid': 26428.2}","{'lastTraded': None, 'ask': 26442.3, 'bid': 26440.7}",2019:04:06-03:35:00,26441.5,26429.0,26442.5,26435.5 46 | 44,"{'lastTraded': None, 'ask': 26426.8, 'bid': 26425.2}","{'lastTraded': None, 'ask': 26438.8, 'bid': 26437.2}",803,"{'lastTraded': None, 'ask': 26425.8, 'bid': 26424.2}","{'lastTraded': None, 'ask': 26436.8, 'bid': 26435.2}",2019:04:06-03:40:00,26436.0,26425.0,26438.0,26426.0 47 | 45,"{'lastTraded': None, 'ask': 26415.3, 'bid': 26413.7}","{'lastTraded': None, 'ask': 26427.3, 'bid': 26425.7}",1384,"{'lastTraded': None, 'ask': 26413.8, 'bid': 26412.2}","{'lastTraded': None, 'ask': 26427.3, 'bid': 26425.7}",2019:04:06-03:45:00,26426.5,26413.0,26426.5,26414.5 48 | 46,"{'lastTraded': None, 'ask': 26402.8, 'bid': 26401.2}","{'lastTraded': None, 'ask': 26416.8, 'bid': 26415.2}",1751,"{'lastTraded': None, 'ask': 26395.8, 'bid': 26394.2}","{'lastTraded': None, 'ask': 26415.8, 'bid': 26414.2}",2019:04:06-03:50:00,26415.0,26395.0,26416.0,26402.0 49 | 47,"{'lastTraded': None, 'ask': 26421.8, 'bid': 26420.2}","{'lastTraded': None, 'ask': 26430.8, 'bid': 26429.2}",3020,"{'lastTraded': None, 'ask': 26403.8, 'bid': 26402.2}","{'lastTraded': None, 'ask': 26404.8, 'bid': 26403.2}",2019:04:06-03:55:00,26404.0,26403.0,26430.0,26421.0 50 | 48,"{'lastTraded': None, 'ask': 26406.9, 'bid': 26403.1}","{'lastTraded': None, 'ask': 26429.9, 'bid': 26426.1}",2791,"{'lastTraded': None, 'ask': 26401.4, 'bid': 26397.6}","{'lastTraded': None, 'ask': 26422.9, 'bid': 26419.1}",2019:04:06-04:00:00,26421.0,26399.5,26428.0,26405.0 51 | 49,"{'lastTraded': None, 'ask': 26404.9, 'bid': 26401.1}","{'lastTraded': None, 'ask': 26412.9, 'bid': 26409.1}",611,"{'lastTraded': None, 'ask': 26404.9, 'bid': 26401.1}","{'lastTraded': None, 'ask': 26406.4, 'bid': 26402.6}",2019:04:06-04:05:00,26404.5,26403.0,26411.0,26403.0 52 | 50,"{'lastTraded': None, 'ask': 26394.6, 'bid': 26384.8}","{'lastTraded': None, 'ask': 26404.9, 'bid': 26401.1}",819,"{'lastTraded': None, 'ask': 26378.9, 'bid': 26375.1}","{'lastTraded': None, 'ask': 26404.4, 'bid': 26400.6}",2019:04:06-04:10:00,26402.5,26377.0,26403.0,26389.7 53 | 51,"{'lastTraded': None, 'ask': 26427.9, 'bid': 26418.1}","{'lastTraded': None, 'ask': 26428.8, 'bid': 26419.0}",3,"{'lastTraded': None, 'ask': 26390.0, 'bid': 26380.2}","{'lastTraded': None, 'ask': 26394.4, 'bid': 26384.6}",2019:04:06-04:15:00,26389.5,26385.1,26423.9,26423.0 54 | 52,"{'lastTraded': None, 'ask': 26424.8, 'bid': 26415.0}","{'lastTraded': None, 'ask': 26427.8, 'bid': 26418.0}",0,"{'lastTraded': None, 'ask': 26424.3, 'bid': 26414.5}","{'lastTraded': None, 'ask': 26427.7, 'bid': 26417.9}",2019:04:06-04:20:00,26422.8,26419.4,26422.9,26419.9 55 | 53,"{'lastTraded': None, 'ask': 26423.4, 'bid': 26413.6}","{'lastTraded': None, 'ask': 26424.8, 'bid': 26415.0}",0,"{'lastTraded': None, 'ask': 26423.1, 'bid': 26413.3}","{'lastTraded': None, 'ask': 26424.5, 'bid': 26414.7}",2019:04:06-04:25:00,26419.6,26418.2,26419.9,26418.5 56 | 54,"{'lastTraded': None, 'ask': 26388.4, 'bid': 26384.6}","{'lastTraded': None, 'ask': 26390.4, 'bid': 26386.6}",194,"{'lastTraded': None, 'ask': 26384.4, 'bid': 26380.6}","{'lastTraded': None, 'ask': 26384.4, 'bid': 26380.6}",2019:04:06-04:30:00,26382.5,26382.5,26388.5,26386.5 57 | 55,"{'lastTraded': None, 'ask': 26385.4, 'bid': 26381.6}","{'lastTraded': None, 'ask': 26389.4, 'bid': 26385.6}",76,"{'lastTraded': None, 'ask': 26384.4, 'bid': 26380.6}","{'lastTraded': None, 'ask': 26387.4, 'bid': 26383.6}",2019:04:06-04:35:00,26385.5,26382.5,26387.5,26383.5 58 | 56,"{'lastTraded': None, 'ask': 26389.4, 'bid': 26385.6}","{'lastTraded': None, 'ask': 26390.4, 'bid': 26386.6}",71,"{'lastTraded': None, 'ask': 26385.4, 'bid': 26381.6}","{'lastTraded': None, 'ask': 26386.4, 'bid': 26382.6}",2019:04:06-04:40:00,26384.5,26383.5,26388.5,26387.5 59 | 57,"{'lastTraded': None, 'ask': 26388.4, 'bid': 26384.6}","{'lastTraded': None, 'ask': 26389.4, 'bid': 26385.6}",49,"{'lastTraded': None, 'ask': 26385.4, 'bid': 26381.6}","{'lastTraded': None, 'ask': 26386.4, 'bid': 26382.6}",2019:04:06-04:45:00,26384.5,26383.5,26387.5,26386.5 60 | 58,"{'lastTraded': None, 'ask': 26389.4, 'bid': 26385.6}","{'lastTraded': None, 'ask': 26392.4, 'bid': 26388.6}",114,"{'lastTraded': None, 'ask': 26386.4, 'bid': 26382.6}","{'lastTraded': None, 'ask': 26386.4, 'bid': 26382.6}",2019:04:06-04:50:00,26384.5,26384.5,26390.5,26387.5 61 | 59,"{'lastTraded': None, 'ask': 26375.8, 'bid': 26366.0}","{'lastTraded': None, 'ask': 26389.4, 'bid': 26385.6}",218,"{'lastTraded': None, 'ask': 26368.4, 'bid': 26363.3}","{'lastTraded': None, 'ask': 26387.4, 'bid': 26383.6}",2019:04:06-04:55:00,26385.5,26365.85,26387.5,26370.9 62 | -------------------------------------------------------------------------------- /data/2019-04-13.csv: -------------------------------------------------------------------------------- 1 | ,closePrice,highPrice,lastTradedVolume,lowPrice,openPrice,snapshotTime,averageOpen,averageLow,averageHigh,averageClose 2 | 0,"{'lastTraded': None, 'bid': 26342.2, 'ask': 26343.8}","{'lastTraded': None, 'bid': 26351.7, 'ask': 26353.3}",994,"{'lastTraded': None, 'bid': 26334.7, 'ask': 26336.3}","{'lastTraded': None, 'bid': 26350.7, 'ask': 26352.3}",2019:04:13-00:00:00,26351.5,26335.5,26352.5,26343.0 3 | 1,"{'lastTraded': None, 'bid': 26357.2, 'ask': 26358.8}","{'lastTraded': None, 'bid': 26357.7, 'ask': 26359.3}",1071,"{'lastTraded': None, 'bid': 26341.7, 'ask': 26343.3}","{'lastTraded': None, 'bid': 26342.7, 'ask': 26344.3}",2019:04:13-00:05:00,26343.5,26342.5,26358.5,26358.0 4 | 2,"{'lastTraded': None, 'bid': 26358.7, 'ask': 26360.3}","{'lastTraded': None, 'bid': 26360.7, 'ask': 26362.3}",639,"{'lastTraded': None, 'bid': 26353.7, 'ask': 26355.3}","{'lastTraded': None, 'bid': 26356.7, 'ask': 26358.3}",2019:04:13-00:10:00,26357.5,26354.5,26361.5,26359.5 5 | 3,"{'lastTraded': None, 'bid': 26370.2, 'ask': 26371.8}","{'lastTraded': None, 'bid': 26374.7, 'ask': 26376.3}",1455,"{'lastTraded': None, 'bid': 26359.7, 'ask': 26361.3}","{'lastTraded': None, 'bid': 26359.7, 'ask': 26361.3}",2019:04:13-00:15:00,26360.5,26360.5,26375.5,26371.0 6 | 4,"{'lastTraded': None, 'bid': 26374.7, 'ask': 26376.3}","{'lastTraded': None, 'bid': 26376.7, 'ask': 26378.3}",793,"{'lastTraded': None, 'bid': 26367.2, 'ask': 26368.8}","{'lastTraded': None, 'bid': 26370.7, 'ask': 26372.3}",2019:04:13-00:20:00,26371.5,26368.0,26377.5,26375.5 7 | 5,"{'lastTraded': None, 'bid': 26374.2, 'ask': 26375.8}","{'lastTraded': None, 'bid': 26379.7, 'ask': 26381.3}",623,"{'lastTraded': None, 'bid': 26372.7, 'ask': 26374.3}","{'lastTraded': None, 'bid': 26373.7, 'ask': 26375.3}",2019:04:13-00:25:00,26374.5,26373.5,26380.5,26375.0 8 | 6,"{'lastTraded': None, 'bid': 26375.7, 'ask': 26377.3}","{'lastTraded': None, 'bid': 26375.7, 'ask': 26377.3}",607,"{'lastTraded': None, 'bid': 26370.7, 'ask': 26372.3}","{'lastTraded': None, 'bid': 26373.7, 'ask': 26375.3}",2019:04:13-00:30:00,26374.5,26371.5,26376.5,26376.5 9 | 7,"{'lastTraded': None, 'bid': 26375.7, 'ask': 26377.3}","{'lastTraded': None, 'bid': 26377.7, 'ask': 26379.3}",791,"{'lastTraded': None, 'bid': 26366.7, 'ask': 26368.3}","{'lastTraded': None, 'bid': 26375.2, 'ask': 26376.8}",2019:04:13-00:35:00,26376.0,26367.5,26378.5,26376.5 10 | 8,"{'lastTraded': None, 'bid': 26384.7, 'ask': 26386.3}","{'lastTraded': None, 'bid': 26386.7, 'ask': 26388.3}",778,"{'lastTraded': None, 'bid': 26374.7, 'ask': 26376.3}","{'lastTraded': None, 'bid': 26376.2, 'ask': 26377.8}",2019:04:13-00:40:00,26377.0,26375.5,26387.5,26385.5 11 | 9,"{'lastTraded': None, 'bid': 26379.2, 'ask': 26380.8}","{'lastTraded': None, 'bid': 26385.7, 'ask': 26387.3}",933,"{'lastTraded': None, 'bid': 26371.7, 'ask': 26373.3}","{'lastTraded': None, 'bid': 26385.2, 'ask': 26386.8}",2019:04:13-00:45:00,26386.0,26372.5,26386.5,26380.0 12 | 10,"{'lastTraded': None, 'bid': 26379.7, 'ask': 26381.3}","{'lastTraded': None, 'bid': 26383.2, 'ask': 26384.8}",516,"{'lastTraded': None, 'bid': 26374.2, 'ask': 26375.8}","{'lastTraded': None, 'bid': 26378.7, 'ask': 26380.3}",2019:04:13-00:50:00,26379.5,26375.0,26384.0,26380.5 13 | 11,"{'lastTraded': None, 'bid': 26391.2, 'ask': 26392.8}","{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}",767,"{'lastTraded': None, 'bid': 26378.7, 'ask': 26380.3}","{'lastTraded': None, 'bid': 26378.7, 'ask': 26380.3}",2019:04:13-00:55:00,26379.5,26379.5,26392.5,26392.0 14 | 12,"{'lastTraded': None, 'bid': 26394.7, 'ask': 26396.3}","{'lastTraded': None, 'bid': 26396.7, 'ask': 26398.3}",915,"{'lastTraded': None, 'bid': 26390.7, 'ask': 26392.3}","{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}",2019:04:13-01:00:00,26392.5,26391.5,26397.5,26395.5 15 | 13,"{'lastTraded': None, 'bid': 26389.7, 'ask': 26391.3}","{'lastTraded': None, 'bid': 26395.7, 'ask': 26397.3}",1008,"{'lastTraded': None, 'bid': 26388.7, 'ask': 26390.3}","{'lastTraded': None, 'bid': 26393.7, 'ask': 26395.3}",2019:04:13-01:05:00,26394.5,26389.5,26396.5,26390.5 16 | 14,"{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}","{'lastTraded': None, 'bid': 26395.7, 'ask': 26397.3}",628,"{'lastTraded': None, 'bid': 26388.7, 'ask': 26390.3}","{'lastTraded': None, 'bid': 26388.7, 'ask': 26390.3}",2019:04:13-01:10:00,26389.5,26389.5,26396.5,26392.5 17 | 15,"{'lastTraded': None, 'bid': 26402.7, 'ask': 26404.3}","{'lastTraded': None, 'bid': 26404.2, 'ask': 26405.8}",622,"{'lastTraded': None, 'bid': 26390.2, 'ask': 26391.8}","{'lastTraded': None, 'bid': 26390.7, 'ask': 26392.3}",2019:04:13-01:15:00,26391.5,26391.0,26405.0,26403.5 18 | 16,"{'lastTraded': None, 'bid': 26396.7, 'ask': 26398.3}","{'lastTraded': None, 'bid': 26403.2, 'ask': 26404.8}",779,"{'lastTraded': None, 'bid': 26395.2, 'ask': 26396.8}","{'lastTraded': None, 'bid': 26402.2, 'ask': 26403.8}",2019:04:13-01:20:00,26403.0,26396.0,26404.0,26397.5 19 | 17,"{'lastTraded': None, 'bid': 26394.7, 'ask': 26396.3}","{'lastTraded': None, 'bid': 26400.7, 'ask': 26402.3}",467,"{'lastTraded': None, 'bid': 26394.2, 'ask': 26395.8}","{'lastTraded': None, 'bid': 26397.2, 'ask': 26398.8}",2019:04:13-01:25:00,26398.0,26395.0,26401.5,26395.5 20 | 18,"{'lastTraded': None, 'bid': 26388.7, 'ask': 26390.3}","{'lastTraded': None, 'bid': 26397.7, 'ask': 26399.3}",860,"{'lastTraded': None, 'bid': 26387.7, 'ask': 26389.3}","{'lastTraded': None, 'bid': 26395.2, 'ask': 26396.8}",2019:04:13-01:30:00,26396.0,26388.5,26398.5,26389.5 21 | 19,"{'lastTraded': None, 'bid': 26398.7, 'ask': 26400.3}","{'lastTraded': None, 'bid': 26400.7, 'ask': 26402.3}",750,"{'lastTraded': None, 'bid': 26389.7, 'ask': 26391.3}","{'lastTraded': None, 'bid': 26389.7, 'ask': 26391.3}",2019:04:13-01:35:00,26390.5,26390.5,26401.5,26399.5 22 | 20,"{'lastTraded': None, 'bid': 26398.2, 'ask': 26399.8}","{'lastTraded': None, 'bid': 26399.7, 'ask': 26401.3}",649,"{'lastTraded': None, 'bid': 26390.7, 'ask': 26392.3}","{'lastTraded': None, 'bid': 26399.2, 'ask': 26400.8}",2019:04:13-01:40:00,26400.0,26391.5,26400.5,26399.0 23 | 21,"{'lastTraded': None, 'bid': 26396.2, 'ask': 26397.8}","{'lastTraded': None, 'bid': 26399.7, 'ask': 26401.3}",1405,"{'lastTraded': None, 'bid': 26392.7, 'ask': 26394.3}","{'lastTraded': None, 'bid': 26397.7, 'ask': 26399.3}",2019:04:13-01:45:00,26398.5,26393.5,26400.5,26397.0 24 | 22,"{'lastTraded': None, 'bid': 26392.7, 'ask': 26394.3}","{'lastTraded': None, 'bid': 26397.2, 'ask': 26398.8}",953,"{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}","{'lastTraded': None, 'bid': 26396.7, 'ask': 26398.3}",2019:04:13-01:50:00,26397.5,26392.5,26398.0,26393.5 25 | 23,"{'lastTraded': None, 'bid': 26394.7, 'ask': 26396.3}","{'lastTraded': None, 'bid': 26397.7, 'ask': 26399.3}",735,"{'lastTraded': None, 'bid': 26392.7, 'ask': 26394.3}","{'lastTraded': None, 'bid': 26393.7, 'ask': 26395.3}",2019:04:13-01:55:00,26394.5,26393.5,26398.5,26395.5 26 | 24,"{'lastTraded': None, 'bid': 26404.7, 'ask': 26406.3}","{'lastTraded': None, 'bid': 26410.7, 'ask': 26412.3}",1634,"{'lastTraded': None, 'bid': 26388.7, 'ask': 26390.3}","{'lastTraded': None, 'bid': 26393.7, 'ask': 26395.3}",2019:04:13-02:00:00,26394.5,26389.5,26411.5,26405.5 27 | 25,"{'lastTraded': None, 'bid': 26403.7, 'ask': 26405.3}","{'lastTraded': None, 'bid': 26409.7, 'ask': 26411.3}",873,"{'lastTraded': None, 'bid': 26401.7, 'ask': 26403.3}","{'lastTraded': None, 'bid': 26405.7, 'ask': 26407.3}",2019:04:13-02:05:00,26406.5,26402.5,26410.5,26404.5 28 | 26,"{'lastTraded': None, 'bid': 26401.7, 'ask': 26403.3}","{'lastTraded': None, 'bid': 26403.7, 'ask': 26405.3}",631,"{'lastTraded': None, 'bid': 26395.7, 'ask': 26397.3}","{'lastTraded': None, 'bid': 26402.7, 'ask': 26404.3}",2019:04:13-02:10:00,26403.5,26396.5,26404.5,26402.5 29 | 27,"{'lastTraded': None, 'bid': 26394.7, 'ask': 26396.3}","{'lastTraded': None, 'bid': 26402.7, 'ask': 26404.3}",989,"{'lastTraded': None, 'bid': 26392.7, 'ask': 26394.3}","{'lastTraded': None, 'bid': 26402.7, 'ask': 26404.3}",2019:04:13-02:15:00,26403.5,26393.5,26403.5,26395.5 30 | 28,"{'lastTraded': None, 'bid': 26392.2, 'ask': 26393.8}","{'lastTraded': None, 'bid': 26395.7, 'ask': 26397.3}",594,"{'lastTraded': None, 'bid': 26390.7, 'ask': 26392.3}","{'lastTraded': None, 'bid': 26393.7, 'ask': 26395.3}",2019:04:13-02:20:00,26394.5,26391.5,26396.5,26393.0 31 | 29,"{'lastTraded': None, 'bid': 26387.7, 'ask': 26389.3}","{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}",911,"{'lastTraded': None, 'bid': 26380.2, 'ask': 26381.8}","{'lastTraded': None, 'bid': 26391.7, 'ask': 26393.3}",2019:04:13-02:25:00,26392.5,26381.0,26392.5,26388.5 32 | 30,"{'lastTraded': None, 'bid': 26383.7, 'ask': 26385.3}","{'lastTraded': None, 'bid': 26390.7, 'ask': 26392.3}",578,"{'lastTraded': None, 'bid': 26381.7, 'ask': 26383.3}","{'lastTraded': None, 'bid': 26386.7, 'ask': 26388.3}",2019:04:13-02:30:00,26387.5,26382.5,26391.5,26384.5 33 | 31,"{'lastTraded': None, 'bid': 26385.7, 'ask': 26387.3}","{'lastTraded': None, 'bid': 26387.7, 'ask': 26389.3}",561,"{'lastTraded': None, 'bid': 26380.7, 'ask': 26382.3}","{'lastTraded': None, 'bid': 26384.2, 'ask': 26385.8}",2019:04:13-02:35:00,26385.0,26381.5,26388.5,26386.5 34 | 32,"{'lastTraded': None, 'bid': 26378.7, 'ask': 26380.3}","{'lastTraded': None, 'bid': 26387.7, 'ask': 26389.3}",584,"{'lastTraded': None, 'bid': 26378.7, 'ask': 26380.3}","{'lastTraded': None, 'bid': 26385.2, 'ask': 26386.8}",2019:04:13-02:40:00,26386.0,26379.5,26388.5,26379.5 35 | 33,"{'lastTraded': None, 'bid': 26371.7, 'ask': 26373.3}","{'lastTraded': None, 'bid': 26382.2, 'ask': 26383.8}",1275,"{'lastTraded': None, 'bid': 26365.7, 'ask': 26367.3}","{'lastTraded': None, 'bid': 26377.7, 'ask': 26379.3}",2019:04:13-02:45:00,26378.5,26366.5,26383.0,26372.5 36 | 34,"{'lastTraded': None, 'bid': 26372.6, 'ask': 26374.2}","{'lastTraded': None, 'bid': 26373.7, 'ask': 26375.3}",1456,"{'lastTraded': None, 'bid': 26365.1, 'ask': 26366.7}","{'lastTraded': None, 'bid': 26371.2, 'ask': 26372.8}",2019:04:13-02:50:00,26372.0,26365.9,26374.5,26373.4 37 | 35,"{'lastTraded': None, 'bid': 26371.6, 'ask': 26373.2}","{'lastTraded': None, 'bid': 26377.6, 'ask': 26379.2}",890,"{'lastTraded': None, 'bid': 26369.6, 'ask': 26371.2}","{'lastTraded': None, 'bid': 26373.6, 'ask': 26375.2}",2019:04:13-02:55:00,26374.4,26370.4,26378.4,26372.4 38 | 36,"{'lastTraded': None, 'bid': 26380.6, 'ask': 26382.2}","{'lastTraded': None, 'bid': 26381.6, 'ask': 26383.2}",830,"{'lastTraded': None, 'bid': 26370.6, 'ask': 26372.2}","{'lastTraded': None, 'bid': 26372.6, 'ask': 26374.2}",2019:04:13-03:00:00,26373.4,26371.4,26382.4,26381.4 39 | 37,"{'lastTraded': None, 'bid': 26378.6, 'ask': 26380.2}","{'lastTraded': None, 'bid': 26380.6, 'ask': 26382.2}",854,"{'lastTraded': None, 'bid': 26371.6, 'ask': 26373.2}","{'lastTraded': None, 'bid': 26380.1, 'ask': 26381.7}",2019:04:13-03:05:00,26380.9,26372.4,26381.4,26379.4 40 | 38,"{'lastTraded': None, 'bid': 26384.6, 'ask': 26386.2}","{'lastTraded': None, 'bid': 26385.6, 'ask': 26387.2}",718,"{'lastTraded': None, 'bid': 26377.6, 'ask': 26379.2}","{'lastTraded': None, 'bid': 26378.1, 'ask': 26379.7}",2019:04:13-03:10:00,26378.9,26378.4,26386.4,26385.4 41 | 39,"{'lastTraded': None, 'bid': 26382.1, 'ask': 26383.7}","{'lastTraded': None, 'bid': 26388.6, 'ask': 26390.2}",776,"{'lastTraded': None, 'bid': 26380.6, 'ask': 26382.2}","{'lastTraded': None, 'bid': 26383.6, 'ask': 26385.2}",2019:04:13-03:15:00,26384.4,26381.4,26389.4,26382.9 42 | 40,"{'lastTraded': None, 'bid': 26375.6, 'ask': 26377.2}","{'lastTraded': None, 'bid': 26382.6, 'ask': 26384.2}",1109,"{'lastTraded': None, 'bid': 26367.6, 'ask': 26369.2}","{'lastTraded': None, 'bid': 26382.6, 'ask': 26384.2}",2019:04:13-03:20:00,26383.4,26368.4,26383.4,26376.4 43 | 41,"{'lastTraded': None, 'bid': 26385.6, 'ask': 26387.2}","{'lastTraded': None, 'bid': 26386.6, 'ask': 26388.2}",917,"{'lastTraded': None, 'bid': 26370.6, 'ask': 26372.2}","{'lastTraded': None, 'bid': 26376.1, 'ask': 26377.7}",2019:04:13-03:25:00,26376.9,26371.4,26387.4,26386.4 44 | 42,"{'lastTraded': None, 'bid': 26393.6, 'ask': 26395.2}","{'lastTraded': None, 'bid': 26394.6, 'ask': 26396.2}",1110,"{'lastTraded': None, 'bid': 26381.6, 'ask': 26383.2}","{'lastTraded': None, 'bid': 26386.6, 'ask': 26388.2}",2019:04:13-03:30:00,26387.4,26382.4,26395.4,26394.4 45 | 43,"{'lastTraded': None, 'bid': 26391.1, 'ask': 26392.7}","{'lastTraded': None, 'bid': 26395.1, 'ask': 26396.7}",1428,"{'lastTraded': None, 'bid': 26380.6, 'ask': 26382.2}","{'lastTraded': None, 'bid': 26393.1, 'ask': 26394.7}",2019:04:13-03:35:00,26393.9,26381.4,26395.9,26391.9 46 | 44,"{'lastTraded': None, 'bid': 26385.1, 'ask': 26386.7}","{'lastTraded': None, 'bid': 26391.6, 'ask': 26393.2}",1211,"{'lastTraded': None, 'bid': 26382.6, 'ask': 26384.2}","{'lastTraded': None, 'bid': 26390.6, 'ask': 26392.2}",2019:04:13-03:40:00,26391.4,26383.4,26392.4,26385.9 47 | 45,"{'lastTraded': None, 'bid': 26389.1, 'ask': 26390.7}","{'lastTraded': None, 'bid': 26390.6, 'ask': 26392.2}",1211,"{'lastTraded': None, 'bid': 26378.6, 'ask': 26380.2}","{'lastTraded': None, 'bid': 26384.6, 'ask': 26386.2}",2019:04:13-03:45:00,26385.4,26379.4,26391.4,26389.9 48 | 46,"{'lastTraded': None, 'bid': 26384.6, 'ask': 26386.2}","{'lastTraded': None, 'bid': 26390.6, 'ask': 26392.2}",1715,"{'lastTraded': None, 'bid': 26378.6, 'ask': 26380.2}","{'lastTraded': None, 'bid': 26389.6, 'ask': 26391.2}",2019:04:13-03:50:00,26390.4,26379.4,26391.4,26385.4 49 | 47,"{'lastTraded': None, 'bid': 26408.6, 'ask': 26410.2}","{'lastTraded': None, 'bid': 26410.6, 'ask': 26412.2}",4625,"{'lastTraded': None, 'bid': 26383.6, 'ask': 26385.2}","{'lastTraded': None, 'bid': 26383.6, 'ask': 26385.2}",2019:04:13-03:55:00,26384.4,26384.4,26411.4,26409.4 50 | 48,"{'lastTraded': None, 'bid': 26403.5, 'ask': 26407.3}","{'lastTraded': None, 'bid': 26407.6, 'ask': 26410.3}",2368,"{'lastTraded': None, 'bid': 26392.5, 'ask': 26396.3}","{'lastTraded': None, 'bid': 26407.6, 'ask': 26409.2}",2019:04:13-04:00:00,26408.4,26394.4,26408.95,26405.4 51 | 49,"{'lastTraded': None, 'bid': 26399.5, 'ask': 26403.3}","{'lastTraded': None, 'bid': 26406.5, 'ask': 26410.3}",982,"{'lastTraded': None, 'bid': 26397.5, 'ask': 26401.3}","{'lastTraded': None, 'bid': 26404.5, 'ask': 26408.3}",2019:04:13-04:05:00,26406.4,26399.4,26408.4,26401.4 52 | 50,"{'lastTraded': None, 'bid': 26400.6, 'ask': 26410.4}","{'lastTraded': None, 'bid': 26406.0, 'ask': 26410.6}",719,"{'lastTraded': None, 'bid': 26391.5, 'ask': 26395.3}","{'lastTraded': None, 'bid': 26399.0, 'ask': 26402.8}",2019:04:13-04:10:00,26400.9,26393.4,26408.3,26405.5 53 | 51,"{'lastTraded': None, 'bid': 26469.4, 'ask': 26479.2}","{'lastTraded': None, 'bid': 26471.0, 'ask': 26480.8}",7,"{'lastTraded': None, 'bid': 26396.9, 'ask': 26406.7}","{'lastTraded': None, 'bid': 26400.8, 'ask': 26410.6}",2019:04:13-04:15:00,26405.7,26401.8,26475.9,26474.3 54 | 52,"{'lastTraded': None, 'bid': 26470.0, 'ask': 26479.8}","{'lastTraded': None, 'bid': 26471.4, 'ask': 26481.2}",0,"{'lastTraded': None, 'bid': 26468.7, 'ask': 26478.5}","{'lastTraded': None, 'bid': 26469.0, 'ask': 26478.8}",2019:04:13-04:20:00,26473.9,26473.6,26476.3,26474.9 55 | 53,"{'lastTraded': None, 'bid': 26471.4, 'ask': 26481.2}","{'lastTraded': None, 'bid': 26471.4, 'ask': 26481.2}",0,"{'lastTraded': None, 'bid': 26470.0, 'ask': 26479.8}","{'lastTraded': None, 'bid': 26470.7, 'ask': 26480.5}",2019:04:13-04:25:00,26475.6,26474.9,26476.3,26476.3 56 | 54,"{'lastTraded': None, 'bid': 26403.0, 'ask': 26406.8}","{'lastTraded': None, 'bid': 26411.0, 'ask': 26414.8}",170,"{'lastTraded': None, 'bid': 26398.0, 'ask': 26401.8}","{'lastTraded': None, 'bid': 26406.0, 'ask': 26409.8}",2019:04:13-04:30:00,26407.9,26399.9,26412.9,26404.9 57 | 55,"{'lastTraded': None, 'bid': 26397.0, 'ask': 26400.8}","{'lastTraded': None, 'bid': 26401.0, 'ask': 26404.8}",74,"{'lastTraded': None, 'bid': 26396.0, 'ask': 26399.8}","{'lastTraded': None, 'bid': 26401.0, 'ask': 26404.8}",2019:04:13-04:35:00,26402.9,26397.9,26402.9,26398.9 58 | 56,"{'lastTraded': None, 'bid': 26401.0, 'ask': 26404.8}","{'lastTraded': None, 'bid': 26401.0, 'ask': 26404.8}",104,"{'lastTraded': None, 'bid': 26394.0, 'ask': 26397.8}","{'lastTraded': None, 'bid': 26398.0, 'ask': 26401.8}",2019:04:13-04:40:00,26399.9,26395.9,26402.9,26402.9 59 | 57,"{'lastTraded': None, 'bid': 26398.0, 'ask': 26401.8}","{'lastTraded': None, 'bid': 26403.0, 'ask': 26406.8}",76,"{'lastTraded': None, 'bid': 26394.0, 'ask': 26397.8}","{'lastTraded': None, 'bid': 26396.0, 'ask': 26399.8}",2019:04:13-04:45:00,26397.9,26395.9,26404.9,26399.9 60 | 58,"{'lastTraded': None, 'bid': 26406.0, 'ask': 26409.8}","{'lastTraded': None, 'bid': 26406.0, 'ask': 26409.8}",87,"{'lastTraded': None, 'bid': 26394.0, 'ask': 26397.8}","{'lastTraded': None, 'bid': 26396.0, 'ask': 26399.8}",2019:04:13-04:50:00,26397.9,26395.9,26407.9,26407.9 61 | 59,"{'lastTraded': None, 'bid': 26407.9, 'ask': 26417.7}","{'lastTraded': None, 'bid': 26414.0, 'ask': 26418.2}",134,"{'lastTraded': None, 'bid': 26404.0, 'ask': 26407.8}","{'lastTraded': None, 'bid': 26408.0, 'ask': 26411.8}",2019:04:13-04:55:00,26409.9,26405.9,26416.1,26412.8 62 | -------------------------------------------------------------------------------- /dataprovider/test_ig_service.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Run unit tests using 6 | nosetests -s -v 7 | """ 8 | 9 | import pandas as pd 10 | 11 | from ig_service import IGService 12 | from dataprovider.ig_service_config import * # defines username, password, api_key, acc_type, acc_number 13 | 14 | 15 | def test_ig_service(): 16 | ig_service = IGService(username, password, api_key, acc_type) 17 | ig_service.create_session() 18 | 19 | print("fetch_accounts") 20 | response = ig_service.fetch_accounts() 21 | print(response) 22 | assert(response['balance'][0]['available']>0) 23 | 24 | print("fetch_account_activity_by_period") 25 | response = ig_service.fetch_account_activity_by_period(10000) 26 | print(response) 27 | assert(isinstance(response, pd.DataFrame)) 28 | 29 | print("fetch_account_activity_by_period") 30 | response = ig_service.fetch_account_activity_by_period(10000) 31 | print(response) 32 | assert(isinstance(response, pd.DataFrame)) 33 | 34 | print("fetch_transaction_history_by_type_and_period") 35 | response = ig_service.fetch_transaction_history_by_type_and_period(10000, "ALL") 36 | print(response) 37 | assert(isinstance(response, pd.DataFrame)) 38 | 39 | print("fetch_open_positions") 40 | response = ig_service.fetch_open_positions() 41 | print(response) 42 | assert(isinstance(response, pd.DataFrame)) 43 | 44 | print("fetch_working_orders") 45 | response = ig_service.fetch_working_orders() 46 | print(response) 47 | assert(isinstance(response, pd.DataFrame)) 48 | 49 | print("fetch_top_level_navigation_nodes") 50 | response = ig_service.fetch_top_level_navigation_nodes() 51 | print(response) # dict with nodes and markets 52 | assert(isinstance(response, dict)) 53 | market_id = response['nodes']['id'].iloc[0] 54 | 55 | print("fetch_client_sentiment_by_instrument") 56 | response = ig_service.fetch_client_sentiment_by_instrument(market_id) 57 | print(response) 58 | assert(isinstance(response, dict)) 59 | 60 | print("fetch_related_client_sentiment_by_instrument") 61 | response = ig_service.fetch_related_client_sentiment_by_instrument(market_id) 62 | print(response) 63 | assert(isinstance(response, pd.DataFrame)) 64 | 65 | print("fetch_sub_nodes_by_node") 66 | node = market_id #? 67 | response = ig_service.fetch_sub_nodes_by_node(node) 68 | print(response) 69 | 70 | print("fetch_all_watchlists") 71 | response = ig_service.fetch_all_watchlists() 72 | print(response) 73 | watchlist_id = response['id'].iloc[2] 74 | print(watchlist_id) 75 | #epic = 76 | 77 | print("fetch_watchlist_markets") 78 | response = ig_service.fetch_watchlist_markets(watchlist_id) 79 | print(response) 80 | epic = response['epic'].iloc[0] 81 | 82 | print("fetch_market_by_epic") 83 | response = ig_service.fetch_market_by_epic(epic) 84 | print(response) 85 | 86 | 87 | print("search_markets") 88 | search_term = 'UNDEF' 89 | response = ig_service.search_markets(epic) 90 | print(response) 91 | 92 | if __name__ == "__main__": 93 | test_ig_service() 94 | -------------------------------------------------------------------------------- /mlcore/custom_gym.py: -------------------------------------------------------------------------------- 1 | __author__ = 'po' 2 | from collections import deque 3 | import numpy as np 4 | import math 5 | 6 | class CustomEnv(): 7 | def __init__(self, dataframe): 8 | self.dataframe = dataframe 9 | 10 | # initial balance 11 | self.balance = 1000 12 | self.actionSpace = 4 # buy, hold, sell, close 13 | self.observationSpace = len(dataframe.columns)+1 # ohlcv + net position aka longshortflag 14 | self.indexPointer = 0 15 | self.positions = [] 16 | self.fxRate = 1.36 17 | self.lotSize = 0.1 18 | self.stopLoss = 50 19 | self.takeProfit = 100 20 | self.longShortFlag = 0 # neutral 0 long 1 short -1 21 | self.logging=False 22 | 23 | 24 | def step(self, action): 25 | 26 | self._take_action(action) 27 | 28 | # reward engineering is reward balance? 29 | reward = self._get_reward() 30 | ob = self._getState() 31 | 32 | # done when account blowup or reached eod 33 | episode_over = self.balance <= 0 or self.indexPointer == len(self.dataframe.index)-1 34 | 35 | return ob, reward, episode_over, {} 36 | 37 | 38 | def reset(self): 39 | self.indexPointer = 0 40 | self.balance=1000 41 | return self._getState() 42 | 43 | def render(self, mode='human', close=False): 44 | pass 45 | 46 | def _getState(self): 47 | return np.append(self.dataframe.iloc[self.indexPointer, :].values, self.longShortFlag) 48 | 49 | def _checkInitialPositions(self, currentState): 50 | numPositionToClear = 0 51 | for position in self.positions[:]: 52 | 53 | # cut loss 54 | # long position and position - currentLow >= stoploss 55 | if self.longShortFlag == 1 and (position - currentState[2] >= self.stopLoss): 56 | if(self.logging):print("Long position, Entry: {}, Stoploss: {}, CurrentLow: {}".format(position, self.stopLoss, currentState[2])) 57 | self.balance -= self.stopLoss * self.fxRate * self.lotSize 58 | self.positions.remove(position) 59 | #numPositionToClear +=1 60 | continue 61 | # short position and position + highesthigh >= stoploss 62 | elif self.longShortFlag == -1 and (currentState[1] - position >= self.stopLoss): 63 | if(self.logging):print("Short position, Entry: {}, Stoploss: {}, CurrentHigh: {}".format(position, self.stopLoss, currentState[1])) 64 | self.balance -= self.stopLoss * self.fxRate * self.lotSize 65 | self.positions.remove(position) 66 | #numPositionToClear +=1 67 | continue 68 | 69 | 70 | # take profit 71 | # long position and highesthigh - position >= takeprofit 72 | if self.longShortFlag == 1 and (currentState[1] - position >= self.takeProfit): 73 | if(self.logging):print("Long position, Entry: {}, TakeProfit: {}, CurrentHigh: {}".format(position, self.takeProfit, currentState[1])) 74 | self.balance += self.takeProfit * self.fxRate * self.lotSize 75 | self.positions.remove(position) 76 | #numPositionToClear +=1 77 | continue 78 | # short position and position - lowestlow >= takeprofit 79 | elif self.longShortFlag == -1 and (position - currentState[2] >= self.takeProfit): 80 | if(self.logging):print("Short position, Entry: {}, TakeProfit: {}, CurrentLow: {}".format(position, self.takeProfit, currentState[2])) 81 | self.balance += self.takeProfit * self.fxRate * self.lotSize 82 | self.positions.remove(position) 83 | #numPositionToClear +=1 84 | continue 85 | 86 | #for _ in range(numPositionToClear): 87 | # self.positions.popleft() 88 | 89 | 90 | def _take_action(self, action): 91 | 92 | # close old position that hits limit 93 | currentState = self._getState() 94 | self._checkInitialPositions(currentState) 95 | 96 | self.indexPointer += 1 97 | # get new state 98 | newState = self._getState() 99 | # buy 100 | if action == 0: 101 | # double down into current position provided its in same or neutral direction 102 | if self.longShortFlag==1 or self.longShortFlag==0: 103 | # add long position for new state open 104 | self.positions.append(newState[0]) 105 | self.longShortFlag = 1 106 | 107 | # hold 108 | elif (action == 1): 109 | # nothing 110 | pass 111 | 112 | # sell 113 | elif (action == 2): 114 | # double down into current position provided its in same or neutral direction 115 | if self.longShortFlag==-1 or self.longShortFlag==0: 116 | self.positions.append(newState[0]) 117 | self.longShortFlag = -1 118 | 119 | elif (action == 3): 120 | for position in self.positions: 121 | # close position 122 | if self.longShortFlag==1: 123 | self.balance += (newState[0] - position) * self.fxRate * self.lotSize # 11 - 12 124 | elif self.longShortFlag ==-1: 125 | self.balance += (position - newState[0]) * self.fxRate * self.lotSize # 12 - 11 126 | 127 | # clear all position leaving length to 0 128 | self.positions.clear() 129 | # reset flag 130 | self.longShortFlag = 0 131 | 132 | 133 | 134 | 135 | 136 | 137 | def _get_reward(self): 138 | # abs(position - averageClose) 139 | # just the realised balance we should not consider fluctuations 140 | return self.balance-1000 -------------------------------------------------------------------------------- /mlcore/ml_model.py: -------------------------------------------------------------------------------- 1 | __author__ = 'po' 2 | import matplotlib.pyplot as plt 3 | import tensorflow as tf 4 | from keras import Sequential 5 | from keras.layers import Dense, Dropout, LSTM 6 | from keras.optimizers import Adam 7 | from sklearn import preprocessing 8 | 9 | 10 | class AlphaGenerator: 11 | def mnistTest(self): 12 | # test out model with mnist 13 | mnist = tf.keras.datasets.mnist 14 | (x_train, y_train), (x_test, y_test) = mnist.load_data() 15 | 16 | x_train = x_train / 255.0 17 | x_test = x_test / 255.0 18 | 19 | # 60k mnist images 20 | print(x_train.shape) 21 | # get 28*28 22 | print(x_train[0].shape) 23 | 24 | 25 | model = Sequential() 26 | # using dropouts to reduce bias 27 | # slice starting from second item till the end 28 | model.add(LSTM(128, input_shape=(x_train.shape[1:]), activation='relu', return_sequences=True)) 29 | model.add(Dropout(0.2)) 30 | 31 | # 128 unit defining the output dimensions 32 | model.add(LSTM(128, activation='relu')) 33 | model.add(Dropout(0.2)) 34 | 35 | # fully connected layers from previous seq 36 | model.add(Dense(32, activation='relu')) 37 | model.add(Dropout(0.2)) 38 | 39 | model.add(Dense(10, activation='softmax')) 40 | opt = Adam(lr=1e-3, decay=1e-5) 41 | # compile our model 42 | model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy']) 43 | 44 | # test our model epochs is the number of times it runs through the entire data set 45 | model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test)) 46 | #model.save('model_backup\\mnist_model_v1.h5') 47 | 48 | plt.imshow(x_test[0], cmap = plt.cm.binary) 49 | plt.show() 50 | # we use the Keras lib to handle the 1hot vector alternative we can use np.argmax 51 | prediction = model.predict_classes(x_test) 52 | print(prediction[0]) 53 | 54 | ''' 55 | we will need to normalise our data base on percent change 56 | we don't want huge fluctuation from volume to impact prediction everything will be relative to their own columns. 57 | ''' 58 | def preprocessing(self, dataframe): 59 | tempDataframe = dataframe.drop("futureLow", axis=1) 60 | 61 | # go through all of the columns 62 | for col in tempDataframe.columns: 63 | 64 | 65 | if col != "averageLow": # normalize all ... except for the futureLow itself! 66 | tempDataframe[col] = tempDataframe[col].pct_change() 67 | 68 | # scale between 0 and 1. 69 | tempDataframe[col] = preprocessing.scale(tempDataframe[col].values) 70 | 71 | 72 | 73 | # wait for better prediction algo for linear current tech cmi 74 | def steadyROI(self): 75 | pass 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /mlcore/rl_agent.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | import numpy as np 5 | import matplotlib.pyplot as plt 6 | import os 7 | from tensorboardX import SummaryWriter 8 | import time 9 | 10 | # Hyper Parameters 11 | BATCH_SIZE = 32 12 | LR = 0.01 # learning rate 13 | EPSILON = 0.95 # greedy policy 14 | GAMMA = 0.9 # reward discount 15 | TARGET_REPLACE_ITER = 100 # target update frequency 16 | MEMORY_CAPACITY = 10000 17 | ''' 18 | N_ACTIONS = env.action_space.n 19 | N_STATES = env.observation_space.shape[0] 20 | ENV_A_SHAPE = 0 if isinstance(env.action_space.sample(), 21 | int) else env.action_space.sample().shape # to confirm the shape 22 | ''' 23 | N_ACTIONS = 4 # retrieve from custom environment buy, hold, sell, close 24 | N_STATES = 6 # ohlcv + position direction 25 | ENV_A_SHAPE = 0 26 | PATH = "net.pkl" 27 | 28 | 29 | 30 | class Net(nn.Module): 31 | def __init__(self): 32 | super(Net, self).__init__() 33 | 34 | 35 | self.feature = nn.Sequential( 36 | nn.Linear(N_STATES, 100), 37 | nn.ReLU() 38 | ) 39 | 40 | self.advantage = nn.Sequential( 41 | nn.Linear(100, 100), 42 | nn.ReLU(), 43 | nn.Linear(100, N_ACTIONS) 44 | ) 45 | 46 | self.value = nn.Sequential( 47 | nn.Linear(100, 500), 48 | nn.ReLU(), 49 | nn.Linear(500, 1) 50 | ) 51 | 52 | 53 | def forward(self, x): 54 | x = self.feature(x) 55 | advantage = self.advantage(x) 56 | value = self.value(x) 57 | 58 | # split out value and advantage to form q target 59 | # because we want to know which frames are valuable to act on instead of the entire as a consequence 60 | return value + advantage - advantage.mean() 61 | 62 | 63 | class torchDQN(object): 64 | 65 | 66 | 67 | def __init__(self, tensorboard=False): 68 | self.tensorboard=tensorboard 69 | if(self.tensorboard): 70 | self.writer = SummaryWriter('logs/ddqn-{}'.format(int(time.time()))) 71 | 72 | # normal dqn sequential 73 | ''' 74 | self.eval_net = torch.nn.Sequential( 75 | torch.nn.Linear(N_STATES, 50), # 50 is number of dense layer out 76 | torch.nn.ReLU(), 77 | torch.nn.Linear(50, N_ACTIONS) 78 | ) 79 | 80 | self.target_net = torch.nn.Sequential( 81 | torch.nn.Linear(N_STATES, 50), # 50 is number of dense layer out 82 | torch.nn.ReLU(), 83 | torch.nn.Linear(50, N_ACTIONS) 84 | ) 85 | ''' 86 | 87 | # upgrade to dueling dqn almost the same just split our the target net 88 | self.eval_net, self.target_net = Net(), Net() 89 | 90 | self.optimizer = torch.optim.Adam(self.eval_net.parameters(), lr=LR) 91 | 92 | if (os.path.exists(PATH)): 93 | checkpoint = torch.load(PATH) 94 | self.eval_net.load_state_dict(checkpoint['eval']) 95 | self.target_net.load_state_dict(checkpoint['target']) 96 | self.optimizer.load_state_dict(checkpoint['opt']) 97 | #self.eval_net.train() # ensure that model is still in training mode 98 | self.eval_net.eval() 99 | 100 | self.learn_step_counter = 0 # for target updating 101 | self.memory_counter = 0 # for storing memory 102 | self.memory = np.zeros((MEMORY_CAPACITY, N_STATES * 2 + 2)) # initialize memory *2 cause old and new state + 2 cause action and reward 103 | 104 | self.loss_func = nn.MSELoss() 105 | 106 | def choose_action(self, x): 107 | x = torch.unsqueeze(torch.FloatTensor(x), 0) 108 | # input only one sample 109 | if np.random.uniform() < EPSILON: # greedy 110 | actions_value = self.eval_net.forward(x) 111 | action = torch.max(actions_value, 1)[1].data.numpy() 112 | action = action[0] if ENV_A_SHAPE == 0 else action.reshape(ENV_A_SHAPE) # return the argmax index 113 | 114 | else: # random 115 | action = np.random.randint(0, N_ACTIONS) 116 | action = action if ENV_A_SHAPE == 0 else action.reshape(ENV_A_SHAPE) 117 | return action 118 | 119 | def store_transition(self, s, a, r, s_): 120 | transition = np.hstack((s, [a, r], s_)) 121 | # replace the old memory with new memory 122 | index = self.memory_counter % MEMORY_CAPACITY 123 | self.memory[index, :] = transition 124 | self.memory_counter += 1 125 | 126 | def learn(self, globalStep): 127 | # target parameter update 128 | if self.learn_step_counter % TARGET_REPLACE_ITER == 0: 129 | self.target_net.load_state_dict(self.eval_net.state_dict()) 130 | self.learn_step_counter += 1 131 | 132 | # sample batch transitions 133 | sample_index = np.random.choice(MEMORY_CAPACITY, BATCH_SIZE) 134 | b_memory = self.memory[sample_index, :] 135 | b_s = torch.FloatTensor(b_memory[:, :N_STATES]) # old state till 4th column 136 | b_a = torch.LongTensor(b_memory[:, N_STATES:N_STATES + 1].astype(int)) # then 4th till 4th +1 137 | b_r = torch.FloatTensor(b_memory[:, N_STATES + 1:N_STATES + 2]) # then 4th +1 till 4th +2 138 | b_s_ = torch.FloatTensor(b_memory[:, -N_STATES:]) # -5 the remaining from behind is new state 139 | 140 | # q_eval w.r.t the action in experience 141 | q_eval = self.eval_net(b_s).gather(1, b_a) # shape (batch, 1) 142 | q_next = self.target_net(b_s_).detach() # detach from graph, don't backpropagate 143 | q_target = b_r + GAMMA * q_next.max(1)[0].view(BATCH_SIZE, 1) # shape (batch, 1) 144 | loss = self.loss_func(q_eval, q_target) 145 | 146 | self.optimizer.zero_grad() 147 | loss.backward() 148 | self.optimizer.step() 149 | if(self.tensorboard): 150 | self.writer.add_scalar('loss', loss.item(), global_step=globalStep) 151 | 152 | def save(self): 153 | torch.save({"eval": self.eval_net.state_dict(), 154 | "target": self.target_net.state_dict(), 155 | "opt" : self.optimizer.state_dict() 156 | }, PATH) # save entire net 157 | 158 | -------------------------------------------------------------------------------- /risk_adjusted_metrics.py: -------------------------------------------------------------------------------- 1 | __author__ = 'po' 2 | ''' 3 | Performance metrics to measure performance of strategy with respect to the risk adjusted returns 4 | some strategy might give higher returns but if the draw downs/volatility is a lot higher for that 1 or 2 percent 5 | it might not be worth 6 | Courtesy of TuningFinance: http://www.turingfinance.com/computational-investing-with-python-week-one/ 7 | ''' 8 | 9 | import math 10 | import numpy as np 11 | import numpy.random as nrand 12 | 13 | def prices(returns, base): 14 | # Converts returns into prices 15 | s = [base] 16 | for i in range(len(returns)): 17 | s.append(base * (1 + returns[i])) 18 | return np.array(s) 19 | 20 | 21 | def dd(returns, tau): 22 | # returns the draw-down fiven time period tau 23 | values = prices(returns, 100) 24 | pos = len(values) - 1 25 | pre = pos - tau 26 | drawdown = float('+inf') 27 | # find max drawdown given tau 28 | while pre >= 0: 29 | dd_i = (values[pos] / values[pre]) - 1 30 | if dd_i < drawdown: 31 | drawdown = dd_i 32 | 33 | pos, pre = pos - 1, pre - 1 34 | # drawdown should be pos 35 | return abs(drawdown) 36 | 37 | 38 | def max_dd(returns): 39 | # returns the max draw-down for any tau in (0, T), where T is the length of the return series 40 | max_drawdown = float('-inf') 41 | for i in range(0, len(returns)): 42 | drawdown_i = dd(returns, i) 43 | if drawdown_i > max_drawdown: 44 | max_drawdown = drawdown_i 45 | # max draw-down should be positive 46 | return abs(max_drawdown) 47 | 48 | 49 | # A higher Calmar Ratio suggests more returns at lower risk. 50 | def calmar_ratio(er, returns, rf): 51 | return (er-rf) / max_dd(returns) 52 | --------------------------------------------------------------------------------