cryptodatapy 0.2.23__py3-none-any.whl → 0.2.25__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cryptodatapy/conf/fields.csv +126 -126
- cryptodatapy/extract/datarequest.py +1 -0
- cryptodatapy/extract/exchanges/dydx.py +627 -42
- cryptodatapy/extract/getdata.py +7 -3
- cryptodatapy/transform/filter.py +2 -2
- {cryptodatapy-0.2.23.dist-info → cryptodatapy-0.2.25.dist-info}/METADATA +2 -2
- {cryptodatapy-0.2.23.dist-info → cryptodatapy-0.2.25.dist-info}/RECORD +9 -9
- {cryptodatapy-0.2.23.dist-info → cryptodatapy-0.2.25.dist-info}/WHEEL +1 -1
- {cryptodatapy-0.2.23.dist-info → cryptodatapy-0.2.25.dist-info}/LICENSE +0 -0
cryptodatapy/conf/fields.csv
CHANGED
@@ -1,126 +1,126 @@
|
|
1
|
-
id,name,description,category,subcategory,freq,unit,data_type,cryptocompare_id,coinmetrics_id,ccxt_id,glassnode_id,coingecko_id,tiingo_id,investpy_id,dbnomics_id,fred_id,yahoo_id,famafrench_id,wb_id
|
2
|
-
date,date,date and time,all,none,all,YYYY-MM-DD-HH:MM:SS,DatetimeIndex,time,time,datetime,t,,date,Date,period,DATE,Date,Date
|
3
|
-
ticker,ticker symbol,ticker symbol for asset or index,all,none,all,none,string,symbol,market,symbol,,,ticker,,,symbol,Ticker
|
4
|
-
bid,best bid price,highest price that a buyer is willing to pay for a unit of the asset,market,quotes,tick,quote currency units,Float64,,bid_price,,,,,,,,,,
|
5
|
-
ask,best ask price,lowest price that a seller is willing to sell a unit of the asset,market,quotes,tick,quote currency units,Float64,,ask_price,,,,,,,,,,
|
6
|
-
bid_size,bid size,The quantity/size of the highest price bid,market,quotes,tick,asset units,Float64,,bid_size,,,,,,,,,,
|
7
|
-
ask_size,ask size,The quantity/size of the lowest price ask,market,quotes,tick,asset units,Float64,,ask_size,,,,,,,,,,
|
8
|
-
trade_size,trade size,number of units of asset traded,market,trades,tick,asset units,Float64,,amount,,,,,,,,,,
|
9
|
-
trade_price,trade price,price of asset in units of quote currency,market,trades,tick,quote currency units,Float64,,price,,,,,,,,,,
|
10
|
-
trade_side,trade side ,"buy or sell, side taking liquidity",market,trades,tick,none,string,,side,,,,,,,,,,
|
11
|
-
open,open price,open price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,open,price_open,open,market/price_usd_ohlc,,open,Open,,,Open
|
12
|
-
high,high price,high price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,high,price_high,high,market/price_usd_ohlc,,high,High,,,High
|
13
|
-
low,low price,low price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,low,price_low,low,market/price_usd_ohlc,,low,Low,,,Low
|
14
|
-
close,close price,close price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,close,price_close,close,market/price_usd_ohlc,,close,Close,,close,Close,close
|
15
|
-
volume,volume,number of units of assets traded within time interval,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",asset units,Float64,volumefrom,volume,volume,,,volume,Volume,,,Volume
|
16
|
-
volume_quote_ccy,volume in quote ccy ,"value of assets traded within time interval in quote currency, or volume * close",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units ,Float64,volumeto,,,,,volumeNotional,,,,,,
|
17
|
-
trades,trades count,number of trades within time interval,market ,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",trades ,Int64,,,,,,tradesDone,,,,,,
|
18
|
-
open_adj,adjusted open price,"open price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjOpen,,,,,,
|
19
|
-
high_adj,adjusted high price,"high price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjHigh,,,,,,
|
20
|
-
low_adj,adjusted low price,"low price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjLow,,,,,,
|
21
|
-
close_adj,adjusted close price,"close price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjClose,,,,Adj Close,,
|
22
|
-
volume_adj,adjusted volume,"volume adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjVolume,,,,,,
|
23
|
-
ret,return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
24
|
-
tr,total return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
25
|
-
er,excess return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
26
|
-
vwap,volume-weighted avg price,average volume-weighted price of quote asset within time interval,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,vwap,,,,none,,,,,,
|
27
|
-
dividend,dividend,dividend paid out on ex-ante date,market,ohlc_bars,d ,quote currency units,Float64,,,,,,divCash
|
28
|
-
split,split,"factor used to adjust prices when a company splits, reverse splits, or pays a distribution",market,ohlc_bars,d ,factor ,Float64,,,,,,splitFactor,,,,,,
|
29
|
-
ref_rate_usd,reference rate in USD,price of asset in USD using an aggregation methodology,market,ohlc_bars,d ,quote currency units,Float64,,ReferenceRateUSD
|
30
|
-
oi,open interest,number of outstanding futures contracts that are open and have yet to be settled,market,derivatives,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",number of contracts,Float64,,contract_count,openInterestAmount,,,,,,,,,
|
31
|
-
funding_rate,funding rate,interest rate for holding derivative contract within time interval,market,derivatives,"1h, 2h, 4h, 8h, d, w, m, q",interest rate over time interval,Float64,,rate,fundingRate,derivatives/futures_funding_rate_perpetual
|
32
|
-
mkt_cap,market capitalization,usd value of circulating supply,market,market capitalization,"d, w, m, q",usd,Float64,,CapMrktCurUSD,,market/marketcap_usd,,,,,,,,
|
33
|
-
mkt_cap_real,"market capitalization, reaized","The sum USD value based on the USD closing price on the day that a native unit last moved (i.e., last transacted) for all native units",market,market capitalization,"d, w, m, q",usd,Float64,,CapRealUSD,,,,,,,,,,
|
34
|
-
mkt_cap_ff,"market capitalization, free float",The sum USD value of the free float supply. Also referred to as free float network value or free float market capitalization,market,market capitalization,"d, w, m, q",usd,Float64,,CapMrktFFUSD,,,,,,,,,,
|
35
|
-
bvin,bitcoin volatility index,Bitcoin Volatility Index (BVIN) is an implied volatility index that also represents the fair value of a bitcoin variance swap. The index is calculated by CryptoCompare using options data from Deribit and has been developed in collaboration with Carol Alexander and Arben Imeraj at the University of Sussex Business School. The index is suitable for use as a settlement price for bitcoin volatility futures. For more information on the methodology please see Alexander and Imeraj (2020).,market,indicators,"d, w, m, q",standard deviation,Float64,,,,indicators/bvin,,,,,,,,
|
36
|
-
add_act,active addresses,"number of unique addresses that were active in the network, as a sender or receiver, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,active_addresses,AdrActCnt,,addresses/active_count,,,,,,,,
|
37
|
-
add_act_sent,active addresses sent,"number of unique addresses that were active in the network, as a sender, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrActSentCnt,,addresses/sending_count,,,,,,,,
|
38
|
-
add_act_rec,active addresses received,"number of unique addresses that were active in the network, as a receiver, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrActRecCnt,,addresses/receiving_count,,,,,,,,
|
39
|
-
add_new,new addresses,"number of new unique addresses that were created in the network , within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,new_addresses,,,addresses/new_non_zero_count,,,,,,,,
|
40
|
-
add_tot,total address count,number of unique addresses in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,unique_addresses_all_time,,,addresses/count,,,,,,,,
|
41
|
-
add_pos_bal, addresses with positive balance ,number of unique addresses with positive balance in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrBalCnt,,addresses/non_zero_count,,,,,,,,
|
42
|
-
add_zero_bal,addresses with zero balance count,number of unique addresses with zero balance in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,zero_balance_addresses_all_time,,,,,,,,,,,
|
43
|
-
tx_count,transactions count,number of transactions in the network within time interval,on-chain,transactions,"d, w, m, q",transactions,Int64,transaction_count,TxCnt,,transactions/count,,,,,,,,
|
44
|
-
tx_rate,transactions rate,number of transactions per second ,on-chain,transactions,"d, w, m, q",transactions per second,Float64,,TxCntSec,,transactions/rate,,,,,,,,
|
45
|
-
tx_bytes_mean,transaction size,mean size of transactions within time interval,on-chain,transactions,"d, w, m, q",bytes,Float64,,TxMeanByte,,transactions/size_mean,,,,,,,,
|
46
|
-
tx_fee_mean,mean transaction fee ,mean fee per transaction within time interval,on-chain,transactions,"d, w, m, q",transactions,Float64,,FeeMeanNtv,,fees/volume_mean,,,,,,,,
|
47
|
-
tx_fee_mean_usd,mean transaction fee in usd,"mean fee per transaction within time interval, in usd",on-chain,transactions,"d, w, m, q",transactions,Float64,,FeeMeanUSD,,fees/volume_mean,,,,,,,,
|
48
|
-
tfr_count,transfers count,number of transfers in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,,TxTfrCnt,,transactions/transfers_count,,,,,,,,
|
49
|
-
tfr_val,transfers value,number of units of asset transferred in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,,TxTfrValNtv,,transactions/transfers_volume_sum,,,,,,,,
|
50
|
-
tfr_val_usd,"transfers value, USD","number of units of asset transferred in the network within time interval, in USD",on-chain,transactions,"d, w, m, q",USD,Float64,,TxTfrValUSD,,transactions/transfers_volume_sum,,,,,,,,
|
51
|
-
tfr_val_mean,"mean transfers value, USD",mean transfer value in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,
|
52
|
-
tfr_val_mean_usd,mean transfers value,"mean transfer value in the network within time interval, in USD",on-chain,transactions,"d, w, m, q",USD,Float64,,TxTfrValMeanUSD,,transactions/transfers_volume_mean,,,,,,,,
|
53
|
-
nvt_ratio,network value to transactions ratio,The Network Value to Transactions (NVT) Ratio is computed by dividing the market cap by the transferred on-chain volume measured in USD. The NVT Ratio was created by Willy Woo.,on-chain,transactions,"d, w, m, q",ratio ,Float64,,,,indicators/nvt,,,,,,,,
|
54
|
-
nvt_ratio_adj,"network value to transactions ratio, adjusted","The ratio of the network value (or market capitalization, current supply) divided by the adjusted transfer value. Also referred to as NVT.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdj,,,,,,,,,,
|
55
|
-
nvt_ratio_entity_adj,"network value to transactions ratio, entity adjusted",The Network Value to Transactions (NVT) Ratio is computed by dividing the market cap by the transferred on-chain volume measured in USD. This entity-adjusted version of the NVT Ratio uses entity-adjusted on-chain volume and is therefore more accurate as it accounts for actual economic throughput.,on-chain,transactions,"d, w, m, q",ratio ,Float64,,,,indicators/nvt_entity_adjusted,,,,,,,,
|
56
|
-
nvt_ratio_90dma,"network value to transactions ratio, 90 day moving average","The ratio of the network value (or market capitalization, current supply) to the 90-day moving average of the adjusted transfer value.�",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdj90,,indicators/nvts,,,,,,,,
|
57
|
-
nvt_ratio_ff,"network value to transactions ratio,using free float market cap","The ratio of the free float network value (or market capitalization, free float) divided by the adjusted transfer value. Also referred to as FFNVT.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdjFF,,,,,,,,,,
|
58
|
-
nvt_ratio_ff_90dma,"network value to transactions ratio,using free float market cap and 90 day moving average ofadjusted transfer value","The ratio of the free float network value (or market capitalization, free float) to the 90-day moving average of the adjusted transfer value.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdjFF90,,,,,,,,,,
|
59
|
-
velocity_1y,velocity,ratio of transfer value over the past year over circulating supply at the end of the period,on-chain,transactions,"d, w, m, q",ratio,Float64,,VelCur1yr,,indicators/velocity,,,,,,,,
|
60
|
-
tx_>100k_usd, transactions larger than 100k usd count ,number of transactions in the network larger than 100k usd within time interval,on-chain,transactions,"d, w, m, q",transactions,Int64,large_transaction_count,,,,,,,,,,,
|
61
|
-
tx_tot,total transactions count ,number of transactions in the network at the end of the period,on-chain,transactions,"d, w, m, q",transactions,Int64,transaction_count_all_time,,,,,,,,,,,
|
62
|
-
utxo,unspent transaction outputs,total transaction output that can be used as input in a new transaction,on-chain,transactions,"d, w, m, q",asset units,Float64,,UTXOCnt,,blockchain/utxo_count,,,,,,,,
|
63
|
-
utxo_created,unspent transaction outputs created,number of created unspent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_count,,,,,,,,
|
64
|
-
utxo_spent,spent transaction outputs,number of spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_count,,,,,,,,
|
65
|
-
utxo_val_created,newly created asset units utxo,numbrer of assets units in newly created UTXOs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_value_sum,,,,,,,,
|
66
|
-
utxo_val_spent,asset units in spent transaction outputs,numbrer of assets units in spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_value_sum,,,,,,,,
|
67
|
-
utxo_val_created_mean,mean newly created asset units utxo,mean numbrer of assets units in newly created UTXOs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_value_mean,,,,,,,,
|
68
|
-
utxo_val_spent_mean,mean asset units in spent transaction outputs,mean numbrer of assets units in spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_value_mean,,,,,,,,
|
69
|
-
hashrate,hash rate,mean number of hashes per second produced by the miners in the network within time interval,on-chain,mining,"d, w, m, q",TH/sec,Float64,hashrate,HashRate,,mining/hash_rate_mean,,,,,,,,
|
70
|
-
diff_last,difficulty of last block,number of hashes required to mine the last block within time interval,on-chain,mining,"d, w, m, q",none,Float64,,DiffLast,,mining/difficulty_latest,,,,,,,,
|
71
|
-
diff_mean,mean difficulty of a block,mean number of hashes required to mine a block within time interval,on-chain,mining,"d, w, m, q",none,Float64,difficulty,DiffMean,,,,,,,,,,
|
72
|
-
block_height,block height,number of blocks created and included in the main blockchain since the genesis block,on-chain,mining,"d, w, m, q",blocks,Int64,block_height,BlkHgt,,blockchain/block_height,,,,,,,,
|
73
|
-
block_size_mean,mean block size,mean size of blocks created within time interval,on-chain,mining,"d, w, m, q",bytes,Float64,block_size,BlkSizeMeanByte,,blockchain/block_size_mean,,,,,,,,
|
74
|
-
block_time_mean,mean block time,mean time for block to be created within time interval,on-chain,mining,"d, w, m, q",seconds,Float64,block_time,BlkIntMean,,blockchain/block_interval_mean,,,,,,,,
|
75
|
-
miner_rev,miner revenue,"total miner revenue, fees plus newly minted coins within time interval",on-chain,mining,"d, w, m, q",asset units,Float64,,RevNtv,,mining/revenue_sum,,,,,,,,
|
76
|
-
miner_rev_usd,miner revenue in usd,"total miner revenue, fees plus newly minted coins within time interval, in usd",on-chain,mining,"d, w, m, q",usd,Float64,,RevUSD,,mining/revenue_sum,,,,,,,,
|
77
|
-
miner_rev_fees ,miner revenue,miner revenue dervied from fees within time interval,on-chain,mining,"d, w, m, q",asset units,Float64,,FeeTotNtv,,fees/volume_sum,,,,,,,,
|
78
|
-
miner_rev_fees_usd,miner revenue from fees,"miner revenue dervied from fees within time interval, in usd",on-chain,mining,"d, w, m, q",usd,Float64,,FeeTotUSD,,fees/volume_sum,,,,,,,,
|
79
|
-
miner_rev_block_rwd,miner revenue from block rewards,miner revenue dervied from block rewards within time interval,on-chain,mining,"d, w, m, q",asset units,Float64,,,,mining/volume_mined_sum,,,,,,,,
|
80
|
-
miner_rev_total_usd,total miner revenue in usd,"total miner revenue, fees plus newly minted coins in usd at the end of the period",on-chain,mining,"d, w, m, q",usd,Float64,,RevAllTimeUSD,,,,,,,,,,
|
81
|
-
supply_circ,circulating supply,total number of asset units issued/created on the ledger at the end of the period,on-chain,supply,"d, w, m, q",asset units,Float64,current_supply,SplyCur,,supply/current,,,,,,,,
|
82
|
-
supply_ff,free float supply,"total number of asset units issued/created on the ledger at the end of the period, excluding tokens held closely by company insiders, controlling investors and long term strategic holders",on-chain,supply,"d, w, m, q",asset units,Float64,,SplyFF,,,,,,,,,,
|
83
|
-
issuance,issuance ,number of new asset units issues within time interval,on-chain,supply,"d, w, m, q",asset units,Float64,,IssTotNtv,,supply/issued,,,,,,,,
|
84
|
-
supply_act_pct_1y,pecent of supply active in the past year,percentage of current supply that has been active in the trailing 1 year up to the end of the period,on-chain,supply,"d, w, m, q",percent,Float64,,SplyActPct1yr,,supply/active_more_1y_percent,,,,,,,,
|
85
|
-
stocks_to_flow,stocks-to-flow ratio,"ratio of the circulating supply to the newly issued asset units within time interval, or the inverse of the issuance rate.",on-chain,indicators,"d, w, m, q",ratio,Float64,,,,indicators/stock_to_flow_ratio,,,,,,,,
|
86
|
-
sopr,spent output price ratio,ratio of the sum of spent value over the sum of creation value of all spent and created outputs for that interval,on-chain,indicators,"d, w, m, q",ratio,Float64,,SOPR,,indicators/sopr,,,,,,,,
|
87
|
-
fund_aum, assets under management,total assets under fund's management,off-chain,flows,"d, w, m, q",usd,Float64,,variable,,institutions/purpose_etf_aum_sum,,,,,,,,
|
88
|
-
fund_flows,fund flows,inflows/outflows into fund,off-chain,flows,"d, w, m, q",asset units,Float64,,variable,,institutions/purpose_etf_flows_sum,,,,,,,,
|
89
|
-
fund_holdings,fund asset holdings,fund's asset holdings,off-chain,flows,"d, w, m, q",asset units,Float64,,variable,,institutions/purpose_etf_holdings_sum,,,,,,,,
|
90
|
-
sm_comments,cryptocompare social media comments,"number of social media posts/replies on the coin
|
91
|
-
sm_posts,cryptocompare social media posts,"number of social media posts on this coins page across Reddit, Twitter, Facebook platforms.",off-chain,alt data,"d, w, m, q",posts,Int64,posts,,,,,,,,,,,
|
92
|
-
sm_followers,cryptocompare social media followers,"number of social media users following this coin across Reddit, Twitter, Facebook platforms",off-chain,alt data,"d, w, m, q",followers,Int64,followers,,,,,,,,,,,
|
93
|
-
sm_points,cryptocompare social media points,"cryptocompare points score for this coin. Points are awarded for different metrics on each social media platform as follows: 25 for a post, 10 for a comment and 25 for a follower.",off-chain,alt data,"d, w, m, q",points,Int64,points,,,,,,,,,,,
|
94
|
-
cc_overview_page_views,cryptocompare overview page views,number of views for the
|
95
|
-
cc_analysis_page_views,cryptocompare analysis page views,number of views for the
|
96
|
-
cc_markets_page_views,cryptocompare markets page views,number of views for the
|
97
|
-
cc_charts_page_views,cryptocompare charts page views,number of views for the
|
98
|
-
cc_trades_page_views,cryptocompare trades page views,number of views for the
|
99
|
-
cc_forum_page_views,cryptocompare forum page views,number of views for the
|
100
|
-
cc_influence_page_views,cryptocompare influence page views,number of views for the
|
101
|
-
cc_total_page_views,cryptocompare total page views,total number of page views for any tab on this coin
|
102
|
-
fb_likes,facebook likes,number of user who have
|
103
|
-
fb_talking_about,facebook mentions,number of facebook users
|
104
|
-
twitter_followers,twitter followers,number of followers for the requested coin
|
105
|
-
twitter_following,twitter following ,number of accounts this coin
|
106
|
-
twitter_lists,twitter lists,number of twitter lists the request coin features in,off-chain,alt data,"d, w, m, q",lists,Int64,twitter_lists,,,,,,,,,,,
|
107
|
-
twitter_favourites,twitter favorites ,number of times this coin
|
108
|
-
twitter_statuses,twitter statuses,number of tweets posted by the requested coin
|
109
|
-
reddit_subscribers,reddit subscribers,number of reddit users subscribed to this coin
|
110
|
-
reddit_active_users,reddit active users,number of
|
111
|
-
reddit_avg_posts_per_hour,reddit posts per hour,average number of posts per hour in this coin
|
112
|
-
reddit_avg_posts_per_day,reddit posts per day,average number of posts per day in this coin
|
113
|
-
reddit_avg_comments_per_hour,reddit comments per hour,average number of comments per hour in this coin
|
114
|
-
reddit_avg_comments_per_day,reddit comments per day,average number of comments per day in this coin
|
115
|
-
code_repo_stars, code repo stars,number of times this repository has been starred on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",stars ,Int64,code_repo_stars,,,,,,,,,,,
|
116
|
-
code_repo_forks,code repo forks,number of forks coming from this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",forks,Int64,code_repo_forks,,,,,,,,,,,
|
117
|
-
code_repo_subscribers,code repo subscribers,number of users subscribed to this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",subscribers,Int64,code_repo_subscribers,,,,,,,,,,,
|
118
|
-
code_repo_open_pull_issues,code repo open pull issues,number of issues with a pull request currently waiting on approval on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_open_pull_issues,,,,,,,,,,,
|
119
|
-
code_repo_closed_pull_issues,code repo closed pull issues,number of issues with a pull request that have been closed on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_closed_pull_issues,,,,,,,,,,,
|
120
|
-
code_repo_open_issues,code repo open issues,number of reported issues that are currently open on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_open_issues,,,,,,,,,,,
|
121
|
-
code_repo_closed_issues,code repo closed issues,number of reported issues that have been resolved on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_closed_issues,,,,,,,,,,,
|
122
|
-
code_repo_contributors,code repo contributors ,number of users contributing to this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",contributors,Int64,code_repo_contributors,,,,,,,,,,,
|
123
|
-
actual,actual release value,reported value for release,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,actual,value,actual,,,actual
|
124
|
-
previous,previous release value,previously reported value for release,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",,Float64,,,,,,,previous,,,,,
|
125
|
-
expected,expected value,average survey or forecast for value,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,forecast,,,,,
|
126
|
-
surprise,surprise,actual release value less expected release value,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,surprise,,,,,
|
1
|
+
id,name,description,category,subcategory,freq,unit,data_type,cryptocompare_id,coinmetrics_id,ccxt_id,glassnode_id,coingecko_id,tiingo_id,investpy_id,dbnomics_id,fred_id,yahoo_id,famafrench_id,wb_id,dydx_id
|
2
|
+
date,date,date and time,all,none,all,YYYY-MM-DD-HH:MM:SS,DatetimeIndex,time,time,datetime,t,,date,Date,period,DATE,Date,Date,,startedAt
|
3
|
+
ticker,ticker symbol,ticker symbol for asset or index,all,none,all,none,string,symbol,market,symbol,,,ticker,,,symbol,Ticker,,,ticker
|
4
|
+
bid,best bid price,highest price that a buyer is willing to pay for a unit of the asset,market,quotes,tick,quote currency units,Float64,,bid_price,,,,,,,,,,
|
5
|
+
ask,best ask price,lowest price that a seller is willing to sell a unit of the asset,market,quotes,tick,quote currency units,Float64,,ask_price,,,,,,,,,,
|
6
|
+
bid_size,bid size,The quantity/size of the highest price bid,market,quotes,tick,asset units,Float64,,bid_size,,,,,,,,,,
|
7
|
+
ask_size,ask size,The quantity/size of the lowest price ask,market,quotes,tick,asset units,Float64,,ask_size,,,,,,,,,,
|
8
|
+
trade_size,trade size,number of units of asset traded,market,trades,tick,asset units,Float64,,amount,,,,,,,,,,
|
9
|
+
trade_price,trade price,price of asset in units of quote currency,market,trades,tick,quote currency units,Float64,,price,,,,,,,,,,
|
10
|
+
trade_side,trade side ,"buy or sell, side taking liquidity",market,trades,tick,none,string,,side,,,,,,,,,,
|
11
|
+
open,open price,open price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,open,price_open,open,market/price_usd_ohlc,,open,Open,,,Open,,,open
|
12
|
+
high,high price,high price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,high,price_high,high,market/price_usd_ohlc,,high,High,,,High,,,high
|
13
|
+
low,low price,low price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,low,price_low,low,market/price_usd_ohlc,,low,Low,,,Low,,,low
|
14
|
+
close,close price,close price of OHLC bar,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,close,price_close,close,market/price_usd_ohlc,,close,Close,,close,Close,close,,close
|
15
|
+
volume,volume,number of units of assets traded within time interval,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",asset units,Float64,volumefrom,volume,volume,,,volume,Volume,,,Volume,,,volume
|
16
|
+
volume_quote_ccy,volume in quote ccy ,"value of assets traded within time interval in quote currency, or volume * close",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units ,Float64,volumeto,,,,,volumeNotional,,,,,,
|
17
|
+
trades,trades count,number of trades within time interval,market ,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",trades ,Int64,,,,,,tradesDone,,,,,,
|
18
|
+
open_adj,adjusted open price,"open price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjOpen,,,,,,
|
19
|
+
high_adj,adjusted high price,"high price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjHigh,,,,,,
|
20
|
+
low_adj,adjusted low price,"low price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjLow,,,,,,
|
21
|
+
close_adj,adjusted close price,"close price of OHLC bar adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjClose,,,,Adj Close,,
|
22
|
+
volume_adj,adjusted volume,"volume adjusted for stock splits, dividends, and rights offerings",market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,,,,,adjVolume,,,,,,
|
23
|
+
ret,return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
24
|
+
tr,total return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
25
|
+
er,excess return,,market,returns,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",decimal,Float64,,,,,,,,,,,,
|
26
|
+
vwap,volume-weighted avg price,average volume-weighted price of quote asset within time interval,market,ohlc_bars,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",quote currency units,Float64,,vwap,,,,none,,,,,,
|
27
|
+
dividend,dividend,dividend paid out on ex-ante date,market,ohlc_bars,d ,quote currency units,Float64,,,,,,divCash,,,,,,,
|
28
|
+
split,split,"factor used to adjust prices when a company splits, reverse splits, or pays a distribution",market,ohlc_bars,d ,factor ,Float64,,,,,,splitFactor,,,,,,
|
29
|
+
ref_rate_usd,reference rate in USD,price of asset in USD using an aggregation methodology,market,ohlc_bars,d ,quote currency units,Float64,,ReferenceRateUSD,,,,,,,,,,,
|
30
|
+
oi,open interest,number of outstanding futures contracts that are open and have yet to be settled,market,derivatives,"1min, 5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q",number of contracts,Float64,,contract_count,openInterestAmount,,,,,,,,,openInterest
|
31
|
+
funding_rate,funding rate,interest rate for holding derivative contract within time interval,market,derivatives,"1h, 2h, 4h, 8h, d, w, m, q",interest rate over time interval,Float64,,rate,fundingRate,derivatives/futures_funding_rate_perpetual,,,,,,,,,rate
|
32
|
+
mkt_cap,market capitalization,usd value of circulating supply,market,market capitalization,"d, w, m, q",usd,Float64,,CapMrktCurUSD,,market/marketcap_usd,,,,,,,,
|
33
|
+
mkt_cap_real,"market capitalization, reaized","The sum USD value based on the USD closing price on the day that a native unit last moved (i.e., last transacted) for all native units",market,market capitalization,"d, w, m, q",usd,Float64,,CapRealUSD,,,,,,,,,,
|
34
|
+
mkt_cap_ff,"market capitalization, free float",The sum USD value of the free float supply. Also referred to as free float network value or free float market capitalization,market,market capitalization,"d, w, m, q",usd,Float64,,CapMrktFFUSD,,,,,,,,,,
|
35
|
+
bvin,bitcoin volatility index,Bitcoin Volatility Index (BVIN) is an implied volatility index that also represents the fair value of a bitcoin variance swap. The index is calculated by CryptoCompare using options data from Deribit and has been developed in collaboration with Carol Alexander and Arben Imeraj at the University of Sussex Business School. The index is suitable for use as a settlement price for bitcoin volatility futures. For more information on the methodology please see Alexander and Imeraj (2020).,market,indicators,"d, w, m, q",standard deviation,Float64,,,,indicators/bvin,,,,,,,,
|
36
|
+
add_act,active addresses,"number of unique addresses that were active in the network, as a sender or receiver, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,active_addresses,AdrActCnt,,addresses/active_count,,,,,,,,
|
37
|
+
add_act_sent,active addresses sent,"number of unique addresses that were active in the network, as a sender, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrActSentCnt,,addresses/sending_count,,,,,,,,
|
38
|
+
add_act_rec,active addresses received,"number of unique addresses that were active in the network, as a receiver, within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrActRecCnt,,addresses/receiving_count,,,,,,,,
|
39
|
+
add_new,new addresses,"number of new unique addresses that were created in the network , within time interval",on-chain,addresses,"d, w, m, q",addresses,Int64,new_addresses,,,addresses/new_non_zero_count,,,,,,,,
|
40
|
+
add_tot,total address count,number of unique addresses in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,unique_addresses_all_time,,,addresses/count,,,,,,,,
|
41
|
+
add_pos_bal, addresses with positive balance ,number of unique addresses with positive balance in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,,AdrBalCnt,,addresses/non_zero_count,,,,,,,,
|
42
|
+
add_zero_bal,addresses with zero balance count,number of unique addresses with zero balance in the network at the end of the period,on-chain,addresses,"d, w, m, q",addresses,Int64,zero_balance_addresses_all_time,,,,,,,,,,,
|
43
|
+
tx_count,transactions count,number of transactions in the network within time interval,on-chain,transactions,"d, w, m, q",transactions,Int64,transaction_count,TxCnt,,transactions/count,,,,,,,,
|
44
|
+
tx_rate,transactions rate,number of transactions per second ,on-chain,transactions,"d, w, m, q",transactions per second,Float64,,TxCntSec,,transactions/rate,,,,,,,,
|
45
|
+
tx_bytes_mean,transaction size,mean size of transactions within time interval,on-chain,transactions,"d, w, m, q",bytes,Float64,,TxMeanByte,,transactions/size_mean,,,,,,,,
|
46
|
+
tx_fee_mean,mean transaction fee ,mean fee per transaction within time interval,on-chain,transactions,"d, w, m, q",transactions,Float64,,FeeMeanNtv,,fees/volume_mean,,,,,,,,
|
47
|
+
tx_fee_mean_usd,mean transaction fee in usd,"mean fee per transaction within time interval, in usd",on-chain,transactions,"d, w, m, q",transactions,Float64,,FeeMeanUSD,,fees/volume_mean,,,,,,,,
|
48
|
+
tfr_count,transfers count,number of transfers in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,,TxTfrCnt,,transactions/transfers_count,,,,,,,,
|
49
|
+
tfr_val,transfers value,number of units of asset transferred in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,,TxTfrValNtv,,transactions/transfers_volume_sum,,,,,,,,
|
50
|
+
tfr_val_usd,"transfers value, USD","number of units of asset transferred in the network within time interval, in USD",on-chain,transactions,"d, w, m, q",USD,Float64,,TxTfrValUSD,,transactions/transfers_volume_sum,,,,,,,,
|
51
|
+
tfr_val_mean,"mean transfers value, USD",mean transfer value in the network within time interval,on-chain,transactions,"d, w, m, q",asset units,Float64,average_transaction_ value,TxTfrValMeanNtv,,transactions/transfers_volume_mean,,,,,,,,
|
52
|
+
tfr_val_mean_usd,mean transfers value,"mean transfer value in the network within time interval, in USD",on-chain,transactions,"d, w, m, q",USD,Float64,,TxTfrValMeanUSD,,transactions/transfers_volume_mean,,,,,,,,
|
53
|
+
nvt_ratio,network value to transactions ratio,The Network Value to Transactions (NVT) Ratio is computed by dividing the market cap by the transferred on-chain volume measured in USD. The NVT Ratio was created by Willy Woo.,on-chain,transactions,"d, w, m, q",ratio ,Float64,,,,indicators/nvt,,,,,,,,
|
54
|
+
nvt_ratio_adj,"network value to transactions ratio, adjusted","The ratio of the network value (or market capitalization, current supply) divided by the adjusted transfer value. Also referred to as NVT.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdj,,,,,,,,,,
|
55
|
+
nvt_ratio_entity_adj,"network value to transactions ratio, entity adjusted",The Network Value to Transactions (NVT) Ratio is computed by dividing the market cap by the transferred on-chain volume measured in USD. This entity-adjusted version of the NVT Ratio uses entity-adjusted on-chain volume and is therefore more accurate as it accounts for actual economic throughput.,on-chain,transactions,"d, w, m, q",ratio ,Float64,,,,indicators/nvt_entity_adjusted,,,,,,,,
|
56
|
+
nvt_ratio_90dma,"network value to transactions ratio, 90 day moving average","The ratio of the network value (or market capitalization, current supply) to the 90-day moving average of the adjusted transfer value.�",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdj90,,indicators/nvts,,,,,,,,
|
57
|
+
nvt_ratio_ff,"network value to transactions ratio,using free float market cap","The ratio of the free float network value (or market capitalization, free float) divided by the adjusted transfer value. Also referred to as FFNVT.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdjFF,,,,,,,,,,
|
58
|
+
nvt_ratio_ff_90dma,"network value to transactions ratio,using free float market cap and 90 day moving average ofadjusted transfer value","The ratio of the free float network value (or market capitalization, free float) to the 90-day moving average of the adjusted transfer value.",on-chain,transactions,"d, w, m, q",ratio ,Float64,,NVTAdjFF90,,,,,,,,,,
|
59
|
+
velocity_1y,velocity,ratio of transfer value over the past year over circulating supply at the end of the period,on-chain,transactions,"d, w, m, q",ratio,Float64,,VelCur1yr,,indicators/velocity,,,,,,,,
|
60
|
+
tx_>100k_usd, transactions larger than 100k usd count ,number of transactions in the network larger than 100k usd within time interval,on-chain,transactions,"d, w, m, q",transactions,Int64,large_transaction_count,,,,,,,,,,,
|
61
|
+
tx_tot,total transactions count ,number of transactions in the network at the end of the period,on-chain,transactions,"d, w, m, q",transactions,Int64,transaction_count_all_time,,,,,,,,,,,
|
62
|
+
utxo,unspent transaction outputs,total transaction output that can be used as input in a new transaction,on-chain,transactions,"d, w, m, q",asset units,Float64,,UTXOCnt,,blockchain/utxo_count,,,,,,,,
|
63
|
+
utxo_created,unspent transaction outputs created,number of created unspent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_count,,,,,,,,
|
64
|
+
utxo_spent,spent transaction outputs,number of spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_count,,,,,,,,
|
65
|
+
utxo_val_created,newly created asset units utxo,numbrer of assets units in newly created UTXOs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_value_sum,,,,,,,,
|
66
|
+
utxo_val_spent,asset units in spent transaction outputs,numbrer of assets units in spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_value_sum,,,,,,,,
|
67
|
+
utxo_val_created_mean,mean newly created asset units utxo,mean numbrer of assets units in newly created UTXOs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_created_value_mean,,,,,,,,
|
68
|
+
utxo_val_spent_mean,mean asset units in spent transaction outputs,mean numbrer of assets units in spent transaction outputs,on-chain,transactions,"d, w, m, q",asset units,Float64,,,,blockchain/utxo_spent_value_mean,,,,,,,,
|
69
|
+
hashrate,hash rate,mean number of hashes per second produced by the miners in the network within time interval,on-chain,mining,"d, w, m, q",TH/sec,Float64,hashrate,HashRate,,mining/hash_rate_mean,,,,,,,,
|
70
|
+
diff_last,difficulty of last block,number of hashes required to mine the last block within time interval,on-chain,mining,"d, w, m, q",none,Float64,,DiffLast,,mining/difficulty_latest,,,,,,,,
|
71
|
+
diff_mean,mean difficulty of a block,mean number of hashes required to mine a block within time interval,on-chain,mining,"d, w, m, q",none,Float64,difficulty,DiffMean,,,,,,,,,,
|
72
|
+
block_height,block height,number of blocks created and included in the main blockchain since the genesis block,on-chain,mining,"d, w, m, q",blocks,Int64,block_height,BlkHgt,,blockchain/block_height,,,,,,,,
|
73
|
+
block_size_mean,mean block size,mean size of blocks created within time interval,on-chain,mining,"d, w, m, q",bytes,Float64,block_size,BlkSizeMeanByte,,blockchain/block_size_mean,,,,,,,,
|
74
|
+
block_time_mean,mean block time,mean time for block to be created within time interval,on-chain,mining,"d, w, m, q",seconds,Float64,block_time,BlkIntMean,,blockchain/block_interval_mean,,,,,,,,
|
75
|
+
miner_rev,miner revenue,"total miner revenue, fees plus newly minted coins within time interval",on-chain,mining,"d, w, m, q",asset units,Float64,,RevNtv,,mining/revenue_sum,,,,,,,,
|
76
|
+
miner_rev_usd,miner revenue in usd,"total miner revenue, fees plus newly minted coins within time interval, in usd",on-chain,mining,"d, w, m, q",usd,Float64,,RevUSD,,mining/revenue_sum,,,,,,,,
|
77
|
+
miner_rev_fees ,miner revenue,miner revenue dervied from fees within time interval,on-chain,mining,"d, w, m, q",asset units,Float64,,FeeTotNtv,,fees/volume_sum,,,,,,,,
|
78
|
+
miner_rev_fees_usd,miner revenue from fees,"miner revenue dervied from fees within time interval, in usd",on-chain,mining,"d, w, m, q",usd,Float64,,FeeTotUSD,,fees/volume_sum,,,,,,,,
|
79
|
+
miner_rev_block_rwd,miner revenue from block rewards,miner revenue dervied from block rewards within time interval,on-chain,mining,"d, w, m, q",asset units,Float64,,,,mining/volume_mined_sum,,,,,,,,
|
80
|
+
miner_rev_total_usd,total miner revenue in usd,"total miner revenue, fees plus newly minted coins in usd at the end of the period",on-chain,mining,"d, w, m, q",usd,Float64,,RevAllTimeUSD,,,,,,,,,,
|
81
|
+
supply_circ,circulating supply,total number of asset units issued/created on the ledger at the end of the period,on-chain,supply,"d, w, m, q",asset units,Float64,current_supply,SplyCur,,supply/current,,,,,,,,
|
82
|
+
supply_ff,free float supply,"total number of asset units issued/created on the ledger at the end of the period, excluding tokens held closely by company insiders, controlling investors and long term strategic holders",on-chain,supply,"d, w, m, q",asset units,Float64,,SplyFF,,,,,,,,,,
|
83
|
+
issuance,issuance ,number of new asset units issues within time interval,on-chain,supply,"d, w, m, q",asset units,Float64,,IssTotNtv,,supply/issued,,,,,,,,
|
84
|
+
supply_act_pct_1y,pecent of supply active in the past year,percentage of current supply that has been active in the trailing 1 year up to the end of the period,on-chain,supply,"d, w, m, q",percent,Float64,,SplyActPct1yr,,supply/active_more_1y_percent,,,,,,,,
|
85
|
+
stocks_to_flow,stocks-to-flow ratio,"ratio of the circulating supply to the newly issued asset units within time interval, or the inverse of the issuance rate.",on-chain,indicators,"d, w, m, q",ratio,Float64,,,,indicators/stock_to_flow_ratio,,,,,,,,
|
86
|
+
sopr,spent output price ratio,ratio of the sum of spent value over the sum of creation value of all spent and created outputs for that interval,on-chain,indicators,"d, w, m, q",ratio,Float64,,SOPR,,indicators/sopr,,,,,,,,
|
87
|
+
fund_aum, assets under management,total assets under fund's management,off-chain,flows,"d, w, m, q",usd,Float64,,variable,,institutions/purpose_etf_aum_sum,,,,,,,,
|
88
|
+
fund_flows,fund flows,inflows/outflows into fund,off-chain,flows,"d, w, m, q",asset units,Float64,,variable,,institutions/purpose_etf_flows_sum,,,,,,,,
|
89
|
+
fund_holdings,fund asset holdings,fund's asset holdings,off-chain,flows,"d, w, m, q",asset units,Float64,,variable,,institutions/purpose_etf_holdings_sum,,,,,,,,
|
90
|
+
sm_comments,cryptocompare social media comments,"number of social media posts/replies on the coin's page across Reddit, Twitter, Facebook platforms",off-chain,alt data,"d, w, m, q",comments,Int64,comments,,,,,,,,,,,
|
91
|
+
sm_posts,cryptocompare social media posts,"number of social media posts on this coins page across Reddit, Twitter, Facebook platforms.",off-chain,alt data,"d, w, m, q",posts,Int64,posts,,,,,,,,,,,
|
92
|
+
sm_followers,cryptocompare social media followers,"number of social media users following this coin across Reddit, Twitter, Facebook platforms",off-chain,alt data,"d, w, m, q",followers,Int64,followers,,,,,,,,,,,
|
93
|
+
sm_points,cryptocompare social media points,"cryptocompare points score for this coin. Points are awarded for different metrics on each social media platform as follows: 25 for a post, 10 for a comment and 25 for a follower.",off-chain,alt data,"d, w, m, q",points,Int64,points,,,,,,,,,,,
|
94
|
+
cc_overview_page_views,cryptocompare overview page views,number of views for the "overview" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,overview_page_views,,,,,,,,,,,
|
95
|
+
cc_analysis_page_views,cryptocompare analysis page views,number of views for the "analysis" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,analysis_page_views,,,,,,,,,,,
|
96
|
+
cc_markets_page_views,cryptocompare markets page views,number of views for the "markets" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,markets_page_views,,,,,,,,,,,
|
97
|
+
cc_charts_page_views,cryptocompare charts page views,number of views for the "charts" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,charts_page_views,,,,,,,,,,,
|
98
|
+
cc_trades_page_views,cryptocompare trades page views,number of views for the "trades" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,trades_page_views,,,,,,,,,,,
|
99
|
+
cc_forum_page_views,cryptocompare forum page views,number of views for the "forum" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,forum_page_views,,,,,,,,,,,
|
100
|
+
cc_influence_page_views,cryptocompare influence page views,number of views for the "influence" tab on this coin's cryptocompare,off-chain,alt data,"d, w, m, q",views,Int64,influence_page_views,,,,,,,,,,,
|
101
|
+
cc_total_page_views,cryptocompare total page views,total number of page views for any tab on this coin's cryptocompare page,off-chain,alt data,"d, w, m, q",views,Int64,total_page_views,,,,,,,,,,,
|
102
|
+
fb_likes,facebook likes,number of user who have "liked" this page on facebook.,off-chain,alt data,"d, w, m, q",likes,Int64,fb_likes,,,,,,,,,,,
|
103
|
+
fb_talking_about,facebook mentions,number of facebook users "talking about" this coin (as determined by facebook),off-chain,alt data,"d, w, m, q",,Int64,fb_talking_about,,,,,,,,,,,
|
104
|
+
twitter_followers,twitter followers,number of followers for the requested coin's twitter account,off-chain,alt data,"d, w, m, q",followers,Int64,twitter_followers,,,,,,,,,,,
|
105
|
+
twitter_following,twitter following ,number of accounts this coin's page is following,off-chain,alt data,"d, w, m, q",following,Int64,twitter_following,,,,,,,,,,,
|
106
|
+
twitter_lists,twitter lists,number of twitter lists the request coin features in,off-chain,alt data,"d, w, m, q",lists,Int64,twitter_lists,,,,,,,,,,,
|
107
|
+
twitter_favourites,twitter favorites ,number of times this coin's page has been favourited,off-chain,alt data,"d, w, m, q",favourites,Int64,twitter_favourites,,,,,,,,,,,
|
108
|
+
twitter_statuses,twitter statuses,number of tweets posted by the requested coin's twitter account,off-chain,alt data,"d, w, m, q",,Int64,twitter_statuses,,,,,,,,,,,
|
109
|
+
reddit_subscribers,reddit subscribers,number of reddit users subscribed to this coin's sub-reddit,off-chain,alt data,"d, w, m, q",subscribers,Int64,reddit_subscribers,,,,,,,,,,,
|
110
|
+
reddit_active_users,reddit active users,number of "active users" (as determined by Reddit) in currently in this coin's sub-reddit,off-chain,alt data,"d, w, m, q",users,Int64,reddit_active_users,,,,,,,,,,,
|
111
|
+
reddit_avg_posts_per_hour,reddit posts per hour,average number of posts per hour in this coin's sub-reddit,off-chain,alt data,"d, w, m, q",posts,Float64,reddit_posts_per_hour,,,,,,,,,,,
|
112
|
+
reddit_avg_posts_per_day,reddit posts per day,average number of posts per day in this coin's sub-reddit,off-chain,alt data,"d, w, m, q",posts,Float64,reddit_posts_per_day,,,,,,,,,,,
|
113
|
+
reddit_avg_comments_per_hour,reddit comments per hour,average number of comments per hour in this coin's sub-reddit.,off-chain,alt data,"d, w, m, q",commnets,Float64,reddit_comments_per_hour,,,,,,,,,,,
|
114
|
+
reddit_avg_comments_per_day,reddit comments per day,average number of comments per day in this coin's sub-reddit,off-chain,alt data,"d, w, m, q",commnets,Float64,reddit_comments_per_day,,,,,,,,,,,
|
115
|
+
code_repo_stars, code repo stars,number of times this repository has been starred on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",stars ,Int64,code_repo_stars,,,,,,,,,,,
|
116
|
+
code_repo_forks,code repo forks,number of forks coming from this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",forks,Int64,code_repo_forks,,,,,,,,,,,
|
117
|
+
code_repo_subscribers,code repo subscribers,number of users subscribed to this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",subscribers,Int64,code_repo_subscribers,,,,,,,,,,,
|
118
|
+
code_repo_open_pull_issues,code repo open pull issues,number of issues with a pull request currently waiting on approval on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_open_pull_issues,,,,,,,,,,,
|
119
|
+
code_repo_closed_pull_issues,code repo closed pull issues,number of issues with a pull request that have been closed on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_closed_pull_issues,,,,,,,,,,,
|
120
|
+
code_repo_open_issues,code repo open issues,number of reported issues that are currently open on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_open_issues,,,,,,,,,,,
|
121
|
+
code_repo_closed_issues,code repo closed issues,number of reported issues that have been resolved on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",issues,Int64,code_repo_closed_issues,,,,,,,,,,,
|
122
|
+
code_repo_contributors,code repo contributors ,number of users contributing to this repository on GitHub and BitBucket,off-chain,alt data,"d, w, m, q",contributors,Int64,code_repo_contributors,,,,,,,,,,,
|
123
|
+
actual,actual release value,reported value for release,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,actual,value,actual,,,actual
|
124
|
+
previous,previous release value,previously reported value for release,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",,Float64,,,,,,,previous,,,,,
|
125
|
+
expected,expected value,average survey or forecast for value,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,forecast,,,,,
|
126
|
+
surprise,surprise,actual release value less expected release value,off-chain,macro,"5min, 10min, 15min, 30min, 1h, 2h, 4h, 8h, d, w, m, q, y",varies,Float64,,,,,,,surprise,,,,,
|
@@ -1,17 +1,16 @@
|
|
1
1
|
import logging
|
2
2
|
from typing import Any, Dict, List, Optional, Union
|
3
|
+
from datetime import datetime, timedelta
|
4
|
+
import time
|
3
5
|
|
4
6
|
import pandas as pd
|
5
|
-
import
|
7
|
+
import requests
|
8
|
+
import pytz
|
6
9
|
|
7
10
|
from cryptodatapy.extract.datarequest import DataRequest
|
8
11
|
from cryptodatapy.extract.exchanges.exchange import Exchange
|
9
12
|
from cryptodatapy.transform.convertparams import ConvertParams
|
10
13
|
from cryptodatapy.transform.wrangle import WrangleData
|
11
|
-
from cryptodatapy.util.datacredentials import DataCredentials
|
12
|
-
|
13
|
-
# data credentials
|
14
|
-
data_cred = DataCredentials()
|
15
14
|
|
16
15
|
|
17
16
|
class Dydx(Exchange):
|
@@ -26,15 +25,20 @@ class Dydx(Exchange):
|
|
26
25
|
categories: Union[str, List[str]] = "crypto",
|
27
26
|
assets: Optional[Dict[str, List[str]]] = None,
|
28
27
|
markets: Optional[Dict[str, List[str]]] = None,
|
29
|
-
market_types: List[str] = ["
|
30
|
-
fields: Optional[List[str]] = ["open", "high", "low", "close", "volume", "funding_rate"
|
31
|
-
frequencies: Optional[Dict[str, Union[str, int]]] =
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
28
|
+
market_types: List[str] = ["perpetual_future"],
|
29
|
+
fields: Optional[List[str]] = ["open", "high", "low", "close", "volume", "funding_rate"],
|
30
|
+
frequencies: Optional[Dict[str, Union[str, int]]] = {
|
31
|
+
"1m": "1MIN",
|
32
|
+
"5m": "5MINS",
|
33
|
+
"15m": "15MINS",
|
34
|
+
"1h": "1HOUR",
|
35
|
+
"4h": "4HOURS",
|
36
|
+
"1d": "1DAY"
|
37
|
+
},
|
38
|
+
fees: Optional[Dict[str, float]] = {'perpetual_future': {'maker': 0.0, 'taker': 0.0}},
|
39
|
+
base_url: Optional[str] = "https://indexer.dydx.trade/v4",
|
36
40
|
api_key: Optional[str] = None,
|
37
|
-
max_obs_per_call: Optional[int] =
|
41
|
+
max_obs_per_call: Optional[int] = 1000,
|
38
42
|
rate_limit: Optional[Any] = None
|
39
43
|
):
|
40
44
|
"""
|
@@ -90,48 +94,629 @@ class Dydx(Exchange):
|
|
90
94
|
self.data_req = None
|
91
95
|
self.data = pd.DataFrame()
|
92
96
|
|
93
|
-
def get_assets_info(self):
|
94
|
-
|
97
|
+
def get_assets_info(self) -> pd.DataFrame:
|
98
|
+
"""
|
99
|
+
Gets info for available assets from dYdX.
|
100
|
+
|
101
|
+
Returns
|
102
|
+
-------
|
103
|
+
pd.DataFrame
|
104
|
+
DataFrame with asset information.
|
105
|
+
"""
|
106
|
+
url = f"{self.base_url}/perpetualMarkets"
|
107
|
+
response = requests.get(url)
|
108
|
+
response.raise_for_status()
|
109
|
+
|
110
|
+
markets_data = response.json()['markets']
|
111
|
+
assets_info = []
|
112
|
+
seen_assets = set()
|
113
|
+
|
114
|
+
for ticker, market in markets_data.items():
|
115
|
+
base_currency = ticker.split('-')[0]
|
116
|
+
if base_currency not in seen_assets and market['status'] == 'ACTIVE':
|
117
|
+
assets_info.append({
|
118
|
+
'asset_id': base_currency,
|
119
|
+
'symbol': base_currency,
|
120
|
+
'decimals': abs(int(market['atomicResolution'])),
|
121
|
+
'status': market['status']
|
122
|
+
})
|
123
|
+
seen_assets.add(base_currency)
|
124
|
+
|
125
|
+
return pd.DataFrame(assets_info)
|
126
|
+
|
127
|
+
def get_markets_info(self, quote_ccy: Optional[str] = None, mkt_type: Optional[str] = None, as_list: bool = False) -> Union[pd.DataFrame, List[str]]:
|
128
|
+
"""
|
129
|
+
Gets info for available markets from dYdX.
|
130
|
+
|
131
|
+
Parameters
|
132
|
+
----------
|
133
|
+
quote_ccy: str, optional
|
134
|
+
Quote currency to filter by (e.g., 'USD', 'USDC'). For dYdX, this is typically 'USD'.
|
135
|
+
mkt_type: str, optional
|
136
|
+
Market type to filter by. For dYdX, this is typically 'perpetual_future'.
|
137
|
+
as_list: bool, default False
|
138
|
+
If True, returns a list of ticker symbols instead of a DataFrame.
|
139
|
+
|
140
|
+
Returns
|
141
|
+
-------
|
142
|
+
pd.DataFrame or List[str]
|
143
|
+
DataFrame with market information or list of ticker symbols.
|
144
|
+
"""
|
145
|
+
url = f"{self.base_url}/perpetualMarkets"
|
146
|
+
response = requests.get(url)
|
147
|
+
response.raise_for_status()
|
148
|
+
|
149
|
+
markets_data = response.json()['markets']
|
150
|
+
markets_info = []
|
151
|
+
|
152
|
+
for ticker, market in markets_data.items():
|
153
|
+
if market['status'] == 'ACTIVE':
|
154
|
+
base_currency = ticker.split('-')[0]
|
155
|
+
quote_currency = ticker.split('-')[1]
|
156
|
+
|
157
|
+
# Apply quote currency filter if specified
|
158
|
+
if quote_ccy is not None and quote_currency.upper() != quote_ccy.upper():
|
159
|
+
continue
|
160
|
+
|
161
|
+
# Apply market type filter if specified
|
162
|
+
# dYdX only has perpetual futures, so we only include if mkt_type is None or 'perpetual_future'
|
163
|
+
if mkt_type is not None and mkt_type != 'perpetual_future':
|
164
|
+
continue
|
165
|
+
|
166
|
+
markets_info.append({
|
167
|
+
'ticker': ticker,
|
168
|
+
'base_currency': base_currency,
|
169
|
+
'quote_currency': quote_currency,
|
170
|
+
'min_trade_amount': float(market['stepSize']),
|
171
|
+
'price_precision': abs(int(market['atomicResolution'])),
|
172
|
+
'min_price': float(market['tickSize']),
|
173
|
+
'status': market['status'],
|
174
|
+
'type': 'perpetual_future' # dYdX only has perpetual futures
|
175
|
+
})
|
176
|
+
|
177
|
+
if not markets_info:
|
178
|
+
if as_list:
|
179
|
+
return []
|
180
|
+
else:
|
181
|
+
return pd.DataFrame()
|
182
|
+
|
183
|
+
df = pd.DataFrame(markets_info)
|
184
|
+
|
185
|
+
if as_list:
|
186
|
+
return df['ticker'].tolist()
|
187
|
+
else:
|
188
|
+
return df
|
189
|
+
|
190
|
+
def get_fields_info(self, data_type: Optional[str] = None) -> pd.DataFrame:
|
191
|
+
"""
|
192
|
+
Gets info for available fields from dYdX.
|
193
|
+
|
194
|
+
Parameters
|
195
|
+
----------
|
196
|
+
data_type: str, optional
|
197
|
+
Type of data for which to return field information.
|
198
|
+
|
199
|
+
Returns
|
200
|
+
-------
|
201
|
+
pd.DataFrame
|
202
|
+
DataFrame with field information.
|
203
|
+
"""
|
204
|
+
fields = [
|
205
|
+
{'field': 'open', 'description': 'Opening price'},
|
206
|
+
{'field': 'high', 'description': 'Highest price'},
|
207
|
+
{'field': 'low', 'description': 'Lowest price'},
|
208
|
+
{'field': 'close', 'description': 'Closing price'},
|
209
|
+
{'field': 'volume', 'description': 'Trading volume'},
|
210
|
+
{'field': 'funding_rate', 'description': 'Hourly funding rate (dYdX charges funding every hour)'}
|
211
|
+
]
|
212
|
+
return pd.DataFrame(fields)
|
213
|
+
|
214
|
+
def get_frequencies_info(self) -> pd.DataFrame:
|
215
|
+
"""
|
216
|
+
Gets info for available frequencies from dYdX.
|
217
|
+
|
218
|
+
Returns
|
219
|
+
-------
|
220
|
+
pd.DataFrame
|
221
|
+
DataFrame with frequency information.
|
222
|
+
"""
|
223
|
+
return pd.DataFrame({
|
224
|
+
'frequency': list(self.frequencies.keys()),
|
225
|
+
'description': list(self.frequencies.values())
|
226
|
+
})
|
227
|
+
|
228
|
+
def get_rate_limit_info(self) -> Dict[str, Any]:
|
229
|
+
"""
|
230
|
+
Gets rate limit information from dYdX.
|
231
|
+
|
232
|
+
Returns
|
233
|
+
-------
|
234
|
+
Dict[str, Any]
|
235
|
+
Dictionary with rate limit information.
|
236
|
+
"""
|
237
|
+
return {
|
238
|
+
'requests_per_second': 10,
|
239
|
+
'requests_per_minute': 300
|
240
|
+
}
|
241
|
+
|
242
|
+
def get_metadata(self) -> Dict[str, Any]:
|
243
|
+
"""
|
244
|
+
Gets metadata about the exchange.
|
245
|
+
|
246
|
+
Returns
|
247
|
+
-------
|
248
|
+
Dict[str, Any]
|
249
|
+
Dictionary with exchange metadata.
|
250
|
+
"""
|
251
|
+
return {
|
252
|
+
'name': self.name,
|
253
|
+
'type': self.exch_type,
|
254
|
+
'status': 'active' if self.is_active else 'inactive',
|
255
|
+
'categories': self.categories,
|
256
|
+
'market_types': self.market_types,
|
257
|
+
'base_url': self.base_url
|
258
|
+
}
|
259
|
+
|
260
|
+
def _fetch_ohlcv(self) -> pd.DataFrame:
|
261
|
+
"""
|
262
|
+
Fetches OHLCV data from dYdX for multiple markets with pagination support.
|
263
|
+
|
264
|
+
The dYdX candles API has a limit (typically 1000 records) and returns data in
|
265
|
+
reverse chronological order (newest first). For large date ranges, we need to
|
266
|
+
implement pagination to retrieve all historical data.
|
267
|
+
|
268
|
+
Returns
|
269
|
+
-------
|
270
|
+
pd.DataFrame
|
271
|
+
DataFrame with OHLCV data for all requested markets.
|
272
|
+
"""
|
273
|
+
if not self.data_req:
|
274
|
+
raise ValueError("Data request not set")
|
95
275
|
|
96
|
-
|
97
|
-
|
276
|
+
# Parse date range
|
277
|
+
try:
|
278
|
+
# source dates are guaranteed to be set by parameter conversion
|
279
|
+
start_dt = pd.to_datetime(self.data_req.source_start_date)
|
280
|
+
if start_dt.tz is None:
|
281
|
+
start_dt = start_dt.tz_localize('UTC')
|
282
|
+
|
283
|
+
end_dt = pd.to_datetime(self.data_req.source_end_date)
|
284
|
+
if end_dt.tz is None:
|
285
|
+
end_dt = end_dt.tz_localize('UTC')
|
286
|
+
|
287
|
+
# Add buffer to end date to ensure we get data up to the requested time
|
288
|
+
buffered_end_dt = end_dt + pd.Timedelta(hours=1)
|
289
|
+
|
290
|
+
except Exception as e:
|
291
|
+
logging.error(f"Could not parse date range: {e}")
|
292
|
+
return pd.DataFrame()
|
98
293
|
|
99
|
-
|
100
|
-
|
294
|
+
all_records = []
|
295
|
+
|
296
|
+
for ticker in self.data_req.source_tickers:
|
297
|
+
market_symbol = f"{ticker}-USD"
|
298
|
+
|
299
|
+
# Initialize pagination variables
|
300
|
+
current_end_date = buffered_end_dt
|
301
|
+
ticker_records = []
|
302
|
+
page_count = 0
|
303
|
+
max_pages = 100 # Safety limit for longer date ranges
|
304
|
+
|
305
|
+
while page_count < max_pages:
|
306
|
+
page_count += 1
|
307
|
+
url = f"{self.base_url}/candles/perpetualMarkets/{market_symbol}"
|
308
|
+
|
309
|
+
params = {
|
310
|
+
'resolution': self.data_req.source_freq,
|
311
|
+
'fromISO': self.data_req.source_start_date,
|
312
|
+
'toISO': current_end_date.isoformat(),
|
313
|
+
'limit': 1000 # Maximum allowed by dYdX API
|
314
|
+
}
|
315
|
+
|
316
|
+
try:
|
317
|
+
response = requests.get(url, params=params, timeout=30)
|
318
|
+
response.raise_for_status()
|
319
|
+
data = response.json()
|
320
|
+
|
321
|
+
# Validate API response
|
322
|
+
if 'candles' not in data or not data['candles']:
|
323
|
+
break
|
324
|
+
|
325
|
+
page_records = data['candles']
|
326
|
+
|
327
|
+
# Convert timestamps efficiently
|
328
|
+
page_df = pd.DataFrame(page_records)
|
329
|
+
page_df['startedAt'] = pd.to_datetime(page_df['startedAt'])
|
330
|
+
|
331
|
+
# Ensure timezone consistency
|
332
|
+
if page_df['startedAt'].dt.tz is None:
|
333
|
+
page_df['startedAt'] = page_df['startedAt'].dt.tz_localize('UTC')
|
334
|
+
|
335
|
+
# Early termination check - if oldest record is before start date
|
336
|
+
oldest_timestamp = page_df['startedAt'].min()
|
337
|
+
if oldest_timestamp < start_dt:
|
338
|
+
# Filter only records within date range before adding
|
339
|
+
mask = (page_df['startedAt'] >= start_dt) & (page_df['startedAt'] <= end_dt)
|
340
|
+
filtered_records = page_df[mask]
|
341
|
+
|
342
|
+
if not filtered_records.empty:
|
343
|
+
ticker_records.extend(filtered_records.to_dict('records'))
|
344
|
+
|
345
|
+
break
|
346
|
+
else:
|
347
|
+
# All records on this page are within or after the date range
|
348
|
+
mask = page_df['startedAt'] <= end_dt
|
349
|
+
filtered_records = page_df[mask]
|
350
|
+
|
351
|
+
if not filtered_records.empty:
|
352
|
+
ticker_records.extend(filtered_records.to_dict('records'))
|
353
|
+
|
354
|
+
# Check if we got fewer records than requested (end of data)
|
355
|
+
if len(page_records) < 1000:
|
356
|
+
break
|
357
|
+
|
358
|
+
# Set next pagination point (oldest timestamp from current page minus 1 second)
|
359
|
+
current_end_date = oldest_timestamp - pd.Timedelta(seconds=1)
|
360
|
+
|
361
|
+
# Rate limiting
|
362
|
+
time.sleep(1.0)
|
363
|
+
|
364
|
+
except requests.exceptions.Timeout:
|
365
|
+
logging.warning(f"Timeout fetching OHLCV data for {market_symbol} on page {page_count}, retrying...")
|
366
|
+
time.sleep(2.0)
|
367
|
+
continue
|
368
|
+
except requests.exceptions.RequestException as e:
|
369
|
+
logging.error(f"Failed to fetch OHLCV data for {market_symbol} on page {page_count}: {str(e)}")
|
370
|
+
break
|
371
|
+
except Exception as e:
|
372
|
+
logging.error(f"Error processing OHLCV data for {market_symbol} on page {page_count}: {str(e)}")
|
373
|
+
break
|
374
|
+
|
375
|
+
if ticker_records:
|
376
|
+
all_records.extend(ticker_records)
|
101
377
|
|
102
|
-
|
103
|
-
|
378
|
+
if not all_records:
|
379
|
+
return pd.DataFrame()
|
104
380
|
|
105
|
-
|
106
|
-
|
381
|
+
# Create final DataFrame
|
382
|
+
final_df = pd.DataFrame(all_records)
|
383
|
+
final_df = final_df.sort_values(['ticker', 'startedAt']).reset_index(drop=True)
|
384
|
+
|
385
|
+
return final_df
|
107
386
|
|
108
|
-
def
|
109
|
-
|
387
|
+
def _fetch_funding_rates(self) -> pd.DataFrame:
|
388
|
+
"""
|
389
|
+
Fetches funding rate data from dYdX for multiple markets with pagination support.
|
390
|
+
|
391
|
+
Note: dYdX charges funding every hour, unlike other exchanges that typically
|
392
|
+
use 8-hour funding cycles. This method retrieves the complete historical
|
393
|
+
funding rate data for any requested date range, making multiple API calls as needed.
|
110
394
|
|
111
|
-
|
112
|
-
|
395
|
+
Returns
|
396
|
+
-------
|
397
|
+
pd.DataFrame
|
398
|
+
DataFrame with hourly funding rate data for all requested markets.
|
399
|
+
"""
|
400
|
+
if not self.data_req:
|
401
|
+
raise ValueError("Data request not set")
|
113
402
|
|
114
|
-
|
115
|
-
|
403
|
+
# Parse date range
|
404
|
+
try:
|
405
|
+
# source dates are guaranteed to be set by parameter conversion
|
406
|
+
start_dt = pd.to_datetime(self.data_req.source_start_date)
|
407
|
+
if start_dt.tz is None:
|
408
|
+
start_dt = start_dt.tz_localize('UTC')
|
409
|
+
|
410
|
+
end_dt = pd.to_datetime(self.data_req.source_end_date)
|
411
|
+
if end_dt.tz is None:
|
412
|
+
end_dt = end_dt.tz_localize('UTC')
|
413
|
+
|
414
|
+
buffered_end_dt = end_dt + pd.Timedelta(hours=1)
|
415
|
+
|
416
|
+
except Exception as e:
|
417
|
+
logging.error(f"Could not parse date range: {e}")
|
418
|
+
return pd.DataFrame()
|
116
419
|
|
117
|
-
|
118
|
-
|
420
|
+
all_records = []
|
421
|
+
|
422
|
+
for ticker in self.data_req.source_tickers:
|
423
|
+
market_symbol = f"{ticker}-USD"
|
424
|
+
|
425
|
+
# Initialize pagination variables
|
426
|
+
current_end_date = buffered_end_dt
|
427
|
+
ticker_records = []
|
428
|
+
page_count = 0
|
429
|
+
max_pages = 100
|
430
|
+
|
431
|
+
while page_count < max_pages:
|
432
|
+
page_count += 1
|
433
|
+
url = f"{self.base_url}/historicalFunding/{market_symbol}"
|
434
|
+
|
435
|
+
params = {
|
436
|
+
'effectiveBeforeOrAt': current_end_date.isoformat(),
|
437
|
+
'limit': 1000
|
438
|
+
}
|
439
|
+
|
440
|
+
try:
|
441
|
+
response = requests.get(url, params=params, timeout=30)
|
442
|
+
response.raise_for_status()
|
443
|
+
data = response.json()
|
444
|
+
|
445
|
+
if 'historicalFunding' not in data or not data['historicalFunding']:
|
446
|
+
break
|
447
|
+
|
448
|
+
page_records = data['historicalFunding']
|
449
|
+
|
450
|
+
# Convert timestamps
|
451
|
+
page_df = pd.DataFrame(page_records)
|
452
|
+
page_df['effectiveAt'] = pd.to_datetime(page_df['effectiveAt'])
|
453
|
+
|
454
|
+
if page_df['effectiveAt'].dt.tz is None:
|
455
|
+
page_df['effectiveAt'] = page_df['effectiveAt'].dt.tz_localize('UTC')
|
456
|
+
|
457
|
+
# Filter records within date range
|
458
|
+
oldest_timestamp = page_df['effectiveAt'].min()
|
459
|
+
if oldest_timestamp < start_dt:
|
460
|
+
mask = (page_df['effectiveAt'] >= start_dt) & (page_df['effectiveAt'] <= buffered_end_dt)
|
461
|
+
filtered_records = page_df[mask]
|
462
|
+
|
463
|
+
if not filtered_records.empty:
|
464
|
+
filtered_records = filtered_records.copy()
|
465
|
+
filtered_records['rate'] = pd.to_numeric(filtered_records['rate'], errors='coerce')
|
466
|
+
ticker_records.extend(filtered_records.to_dict('records'))
|
467
|
+
|
468
|
+
break
|
469
|
+
else:
|
470
|
+
mask = page_df['effectiveAt'] <= buffered_end_dt
|
471
|
+
filtered_records = page_df[mask]
|
472
|
+
|
473
|
+
if not filtered_records.empty:
|
474
|
+
filtered_records = filtered_records.copy()
|
475
|
+
filtered_records['rate'] = pd.to_numeric(filtered_records['rate'], errors='coerce')
|
476
|
+
ticker_records.extend(filtered_records.to_dict('records'))
|
477
|
+
|
478
|
+
# Check if we got fewer records than requested (end of data)
|
479
|
+
if len(page_records) < 1000:
|
480
|
+
break
|
481
|
+
|
482
|
+
# Set next pagination point
|
483
|
+
current_end_date = oldest_timestamp - pd.Timedelta(microseconds=1)
|
484
|
+
|
485
|
+
# Rate limiting
|
486
|
+
time.sleep(1.0)
|
487
|
+
|
488
|
+
except requests.exceptions.Timeout:
|
489
|
+
logging.warning(f"Timeout fetching funding rate data for {market_symbol}, retrying...")
|
490
|
+
time.sleep(2.0)
|
491
|
+
continue
|
492
|
+
except requests.exceptions.RequestException as e:
|
493
|
+
logging.error(f"Failed to fetch funding rate data for {market_symbol}: {str(e)}")
|
494
|
+
break
|
495
|
+
except Exception as e:
|
496
|
+
logging.error(f"Error processing funding rate data for {market_symbol}: {str(e)}")
|
497
|
+
break
|
498
|
+
|
499
|
+
if ticker_records:
|
500
|
+
all_records.extend(ticker_records)
|
119
501
|
|
120
|
-
|
121
|
-
|
502
|
+
if not all_records:
|
503
|
+
return pd.DataFrame()
|
504
|
+
|
505
|
+
# Create final DataFrame
|
506
|
+
final_df = pd.DataFrame(all_records)
|
507
|
+
final_df = final_df.sort_values(['ticker', 'effectiveAt']).reset_index(drop=True)
|
508
|
+
|
509
|
+
return final_df
|
510
|
+
|
511
|
+
def _fetch_open_interest(self) -> pd.DataFrame:
|
512
|
+
"""
|
513
|
+
Fetches current open interest from dYdX.
|
514
|
+
Note: This implementation only provides current open interest values, not historical data.
|
515
|
+
Historical open interest data is not available through the dYdX API.
|
516
|
+
|
517
|
+
Returns
|
518
|
+
-------
|
519
|
+
pd.DataFrame
|
520
|
+
DataFrame with current open interest values.
|
521
|
+
The DataFrame has a MultiIndex with 'date' and 'ticker' levels.
|
522
|
+
The 'date' index will be the current timestamp for all entries.
|
523
|
+
"""
|
524
|
+
if not self.data_req:
|
525
|
+
raise ValueError("Data request not set")
|
526
|
+
|
527
|
+
# Get current timestamp for all entries
|
528
|
+
current_time = pd.Timestamp.utcnow()
|
529
|
+
|
530
|
+
all_dfs = []
|
531
|
+
for ticker in self.data_req.source_tickers:
|
532
|
+
market_symbol = f"{ticker}-USD"
|
533
|
+
url = f"{self.base_url}/perpetualMarkets/{market_symbol}"
|
534
|
+
|
535
|
+
try:
|
536
|
+
response = requests.get(url)
|
537
|
+
response.raise_for_status()
|
538
|
+
data = response.json()
|
539
|
+
|
540
|
+
if 'market' not in data:
|
541
|
+
logging.warning(f"No market data found for {market_symbol}")
|
542
|
+
continue
|
543
|
+
|
544
|
+
market_data = data['market']
|
545
|
+
if 'openInterest' not in market_data:
|
546
|
+
logging.warning(f"No open interest data found for {market_symbol}")
|
547
|
+
continue
|
548
|
+
|
549
|
+
# Create DataFrame with current open interest data
|
550
|
+
df = pd.DataFrame({
|
551
|
+
'oi': [float(market_data['openInterest'])],
|
552
|
+
'date': [current_time],
|
553
|
+
'ticker': [ticker]
|
554
|
+
})
|
555
|
+
all_dfs.append(df)
|
556
|
+
except requests.exceptions.RequestException as e:
|
557
|
+
logging.warning(f"Failed to fetch open interest for {market_symbol}: {str(e)}")
|
558
|
+
continue
|
559
|
+
|
560
|
+
if not all_dfs:
|
561
|
+
return pd.DataFrame()
|
562
|
+
|
563
|
+
# Combine all DataFrames
|
564
|
+
return pd.concat(all_dfs, ignore_index=True)
|
565
|
+
|
566
|
+
def _convert_params(self) -> None:
|
567
|
+
"""
|
568
|
+
Converts parameters for the data request using ConvertParams class.
|
569
|
+
"""
|
570
|
+
if not self.data_req:
|
571
|
+
raise ValueError("Data request not set")
|
572
|
+
|
573
|
+
# Convert parameters to dYdX format using ConvertParams class
|
574
|
+
self.data_req = ConvertParams(self.data_req).to_dydx()
|
122
575
|
|
123
576
|
@staticmethod
|
124
577
|
def _wrangle_data_resp(data_req: DataRequest, data_resp: Union[Dict[str, Any], pd.DataFrame]) -> pd.DataFrame:
|
125
|
-
|
578
|
+
"""
|
579
|
+
Wrangles data response from dYdX using WrangleData class.
|
126
580
|
|
127
|
-
|
128
|
-
|
581
|
+
Parameters
|
582
|
+
----------
|
583
|
+
data_req: DataRequest
|
584
|
+
Parameters of data request.
|
585
|
+
data_resp: Union[Dict[str, Any], pd.DataFrame]
|
586
|
+
Data response from dYdX.
|
129
587
|
|
130
|
-
|
131
|
-
|
588
|
+
Returns
|
589
|
+
-------
|
590
|
+
pd.DataFrame
|
591
|
+
Wrangled DataFrame.
|
592
|
+
"""
|
593
|
+
# Determine data type based on the actual data structure
|
594
|
+
if isinstance(data_resp, pd.DataFrame) and not data_resp.empty:
|
595
|
+
# Check columns to determine data type
|
596
|
+
if 'effectiveAt' in data_resp.columns or 'rate' in data_resp.columns:
|
597
|
+
data_type = 'funding_rates'
|
598
|
+
elif 'oi' in data_resp.columns:
|
599
|
+
data_type = 'open_interest'
|
600
|
+
elif 'startedAt' in data_resp.columns or any(col in data_resp.columns for col in ['open', 'high', 'low', 'close']):
|
601
|
+
data_type = 'ohlcv'
|
602
|
+
else:
|
603
|
+
# Fallback to field-based detection
|
604
|
+
if 'funding_rate' in data_req.fields:
|
605
|
+
data_type = 'funding_rates'
|
606
|
+
elif 'oi' in data_req.fields:
|
607
|
+
data_type = 'open_interest'
|
608
|
+
else:
|
609
|
+
data_type = 'ohlcv'
|
610
|
+
else:
|
611
|
+
# Empty DataFrame or other format - use field-based detection
|
612
|
+
if 'funding_rate' in data_req.fields:
|
613
|
+
data_type = 'funding_rates'
|
614
|
+
elif 'oi' in data_req.fields:
|
615
|
+
data_type = 'open_interest'
|
616
|
+
else:
|
617
|
+
data_type = 'ohlcv'
|
618
|
+
|
619
|
+
# Use dYdX-specific wrangling method
|
620
|
+
wrangler = WrangleData(data_req, data_resp)
|
621
|
+
return wrangler.dydx(data_type)
|
132
622
|
|
133
|
-
def
|
134
|
-
|
623
|
+
def _fetch_tidy_ohlcv(self) -> pd.DataFrame:
|
624
|
+
"""
|
625
|
+
Fetches and tidies OHLCV data.
|
626
|
+
|
627
|
+
Returns
|
628
|
+
-------
|
629
|
+
pd.DataFrame
|
630
|
+
Tidy DataFrame with OHLCV data.
|
631
|
+
"""
|
632
|
+
df = self._fetch_ohlcv()
|
633
|
+
return self._wrangle_data_resp(self.data_req, df)
|
634
|
+
|
635
|
+
def _fetch_tidy_funding_rates(self) -> pd.DataFrame:
|
636
|
+
"""
|
637
|
+
Fetches and tidies funding rates.
|
638
|
+
|
639
|
+
Returns
|
640
|
+
-------
|
641
|
+
pd.DataFrame
|
642
|
+
Tidy DataFrame with funding rates.
|
643
|
+
"""
|
644
|
+
df = self._fetch_funding_rates()
|
645
|
+
return self._wrangle_data_resp(self.data_req, df)
|
135
646
|
|
136
|
-
def
|
137
|
-
|
647
|
+
def _fetch_tidy_open_interest(self) -> pd.DataFrame:
|
648
|
+
"""
|
649
|
+
Fetches and tidies open interest.
|
650
|
+
|
651
|
+
Returns
|
652
|
+
-------
|
653
|
+
pd.DataFrame
|
654
|
+
Tidy DataFrame with open interest.
|
655
|
+
"""
|
656
|
+
df = self._fetch_open_interest()
|
657
|
+
return self._wrangle_data_resp(self.data_req, df)
|
658
|
+
|
659
|
+
def get_data(self, data_req: DataRequest) -> pd.DataFrame:
|
660
|
+
"""
|
661
|
+
Gets market data from dYdX.
|
662
|
+
|
663
|
+
Parameters
|
664
|
+
----------
|
665
|
+
data_req: DataRequest
|
666
|
+
Parameters of data request.
|
667
|
+
|
668
|
+
Returns
|
669
|
+
-------
|
670
|
+
pd.DataFrame
|
671
|
+
DataFrame with market data.
|
672
|
+
"""
|
673
|
+
self.data_req = data_req
|
674
|
+
self._convert_params()
|
675
|
+
|
676
|
+
# Determine what types of data to fetch based on requested fields
|
677
|
+
ohlcv_fields = {'open', 'high', 'low', 'close', 'volume'}
|
678
|
+
requested_fields = set(data_req.fields)
|
679
|
+
|
680
|
+
needs_ohlcv = bool(ohlcv_fields.intersection(requested_fields))
|
681
|
+
needs_funding = 'funding_rate' in requested_fields
|
682
|
+
needs_oi = 'oi' in requested_fields
|
683
|
+
|
684
|
+
dfs_to_combine = []
|
685
|
+
|
686
|
+
# Fetch OHLCV data if needed
|
687
|
+
if needs_ohlcv:
|
688
|
+
ohlcv_df = self._fetch_tidy_ohlcv()
|
689
|
+
if not ohlcv_df.empty:
|
690
|
+
dfs_to_combine.append(ohlcv_df)
|
691
|
+
|
692
|
+
# Fetch funding rates if needed
|
693
|
+
if needs_funding:
|
694
|
+
funding_df = self._fetch_tidy_funding_rates()
|
695
|
+
if not funding_df.empty:
|
696
|
+
dfs_to_combine.append(funding_df)
|
697
|
+
|
698
|
+
# Fetch open interest if needed
|
699
|
+
if needs_oi:
|
700
|
+
oi_df = self._fetch_tidy_open_interest()
|
701
|
+
if not oi_df.empty:
|
702
|
+
dfs_to_combine.append(oi_df)
|
703
|
+
|
704
|
+
# Combine all DataFrames
|
705
|
+
if not dfs_to_combine:
|
706
|
+
return pd.DataFrame()
|
707
|
+
elif len(dfs_to_combine) == 1:
|
708
|
+
return dfs_to_combine[0]
|
709
|
+
else:
|
710
|
+
# Combine multiple DataFrames on their common index (date, ticker)
|
711
|
+
# Use proper merge strategy for different data frequencies
|
712
|
+
combined_df = dfs_to_combine[0]
|
713
|
+
for df in dfs_to_combine[1:]:
|
714
|
+
# Use merge instead of concat to handle different frequencies better
|
715
|
+
combined_df = combined_df.merge(df, left_index=True, right_index=True, how='outer')
|
716
|
+
|
717
|
+
# Filter to only requested fields
|
718
|
+
available_cols = [col for col in data_req.fields if col in combined_df.columns]
|
719
|
+
if available_cols:
|
720
|
+
combined_df = combined_df[available_cols]
|
721
|
+
|
722
|
+
return combined_df
|
cryptodatapy/extract/getdata.py
CHANGED
@@ -6,6 +6,7 @@ from cryptodatapy.extract.data_vendors.cryptocompare_api import CryptoCompare
|
|
6
6
|
from cryptodatapy.extract.data_vendors.glassnode_api import Glassnode
|
7
7
|
from cryptodatapy.extract.data_vendors.tiingo_api import Tiingo
|
8
8
|
from cryptodatapy.extract.datarequest import DataRequest
|
9
|
+
from cryptodatapy.extract.exchanges.dydx import Dydx
|
9
10
|
from cryptodatapy.extract.libraries.ccxt_api import CCXT
|
10
11
|
from cryptodatapy.extract.libraries.dbnomics_api import DBnomics
|
11
12
|
from cryptodatapy.extract.libraries.pandasdr_api import PandasDataReader
|
@@ -95,7 +96,8 @@ class GetData:
|
|
95
96
|
"av-daily": PandasDataReader,
|
96
97
|
"av-forex-daily": PandasDataReader,
|
97
98
|
"famafrench": PandasDataReader,
|
98
|
-
"aqr": AQR
|
99
|
+
"aqr": AQR,
|
100
|
+
"dydx": Dydx
|
99
101
|
}
|
100
102
|
|
101
103
|
# available attr and methods
|
@@ -205,7 +207,8 @@ class GetData:
|
|
205
207
|
"av-daily": PandasDataReader,
|
206
208
|
"av-forex-daily": PandasDataReader,
|
207
209
|
"famafrench": PandasDataReader,
|
208
|
-
"aqr": AQR
|
210
|
+
"aqr": AQR,
|
211
|
+
"dydx": Dydx
|
209
212
|
}
|
210
213
|
|
211
214
|
# data source
|
@@ -272,7 +275,8 @@ class GetData:
|
|
272
275
|
"av-daily": PandasDataReader,
|
273
276
|
"av-forex-daily": PandasDataReader,
|
274
277
|
"famafrench": PandasDataReader,
|
275
|
-
"aqr": AQR
|
278
|
+
"aqr": AQR,
|
279
|
+
"dydx": Dydx
|
276
280
|
}
|
277
281
|
|
278
282
|
# data source
|
cryptodatapy/transform/filter.py
CHANGED
@@ -159,12 +159,12 @@ class Filter:
|
|
159
159
|
and fields (cols).
|
160
160
|
"""
|
161
161
|
# drop tickers with nobs < ts_obs
|
162
|
-
obs = self.df.groupby(level=1).count().
|
162
|
+
obs = self.df.groupby(level=1).count().min(axis=1)
|
163
163
|
drop_tickers_list = obs[obs < ts_obs].index.to_list()
|
164
164
|
self.filtered_df = self.df.drop(drop_tickers_list, level=1, axis=0)
|
165
165
|
|
166
166
|
# drop tickers with nobs < cs_obs
|
167
|
-
obs = self.filtered_df.groupby(level=0).count().
|
167
|
+
obs = self.filtered_df.groupby(level=0).count().min(axis=1)
|
168
168
|
idx_start = obs[obs > cs_obs].index[0]
|
169
169
|
self.filtered_df = self.filtered_df.loc[idx_start:]
|
170
170
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: cryptodatapy
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.25
|
4
4
|
Summary: Cryptoasset data library
|
5
5
|
License: Apache-2.0
|
6
6
|
Author: Systamental
|
@@ -32,7 +32,7 @@ Requires-Dist: statsmodels (>=0.13.2)
|
|
32
32
|
Requires-Dist: tdqm (>=0.0.1)
|
33
33
|
Requires-Dist: webdriver-manager (>=3.8.3)
|
34
34
|
Requires-Dist: xlrd (>=2.0.1)
|
35
|
-
Requires-Dist: yfinance (
|
35
|
+
Requires-Dist: yfinance (==0.2.64)
|
36
36
|
Description-Content-Type: text/markdown
|
37
37
|
|
38
38
|

|
@@ -1,6 +1,6 @@
|
|
1
1
|
cryptodatapy/__init__.py,sha256=ee1UaINHZn1A_SZ96XM3hCguQEJgiPTvKlnYsk3mmS4,185
|
2
2
|
cryptodatapy/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
cryptodatapy/conf/fields.csv,sha256=
|
3
|
+
cryptodatapy/conf/fields.csv,sha256=3LJ6fdYKS-NccWcGTeUBPKeDDialY6TVi9_YFXzUEKA,25684
|
4
4
|
cryptodatapy/conf/tickers.csv,sha256=Bs9KfDKawoUPKIQZMN8CtoLYJuzOkwLh2il30c8CsqE,357066
|
5
5
|
cryptodatapy/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
cryptodatapy/datasets/br_econ_calendar.csv,sha256=mSM0IOIByI-0gIIL1CbDQPqHYI5lK6vavrY1ODj3Jlk,1185318
|
@@ -32,11 +32,11 @@ cryptodatapy/extract/data_vendors/cryptocompare_api.py,sha256=eEK0QTROr97hG4pxTu
|
|
32
32
|
cryptodatapy/extract/data_vendors/datavendor.py,sha256=eH_yIJPy5FvZhgILqpgNYYkbmC5fK_5eIdIZTOeNw9Q,13292
|
33
33
|
cryptodatapy/extract/data_vendors/glassnode_api.py,sha256=PuuJOjHztoJyFijb5XU1zm1S_2NAj7MX-wC89DL_bWQ,13103
|
34
34
|
cryptodatapy/extract/data_vendors/tiingo_api.py,sha256=AYYtVFC9gPqhUWGsHVRpEmVse6b0djGX8bCMtaiYFY0,25681
|
35
|
-
cryptodatapy/extract/datarequest.py,sha256=
|
35
|
+
cryptodatapy/extract/datarequest.py,sha256=dqwtvJQpoErRu82x4WQUoN0sL7QRVLBHc_hXl9Gj6hw,25235
|
36
36
|
cryptodatapy/extract/exchanges/__init__.py,sha256=7QUxwrUiweyv_1u_tNjOyeAFKMwJ32Z0aiJ_Gh8bMXk,114
|
37
|
-
cryptodatapy/extract/exchanges/dydx.py,sha256=
|
37
|
+
cryptodatapy/extract/exchanges/dydx.py,sha256=tBp60PG24tUZI949nHSiJQwjsP0zI2Oyz9yDkFDy1ZU,27697
|
38
38
|
cryptodatapy/extract/exchanges/exchange.py,sha256=Cicj3KS4zLbwmXX5fu89byXNwqqU4TH31GFv0zj3D4s,13010
|
39
|
-
cryptodatapy/extract/getdata.py,sha256=
|
39
|
+
cryptodatapy/extract/getdata.py,sha256=FQRJjB51V-ZufY61DraAHqWb_WR6cz74c8i5CWQlyh8,11513
|
40
40
|
cryptodatapy/extract/libraries/__init__.py,sha256=KG2Rr3c8CcDq-nbhT-ItssqZE9U65xQXH0Wv0g86SVg,254
|
41
41
|
cryptodatapy/extract/libraries/ccxt_api.py,sha256=F4wYocKpaKngvXCZR-zTIBUOFZMGvQ_5Onw82uLCWOU,56131
|
42
42
|
cryptodatapy/extract/libraries/dbnomics_api.py,sha256=M6kPIH-hKqkmeBQb-g56dY9jatqLCtSl_MnvPblHtAc,9421
|
@@ -49,14 +49,14 @@ cryptodatapy/extract/web/web.py,sha256=R1xEnHE1McxSWxp4vrTfgh9gW6FF6XDlp0gmp2NmW
|
|
49
49
|
cryptodatapy/transform/__init__.py,sha256=Spb5cGJ3V_o8hgSWOSrF8J_vsSZpFk0uzW7RpkgfbFE,131
|
50
50
|
cryptodatapy/transform/clean.py,sha256=C9VypQOjdJ987TcD-qAHh7qYaoJBotvp3cWTr3ttSGM,12807
|
51
51
|
cryptodatapy/transform/convertparams.py,sha256=2tXYjITMardNkf4WXPYmgvnLXTej9XdSE6JfdU4_wfk,42724
|
52
|
-
cryptodatapy/transform/filter.py,sha256=
|
52
|
+
cryptodatapy/transform/filter.py,sha256=37MjUKUay3dwwyn47rnNOU51X_OFzmWq_N9buALzq9k,9058
|
53
53
|
cryptodatapy/transform/impute.py,sha256=_0-SX5nnPrYgJYT-HKwBGNkmWXRMy9-C2oeU6VqkQp0,5537
|
54
54
|
cryptodatapy/transform/od.py,sha256=mI1oojMbfmdO9ZewL3AvMxoXuMM05Ut2oGm_ogMf2XU,30386
|
55
55
|
cryptodatapy/transform/wrangle.py,sha256=M3l3Fyc45LoUSA2lIfe27anT_4OPZESPBfWf_rI6CxA,42358
|
56
56
|
cryptodatapy/util/__init__.py,sha256=zSQ2HU2QIXzCuptJjknmrClwtQKCvIj4aNysZljIgrU,116
|
57
57
|
cryptodatapy/util/datacatalog.py,sha256=qCCX6srXvaAbVAKuA0M2y5IK_2OEx5xA3yRahDZlC-g,13157
|
58
58
|
cryptodatapy/util/datacredentials.py,sha256=CC23ocTrxr6EEqM-oreLgz5rHEDX7EmZS7DYTgoIg8Q,2752
|
59
|
-
cryptodatapy-0.2.
|
60
|
-
cryptodatapy-0.2.
|
61
|
-
cryptodatapy-0.2.
|
62
|
-
cryptodatapy-0.2.
|
59
|
+
cryptodatapy-0.2.25.dist-info/LICENSE,sha256=sw4oVq8bDjT3uMtaFebQ-xeIVP4H-bXldTs9q-Jjeks,11344
|
60
|
+
cryptodatapy-0.2.25.dist-info/METADATA,sha256=YMBR147jSPtWrP2S95_Aq-7DSbbocNIljK6sXPMw0gQ,6428
|
61
|
+
cryptodatapy-0.2.25.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
62
|
+
cryptodatapy-0.2.25.dist-info/RECORD,,
|
File without changes
|