Dukascopy Forex Tick Data

Abstract

In my exploration of world of big data and I became curious about tick data. Tick data is extremely granular and provides a great challenge for those looking to work on their optimization skills due to its size. Unfortunately, market data is almost always behind a pay wall or de-sampled to the point of uselessness. After discovering the Dukascopy api, I knew I wanted to make this data available for all in a more accessible format.

I have made this date set available via a torrent here :) UPDATE: The torrent is now also available via academictorrents.com

TotalsQuantities
Total Files463
Total Line Count8,495,770,706
Total Data Points33,983,082,824
Total Decompressed Size501 GB
Total Compressed Size61 GB
TotalsQuantities
Total Files463
Total Line Count8,495,770,706

Relations

File Formats


The data was collected from https://www.dukascopy.com/ via a public api that allows for the download of tick data on the hour level. These files come in the form of a .bi5 file. Th

These files where decompressed, then merged into yearly CSV’s named in the following convention. “AUDCHF_tick_UTC+0_00_2011.csv” or ‘Pair_Resolution_Timezone_Year.csv’

These CSV’s are split into 3 categories “Majors”, “Crosses”, “Commodities”

Majors, Crosses, and Commodities have had their timestamps modified so that they are in the official UTC ISO standard. This was originally done for a Postgresql database that quickly became obsolesced. Any files that have been modified are appended with a “-Parse”. These timestamps have been modified in the following format.

Millisecond timestamps to UTC +00:00 time
[2017.01.01 22:37:08.014] ----> [2017-01-01T22:37:08.014+00:00]

User Resources


For those looking to use this data in a live context or update it frequently, I have included a number of tools for both Windows and Linux that will be useful.

Windows

The ~/dukascopy/resources/windows contains a third party tool written in java that can download and convert Dukascopy’s .bi5 files. I have also included the latest zstd binaries from Zstandard Github page.

Linux

Linux is my daily driver in 99% of cases, so I have developed all my scraping tools using linux only tools. In the ~/dukascopy/resources/linux folder you will find a number of shell script and pyhton3 files that I used to collect this data. There are quite a few files in this directory but I will cover the core ones below.

download-day.py

This file is used to download a single symbol for a single day and then convert and merge all 24 .bi5 files it into a single csv.

#!/usr/bin/env python3

import argparse
import dukascopy

parser = argparse.ArgumentParser(description="This file is used to download a single symbol for a single day and then convert and merge all 24 .bi5 files it into a single csv.")
parser.add_argument("-d", "--dir", default=False, help="Set a directory for downloads")
parser.add_argument("-dt", "--date", help="Set a date to download and convert")
parser.add_argument("-sym", "--symbol", help="Spesify symbol to download")
args = parser.parse_args()

if args.symbol and args.date:
    if args.dir is False:
        out_dir = '/tmp/dukascopy/working/' + args.symbol.upper() + '/' + str(args.date)
    else:
        out_dir = args.dir + '/' + str(args.date)

    dukascopy.fetch_day(args.symbol, args.date, out_dir)

download-year.py

This file is used to download a single symbol for a full year and then convert and merge all .bi5 files it into a single csv.

#!/usr/bin/env python3

import argparse
import dukascopy

parser = argparse.ArgumentParser(description="This file is used to download a single symbol for a full year and then convert and merge all .bi5 files it into a single csv.")
parser.add_argument("-y", "--year", help="Year to download and convert")
parser.add_argument("-sym", "--symbol", help="Spesify symbol to download")
parser.add_argument("-d", "--dir", default=False, help="Set a directory for downloads")
parser.add_argument("-o", "--out_dir", default=False, help="Set a directory for file output")
args = parser.parse_args()


if args.symbol and args.year:
    if args.dir is False:
        working_dir = '/tmp/dukascopy/working/' + args.symbol.upper()
    else:
        working_dir = args.dir

    if args.out_dir is False:
        out_dir = '/tmp/dukascopy/'
    else:
        out_dir = args.out_dir + '/' + str(args.year)

    dukascopy.download_sym(args.symbol, args.year, working_dir)
    dukascopy.merge_to_year(working_dir, out_dir, args.symbol, args.year)

dukascopy.py

This file contains all the core logic for downloading and converting data from dukascopy.

#!/usr/bin/env python3

import os
import lzma
import time
import struct
import shutil
import pandas as pd
from datetime import timedelta, date


def scan_dir(path):
    files = set()
    for x in os.scandir(path):
        if x.is_file():
            files.add(x.path)

    return files


def bi5_to_csv(date_ts, out_dir, files):
    print('Starting Coversion of All .bi5 Files...')

    sort = sorted(files)
    chunk_size = struct.calcsize('>3i2f')
    data = []

    for bi5 in sort:

        try:
            size = os.path.getsize(bi5)
        except (IOError, OSError):
            break

        if size > 0:
            with lzma.open(bi5) as f:
                while True:
                    chunk = f.read(chunk_size)
                    if chunk:
                        data.append(struct.unpack('>3i2f', chunk))
                    else:
                        break

        os.remove(bi5)

    if not data:
        print('All Downloaded Files Where Empty!')
        return 1

    df = pd.DataFrame(data)
    df.columns = ['UTC', 'AskPrice', 'BidPrice', 'AskVolume', 'BidVolume']
    df.AskPrice = df.AskPrice / 100000
    df.BidPrice = df.BidPrice / 100000
    df.UTC = pd.TimedeltaIndex(df.UTC, 'ms')
    df.UTC = df.UTC.astype(str)
    df.UTC = df.UTC.replace(regex=['0 days'], value=[str(date_ts)])
    df.UTC = df.UTC.str[:-3]

    df.to_csv(out_dir + '/daily.csv', index=False)
    print('Finished Converting Files!')
    return 0


def download(url, out_dir):
    try:
        os.system('wget -q ' + url + ' -P ' + out_dir)
    except Exception:
        pass


def fetch_day(pair, date, out_dir):
    baseurl = "http://datafeed.dukascopy.com/datafeed/"
    timestamps = {date + "/" + h for h in {str(n).zfill(2) for n in range(0, 24)}}

    if os.path.exists(out_dir):
        shutil.rmtree(out_dir)
    os.makedirs(out_dir)

    print('Downloading Source Files for ' + pair.upper() + ' on ' + date + '...')
    for t in timestamps:
        url = baseurl + pair + "/" + t + "h_ticks.bi5"
        download(url, out_dir)
        time.sleep(.1)

    if scan_dir(out_dir):
        print('Finished Download!')
    else:
        print('No Files Were Downloaded')
        shutil.rmtree(out_dir)
        return

    dt = date.split('/')
    date_ts = dt[0] + '.' + str(int(dt[1]) + 1).zfill(2) + '.' + dt[2]
    status = bi5_to_csv(date_ts, out_dir, scan_dir(out_dir))
    if status == 1:
        shutil.rmtree(out_dir)
        return
    os.rename(out_dir + '/daily.csv', os.path.dirname(out_dir) + '/' + date_ts + '.csv')
    shutil.rmtree(out_dir)


