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.
@@ -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,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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins twitter account,off-chain,alt data,"d, w, m, q",followers,Int64,twitter_followers,,,,,,,,,,,
105
- twitter_following,twitter following ,number of accounts this coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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 coins 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
+ 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,,,,,
@@ -130,6 +130,7 @@ class DataRequest:
130
130
  "cryptocompare",
131
131
  "coinmetrics",
132
132
  "ccxt",
133
+ "dydx",
133
134
  "glassnode",
134
135
  "tiingo",
135
136
  "investpy",
@@ -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 asyncio
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] = ["spot", "future", "perpetual_future", "option"],
30
- fields: Optional[List[str]] = ["open", "high", "low", "close", "volume", "funding_rate", 'oi'],
31
- frequencies: Optional[Dict[str, Union[str, int]]] = None,
32
- fees: Optional[Dict[str, float]] = {'spot': {'maker': 0.0, 'taker': 0.0},
33
- 'perpetual_future': {'maker': 0.0, 'taker': 0.0}
34
- },
35
- base_url: Optional[str] = None,
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] = None,
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
- pass
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
- def get_markets_info(self):
97
- pass
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
- def get_fields_info(self, data_type: Optional[str]):
100
- pass
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
- def get_frequencies_info(self):
103
- pass
378
+ if not all_records:
379
+ return pd.DataFrame()
104
380
 
105
- def get_rate_limit_info(self):
106
- pass
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 get_metadata(self):
109
- pass
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
- def _fetch_ohlcv(self):
112
- pass
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
- def _fetch_funding_rates(self):
115
- pass
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
- def _fetch_open_interest(self):
118
- pass
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
- def _convert_params(self):
121
- pass
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
- pass
578
+ """
579
+ Wrangles data response from dYdX using WrangleData class.
126
580
 
127
- def _fetch_tidy_ohlcv(self):
128
- pass
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
- def _fetch_tidy_funding_rates(self):
131
- pass
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 _fetch_tidy_open_interest(self):
134
- pass
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 get_data(self, data_req) -> pd.DataFrame:
137
- pass
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
@@ -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
@@ -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().median(axis=1)
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().median(axis=1)
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.23
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 (>=0.2.14)
35
+ Requires-Dist: yfinance (==0.2.64)
36
36
  Description-Content-Type: text/markdown
37
37
 
38
38
  ![](cryptodatapy_logo.jpeg)
@@ -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=zH-Pw438Nencqr8tXQfTBlHH5HF-bLyJCW5MF8LCB4E,25734
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=EPq_7itSjwoqLY1v3HLQRbiFbSMCOzFmA2xGpaM3PQc,25215
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=Oifb4sKbPRKArdZBx9q5ob4yTFkd65n0zXiS7hga0mk,4199
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=h8AA2O8br23ABQsFCFqcH8VsmioSPjWxNSFKz-pnSCo,11382
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=KYYyta0uREAjBkYTVyvhOCCLSKR_qPSlqj5Nl7l4iBk,9064
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.23.dist-info/LICENSE,sha256=sw4oVq8bDjT3uMtaFebQ-xeIVP4H-bXldTs9q-Jjeks,11344
60
- cryptodatapy-0.2.23.dist-info/METADATA,sha256=bSfD4gKvL2_iCGvKBT-JgpLhzH4ClKqIwhPYNk1jpNc,6428
61
- cryptodatapy-0.2.23.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
62
- cryptodatapy-0.2.23.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.1
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any