diff --git a/README.md b/README.md index da887dd..b75b14c 100644 --- a/README.md +++ b/README.md @@ -84,8 +84,11 @@ In findatapy/examples you will find several demos # Coding log +* 14 Aug 2019 + * Bloomberg downloaders now works with Pandas 0.25 + * Fixed Yahoo downloader to work with yfinance (replacing pandas_datareader for Yahoo) * 06 Aug 2019 - * Adding parameters to MarketDataRequest for user specified API keys (Quandl, FRED & Alphavantage) + * Adding parameters to MarketDataRequest for user specified API keys (Quandl, FRED & Alpha Vantage) * 23 Jul 2019 * Changed some rolling calculations in Calculation class to work with newer pandas * 12 Jul 2019 diff --git a/findatapy/conf/time_series_categories_fields.csv b/findatapy/conf/time_series_categories_fields.csv index bb19ffa..9dd8069 100644 --- a/findatapy/conf/time_series_categories_fields.csv +++ b/findatapy/conf/time_series_categories_fields.csv @@ -20,6 +20,18 @@ fx-implied-vol,bloomberg,daily,10AM,close,1-Jan-09 base-depos,bloomberg,daily,NYC,close,1-Jan-95 base-depos,bloomberg,daily,TOK,close,1-Jan-95 base-depos,bloomberg,daily,LDN,close,1-Jan-95 +crypto,bitcoincharts,tick,LOC,"close,volume",1-Jan-15 +crypto,poloniex,intraday,LOC,"close,high,low,open,quote-volume,volume,weighted-average",1-Jan-15 +crypto,poloniex,daily,LOC,"close,high,low,open,quote-volume,volume,weighted-average",1-Jan-15 +crypto,binance,intraday,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",1-Jan-15 +crypto,binance,daily,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",1-Jan-15 +crypto,bitfinex,intraday,LOC,"open,close,high,low,volume",1-Jan-15 +crypto,bitfinex,daily,LOC,"open,close,high,low,volume",1-Jan-15 +crypto,gdax,intraday,LOC,"low,high,open,close,volume",1-Jan-15 +crypto,gdax,daily,LOC,"low,high,open,close,volume",1-Jan-15 +crypto,kraken,intraday,LOC,"close,volume,buy-sell,market-limit,miscellaneous",1-Jan-15 +crypto,huobi,tick,LOC,"amount,close,count,high,low,open,volume",1-Jan-15 +crypto,huobi,daily,LOC,"amount,close,count,high,low,open,volume",1-Jan-15 ,,,,, ,,,,, ,,,,, diff --git a/findatapy/conf/time_series_tickers_list.csv b/findatapy/conf/time_series_tickers_list.csv index 0401123..17b49ec 100644 --- a/findatapy/conf/time_series_tickers_list.csv +++ b/findatapy/conf/time_series_tickers_list.csv @@ -290,592 +290,265 @@ events,bloomberg,daily,USD-US CPI Urban Consumers MoM SA,NYC,"close,actual-relea events,bloomberg,daily,USD-Conference Board Consumer Confidence SA 1985=100,NYC,"close,actual-release,survey-median,survey-average,survey-high,survey-low,number-observations,release-dt,release-date-time-full,first-revision,first-revision-date",CONCCONF Index,,,, events,bloomberg,daily,USD-US Durable Goods New Orders Industries MoM SA,NYC,"close,actual-release,survey-median,survey-average,survey-high,survey-low,number-observations,release-dt,release-date-time-full,first-revision,first-revision-date",DGNOCHNG Index,,,, events,bloomberg,daily,USD-US Industrial Production MoM 2007=100 SA,NYC,"close,actual-release,survey-median,survey-average,survey-high,survey-low,number-observations,release-dt,release-date-time-full,first-revision,first-revision-date",IP CHNG Index,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, -,,,,,,,,,, +crypto,bitcoincharts,tick,XBTPLN_abucoins,LOC,"close,volume",abucoinsPLN,LOC, +crypto,bitcoincharts,tick,XBTEUR_bc,LOC,"close,volume",bcEUR,LOC, +crypto,bitcoincharts,tick,XBTILS_bit2c,LOC,"close,volume",bit2cILS,LOC, +crypto,bitcoincharts,tick,XBTPLN_bitbay,LOC,"close,volume",bitbayPLN,LOC, +crypto,bitcoincharts,tick,XBTUSD_bitbay,LOC,"close,volume",bitbayUSD,LOC, +crypto,bitcoincharts,tick,XBTJPY_bitflyer,LOC,"close,volume",bitflyerJPY,LOC, +crypto,bitcoincharts,tick,XBTPLN_bitmarket,LOC,"close,volume",bitmarketPLN,LOC, +crypto,bitcoincharts,tick,XBTUSD_bitstamp,LOC,"close,volume",bitstampUSD,LOC, +crypto,bitcoincharts,tick,XBTIDR_bitx,LOC,"close,volume",bitxIDR,LOC, +crypto,bitcoincharts,tick,XBTMYR_bitx,LOC,"close,volume",bitxMYR,LOC, +crypto,bitcoincharts,tick,XBTNGN_bitx,LOC,"close,volume",bitxNGN,LOC, +crypto,bitcoincharts,tick,XBTZAR_bitx,LOC,"close,volume",bitxZAR,LOC, +crypto,bitcoincharts,tick,XBTUSD_btcalpha,LOC,"close,volume",btcalphaUSD,LOC, +crypto,bitcoincharts,tick,XBTJPY_btcbox,LOC,"close,volume",btcboxJPY,LOC, +crypto,bitcoincharts,tick,XBTEUR_btcde,LOC,"close,volume",btcdeEUR,LOC, +crypto,bitcoincharts,tick,XBTAUD_btcmarkets,LOC,"close,volume",btcmarketsAUD,LOC, +crypto,bitcoincharts,tick,XBTIDR_btcoid,LOC,"close,volume",btcoidIDR,LOC, +crypto,bitcoincharts,tick,XBTEUR_cex,LOC,"close,volume",cexEUR,LOC, +crypto,bitcoincharts,tick,XBTUSD_cex,LOC,"close,volume",cexUSD,LOC, +crypto,bitcoincharts,tick,XBTEUR_coinbase,LOC,"close,volume",coinbaseEUR,LOC, +crypto,bitcoincharts,tick,XBTGBP_coinbase,LOC,"close,volume",coinbaseGBP,LOC, +crypto,bitcoincharts,tick,XBTUSD_coinbase,LOC,"close,volume",coinbaseUSD,LOC, +crypto,bitcoincharts,tick,XBTJPY_coincheck,LOC,"close,volume",coincheckJPY,LOC, +crypto,bitcoincharts,tick,XBTEUR_coinfalcon,LOC,"close,volume",coinfalconEUR,LOC, +crypto,bitcoincharts,tick,XBTGBP_coinfloor,LOC,"close,volume",coinfloorGBP,LOC, +crypto,bitcoincharts,tick,XBTRUB_coinsbank,LOC,"close,volume",coinsbankRUB,LOC, +crypto,bitcoincharts,tick,XBTUSD_coinsbank,LOC,"close,volume",coinsbankUSD,LOC, +crypto,bitcoincharts,tick,XBTJPY_fisco,LOC,"close,volume",fiscoJPY,LOC, +crypto,bitcoincharts,tick,XBTBRL_foxbit,LOC,"close,volume",foxbitBRL,LOC, +crypto,bitcoincharts,tick,XBTUSD_getbtc,LOC,"close,volume",getbtcUSD,LOC, +crypto,bitcoincharts,tick,XBTEUR_itbit,LOC,"close,volume",itbitEUR,LOC, +crypto,bitcoincharts,tick,XBTSGD_itbit,LOC,"close,volume",itbitSGD,LOC, +crypto,bitcoincharts,tick,XBTUSD_itbit,LOC,"close,volume",itbitUSD,LOC, +crypto,bitcoincharts,tick,XBTKRW_korbit,LOC,"close,volume",korbitKRW,LOC, +crypto,bitcoincharts,tick,XBTCAD_kraken,LOC,"close,volume",krakenCAD,LOC, +crypto,bitcoincharts,tick,XBTEUR_kraken,LOC,"close,volume",krakenEUR,LOC, +crypto,bitcoincharts,tick,XBTJPY_kraken,LOC,"close,volume",krakenJPY,LOC, +crypto,bitcoincharts,tick,XBTUSD_kraken,LOC,"close,volume",krakenUSD,LOC, +crypto,bitcoincharts,tick,XBTUSD_lake,LOC,"close,volume",lakeUSD,LOC, +crypto,bitcoincharts,tick,XBTAUD_localbtc,LOC,"close,volume",localbtcAUD,LOC, +crypto,bitcoincharts,tick,XBTCAD_localbtc,LOC,"close,volume",localbtcCAD,LOC, +crypto,bitcoincharts,tick,XBTEUR_localbtc,LOC,"close,volume",localbtcEUR,LOC, +crypto,bitcoincharts,tick,XBTGBP_localbtc,LOC,"close,volume",localbtcGBP,LOC, +crypto,bitcoincharts,tick,XBTRUB_localbtc,LOC,"close,volume",localbtcRUB,LOC, +crypto,bitcoincharts,tick,XBTSEK_localbtc,LOC,"close,volume",localbtcSEK,LOC, +crypto,bitcoincharts,tick,XBTUSD_localbtc,LOC,"close,volume",localbtcUSD,LOC, +crypto,bitcoincharts,tick,XBTVEF_localbtc,LOC,"close,volume",localbtcVEF,LOC, +crypto,bitcoincharts,tick,XBTZAR_localbtc,LOC,"close,volume",localbtcZAR,LOC, +crypto,bitcoincharts,tick,XBTBRL_mrcd,LOC,"close,volume",mrcdBRL,LOC, +crypto,bitcoincharts,tick,XBTUSD_okcoin,LOC,"close,volume",okcoinUSD,LOC, +crypto,bitcoincharts,tick,XBTVEF_surbtc,LOC,"close,volume",surbtcVEF,LOC, +crypto,bitcoincharts,tick,XBTPKR_urdubit,LOC,"close,volume",urdubitPKR,LOC, +crypto,bitcoincharts,tick,XBTSLL_virwox,LOC,"close,volume",virwoxSLL,LOC, +crypto,bitcoincharts,tick,XBTEUR_wex,LOC,"close,volume",wexEUR,LOC, +crypto,bitcoincharts,tick,XBTRUB_wex,LOC,"close,volume",wexRUB,LOC, +crypto,bitcoincharts,tick,XBTUSD_wex,LOC,"close,volume",wexUSD,LOC, +crypto,bitcoincharts,tick,XBTJPY_zaif,LOC,"close,volume",zaifJPY,LOC, +crypto,bitcoincharts,tick,XBTEUR_zyado,LOC,"close,volume",zyadoEUR,LOC, +crypto,poloniex,"intraday,daily",XBTUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_BTC,LOC, +crypto,poloniex,"intraday,daily",XRPXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_XRP,LOC, +crypto,poloniex,"intraday,daily",XETXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_ETH,LOC, +crypto,poloniex,"intraday,daily",XRPUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_XRP,LOC, +crypto,poloniex,"intraday,daily",XETUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_ETH,LOC, +crypto,poloniex,"intraday,daily",STRXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_STR,LOC, +crypto,poloniex,"intraday,daily",BCHXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_BCH,LOC, +crypto,poloniex,"intraday,daily",XMRXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_XMR,LOC, +crypto,poloniex,"intraday,daily",BCHUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_BCH,LOC, +crypto,poloniex,"intraday,daily",STRUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_STR,LOC, +crypto,poloniex,"intraday,daily",NXTUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_NXT,LOC, +crypto,poloniex,"intraday,daily",XEMXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_XEM,LOC, +crypto,poloniex,"intraday,daily",NXTXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_NXT,LOC, +crypto,poloniex,"intraday,daily",XLCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_LTC,LOC, +crypto,poloniex,"intraday,daily",LSKXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_LSK,LOC, +crypto,poloniex,"intraday,daily",ETCUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_ETC,LOC, +crypto,poloniex,"intraday,daily",ETCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_ETC,LOC, +crypto,poloniex,"intraday,daily",DASHXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_DASH,LOC, +crypto,poloniex,"intraday,daily",MAIDXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_MAID,LOC, +crypto,poloniex,"intraday,daily",SCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_SC,LOC, +crypto,poloniex,"intraday,daily",BTSXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_BTS,LOC, +crypto,poloniex,"intraday,daily",STRATXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_STRAT,LOC, +crypto,poloniex,"intraday,daily",XLCUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_LTC,LOC, +crypto,poloniex,"intraday,daily",XCPXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_XCP,LOC, +crypto,poloniex,"intraday,daily",XMRUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_XMR,LOC, +crypto,poloniex,"intraday,daily",DOGEXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_DOGE,LOC, +crypto,poloniex,"intraday,daily",DGBXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_DGB,LOC, +crypto,poloniex,"intraday,daily",ZRXXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_ZRX,LOC, +crypto,poloniex,"intraday,daily",SYSXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_SYS,LOC, +crypto,poloniex,"intraday,daily",OMGXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_OMG,LOC, +crypto,poloniex,"intraday,daily",ZECXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_ZEC,LOC, +crypto,poloniex,"intraday,daily",REPXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_REP,LOC, +crypto,poloniex,"intraday,daily",DASHUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_DASH,LOC, +crypto,poloniex,"intraday,daily",FCTXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_FCT,LOC, +crypto,poloniex,"intraday,daily",STEEMXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_STEEM,LOC, +crypto,poloniex,"intraday,daily",BCNXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_BCN,LOC, +crypto,poloniex,"intraday,daily",REPUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_REP,LOC, +crypto,poloniex,"intraday,daily",ZECUSDT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",USDT_ZEC,LOC, +crypto,poloniex,"intraday,daily",BLKXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_BLK,LOC, +crypto,poloniex,"intraday,daily",GNTXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_GNT,LOC, +crypto,poloniex,"intraday,daily",EMC2XBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_EMC2,LOC, +crypto,poloniex,"intraday,daily",VRCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_VRC,LOC, +crypto,poloniex,"intraday,daily",ARDRXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_ARDR,LOC, +crypto,poloniex,"intraday,daily",GAMEXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_GAME,LOC, +crypto,poloniex,"intraday,daily",PASCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_PASC,LOC, +crypto,poloniex,"intraday,daily",STORJXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_STORJ,LOC, +crypto,poloniex,"intraday,daily",VTCXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_VTC,LOC, +crypto,poloniex,"intraday,daily",DCRXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_DCR,LOC, +crypto,poloniex,"intraday,daily",BURSTXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_BURST,LOC, +crypto,poloniex,"intraday,daily",GASXBT,LOC,"close,high,low,open,quote-volume,volume,weighted-average",BTC_GAS,LOC, +crypto,binance,"intraday,daily",XBTUSDT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BTCUSDT,LOC, +crypto,binance,"intraday,daily",XETXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ETHBTC,LOC, +crypto,binance,"intraday,daily",XETUSDT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ETHUSDT,LOC, +crypto,binance,"intraday,daily",TRXXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TRXBTC,LOC, +crypto,binance,"intraday,daily",IOSTXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",IOSTBTC,LOC, +crypto,binance,"intraday,daily",TRXXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TRXETH,LOC, +crypto,binance,"intraday,daily",VENXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",VENBTC,LOC, +crypto,binance,"intraday,daily",WTCXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",WTCBTC,LOC, +crypto,binance,"intraday,daily",TNTXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TNTBTC,LOC, +crypto,binance,"intraday,daily",CNDXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",CNDBTC,LOC, +crypto,binance,"intraday,daily",XRPXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",XRPBTC,LOC, +crypto,binance,"intraday,daily",ELFXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ELFBTC,LOC, +crypto,binance,"intraday,daily",XLMXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",XLMBTC,LOC, +crypto,binance,"intraday,daily",ICXXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ICXBTC,LOC, +crypto,binance,"intraday,daily",TNBXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TNBBTC,LOC, +crypto,binance,"intraday,daily",EOSXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",EOSBTC,LOC, +crypto,binance,"intraday,daily",NEOUSDT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",NEOUSDT,LOC, +crypto,binance,"intraday,daily",NEOXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",NEOBTC,LOC, +crypto,binance,"intraday,daily",EOSXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",EOSETH,LOC, +crypto,binance,"intraday,daily",BNBXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BNBBTC,LOC, +crypto,binance,"intraday,daily",BNBUSDT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BNBUSDT,LOC, +crypto,binance,"intraday,daily",VENXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",VENETH,LOC, +crypto,binance,"intraday,daily",ADAXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ADABTC,LOC, +crypto,binance,"intraday,daily",XRPXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",XRPETH,LOC, +crypto,binance,"intraday,daily",ICXXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ICXETH,LOC, +crypto,binance,"intraday,daily",IOSTXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",IOSTETH,LOC, +crypto,binance,"intraday,daily",POEXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",POEBTC,LOC, +crypto,binance,"intraday,daily",XLMXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",XLMETH,LOC, +crypto,binance,"intraday,daily",PIVXXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",PIVXBTC,LOC, +crypto,binance,"intraday,daily",HSRXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",HSRBTC,LOC, +crypto,binance,"intraday,daily",NEOXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",NEOETH,LOC, +crypto,binance,"intraday,daily",XVGXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",XVGBTC,LOC, +crypto,binance,"intraday,daily",CNDXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",CNDETH,LOC, +crypto,binance,"intraday,daily",TNTXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TNTETH,LOC, +crypto,binance,"intraday,daily",XLCXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",LTCBTC,LOC, +crypto,binance,"intraday,daily",LENDXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",LENDBTC,LOC, +crypto,binance,"intraday,daily",AMBXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",AMBBTC,LOC, +crypto,binance,"intraday,daily",TNBXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",TNBETH,LOC, +crypto,binance,"intraday,daily",ELFXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ELFETH,LOC, +crypto,binance,"intraday,daily",CDTXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",CDTBTC,LOC, +crypto,binance,"intraday,daily",NEBLXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",NEBLBTC,LOC, +crypto,binance,"intraday,daily",BCCXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BCCBTC,LOC, +crypto,binance,"intraday,daily",BCDXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BCDBTC,LOC, +crypto,binance,"intraday,daily",MANAXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",MANABTC,LOC, +crypto,binance,"intraday,daily",ADAXET,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ADAETH,LOC, +crypto,binance,"intraday,daily",VIBEXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",VIBEBTC,LOC, +crypto,binance,"intraday,daily",BATXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",BATBTC,LOC, +crypto,binance,"intraday,daily",GTOXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",GTOBTC,LOC, +crypto,binance,"intraday,daily",ENJXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",ENJBTC,LOC, +crypto,binance,"intraday,daily",IOTAXBT,LOC,"open,high,low,close,volume,quote-asset-volume,trade-numbers,taker-buy-base-asset-volume,taker-buy-quote-asset-volume",IOTABTC,LOC, +crypto,bitfinex,"intraday,daily",XBTUSD,LOC,"open,close,high,low,volume",BTCUSD,LOC, +crypto,bitfinex,"intraday,daily",XETUSD,LOC,"open,close,high,low,volume",ETHUSD,LOC, +crypto,bitfinex,"intraday,daily",XRPUSD,LOC,"open,close,high,low,volume",XRPUSD,LOC, +crypto,bitfinex,"intraday,daily",EOSUSD,LOC,"open,close,high,low,volume",EOSUSD,LOC, +crypto,bitfinex,"intraday,daily",XETXBT,LOC,"open,close,high,low,volume",ETHBTC,LOC, +crypto,bitfinex,"intraday,daily",USDTUSD,LOC,"open,close,high,low,volume",USDTUSD,LOC, +crypto,bitfinex,"intraday,daily",BTCEUR,LOC,"open,close,high,low,volume",BTCEUR,LOC, +crypto,bitfinex,"intraday,daily",NEOUSD,LOC,"open,close,high,low,volume",NEOUSD,LOC, +crypto,bitfinex,"intraday,daily",MIOTAUSD,LOC,"open,close,high,low,volume",MIOTAUSD,LOC, +crypto,bitfinex,"intraday,daily",XLCUSD,LOC,"open,close,high,low,volume",LTCUSD,LOC, +crypto,bitfinex,"intraday,daily",BCHUSD,LOC,"open,close,high,low,volume",BCHUSD,LOC, +crypto,bitfinex,"intraday,daily",BCHXBT,LOC,"open,close,high,low,volume",BCHBTC,LOC, +crypto,bitfinex,"intraday,daily",EOSXBT,LOC,"open,close,high,low,volume",EOSBTC,LOC, +crypto,bitfinex,"intraday,daily",OMGUSD,LOC,"open,close,high,low,volume",OMGUSD,LOC, +crypto,bitfinex,"intraday,daily",EOSXET,LOC,"open,close,high,low,volume",EOSETH,LOC, +crypto,bitfinex,"intraday,daily",ETCUSD,LOC,"open,close,high,low,volume",ETCUSD,LOC, +crypto,bitfinex,"intraday,daily",MIOTAXBT,LOC,"open,close,high,low,volume",MIOTABTC,LOC, +crypto,bitfinex,"intraday,daily",XRPXBT,LOC,"open,close,high,low,volume",XRPBTC,LOC, +crypto,bitfinex,"intraday,daily",DASHUSD,LOC,"open,close,high,low,volume",DASHUSD,LOC, +crypto,bitfinex,"intraday,daily",XLCXBT,LOC,"open,close,high,low,volume",LTCBTC,LOC, +crypto,bitfinex,"intraday,daily",NEOXBT,LOC,"open,close,high,low,volume",NEOBTC,LOC, +crypto,bitfinex,"intraday,daily",ELFUSD,LOC,"open,close,high,low,volume",ELFUSD,LOC, +crypto,bitfinex,"intraday,daily",XMRUSD,LOC,"open,close,high,low,volume",XMRUSD,LOC, +crypto,bitfinex,"intraday,daily",ELFXBT,LOC,"open,close,high,low,volume",ELFBTC,LOC, +crypto,bitfinex,"intraday,daily",OMGXBT,LOC,"open,close,high,low,volume",OMGBTC,LOC, +crypto,bitfinex,"intraday,daily",TRXUSD,LOC,"open,close,high,low,volume",TRXUSD,LOC, +crypto,bitfinex,"intraday,daily",ZECUSD,LOC,"open,close,high,low,volume",ZECUSD,LOC, +crypto,bitfinex,"intraday,daily",DASHXBT,LOC,"open,close,high,low,volume",DASHBTC,LOC, +crypto,bitfinex,"intraday,daily",ETCXBT,LOC,"open,close,high,low,volume",ETCBTC,LOC, +crypto,bitfinex,"intraday,daily",ZECXBT,LOC,"open,close,high,low,volume",ZECBTC,LOC, +crypto,bitfinex,"intraday,daily",XMRXBT,LOC,"open,close,high,low,volume",XMRBTC,LOC, +crypto,bitfinex,"intraday,daily",ELFXET,LOC,"open,close,high,low,volume",ELFETH,LOC, +crypto,bitfinex,"intraday,daily",MIOTAXET,LOC,"open,close,high,low,volume",MIOTAETH,LOC, +crypto,bitfinex,"intraday,daily",TRXXBT,LOC,"open,close,high,low,volume",TRXBTC,LOC, +crypto,bitfinex,"intraday,daily",BTGUSD,LOC,"open,close,high,low,volume",BTGUSD,LOC, +crypto,bitfinex,"intraday,daily",GNTUSD,LOC,"open,close,high,low,volume",GNTUSD,LOC, +crypto,bitfinex,"intraday,daily",TNBUSD,LOC,"open,close,high,low,volume",TNBUSD,LOC, +crypto,bitfinex,"intraday,daily",BTGXBT,LOC,"open,close,high,low,volume",BTGBTC,LOC, +crypto,bitfinex,"intraday,daily",MIOTAEUR,LOC,"open,close,high,low,volume",MIOTAEUR,LOC, +crypto,bitfinex,"intraday,daily",AIDUSD,LOC,"open,close,high,low,volume",AIDUSD,LOC, +crypto,bitfinex,"intraday,daily",NEOXET,LOC,"open,close,high,low,volume",NEOETH,LOC, +crypto,bitfinex,"intraday,daily",SANUSD,LOC,"open,close,high,low,volume",SANUSD,LOC, +crypto,bitfinex,"intraday,daily",QTUMUSD,LOC,"open,close,high,low,volume",QTUMUSD,LOC, +crypto,bitfinex,"intraday,daily",EDOUSD,LOC,"open,close,high,low,volume",EDOUSD,LOC, +crypto,bitfinex,"intraday,daily",SNTUSD,LOC,"open,close,high,low,volume",SNTUSD,LOC, +crypto,bitfinex,"intraday,daily",QSHUSD,LOC,"open,close,high,low,volume",QSHUSD,LOC, +crypto,bitfinex,"intraday,daily",GNTXBT,LOC,"open,close,high,low,volume",GNTBTC,LOC, +crypto,bitfinex,"intraday,daily",BCHXET,LOC,"open,close,high,low,volume",BCHETH,LOC, +crypto,bitfinex,"intraday,daily",SNGUSD,LOC,"open,close,high,low,volume",SNGUSD,LOC, +crypto,bitfinex,"intraday,daily",ZRXUSD,LOC,"open,close,high,low,volume",ZRXUSD,LOC, +crypto,gdax,"intraday,daily",XBTUSD,LOC,"low,high,open,close,volume",BTC-USD,LOC, +crypto,gdax,"intraday,daily",XETUSD,LOC,"low,high,open,close,volume",ETH-USD,LOC, +crypto,gdax,"intraday,daily",XLCUSD,LOC,"low,high,open,close,volume",LTC-USD,LOC, +crypto,gdax,"intraday,daily",XBTEUR,LOC,"low,high,open,close,volume",BTC-EUR,LOC, +crypto,gdax,"intraday,daily",XETXBT,LOC,"low,high,open,close,volume",ETH-BTC,LOC, +crypto,gdax,"intraday,daily",XBTGBP,LOC,"low,high,open,close,volume",BTC-GBP,LOC, +crypto,gdax,"intraday,daily",XLCXBT,LOC,"low,high,open,close,volume",LTC-BTC,LOC, +crypto,kraken,tick,XBTEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XBTEUR,LOC, +crypto,kraken,tick,XETEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETHEUR,LOC, +crypto,kraken,tick,XETUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETHUSD,LOC, +crypto,kraken,tick,XBTUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XBTUSD,LOC, +crypto,kraken,tick,XETXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETHXBT,LOC, +crypto,kraken,tick,XRPEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XRPEUR,LOC, +crypto,kraken,tick,XRPUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XRPUSD,LOC, +crypto,kraken,tick,XRPXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XRPXBT,LOC, +crypto,kraken,tick,XLMXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XLMXBT,LOC, +crypto,kraken,tick,EOSXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",EOSXBT,LOC, +crypto,kraken,tick,USDTUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",USDTUSD,LOC, +crypto,kraken,tick,BCHEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",BCHEUR,LOC, +crypto,kraken,tick,XLCEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",LTCEUR,LOC, +crypto,kraken,tick,ETCXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETCXBT,LOC, +crypto,kraken,tick,EOSXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",EOSETH,LOC, +crypto,kraken,tick,ETCEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETCEUR,LOC, +crypto,kraken,tick,BCHXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",BCHXBT,LOC, +crypto,kraken,tick,BCHUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",BCHUSD,LOC, +crypto,kraken,tick,XLCXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",LTCXBT,LOC, +crypto,kraken,tick,XLCUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",LTCUSD,LOC, +crypto,kraken,tick,ETCUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETCUSD,LOC, +crypto,kraken,tick,XMREUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XMREUR,LOC, +crypto,kraken,tick,ICNXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ICNXBT,LOC, +crypto,kraken,tick,DASHEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",DASHEUR,LOC, +crypto,kraken,tick,ETCXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETCETH,LOC, +crypto,kraken,tick,XMRUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XMRUSD,LOC, +crypto,kraken,tick,XMRXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XMRXBT,LOC, +crypto,kraken,tick,DASHXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",DASHXBT,LOC, +crypto,kraken,tick,REPEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",REPEUR,LOC, +crypto,kraken,tick,ZECEUR,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ZECEUR,LOC, +crypto,kraken,tick,ICNXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ICNETH,LOC, +crypto,kraken,tick,DASHUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",DASHUSD,LOC, +crypto,kraken,tick,XBTCAD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XBTCAD,LOC, +crypto,kraken,tick,ZECXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ZECXBT,LOC, +crypto,kraken,tick,REPXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",REPETH,LOC, +crypto,kraken,tick,XETCAD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETHCAD,LOC, +crypto,kraken,tick,GNOXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",GNOETH,LOC, +crypto,kraken,tick,GNOXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",GNOXBT,LOC, +crypto,kraken,tick,REPXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",REPXBT,LOC, +crypto,kraken,tick,ZECUSD,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ZECUSD,LOC, +crypto,kraken,tick,MLNXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",MLNXBT,LOC, +crypto,kraken,tick,DOGEXBT,LOC,"close,volume,buy-sell,market-limit,miscellaneous",DOGEXBT,LOC, +crypto,kraken,tick,XBTJPY,LOC,"close,volume,buy-sell,market-limit,miscellaneous",XBTJPY,LOC, +crypto,kraken,tick,MLNXET,LOC,"close,volume,buy-sell,market-limit,miscellaneous",MLNETH,LOC, +crypto,kraken,tick,XETJPY,LOC,"close,volume,buy-sell,market-limit,miscellaneous",ETHJPY,LOC, +crypto,huobi,daily,XBTUSD,LOC,"amount,close,count,high,low,open,volume",btcusdt,LOC, +crypto,huobi,tick,XBTUSD,LOC,"amount,close,count,high,low,open,volume",btcusdt,LOC, \ No newline at end of file diff --git a/findatapy/market/datavendor.py b/findatapy/market/datavendor.py index 4744208..fc5545d 100644 --- a/findatapy/market/datavendor.py +++ b/findatapy/market/datavendor.py @@ -179,11 +179,11 @@ def translate_from_vendor_field(self, vendor_fields_list, market_data_request): # if we haven't set the configuration files for automatic configuration if market_data_request.vendor_fields is not None: - dictionary = dict(zip(market_data_request.vendor_fields, market_data_request.fields)) + dictionary = dict(zip(self.get_lower_case_list(market_data_request.vendor_fields), market_data_request.fields)) for vendor_field in vendor_fields_list: try: - fields_converted.append(dictionary[vendor_field]) + fields_converted.append(dictionary[vendor_field.lower()]) except: fields_converted.append(vendor_field) @@ -218,12 +218,12 @@ def translate_from_vendor_ticker(self, vendor_tickers_list, market_data_request) if market_data_request.vendor_tickers is not None: - dictionary = dict(zip(market_data_request.vendor_tickers, market_data_request.tickers)) + dictionary = dict(zip(self.get_lower_case_list(market_data_request.vendor_tickers), market_data_request.tickers)) tickers_stuff = [] for vendor_ticker in vendor_tickers_list: - tickers_stuff.append(dictionary[vendor_ticker]) + tickers_stuff.append(dictionary[vendor_ticker.lower()]) return tickers_stuff # [item for sublist in tickers_stuff for item in sublist] @@ -248,4 +248,9 @@ def translate_from_vendor_ticker(self, vendor_tickers_list, market_data_request) tickers_converted.append(v) - return tickers_converted \ No newline at end of file + return tickers_converted + + def get_lower_case_list(self, lst): + return [k.lower() for k in lst] + + diff --git a/findatapy/market/datavendorbbg.py b/findatapy/market/datavendorbbg.py index 8d152bc..05c40db 100644 --- a/findatapy/market/datavendorbbg.py +++ b/findatapy/market/datavendorbbg.py @@ -247,8 +247,12 @@ def get_reference_data(self, market_data_request_vendor, market_data_request): data_frame.columns = ticker_combined - # TODO coerce will be deprecated from pandas - data_frame = data_frame.convert_objects(convert_dates = 'coerce', convert_numeric= 'coerce') + # need to convert numerical and datetime columns separately post pandas 0.23 + data_frame = data_frame.apply(pandas.to_numeric, errors='ignore') + data_frame = data_frame.apply(pandas.to_datetime, errors='ignore') + + # TODO coerce will be deprecated from pandas 0.23.0 onwards) so remove! + # data_frame = data_frame.convert_objects(convert_dates = 'coerce', convert_numeric= 'coerce') return data_frame diff --git a/findatapy/market/datavendorweb.py b/findatapy/market/datavendorweb.py index 8a64491..728b0ad 100644 --- a/findatapy/market/datavendorweb.py +++ b/findatapy/market/datavendorweb.py @@ -364,6 +364,7 @@ def load_ticker(self, market_data_request): return data_frame def download_daily(self, market_data_request): + logger = LoggerManager().getLogger(__name__) trials = 0 data_frame = None @@ -430,6 +431,7 @@ def load_ticker(self, market_data_request): return data_frame def download_daily(self, market_data_request): + logger = LoggerManager().getLogger(__name__) trials = 0 data_frame = None @@ -450,6 +452,96 @@ def download_daily(self, market_data_request): ####################################################################################################################### +try: + import yfinance as yf +except: + pass + +class DataVendorYahoo(DataVendor): + + def __init__(self): + super(DataVendorYahoo, self).__init__() + + # implement method in abstract superclass + def load_ticker(self, market_data_request): + logger = LoggerManager().getLogger(__name__) + market_data_request_vendor = self.construct_vendor_market_data_request(market_data_request) + + logger.info("Request Yahoo data") + + data_frame = self.download_daily(market_data_request_vendor) + + if data_frame is None or data_frame.index is []: return None + + # convert from vendor to findatapy tickers/fields + if data_frame is not None: + try: + data_frame.columns = ['/'.join(col) for col in data_frame.columns.values] + except: + pass + + returned_tickers = data_frame.columns + + if data_frame is not None: + # tidy up tickers into a format that is more easily translatable + # we can often get multiple fields returned (even if we don't ask for them!) + # convert to lower case + #returned_fields = [(x.split(' - ')[1]).lower().replace(' ', '-') for x in returned_tickers] + #returned_fields = [x.replace('value', 'close') for x in returned_fields] # special case for close + + + returned_fields = [x.split('/')[0].lower() for x in returned_tickers] + + #returned_tickers = [x.replace('.', '/') for x in returned_tickers] + returned_tickers = [x.split('/')[1] for x in returned_tickers] + + fields = self.translate_from_vendor_field(returned_fields, market_data_request) + tickers = self.translate_from_vendor_ticker(returned_tickers, market_data_request) + + ticker_combined = [] + + for i in range(0, len(fields)): + ticker_combined.append(tickers[i] + "." + fields[i]) + + data_frame.columns = ticker_combined + data_frame.index.name = 'Date' + + logger.info("Completed request from Yahoo.") + + return data_frame + + def download_daily(self, market_data_request): + logger = LoggerManager().getLogger(__name__) + + trials = 0 + + data_frame = None + + ticker_list = ' '.join(market_data_request.tickers) + data_frame = yf.download(ticker_list, start=market_data_request.start_date, end=market_data_request.finish_date) + + while (trials < 5): + + + try: + data_frame = yf.download(ticker_list, start=market_data_request.start_date, end=market_data_request.finish_date) + + break + except Exception as e: + print(str(e)) + trials = trials + 1 + logger.info("Attempting... " + str(trials) + " request to download from Yahoo") + + if trials == 5: + logger.error("Couldn't download from ONS after several attempts!") + + if len(market_data_request.tickers) == 1: + data_frame.columns = [x + '/' + market_data_request.tickers[0] for x in data_frame.columns] + + return data_frame + +####################################################################################################################### + # for pandas 0.23 (necessary for older versions of pandas_datareader try: import pandas @@ -594,9 +686,7 @@ def load_ticker(self, market_data_request): market_data_request_vendor = self.construct_vendor_market_data_request(market_data_request) - self.logger.info("Request data from Poloniex") - - + logger.info("Request data from Poloniex") poloniex_url = 'https://poloniex.com/public?command=returnChartData¤cyPair={}&start={}&end={}&period={}' if market_data_request_vendor.freq == 'intraday': diff --git a/findatapy/market/marketdatagenerator.py b/findatapy/market/marketdatagenerator.py index 5c0cda6..0d2636a 100644 --- a/findatapy/market/marketdatagenerator.py +++ b/findatapy/market/marketdatagenerator.py @@ -97,7 +97,11 @@ def get_data_vendor(self, source): from findatapy.market.datavendorweb import DataVendorALFRED data_vendor = DataVendorALFRED() - elif source in ['yahoo', 'google', 'fred', 'oecd', 'eurostat', 'edgar-index']: + elif source == 'yahoo': + from findatapy.market.datavendorweb import DataVendorYahoo + data_vendor = DataVendorYahoo() + + elif source in ['google', 'fred', 'oecd', 'eurostat', 'edgar-index']: from findatapy.market.datavendorweb import DataVendorPandasWeb data_vendor = DataVendorPandasWeb() @@ -364,7 +368,7 @@ def fetch_single_time_series(self, market_data_request): # use pandas Timestamp, a bit more robust with weird dates (can fail if comparing date vs datetime) # if the expiry is before the start date of our download don't bother downloading this ticker - if expiry_date < start_date: + if expiry_date < start_date: tickers[i] = None # special case for futures-contracts which are intraday diff --git a/findatapy/timeseries/calculations.py b/findatapy/timeseries/calculations.py index 0496b2f..1e6cc17 100644 --- a/findatapy/timeseries/calculations.py +++ b/findatapy/timeseries/calculations.py @@ -26,7 +26,13 @@ except: # temporary fix to get compilation, need to rewrite regression code to get this to work # later versions of pandas no longer support OLS - from statsmodels.formula.api import ols + # + # fails with SciPy 1.3.0 unless we have the very latest version of StatsModels pip install statsmodels==0.10.0rc2 --pre + # + try: + from statsmodels.formula.api import ols + except: + pass from findatapy.timeseries.filter import Filter from findatapy.timeseries.filter import Calendar diff --git a/findatapy/util/dataconstants.py b/findatapy/util/dataconstants.py index 083aaac..55082cb 100644 --- a/findatapy/util/dataconstants.py +++ b/findatapy/util/dataconstants.py @@ -87,7 +87,7 @@ class DataConstants(object): # for some data providers might get better performance from 1 thread only! market_thread_no = { 'quandl' : 4, 'bloomberg' : 4, - 'yahoo' : 8, + 'yahoo' : 1, # yfinance already threads requests, so don't do it twice! 'other' : 4, 'dukascopy' : 8, 'fxcm' : 4} diff --git a/findatapy_examples/cryptodata_example.py b/findatapy_examples/cryptodata_example.py index 3be935b..64d22fc 100644 --- a/findatapy_examples/cryptodata_example.py +++ b/findatapy_examples/cryptodata_example.py @@ -23,9 +23,9 @@ market = Market(market_data_generator=MarketDataGenerator()) - # choose run_example ( 0 = all examples) + # choose run_example (0 = all examples) # example 1: bitcoincharts - # example 2: poloniex + # example 2: poloniex (needs to be fixed) # example 3: binance # example 4: bitfinex # example 5: gdax @@ -34,7 +34,7 @@ # Note we use XBT instead of BTC. Same for XET (ETH) and XLC (LTC). - run_example = 3 + run_example = 0 if run_example == 1 or run_example == 0: ### download data from bitcoincharts ### diff --git a/findatapy_examples/equitiesdata_example.py b/findatapy_examples/equitiesdata_example.py index e5294a2..0390604 100644 --- a/findatapy_examples/equitiesdata_example.py +++ b/findatapy_examples/equitiesdata_example.py @@ -36,7 +36,7 @@ print(df.tail(n=10)) - # NOTE: Yahoo API no longer works + # NOTE: uses yfinance for Yahoo API # download equities data from Yahoo md_request = MarketDataRequest( diff --git a/findatapy_examples/fxspotdata_example.py b/findatapy_examples/fxspotdata_example.py index 0b85fea..c203585 100644 --- a/findatapy_examples/fxspotdata_example.py +++ b/findatapy_examples/fxspotdata_example.py @@ -153,6 +153,7 @@ if run_example == 6 or run_example == 0: ####### FXCM (and compare with DukasCopy) examples + # let's download data for end of 2016/start 2017 for EUR/USD - the raw data has bid/ask, if we specify close, we calculate # it as the average diff --git a/setup.py b/setup.py index d6e6d66..ab805d2 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ 'pandas_datareader', 'fxcmpy', 'alpha_vantage', + 'yfinance', 'quandl', 'statsmodels', 'multiprocess',