def create_date_list(year):
    dates = set()

    def daterange(date1, date2):
        for n in range(int((date2 - date1).days)+1):
            yield date1 + timedelta(n)

    start_dt = date(int(year), 1, 1)
    end_dt = date(int(year), 12, 31)

    for dt in daterange(start_dt, end_dt):
        tmp_dt = dt.strftime("%Y/%m/%d")
        tmp_dt = tmp_dt.split('/')
        fdate = str(str(tmp_dt[0]).zfill(2) + '/' + str(int(tmp_dt[1]) - 1).zfill(2) + '/' + str(tmp_dt[2]).zfill(2))
        dates.add(fdate)

    return sorted(dates)


def download_sym(ticker, year, working_dir):
    dl_dates = create_date_list(year)
    for d in dl_dates:
        fetch_day(ticker, d, working_dir + '/' + d)
        print('----------------------------------------------------')


def merge_to_year(working_dir, out_dir, ticker, year):
    files = sorted({os.path.join(dp, f) for dp, dn, fn in os.walk(os.path.expanduser(working_dir)) for f in fn})
    print('Starting to Merge ' + str(len(files)) + ' Files...')
    df = pd.DataFrame(columns=['UTC', 'AskPrice', 'BidPrice', 'AskVolume', 'BidVolume'])

    for f in files:
        tmp_df = pd.read_csv(f, error_bad_lines=False)
        df = df.append(tmp_df)

    fname = ticker.upper() + '_tick_UTC+0_00_' + year + '.csv'
    print('Done Merging Files!')
    print('Exporting Data Now...')
    df.to_csv(out_dir + '/' + fname, index=False)
    print('Exported Data to ' + fname)
    shutil.rmtree(working_dir)

utc-timestamp-convert.py

This tad slow but works well enough. It requires the pandas project and parses timestamps into the UTC ISO standard. This is useful for those looking to maintain the format of new files with the those in this repo, or those looking to use this in a SQL database.

#!/usr/bin/env python3

# utc_timestamp_convert.py
#
# Convert Dukascopy milisecond timestamps to UTC +00:00 time
# I.E. [2017.01.01 22:37:08.014] ----> [2017-01-01T22:37:08.014+00:00]
#
# 1. Add headers to each csv. UTCtime,AskPrice,BidPrice,AskVolume,BidVolume
# 2. Convert First 3 "." with "-" in column 1
# 3. Repalce space with "T" in column 1
# 4. Append "+00:00" on the end of column 1
# 5. Export New CSV
# 6. Remove Old CSV

import os
import argparse
import pandas as pd


def parse_tick_downloader_csv(source):
    if os.path.exists(source) is False:
        print(source + ' Was NOT Found!')
        return

    if source.endswith('.gz') or source.endswith('.zst') or source.endswith('.zip'):
        print('Cannot Convert Compressed Files!')
        return

    if source.endswith('-Parse.csv'):
        print(source + ' Was Already Parsed!')
        return

    export_path = source[:-4] + '-Parse.csv'
    print('Reading Source CSV ' + source.split('/')[-1] + '...')
    df = pd.read_csv(source, error_bad_lines=False)

    print('Parsing Source CSV...')
    df.columns = ['UTC', 'AskPrice', 'BidPrice', 'AskVolume', 'BidVolume']
    df.UTC = df.UTC + '+00:00'
    df[['UTC', 'timetemp']] = df['UTC'].str.split(' ', expand=True)
    df.UTC.replace('\.', '-', inplace=True, regex=True)
    df.UTC = df.UTC + 'T' + df.timetemp
    df.drop(['timetemp'], axis=1, inplace=True)

    print('Exporting Parsed CSV to ' + export_path.split('/')[-1] + '...')
    df.to_csv(export_path, index=False)
    del df
    print('Finished Parsing CSV!')
    print('Removing Source File!')
    os.remove(source)
    print('')


parser = argparse.ArgumentParser(description="Convert Dukascopy milisecond timestamps to UTC +00:00 time.")
parser.add_argument("-f", "--file", metavar=('/full/file/path'), help="Full file path of CSV to convert.")
args = parser.parse_args()

if args.file:
    parse_tick_downloader_csv(args.file)

Full Stats


File_NameLine_CountDecompressed_SizeCompressed_Size
EURJPY_tick_UTC+0_00_2014-Parse.csv.zst236538541.3G188M
EURJPY_tick_UTC+0_00_2013-Parse.csv.zst281462061.6G224M
EURJPY_tick_UTC+0_00_2016-Parse.csv.zst523904793.0G390M
EURJPY_tick_UTC+0_00_2017-Parse.csv.zst183470381.1G144M
EURJPY_tick_UTC+0_00_2009-Parse.csv.zst241108281.2G171M
EURJPY_tick_UTC+0_00_2010-Parse.csv.zst221598591.2G161M
EURJPY_tick_UTC+0_00_2011-Parse.csv.zst241384071.4G188M
EURJPY_tick_UTC+0_00_2019-Parse.csv.zst423697902.5G324M
EURJPY_tick_UTC+0_00_2012-Parse.csv.zst223541671.3G177M
EURJPY_tick_UTC+0_00_2008-Parse.csv.zst460118692.3G271M
EURJPY_tick_UTC+0_00_2018-Parse.csv.zst316886241.8G257M
EURJPY_tick_UTC+0_00_2015-Parse.csv.zst342728321.9G268M
EURGBP_tick_UTC+0_00_2017-Parse.csv.zst196240861.2G156M
EURGBP_tick_UTC+0_00_2011-Parse.csv.zst218214391.3G167M
EURGBP_tick_UTC+0_00_2012-Parse.csv.zst16246578941M120M
EURGBP_tick_UTC+0_00_2018-Parse.csv.zst188551911.2G152M
EURGBP_tick_UTC+0_00_2016-Parse.csv.zst341302882.0G250M
EURGBP_tick_UTC+0_00_2013-Parse.csv.zst15767695957M122M
EURGBP_tick_UTC+0_00_2008-Parse.csv.zst349499951.8G185M
EURGBP_tick_UTC+0_00_2015-Parse.csv.zst212461051.2G163M
EURGBP_tick_UTC+0_00_2010-Parse.csv.zst199941461.1G141M
EURGBP_tick_UTC+0_00_2014-Parse.csv.zst13622858789M108M
EURGBP_tick_UTC+0_00_2009-Parse.csv.zst210262931.1G147M
EURGBP_tick_UTC+0_00_2019-Parse.csv.zst253269641.6G194M
EURNZD_tick_UTC+0_00_2010-Parse.csv.zst13888656744M96M
EURNZD_tick_UTC+0_00_2012-Parse.csv.zst211651311.2G152M
EURNZD_tick_UTC+0_00_2008-Parse.csv.zst5868949334M46M
EURNZD_tick_UTC+0_00_2009-Parse.csv.zst5822805324M45M
EURNZD_tick_UTC+0_00_2016-Parse.csv.zst342918502.0G234M
EURNZD_tick_UTC+0_00_2014-Parse.csv.zst193215931.1G136M
EURNZD_tick_UTC+0_00_2011-Parse.csv.zst212822751.3G167M
EURNZD_tick_UTC+0_00_2013-Parse.csv.zst208067971.2G157M
EURNZD_tick_UTC+0_00_2018-Parse.csv.zst308002001.9G221M
EURNZD_tick_UTC+0_00_2019-Parse.csv.zst285426541.7G196M
EURNZD_tick_UTC+0_00_2017-Parse.csv.zst330495721.9G229M
EURNZD_tick_UTC+0_00_2015-Parse.csv.zst312566101.8G227M
AUDNZD_tick_UTC+0_00_2014-Parse.csv.zst178353921006M127M
AUDNZD_tick_UTC+0_00_2018-Parse.csv.zst5121222291M40M
AUDNZD_tick_UTC+0_00_2012-Parse.csv.zst17240730978M126M
AUDNZD_tick_UTC+0_00_2009-Parse.csv.zst14203171723M91M
AUDNZD_tick_UTC+0_00_2017-Parse.csv.zst253524821.4G179M
AUDNZD_tick_UTC+0_00_2016-Parse.csv.zst292630071.7G199M
AUDNZD_tick_UTC+0_00_2010-Parse.csv.zst15214603789M106M
AUDNZD_tick_UTC+0_00_2008-Parse.csv.zst4065420226M37M
AUDNZD_tick_UTC+0_00_2011-Parse.csv.zst17453717994M130M
AUDNZD_tick_UTC+0_00_2019-Parse.csv.zst273341481.6G186M
AUDNZD_tick_UTC+0_00_2015-Parse.csv.zst195049921.1G138M
AUDNZD_tick_UTC+0_00_2013-Parse.csv.zst17394359989M129M
GBPAUD_tick_UTC+0_00_2014-Parse.csv.zst217781561.3G161M
GBPAUD_tick_UTC+0_00_2008-Parse.csv.zst6619203367M50M
GBPAUD_tick_UTC+0_00_2018-Parse.csv.zst375841532.3G279M
GBPAUD_tick_UTC+0_00_2010-Parse.csv.zst18644208978M129M
GBPAUD_tick_UTC+0_00_2016-Parse.csv.zst427509232.5G307M
GBPAUD_tick_UTC+0_00_2009-Parse.csv.zst6787729389M50M
GBPAUD_tick_UTC+0_00_2019-Parse.csv.zst270880081.7G194M
GBPAUD_tick_UTC+0_00_2011-Parse.csv.zst228677001.3G180M
GBPAUD_tick_UTC+0_00_2015-Parse.csv.zst265489801.5G197M
GBPAUD_tick_UTC+0_00_2013-Parse.csv.zst232008361.4G179M
GBPAUD_tick_UTC+0_00_2012-Parse.csv.zst243412261.4G180M
GBPAUD_tick_UTC+0_00_2017-Parse.csv.zst192932201.2G140M
AUDCAD_tick_UTC+0_00_2017-Parse.csv.zst237354451.4G179M
AUDCAD_tick_UTC+0_00_2011-Parse.csv.zst194471241.1G149M
AUDCAD_tick_UTC+0_00_2016-Parse.csv.zst374149872.2G260M
AUDCAD_tick_UTC+0_00_2010-Parse.csv.zst15876927836M110M
AUDCAD_tick_UTC+0_00_2008-Parse.csv.zst20406013M2.1M
AUDCAD_tick_UTC+0_00_2018-Parse.csv.zst4902640296M39M
AUDCAD_tick_UTC+0_00_2012-Parse.csv.zst204981201.2G144M
AUDCAD_tick_UTC+0_00_2009-Parse.csv.zst2967430181M31M
AUDCAD_tick_UTC+0_00_2013-Parse.csv.zst14705981881M113M
AUDCAD_tick_UTC+0_00_2019-Parse.csv.zst245714271.5G171M
AUDCAD_tick_UTC+0_00_2014-Parse.csv.zst14559897866M115M
AUDCAD_tick_UTC+0_00_2015-Parse.csv.zst224857591.4G167M
CADJPY_tick_UTC+0_00_2013-Parse.csv.zst198965241.2G157M
CADJPY_tick_UTC+0_00_2018-Parse.csv.zst5103618288M40M
CADJPY_tick_UTC+0_00_2012-Parse.csv.zst16390228898M121M
CADJPY_tick_UTC+0_00_2011-Parse.csv.zst16397007907M120M
CADJPY_tick_UTC+0_00_2016-Parse.csv.zst424110212.3G305M
CADJPY_tick_UTC+0_00_2017-Parse.csv.zst254191711.4G191M
CADJPY_tick_UTC+0_00_2015-Parse.csv.zst261470351.5G200M
CADJPY_tick_UTC+0_00_2008-Parse.csv.zst248608601.3G140M
CADJPY_tick_UTC+0_00_2010-Parse.csv.zst18258659904M127M
CADJPY_tick_UTC+0_00_2014-Parse.csv.zst189836761.1G148M
CADJPY_tick_UTC+0_00_2019-Parse.csv.zst264731751.5G179M
CADJPY_tick_UTC+0_00_2009-Parse.csv.zst16610668808M114M
AUDCHF_tick_UTC+0_00_2017-Parse.csv.zst186924451.1G140M
AUDCHF_tick_UTC+0_00_2011-Parse.csv.zst229821651.4G171M
AUDCHF_tick_UTC+0_00_2013-Parse.csv.zst16365893997M123M
AUDCHF_tick_UTC+0_00_2008-Parse.csv.zst3470112210M36M
AUDCHF_tick_UTC+0_00_2015-Parse.csv.zst187661431.1G134M
AUDCHF_tick_UTC+0_00_2018-Parse.csv.zst4905344276M37M
AUDCHF_tick_UTC+0_00_2009-Parse.csv.zst7410182447M57M
AUDCHF_tick_UTC+0_00_2012-Parse.csv.zst206368571.3G146M
AUDCHF_tick_UTC+0_00_2014-Parse.csv.zst16555379960M128M
AUDCHF_tick_UTC+0_00_2019-Parse.csv.zst203886591.2G143M
AUDCHF_tick_UTC+0_00_2010-Parse.csv.zst17429110934M119M
AUDCHF_tick_UTC+0_00_2016-Parse.csv.zst229328251.3G162M
NZDJPY_tick_UTC+0_00_2018-Parse.csv.zst191819601017M135M
NZDJPY_tick_UTC+0_00_2014-Parse.csv.zst187801721.1G144M
NZDJPY_tick_UTC+0_00_2016-Parse.csv.zst312979551.7G211M
NZDJPY_tick_UTC+0_00_2009-Parse.csv.zst4147895229M32M
NZDJPY_tick_UTC+0_00_2019-Parse.csv.zst215479771.2G143M
NZDJPY_tick_UTC+0_00_2013-Parse.csv.zst213527411.2G156M
NZDJPY_tick_UTC+0_00_2017-Parse.csv.zst237044551.3G169M
NZDJPY_tick_UTC+0_00_2011-Parse.csv.zst13319015745M101M
NZDJPY_tick_UTC+0_00_2010-Parse.csv.zst11349620571M77M
NZDJPY_tick_UTC+0_00_2012-Parse.csv.zst12887046708M90M
NZDJPY_tick_UTC+0_00_2008-Parse.csv.zst4157435225M32M
NZDJPY_tick_UTC+0_00_2015-Parse.csv.zst242446871.3G177M
AUDJPY_tick_UTC+0_00_2019-Parse.csv.zst235475041.3G174M
AUDJPY_tick_UTC+0_00_2016-Parse.csv.zst419605002.3G309M
AUDJPY_tick_UTC+0_00_2018-Parse.csv.zst4896693279M39M
AUDJPY_tick_UTC+0_00_2011-Parse.csv.zst220591341.2G170M
AUDJPY_tick_UTC+0_00_2014-Parse.csv.zst215006031.2G174M
AUDJPY_tick_UTC+0_00_2010-Parse.csv.zst209766611.1G150M
AUDJPY_tick_UTC+0_00_2015-Parse.csv.zst268693501.5G215M
AUDJPY_tick_UTC+0_00_2017-Parse.csv.zst256189541.5G194M
AUDJPY_tick_UTC+0_00_2012-Parse.csv.zst206750511.2G159M
AUDJPY_tick_UTC+0_00_2009-Parse.csv.zst205307061003M143M
AUDJPY_tick_UTC+0_00_2008-Parse.csv.zst343265251.7G190M
AUDJPY_tick_UTC+0_00_2013-Parse.csv.zst256590101.5G200M
USDSEK_tick_UTC+0_00_2008-Parse.csv.zst5267356282M40M
USDSEK_tick_UTC+0_00_2013-Parse.csv.zst13915744811M111M
USDSEK_tick_UTC+0_00_2016-Parse.csv.zst238369471.3G167M
USDSEK_tick_UTC+0_00_2011-Parse.csv.zst204513761.2G165M
USDSEK_tick_UTC+0_00_2017-Parse.csv.zst266674331.5G195M
USDSEK_tick_UTC+0_00_2015-Parse.csv.zst230470331.3G166M
USDSEK_tick_UTC+0_00_2019-Parse.csv.zst345069661.9G236M
USDSEK_tick_UTC+0_00_2010-Parse.csv.zst14741292778M106M
USDSEK_tick_UTC+0_00_2012-Parse.csv.zst177374721.1G136M
USDSEK_tick_UTC+0_00_2009-Parse.csv.zst12958060653M91M
USDSEK_tick_UTC+0_00_2014-Parse.csv.zst14729885871M111M
USDSEK_tick_UTC+0_00_2018-Parse.csv.zst291527551.6G206M
EURAUD_tick_UTC+0_00_2017-Parse.csv.zst196070831.1G147M
EURAUD_tick_UTC+0_00_2010-Parse.csv.zst209270861.1G147M
EURAUD_tick_UTC+0_00_2011-Parse.csv.zst229550431.3G168M
EURAUD_tick_UTC+0_00_2008-Parse.csv.zst282989881.5G169M
EURAUD_tick_UTC+0_00_2015-Parse.csv.zst328204291.9G250M
EURAUD_tick_UTC+0_00_2013-Parse.csv.zst266425541.5G204M
EURAUD_tick_UTC+0_00_2009-Parse.csv.zst211878751.1G149M
EURAUD_tick_UTC+0_00_2019-Parse.csv.zst313292231.8G231M
EURAUD_tick_UTC+0_00_2016-Parse.csv.zst470465092.6G350M
EURAUD_tick_UTC+0_00_2014-Parse.csv.zst231694971.3G171M
EURAUD_tick_UTC+0_00_2018-Parse.csv.zst294900791.7G233M
EURAUD_tick_UTC+0_00_2012-Parse.csv.zst257282851.5G191M
USDSGD_tick_UTC+0_00_2014-Parse.csv.zst7725995439M57M
USDSGD_tick_UTC+0_00_2013-Parse.csv.zst5927237337M46M
USDSGD_tick_UTC+0_00_2012-Parse.csv.zst4113313235M32M
USDSGD_tick_UTC+0_00_2017-Parse.csv.zst11085664624M83M
USDSGD_tick_UTC+0_00_2016-Parse.csv.zst13374724751M93M
USDSGD_tick_UTC+0_00_2011-Parse.csv.zst2695377155M23M
USDSGD_tick_UTC+0_00_2008-Parse.csv.zst1987952111M23M
USDSGD_tick_UTC+0_00_2015-Parse.csv.zst8424104476M65M
USDSGD_tick_UTC+0_00_2010-Parse.csv.zst118273765M7.8M
USDSGD_tick_UTC+0_00_2019-Parse.csv.zst14341254803M100M
USDSGD_tick_UTC+0_00_2018-Parse.csv.zst9671406546M73M
USDSGD_tick_UTC+0_00_2009-Parse.csv.zst470762.6M444K
EURCHF_tick_UTC+0_00_2013-Parse.csv.zst13510520765M104M
EURCHF_tick_UTC+0_00_2018-Parse.csv.zst15499477875M121M
EURCHF_tick_UTC+0_00_2009-Parse.csv.zst17329684886M116M
EURCHF_tick_UTC+0_00_2010-Parse.csv.zst15821864820M112M
EURCHF_tick_UTC+0_00_2008-Parse.csv.zst322819571.7G171M
EURCHF_tick_UTC+0_00_2011-Parse.csv.zst222500121.3G167M
EURCHF_tick_UTC+0_00_2015-Parse.csv.zst17453726981M126M
EURCHF_tick_UTC+0_00_2017-Parse.csv.zst15688437886M121M
EURCHF_tick_UTC+0_00_2012-Parse.csv.zst7760420439M56M
EURCHF_tick_UTC+0_00_2019-Parse.csv.zst214195681.2G150M
EURCHF_tick_UTC+0_00_2014-Parse.csv.zst8714913494M67M
EURCHF_tick_UTC+0_00_2016-Parse.csv.zst238418821.4G167M
GBPNZD_tick_UTC+0_00_2018-Parse.csv.zst288557951.7G202M
GBPNZD_tick_UTC+0_00_2017-Parse.csv.zst359756192.2G251M
GBPNZD_tick_UTC+0_00_2009-Parse.csv.zst5759872320M45M
GBPNZD_tick_UTC+0_00_2012-Parse.csv.zst178714621.1G132M
GBPNZD_tick_UTC+0_00_2013-Parse.csv.zst187151761.2G142M
GBPNZD_tick_UTC+0_00_2019-Parse.csv.zst400950962.4G270M
GBPNZD_tick_UTC+0_00_2008-Parse.csv.zst5548478308M44M
GBPNZD_tick_UTC+0_00_2011-Parse.csv.zst218609521.3G160M
GBPNZD_tick_UTC+0_00_2016-Parse.csv.zst406411712.4G280M
GBPNZD_tick_UTC+0_00_2010-Parse.csv.zst13875172721M94M
GBPNZD_tick_UTC+0_00_2015-Parse.csv.zst248002821.4G175M
GBPNZD_tick_UTC+0_00_2014-Parse.csv.zst205433061.2G154M
GBPCHF_tick_UTC+0_00_2009-Parse.csv.zst241999261.3G167M
GBPCHF_tick_UTC+0_00_2012-Parse.csv.zst200028841.2G151M
GBPCHF_tick_UTC+0_00_2018-Parse.csv.zst260389031.5G188M
GBPCHF_tick_UTC+0_00_2017-Parse.csv.zst2889539161M21M
GBPCHF_tick_UTC+0_00_2015-Parse.csv.zst276560261.6G200M
GBPCHF_tick_UTC+0_00_2014-Parse.csv.zst190903441.1G145M
GBPCHF_tick_UTC+0_00_2019-Parse.csv.zst368399662.1G253M
GBPCHF_tick_UTC+0_00_2011-Parse.csv.zst4879162278M36M
GBPCHF_tick_UTC+0_00_2008-Parse.csv.zst390327452.0G212M
GBPCHF_tick_UTC+0_00_2016-Parse.csv.zst378520912.1G269M
GBPCHF_tick_UTC+0_00_2013-Parse.csv.zst181768521.1G140M
GBPCHF_tick_UTC+0_00_2010-Parse.csv.zst201611331.1G137M
CADCHF_tick_UTC+0_00_2012-Parse.csv.zst14248160877M101M
CADCHF_tick_UTC+0_00_2018-Parse.csv.zst4898663279M36M
CADCHF_tick_UTC+0_00_2019-Parse.csv.zst215368781.2G141M
CADCHF_tick_UTC+0_00_2011-Parse.csv.zst14401014877M109M
CADCHF_tick_UTC+0_00_2014-Parse.csv.zst14450694840M102M
CADCHF_tick_UTC+0_00_2015-Parse.csv.zst195751851.1G129M
CADCHF_tick_UTC+0_00_2008-Parse.csv.zst3326009195M34M
CADCHF_tick_UTC+0_00_2017-Parse.csv.zst182650741.1G130M
CADCHF_tick_UTC+0_00_2010-Parse.csv.zst13672313727M91M
CADCHF_tick_UTC+0_00_2013-Parse.csv.zst12987531802M96M
CADCHF_tick_UTC+0_00_2009-Parse.csv.zst7107666436M55M
CADCHF_tick_UTC+0_00_2016-Parse.csv.zst228076981.3G158M
CHFJPY_tick_UTC+0_00_2008-Parse.csv.zst376835981.9G203M
CHFJPY_tick_UTC+0_00_2017-Parse.csv.zst196092591.2G150M
CHFJPY_tick_UTC+0_00_2015-Parse.csv.zst267316261.5G193M
CHFJPY_tick_UTC+0_00_2012-Parse.csv.zst17575579998M134M
CHFJPY_tick_UTC+0_00_2009-Parse.csv.zst214790531.1G146M
CHFJPY_tick_UTC+0_00_2011-Parse.csv.zst213722691.2G162M
CHFJPY_tick_UTC+0_00_2014-Parse.csv.zst210595641.3G160M
CHFJPY_tick_UTC+0_00_2013-Parse.csv.zst239720241.4G190M
CHFJPY_tick_UTC+0_00_2016-Parse.csv.zst374840372.2G276M
CHFJPY_tick_UTC+0_00_2018-Parse.csv.zst227063791.4G179M
CHFJPY_tick_UTC+0_00_2019-Parse.csv.zst204376671.2G153M
CHFJPY_tick_UTC+0_00_2010-Parse.csv.zst200881481002M144M
GBPCAD_tick_UTC+0_00_2016-Parse.csv.zst408936002.4G276M
GBPCAD_tick_UTC+0_00_2013-Parse.csv.zst173285291008M130M
GBPCAD_tick_UTC+0_00_2017-Parse.csv.zst186774761.1G131M
GBPCAD_tick_UTC+0_00_2009-Parse.csv.zst4419630271M41M
GBPCAD_tick_UTC+0_00_2010-Parse.csv.zst16655305878M110M
GBPCAD_tick_UTC+0_00_2019-Parse.csv.zst270289961.6G185M
GBPCAD_tick_UTC+0_00_2008-Parse.csv.zst3148815189M34M
GBPCAD_tick_UTC+0_00_2011-Parse.csv.zst240101721.4G186M
GBPCAD_tick_UTC+0_00_2012-Parse.csv.zst191528381.1G139M
GBPCAD_tick_UTC+0_00_2014-Parse.csv.zst203005461.3G146M
GBPCAD_tick_UTC+0_00_2018-Parse.csv.zst281714611.7G201M
GBPCAD_tick_UTC+0_00_2015-Parse.csv.zst265237161.6G180M
NZDCAD_tick_UTC+0_00_2010-Parse.csv.zst11159489582M73M
NZDCAD_tick_UTC+0_00_2014-Parse.csv.zst14226388886M104M
NZDCAD_tick_UTC+0_00_2008-Parse.csv.zst3996818222M30M
NZDCAD_tick_UTC+0_00_2015-Parse.csv.zst219093141.4G156M
NZDCAD_tick_UTC+0_00_2009-Parse.csv.zst4333460241M32M
NZDCAD_tick_UTC+0_00_2016-Parse.csv.zst301814721.9G198M
NZDCAD_tick_UTC+0_00_2013-Parse.csv.zst12779796776M95M
NZDCAD_tick_UTC+0_00_2019-Parse.csv.zst180404571.1G118M
NZDCAD_tick_UTC+0_00_2017-Parse.csv.zst183040121.1G122M
NZDCAD_tick_UTC+0_00_2011-Parse.csv.zst14921121859M111M
NZDCAD_tick_UTC+0_00_2018-Parse.csv.zst171132511023M113M
NZDCAD_tick_UTC+0_00_2012-Parse.csv.zst12939641750M92M
NZDCHF_tick_UTC+0_00_2014-Parse.csv.zst15121767849M104M
NZDCHF_tick_UTC+0_00_2009-Parse.csv.zst4641244258M33M
NZDCHF_tick_UTC+0_00_2013-Parse.csv.zst16014325914M112M
NZDCHF_tick_UTC+0_00_2018-Parse.csv.zst16688543942M116M
NZDCHF_tick_UTC+0_00_2019-Parse.csv.zst221879281.3G148M
NZDCHF_tick_UTC+0_00_2017-Parse.csv.zst185090011.1G130M
NZDCHF_tick_UTC+0_00_2016-Parse.csv.zst253521031.4G170M
NZDCHF_tick_UTC+0_00_2008-Parse.csv.zst4514307255M33M
NZDCHF_tick_UTC+0_00_2015-Parse.csv.zst215975641.2G145M
NZDCHF_tick_UTC+0_00_2010-Parse.csv.zst13432189698M85M
NZDCHF_tick_UTC+0_00_2012-Parse.csv.zst15928501909M106M
NZDCHF_tick_UTC+0_00_2011-Parse.csv.zst184511061.1G131M
USDNOK_tick_UTC+0_00_2017-Parse.csv.zst256955301.5G183M
USDNOK_tick_UTC+0_00_2018-Parse.csv.zst213698141.2G154M
USDNOK_tick_UTC+0_00_2014-Parse.csv.zst14069982810M106M
USDNOK_tick_UTC+0_00_2008-Parse.csv.zst5676866305M45M
USDNOK_tick_UTC+0_00_2019-Parse.csv.zst340679381.9G232M
USDNOK_tick_UTC+0_00_2016-Parse.csv.zst243966671.4G170M
USDNOK_tick_UTC+0_00_2011-Parse.csv.zst206389491.2G159M
USDNOK_tick_UTC+0_00_2010-Parse.csv.zst12435501646M87M
USDNOK_tick_UTC+0_00_2009-Parse.csv.zst12391858627M86M
USDNOK_tick_UTC+0_00_2013-Parse.csv.zst11701482669M93M
USDNOK_tick_UTC+0_00_2015-Parse.csv.zst225270031.3G169M
USDNOK_tick_UTC+0_00_2012-Parse.csv.zst16601763950M124M
EURNOK_tick_UTC+0_00_2013-Parse.csv.zst7831593457M63M
EURNOK_tick_UTC+0_00_2008-Parse.csv.zst44539723M3.0M
EURNOK_tick_UTC+0_00_2017-Parse.csv.zst12785408711M90M
EURNOK_tick_UTC+0_00_2015-Parse.csv.zst13304230754M99M
EURNOK_tick_UTC+0_00_2010-Parse.csv.zst3066015161M22M
EURNOK_tick_UTC+0_00_2009-Parse.csv.zst192517997M15M
EURNOK_tick_UTC+0_00_2016-Parse.csv.zst196159771.1G133M
EURNOK_tick_UTC+0_00_2011-Parse.csv.zst4820434289M39M
EURNOK_tick_UTC+0_00_2018-Parse.csv.zst11033410614M81M
EURNOK_tick_UTC+0_00_2012-Parse.csv.zst6846082409M54M
EURNOK_tick_UTC+0_00_2019-Parse.csv.zst198792171.1G129M
EURNOK_tick_UTC+0_00_2014-Parse.csv.zst10975012618M79M
GBPJPY_tick_UTC+0_00_2012-Parse.csv.zst217392861.3G166M
GBPJPY_tick_UTC+0_00_2008-Parse.csv.zst395743802.0G225M
GBPJPY_tick_UTC+0_00_2017-Parse.csv.zst363985712.0G281M
GBPJPY_tick_UTC+0_00_2010-Parse.csv.zst225824991.2G160M
GBPJPY_tick_UTC+0_00_2015-Parse.csv.zst338397052.0G267M
GBPJPY_tick_UTC+0_00_2018-Parse.csv.zst309402311.7G249M
GBPJPY_tick_UTC+0_00_2013-Parse.csv.zst300824581.7G234M
GBPJPY_tick_UTC+0_00_2014-Parse.csv.zst268788751.6G212M
GBPJPY_tick_UTC+0_00_2009-Parse.csv.zst226588921.2G158M
GBPJPY_tick_UTC+0_00_2011-Parse.csv.zst249391421.4G187M
GBPJPY_tick_UTC+0_00_2019-Parse.csv.zst306742901.7G229M
GBPJPY_tick_UTC+0_00_2016-Parse.csv.zst499852472.8G375M
EURSEK_tick_UTC+0_00_2010-Parse.csv.zst3689189192M27M
EURSEK_tick_UTC+0_00_2016-Parse.csv.zst17084888955M115M
EURSEK_tick_UTC+0_00_2009-Parse.csv.zst2083829110M17M
EURSEK_tick_UTC+0_00_2019-Parse.csv.zst236261211.4G152M
EURSEK_tick_UTC+0_00_2012-Parse.csv.zst8160766455M63M
EURSEK_tick_UTC+0_00_2013-Parse.csv.zst7533478421M60M
EURSEK_tick_UTC+0_00_2011-Parse.csv.zst5401214303M43M
EURSEK_tick_UTC+0_00_2014-Parse.csv.zst11686192659M84M
EURSEK_tick_UTC+0_00_2008-Parse.csv.zst36629119M2.6M
EURSEK_tick_UTC+0_00_2018-Parse.csv.zst14218511815M102M
EURSEK_tick_UTC+0_00_2017-Parse.csv.zst14172516784M97M
EURSEK_tick_UTC+0_00_2015-Parse.csv.zst13733214774M99M
EURCAD_tick_UTC+0_00_2018-Parse.csv.zst282134921.6G210M
EURCAD_tick_UTC+0_00_2011-Parse.csv.zst224773641.3G164M
EURCAD_tick_UTC+0_00_2013-Parse.csv.zst187904811.1G148M
EURCAD_tick_UTC+0_00_2014-Parse.csv.zst215923911.2G163M
EURCAD_tick_UTC+0_00_2017-Parse.csv.zst186989681.1G139M
EURCAD_tick_UTC+0_00_2008-Parse.csv.zst16554927894M137M
EURCAD_tick_UTC+0_00_2019-Parse.csv.zst304963221.7G203M
EURCAD_tick_UTC+0_00_2009-Parse.csv.zst19456297990M134M
EURCAD_tick_UTC+0_00_2015-Parse.csv.zst332134711.9G249M
EURCAD_tick_UTC+0_00_2012-Parse.csv.zst216162381.2G156M
EURCAD_tick_UTC+0_00_2016-Parse.csv.zst456723242.6G329M
EURCAD_tick_UTC+0_00_2010-Parse.csv.zst198366001.0G137M
XAUUSD_tick_UTC+0_00_2005-Parse.csv.zst10475251603M88M
XAUUSD_tick_UTC+0_00_2017-Parse.csv.zst458370102.6G278M
XAUUSD_tick_UTC+0_00_2018-Parse.csv.zst320240701.9G203M
XAUUSD_tick_UTC+0_00_2012-Parse.csv.zst231338831.4G175M
XAUUSD_tick_UTC+0_00_2007-Parse.csv.zst5369401299M48M
XAUUSD_tick_UTC+0_00_2010-Parse.csv.zst13117022746M112M
XAUUSD_tick_UTC+0_00_2014-Parse.csv.zst215674921.2G148M
XAUUSD_tick_UTC+0_00_2008-Parse.csv.zst3757614215M37M
XAUUSD_tick_UTC+0_00_2004-Parse.csv.zst7313747423M62M
XAUUSD_tick_UTC+0_00_2015-Parse.csv.zst257672781.5G165M
XAUUSD_tick_UTC+0_00_2009-Parse.csv.zst4111283234M39M
XAUUSD_tick_UTC+0_00_2019-Parse.csv.zst368139722.1G214M
XAUUSD_tick_UTC+0_00_2016-Parse.csv.zst461861462.6G288M
XAUUSD_tick_UTC+0_00_2006-Parse.csv.zst12838457697M109M
XAUUSD_tick_UTC+0_00_2013-Parse.csv.zst231757381.4G165M
XAUUSD_tick_UTC+0_00_2011-Parse.csv.zst175815701.1G155M
XAGUSD_tick_UTC+0_00_2016-Parse.csv.zst10225266565M72M
XAGUSD_tick_UTC+0_00_2004-Parse.csv.zst99169757M8.2M
XAGUSD_tick_UTC+0_00_2013-Parse.csv.zst10031331577M69M
XAGUSD_tick_UTC+0_00_2006-Parse.csv.zst1967114113M17M
XAGUSD_tick_UTC+0_00_2005-Parse.csv.zst160725891M14M
XAGUSD_tick_UTC+0_00_2014-Parse.csv.zst7387861411M46M
XAGUSD_tick_UTC+0_00_2017-Parse.csv.zst3979785218M32M
XAGUSD_tick_UTC+0_00_2008-Parse.csv.zst2690357150M23M
XAGUSD_tick_UTC+0_00_2007-Parse.csv.zst2228363131M19M
XAGUSD_tick_UTC+0_00_2009-Parse.csv.zst3029252173M26M
XAGUSD_tick_UTC+0_00_2015-Parse.csv.zst6812255386M48M
XAGUSD_tick_UTC+0_00_2012-Parse.csv.zst9891642560M71M
XAGUSD_tick_UTC+0_00_2019-Parse.csv.zst7592167425M60M
XAGUSD_tick_UTC+0_00_2010-Parse.csv.zst3058836170M26M
XAGUSD_tick_UTC+0_00_2018-Parse.csv.zst4205107237M33M
XAGUSD_tick_UTC+0_00_2011-Parse.csv.zst11356627636M77M
BRENTCMDUSD_tick_UTC+0_00_2013-Parse.csv.zst5030991270M28M
BRENTCMDUSD_tick_UTC+0_00_2014-Parse.csv.zst4096551234M32M
BRENTCMDUSD_tick_UTC+0_00_2017-Parse.csv.zst6262688307M33M
BRENTCMDUSD_tick_UTC+0_00_2016-Parse.csv.zst5518749295M39M
BRENTCMDUSD_tick_UTC+0_00_2018-Parse.csv.zst5403010276M31M
BRENTCMDUSD_tick_UTC+0_00_2015-Parse.csv.zst6630620369M50M
BRENTCMDUSD_tick_UTC+0_00_2019-Parse.csv.zst7737232414M45M
GBPUSD_tick_UTC+0_00_2006-Parse.csv.zst4413127263M45M
GBPUSD_tick_UTC+0_00_2017-Parse.csv.zst227009091.3G180M
GBPUSD_tick_UTC+0_00_2007-Parse.csv.zst248360621.3G164M
GBPUSD_tick_UTC+0_00_2013-Parse.csv.zst177991281007M139M
GBPUSD_tick_UTC+0_00_2018-Parse.csv.zst214952221.2G174M
GBPUSD_tick_UTC+0_00_2016-Parse.csv.zst376698472.1G280M
GBPUSD_tick_UTC+0_00_2010-Parse.csv.zst18955100977M136M
GBPUSD_tick_UTC+0_00_2005-Parse.csv.zst4483870268M46M
GBPUSD_tick_UTC+0_00_2008-Parse.csv.zst333008761.7G193M
GBPUSD_tick_UTC+0_00_2011-Parse.csv.zst248656151.4G183M
GBPUSD_tick_UTC+0_00_2019-Parse.csv.zst306150591.7G229M
GBPUSD_tick_UTC+0_00_2014-Parse.csv.zst16564020977M137M
GBPUSD_tick_UTC+0_00_2009-Parse.csv.zst196707771004M140M
GBPUSD_tick_UTC+0_00_2004-Parse.csv.zst4861096292M51M
GBPUSD_tick_UTC+0_00_2012-Parse.csv.zst188977561.1G146M
GBPUSD_tick_UTC+0_00_2015-Parse.csv.zst235956341.4G191M
USDCAD_tick_UTC+0_00_2008-Parse.csv.zst206445931.1G104M
USDCAD_tick_UTC+0_00_2010-Parse.csv.zst13927122718M99M
USDCAD_tick_UTC+0_00_2014-Parse.csv.zst10310487582M85M
USDCAD_tick_UTC+0_00_2004-Parse.csv.zst3764997213M39M
USDCAD_tick_UTC+0_00_2009-Parse.csv.zst12148990620M87M
USDCAD_tick_UTC+0_00_2019-Parse.csv.zst211001391.2G151M
USDCAD_tick_UTC+0_00_2011-Parse.csv.zst15222267902M120M
USDCAD_tick_UTC+0_00_2016-Parse.csv.zst403727412.3G294M
USDCAD_tick_UTC+0_00_2007-Parse.csv.zst15651367804M100M
USDCAD_tick_UTC+0_00_2006-Parse.csv.zst3232187181M33M
USDCAD_tick_UTC+0_00_2018-Parse.csv.zst16718601941M130M
USDCAD_tick_UTC+0_00_2012-Parse.csv.zst15884906935M119M
USDCAD_tick_UTC+0_00_2017-Parse.csv.zst207668011.2G160M
USDCAD_tick_UTC+0_00_2013-Parse.csv.zst9381941535M75M
USDCAD_tick_UTC+0_00_2005-Parse.csv.zst3351916188M34M
USDCAD_tick_UTC+0_00_2015-Parse.csv.zst185497471.1G149M
USDJPY_tick_UTC+0_00_2018-Parse.csv.zst16203405956M137M
USDJPY_tick_UTC+0_00_2011-Parse.csv.zst11975760652M95M
USDJPY_tick_UTC+0_00_2016-Parse.csv.zst381082982.2G295M
USDJPY_tick_UTC+0_00_2014-Parse.csv.zst15406959901M121M
USDJPY_tick_UTC+0_00_2008-Parse.csv.zst373306461.9G210M
USDJPY_tick_UTC+0_00_2010-Parse.csv.zst15660976775M112M
USDJPY_tick_UTC+0_00_2017-Parse.csv.zst218169531.3G184M
USDJPY_tick_UTC+0_00_2005-Parse.csv.zst5345566314M55M
USDJPY_tick_UTC+0_00_2009-Parse.csv.zst17410860854M123M
USDJPY_tick_UTC+0_00_2006-Parse.csv.zst5257600309M54M
USDJPY_tick_UTC+0_00_2012-Parse.csv.zst10653861578M83M
USDJPY_tick_UTC+0_00_2013-Parse.csv.zst187462461.1G152M
USDJPY_tick_UTC+0_00_2019-Parse.csv.zst208518451.3G170M
USDJPY_tick_UTC+0_00_2004-Parse.csv.zst5436539320M56M
USDJPY_tick_UTC+0_00_2015-Parse.csv.zst201863701.2G160M
USDJPY_tick_UTC+0_00_2007-Parse.csv.zst288396181.5G185M
NZDUSD_tick_UTC+0_00_2014-Parse.csv.zst13322208784M102M
NZDUSD_tick_UTC+0_00_2018-Parse.csv.zst12390403699M97M
NZDUSD_tick_UTC+0_00_2019-Parse.csv.zst14438382815M108M
NZDUSD_tick_UTC+0_00_2011-Parse.csv.zst13442559777M103M
NZDUSD_tick_UTC+0_00_2012-Parse.csv.zst16772475970M124M
NZDUSD_tick_UTC+0_00_2009-Parse.csv.zst8350007427M61M
NZDUSD_tick_UTC+0_00_2010-Parse.csv.zst9983706518M71M
NZDUSD_tick_UTC+0_00_2016-Parse.csv.zst228514761.3G159M
NZDUSD_tick_UTC+0_00_2017-Parse.csv.zst15871905890M117M
NZDUSD_tick_UTC+0_00_2004-Parse.csv.zst2974848169M31M
NZDUSD_tick_UTC+0_00_2008-Parse.csv.zst197596861011M102M
NZDUSD_tick_UTC+0_00_2013-Parse.csv.zst13252368779M101M
NZDUSD_tick_UTC+0_00_2005-Parse.csv.zst3308071187M34M
NZDUSD_tick_UTC+0_00_2007-Parse.csv.zst14803683763M95M
NZDUSD_tick_UTC+0_00_2006-Parse.csv.zst2871298160M29M
NZDUSD_tick_UTC+0_00_2015-Parse.csv.zst16107314906M122M
EURUSD_tick_UTC+0_00_2010-Parse.csv.zst8270543460M77M
EURUSD_tick_UTC+0_00_2006-Parse.csv.zst13980850792M135M
EURUSD_tick_UTC+0_00_2018-Parse.csv.zst215322511.2G188M
EURUSD_tick_UTC+0_00_2016-Parse.csv.zst448275222.5G328M
EURUSD_tick_UTC+0_00_2007-Parse.csv.zst191664461.1G172M
EURUSD_tick_UTC+0_00_2017-Parse.csv.zst217040421.2G185M
EURUSD_tick_UTC+0_00_2009-Parse.csv.zst14159451747M115M
EURUSD_tick_UTC+0_00_2013-Parse.csv.zst186237461.1G159M
EURUSD_tick_UTC+0_00_2008-Parse.csv.zst287089141.6G251M
EURUSD_tick_UTC+0_00_2011-Parse.csv.zst257938021.5G211M
EURUSD_tick_UTC+0_00_2012-Parse.csv.zst234153131.3G190M
EURUSD_tick_UTC+0_00_2005-Parse.csv.zst10648340604M105M
EURUSD_tick_UTC+0_00_2004-Parse.csv.zst10862067616M108M
EURUSD_tick_UTC+0_00_2019-Parse.csv.zst291863111.7G239M
EURUSD_tick_UTC+0_00_2015-Parse.csv.zst242320021.4G197M
EURUSD_tick_UTC+0_00_2014-Parse.csv.zst17004494959M138M
AUDUSD_tick_UTC+0_00_2008-Parse.csv.zst8750757504M79M
AUDUSD_tick_UTC+0_00_2004-Parse.csv.zst15145600857M145M
AUDUSD_tick_UTC+0_00_2011-Parse.csv.zst213818081.2G168M
AUDUSD_tick_UTC+0_00_2017-Parse.csv.zst16754916944M133M
AUDUSD_tick_UTC+0_00_2012-Parse.csv.zst193401851.1G148M
AUDUSD_tick_UTC+0_00_2010-Parse.csv.zst14082448850M129M
AUDUSD_tick_UTC+0_00_2005-Parse.csv.zst9335370541M102M
AUDUSD_tick_UTC+0_00_2016-Parse.csv.zst339377011.9G244M
AUDUSD_tick_UTC+0_00_2013-Parse.csv.zst16156065964M125M
AUDUSD_tick_UTC+0_00_2018-Parse.csv.zst13635849773M114M
AUDUSD_tick_UTC+0_00_2015-Parse.csv.zst190810841.1G150M
AUDUSD_tick_UTC+0_00_2014-Parse.csv.zst14281560863M112M
AUDUSD_tick_UTC+0_00_2019-Parse.csv.zst15823257898M124M
AUDUSD_tick_UTC+0_00_2009-Parse.csv.zst11664969660M105M
AUDUSD_tick_UTC+0_00_2007-Parse.csv.zst11586909666M102M
AUDUSD_tick_UTC+0_00_2006-Parse.csv.zst14202674815M143M
USDCHF_tick_UTC+0_00_2017-Parse.csv.zst15923818950M130M
USDCHF_tick_UTC+0_00_2012-Parse.csv.zst188955411.2G145M
USDCHF_tick_UTC+0_00_2006-Parse.csv.zst4693422265M48M
USDCHF_tick_UTC+0_00_2016-Parse.csv.zst251302881.5G183M
USDCHF_tick_UTC+0_00_2008-Parse.csv.zst324672491.7G179M
USDCHF_tick_UTC+0_00_2007-Parse.csv.zst240643171.3G155M
USDCHF_tick_UTC+0_00_2010-Parse.csv.zst16742418873M121M
USDCHF_tick_UTC+0_00_2009-Parse.csv.zst17997567919M127M
USDCHF_tick_UTC+0_00_2004-Parse.csv.zst4871356275M50M
USDCHF_tick_UTC+0_00_2013-Parse.csv.zst15571977946M123M
USDCHF_tick_UTC+0_00_2018-Parse.csv.zst12927380783M107M
USDCHF_tick_UTC+0_00_2015-Parse.csv.zst15884020952M122M
USDCHF_tick_UTC+0_00_2014-Parse.csv.zst13374218813M107M
USDCHF_tick_UTC+0_00_2011-Parse.csv.zst198284521.2G150M
USDCHF_tick_UTC+0_00_2005-Parse.csv.zst4770542270M49M
USDCHF_tick_UTC+0_00_2019-Parse.csv.zst15145784909M117M
Avatar
Justin Timperio
Researcher and Freelance Dev

Justin is a freelance developer and private researcher.

Related