cryptodatapy 0.2.5__py3-none-any.whl → 0.2.7__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.
Files changed (42) hide show
  1. cryptodatapy/conf/fields.csv +1 -1
  2. cryptodatapy/conf/tickers.csv +0 -1
  3. cryptodatapy/extract/data_vendors/CoinMetrics.ipynb +747 -0
  4. cryptodatapy/extract/data_vendors/coinmetrics_api.py +279 -209
  5. cryptodatapy/extract/data_vendors/cryptocompare_api.py +3 -5
  6. cryptodatapy/extract/data_vendors/datavendor.py +32 -12
  7. cryptodatapy/extract/data_vendors/glassnode_api.py +3 -2
  8. cryptodatapy/extract/data_vendors/tiingo_api.py +3 -2
  9. cryptodatapy/extract/datarequest.py +197 -36
  10. cryptodatapy/extract/libraries/Untitled.ipynb +33 -0
  11. cryptodatapy/extract/libraries/ccxt.ipynb +628 -754
  12. cryptodatapy/extract/libraries/ccxt_api.py +630 -346
  13. cryptodatapy/extract/libraries/pandasdr_api.py +13 -12
  14. cryptodatapy/extract/libraries/yfinance_api.py +511 -0
  15. cryptodatapy/transform/cc_onchain_data.csv +118423 -0
  16. cryptodatapy/transform/clean.py +17 -15
  17. cryptodatapy/transform/clean_onchain_data.ipynb +4750 -0
  18. cryptodatapy/transform/clean_perp_futures_ohlcv.ipynb +1712 -1097
  19. cryptodatapy/transform/cmdty_data.ipynb +402 -0
  20. cryptodatapy/transform/convertparams.py +139 -181
  21. cryptodatapy/transform/credit_data.ipynb +291 -0
  22. cryptodatapy/transform/eqty_data.ipynb +836 -0
  23. cryptodatapy/transform/filter.py +13 -10
  24. cryptodatapy/transform/global_credit_data_daily.parquet +0 -0
  25. cryptodatapy/transform/od.py +1 -0
  26. cryptodatapy/transform/rates_data.ipynb +465 -0
  27. cryptodatapy/transform/us_rates_daily.csv +227752 -0
  28. cryptodatapy/transform/wrangle.py +109 -20
  29. cryptodatapy/util/datacredentials.py +28 -7
  30. {cryptodatapy-0.2.5.dist-info → cryptodatapy-0.2.7.dist-info}/METADATA +10 -7
  31. {cryptodatapy-0.2.5.dist-info → cryptodatapy-0.2.7.dist-info}/RECORD +33 -31
  32. {cryptodatapy-0.2.5.dist-info → cryptodatapy-0.2.7.dist-info}/WHEEL +1 -1
  33. cryptodatapy/.DS_Store +0 -0
  34. cryptodatapy/.idea/.gitignore +0 -3
  35. cryptodatapy/.idea/cryptodatapy.iml +0 -12
  36. cryptodatapy/.idea/csv-plugin.xml +0 -16
  37. cryptodatapy/.idea/inspectionProfiles/Project_Default.xml +0 -6
  38. cryptodatapy/.idea/inspectionProfiles/profiles_settings.xml +0 -6
  39. cryptodatapy/.idea/misc.xml +0 -4
  40. cryptodatapy/.idea/modules.xml +0 -8
  41. cryptodatapy/.idea/vcs.xml +0 -6
  42. {cryptodatapy-0.2.5.dist-info → cryptodatapy-0.2.7.dist-info}/LICENSE +0 -0
@@ -469,7 +469,6 @@ class WrangleData:
469
469
  """
470
470
  Wrangles time series data responses from various APIs into tidy data format.
471
471
  """
472
-
473
472
  def __init__(self, data_req: DataRequest, data_resp: Union[Dict[str, pd.DataFrame], pd.DataFrame]):
474
473
  """
475
474
  Constructor
@@ -484,6 +483,7 @@ class WrangleData:
484
483
  """
485
484
  self.data_req = data_req
486
485
  self.data_resp = data_resp
486
+ self.tidy_data = pd.DataFrame()
487
487
 
488
488
  def cryptocompare(self) -> pd.DataFrame:
489
489
  """
@@ -734,36 +734,125 @@ class WrangleData:
734
734
 
735
735
  return self.data_resp
736
736
 
737
- def ccxt(self) -> pd.DataFrame:
737
+ def ccxt_ohlcv(self) -> pd.DataFrame:
738
738
  """
739
- Wrangles CCXT data response to dataframe with tidy data format.
739
+ Wrangles CCXT OHLCV data response to dataframe with tidy data format.
740
740
 
741
741
  Returns
742
742
  -------
743
743
  pd.DataFrame
744
- Wrangled dataframe into tidy data format.
744
+ Dataframe with tidy data format.
745
+ """
746
+ # field cols
747
+ cols = ["date", "open", "high", "low", "close", "volume"]
748
+
749
+ # add tickers
750
+ for i in range(len(self.data_req.source_markets)):
751
+ df = pd.DataFrame(self.data_resp[i], columns=cols)
752
+ df['ticker'] = self.data_req.source_markets[i]
753
+ self.tidy_data = pd.concat([self.tidy_data, df])
754
+
755
+ # convert to datetime
756
+ self.tidy_data['date'] = pd.to_datetime(self.tidy_data['date'], unit='ms')
745
757
 
758
+ # set index
759
+ self.tidy_data = self.tidy_data.set_index(['date', 'ticker']).sort_index()
760
+
761
+ return self.tidy_data
762
+
763
+ def ccxt_funding_rates(self) -> pd.DataFrame:
746
764
  """
747
- # convert fields to lib
765
+ Wrangles CCXT funding rates data response to dataframe with tidy data format.
766
+
767
+ Returns
768
+ -------
769
+ pd.DataFrame
770
+ Dataframe with tidy data format.
771
+ """
772
+ # add tickers
773
+ for i in range(len(self.data_req.source_markets)):
774
+ df = pd.DataFrame(self.data_resp[i])
775
+ self.tidy_data = pd.concat([self.tidy_data, df])
776
+ self.tidy_data = self.tidy_data[['symbol', 'fundingRate', 'datetime']]
777
+ self.data_resp = self.tidy_data
778
+
779
+ # convert to lib fields
748
780
  self.convert_fields_to_lib(data_source='ccxt')
781
+ self.tidy_data = self.data_resp
782
+
749
783
  # convert to datetime
750
- if 'close' in self.data_resp.columns:
751
- self.data_resp['date'] = pd.to_datetime(self.data_resp.date, unit='ms')
752
- elif 'funding_rate' in self.data_resp.columns:
753
- self.data_resp['date'] = pd.to_datetime(self.data_resp.set_index('date').index).floor('s').tz_localize(None)
784
+ self.tidy_data['date'] = pd.to_datetime(self.tidy_data.set_index('date').index).floor('s').tz_localize(None)
785
+
754
786
  # set index
755
- self.data_resp = self.data_resp.set_index('date').sort_index()
787
+ self.tidy_data = self.tidy_data.set_index(['date', 'ticker']).sort_index()
788
+
756
789
  # resample
757
- if 'funding_rate' in self.data_resp.columns and self.data_req.freq in ['d', 'w', 'm', 'q', 'y']:
758
- self.data_resp = ((self.data_resp.funding_rate + 1).resample(self.data_req.freq).prod() - 1).to_frame()
790
+ if self.data_req.freq in ['d', 'w', 'm', 'q', 'y']:
791
+ self.tidy_data = (
792
+ (1 + self.tidy_data.funding_rate)
793
+ .groupby('ticker')
794
+ .resample('d', level='date')
795
+ .prod() - 1
796
+ ).to_frame().swaplevel('ticker', 'date').sort_index()
797
+
798
+ return self.tidy_data
799
+
800
+ def ccxt_open_interest(self) -> pd.DataFrame:
801
+ """
802
+ Wrangles CCXT open interest data response to dataframe with tidy data format.
803
+
804
+ Returns
805
+ -------
806
+ pd.DataFrame
807
+ Dataframe with tidy data format.
808
+ """
809
+ # add tickers
810
+ for i in range(len(self.data_req.source_markets)):
811
+ df = pd.DataFrame(self.data_resp[i])
812
+ self.tidy_data = pd.concat([self.tidy_data, df])
813
+ self.tidy_data = self.tidy_data[['symbol', 'openInterestAmount', 'datetime']]
814
+ self.data_resp = self.tidy_data
815
+
816
+ # convert to lib fields
817
+ self.convert_fields_to_lib(data_source='ccxt')
818
+ self.tidy_data = self.data_resp
819
+
820
+ # convert to datetime
821
+ self.tidy_data['date'] = pd.to_datetime(self.tidy_data.set_index('date').index).floor('s').tz_localize(None)
822
+
823
+ # set index
824
+ self.tidy_data = self.tidy_data.set_index(['date', 'ticker']).sort_index()
825
+
826
+ return self.tidy_data
827
+
828
+ def ccxt(self, data_type: str) -> pd.DataFrame:
829
+ """
830
+ Wrangles CCXT data response to dataframe with tidy data format.
831
+
832
+ Returns
833
+ -------
834
+ pd.DataFrame
835
+ Wrangled dataframe into tidy data format.
836
+
837
+ """
838
+ if data_type == 'ohlcv':
839
+ self.tidy_data = self.ccxt_ohlcv()
840
+ elif data_type == 'funding_rates':
841
+ self.tidy_data = self.ccxt_funding_rates()
842
+ elif data_type == 'open_interest':
843
+ self.tidy_data = self.ccxt_open_interest()
844
+ else:
845
+ raise ValueError(f"Data type {data_type} not supported.")
846
+
759
847
  # type conversion
760
- self.data_resp = self.data_resp.apply(pd.to_numeric, errors='coerce').convert_dtypes()
848
+ self.tidy_data = self.tidy_data.apply(pd.to_numeric, errors='coerce').convert_dtypes()
849
+
761
850
  # remove bad data
762
- self.data_resp = self.data_resp[self.data_resp != 0] # 0 values
763
- self.data_resp = self.data_resp[~self.data_resp.index.duplicated()] # duplicate rows
764
- self.data_resp = self.data_resp.dropna(how='all').dropna(how='all', axis=1) # entire row or col NaNs
851
+ self.tidy_data = self.tidy_data[self.tidy_data != 0] # 0 values
852
+ self.tidy_data = self.tidy_data[~self.tidy_data.index.duplicated()] # duplicate rows
853
+ self.tidy_data = self.tidy_data.dropna(how='all').dropna(how='all', axis=1) # entire row or col NaNs
765
854
 
766
- return self.data_resp
855
+ return self.tidy_data
767
856
 
768
857
  def fred(self) -> pd.DataFrame:
769
858
  """
@@ -1016,9 +1105,9 @@ class WrangleData:
1016
1105
 
1017
1106
  # loop through data resp cols
1018
1107
  for col in self.data_resp.columns:
1019
- if self.data_req.source_fields is not None and col in self.data_req.source_fields:
1020
- pass
1021
- elif col in fields_list or col.title() in fields_list or col.lower() in fields_list:
1108
+ # if self.data_req.source_fields is not None and col in self.data_req.source_fields:
1109
+ # pass
1110
+ if col in fields_list or col.title() in fields_list or col.lower() in fields_list:
1022
1111
  self.data_resp.rename(columns={col: fields_df[(fields_df[str(data_source) + '_id']
1023
1112
  == col.title()) |
1024
1113
  (fields_df[str(data_source) + '_id'] == col.lower()) |
@@ -22,19 +22,40 @@ class DataCredentials:
22
22
  mongo_db_password: str = None
23
23
  mongo_db_name: str = None
24
24
 
25
- # api keys
26
- cryptocompare_api_key: str = os.environ['CRYPTOCOMPARE_API_KEY']
27
- glassnode_api_key: str = os.environ['GLASSNODE_API_KEY']
28
- tiingo_api_key: str = os.environ['TIINGO_API_KEY']
29
-
30
- # api limit URLs
31
- cryptocompare_api_rate_limit: str = "https://min-api.cryptocompare.com/stats/rate/limit"
25
+ # API keys
26
+ # cryptocompare api key
27
+ try:
28
+ cryptocompare_api_key: str = os.environ['CRYPTOCOMPARE_API_KEY']
29
+ except KeyError:
30
+ cryptocompare_api_key: str = None
31
+ # glassnode api key
32
+ try:
33
+ glassnode_api_key: str = os.environ['GLASSNODE_API_KEY']
34
+ except KeyError:
35
+ glassnode_api_key: str = None
36
+ # tiingo api key
37
+ try:
38
+ tiingo_api_key: str = os.environ['TIINGO_API_KEY']
39
+ except KeyError:
40
+ tiingo_api_key: str = None
41
+ # coinmetrics api key
42
+ try:
43
+ coinmetrics_api_key: str = os.environ['COINMETRICS_API_KEY']
44
+ except KeyError:
45
+ coinmetrics_api_key: str = None
32
46
 
33
47
  # base URLs
34
48
  cryptocompare_base_url: str = 'https://min-api.cryptocompare.com/data/'
35
49
  glassnode_base_url: str = 'https://api.glassnode.com/v1/metrics/'
36
50
  tiingo_base_url: str = 'https://api.tiingo.com/tiingo/'
37
51
  aqr_base_url: str = 'https://www.aqr.com/-/media/AQR/Documents/Insights/Data-Sets/'
52
+ if coinmetrics_api_key is not None:
53
+ coinmetrics_base_url: str = 'https://api.coinmetrics.io/v4'
54
+ else:
55
+ coinmetrics_base_url: str = 'https://community-api.coinmetrics.io/v4'
56
+
57
+ # api limit URLs
58
+ cryptocompare_api_rate_limit: str = "https://min-api.cryptocompare.com/stats/rate/limit"
38
59
 
39
60
  # vendors URLs
40
61
  dbnomics_vendors_url: str = "https://db.nomics.world/providers"
@@ -1,18 +1,20 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cryptodatapy
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: Cryptoasset data library
5
5
  License: Apache-2.0
6
6
  Author: Systamental
7
7
  Requires-Python: >=3.8,<4.0
8
8
  Classifier: License :: OSI Approved :: Apache Software License
9
9
  Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.10
11
10
  Classifier: Programming Language :: Python :: 3.8
12
11
  Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
13
15
  Requires-Dist: DBnomics (>=1.2.3)
14
16
  Requires-Dist: ccxt (>=1.91.52)
15
- Requires-Dist: coinmetrics-api-client (>=2022.6.17); python_version >= "3.7"
17
+ Requires-Dist: coinmetrics-api-client (>=2022.6.17) ; python_version >= "3.7"
16
18
  Requires-Dist: fsspec (>=2024.6.1)
17
19
  Requires-Dist: investpy (>=1.0.8)
18
20
  Requires-Dist: matplotlib (>=3.5.2)
@@ -20,13 +22,14 @@ Requires-Dist: numpy (>=1.23.2)
20
22
  Requires-Dist: openpyxl (>=3.1.2)
21
23
  Requires-Dist: pandas (>=1.4.4)
22
24
  Requires-Dist: pandas-datareader (>=0.10.0)
23
- Requires-Dist: prophet (>=1.1); python_version >= "3.7"
25
+ Requires-Dist: prophet (>=1.1) ; python_version >= "3.7"
24
26
  Requires-Dist: pyarrow (>=17.0.0)
25
- Requires-Dist: requests (>=2.28.0); python_version >= "3.7"
27
+ Requires-Dist: requests (>=2.28.0) ; python_version >= "3.7"
26
28
  Requires-Dist: responses (>=0.21.0)
27
- Requires-Dist: s3fs (>=2024.6.1,<2025.0.0)
29
+ Requires-Dist: s3fs (>=2024.6.1)
28
30
  Requires-Dist: selenium (>=4.4.3)
29
31
  Requires-Dist: statsmodels (>=0.13.2)
32
+ Requires-Dist: tdqm (>=0.0.1)
30
33
  Requires-Dist: webdriver-manager (>=3.8.3)
31
34
  Requires-Dist: xlrd (>=2.0.1)
32
35
  Requires-Dist: yfinance (>=0.2.14)
@@ -35,7 +38,7 @@ Description-Content-Type: text/markdown
35
38
  ![](cryptodatapy_logo.jpeg)
36
39
 
37
40
  # CryptoDataPy
38
- ### _Better data beats fancier algorithms_
41
+ ### _Better data beats advanced algorithms_
39
42
  <br/>
40
43
 
41
44
  **CryptoDataPy** is a python library which makes it easy to build high quality data pipelines
@@ -1,17 +1,8 @@
1
- cryptodatapy/.DS_Store,sha256=PAgbS0KIr24oqHYVH0XcuP_rM0ytXS0FIC_Y5fwb5wI,6148
2
- cryptodatapy/.idea/.gitignore,sha256=qeVPxPCLyX2CwEvYb_N9OvhLqe9K2H_Py0ONq2Iuiqo,47
3
- cryptodatapy/.idea/cryptodatapy.iml,sha256=w0TW3o9qEaYr1iYR1jwYqlUBYm3KyxgnCK1PD03XvwQ,441
4
- cryptodatapy/.idea/csv-plugin.xml,sha256=kVn-REwnZha3y9sWKgqBd0RKNDr0acmLVCntWaqbMuw,392
5
- cryptodatapy/.idea/inspectionProfiles/Project_Default.xml,sha256=a3b3Z4-DvGJJ43qdAbQ_-pbTx233D2zLWV5PdsvpsxQ,256
6
- cryptodatapy/.idea/inspectionProfiles/profiles_settings.xml,sha256=YXLFmX7rPNGcnKK1uX1uKYPN0fpgskYNe7t0BV7cqkY,174
7
- cryptodatapy/.idea/misc.xml,sha256=fNK-pK0wJ6JRyiTKlpP9aQ9NC3cvTTUtdSopmICNdyo,200
8
- cryptodatapy/.idea/modules.xml,sha256=D8TS27hP9PgwvTAqVJX5b6hlLdLOwU0VNIuDSkK3ncw,276
9
- cryptodatapy/.idea/vcs.xml,sha256=b_39r807_tBAMOSSbIxyjQKeZsNYXTI-_FCT1j3FXuE,186
10
1
  cryptodatapy/__init__.py,sha256=ee1UaINHZn1A_SZ96XM3hCguQEJgiPTvKlnYsk3mmS4,185
11
2
  cryptodatapy/conf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- cryptodatapy/conf/fields.csv,sha256=6gl7HSZyuNeDMEuaxn4XzMZdRfF2bjGFob3Th5olfko,25717
3
+ cryptodatapy/conf/fields.csv,sha256=Xjs_sWIY4DuhdHlWOPo0pgDC8sHYA6xzf6kb0PuUp9w,25735
13
4
  cryptodatapy/conf/fx_tickers.csv,sha256=vqbY93_6Zi4vXg8iu0veXZ-NDm_NV2rrmb5lNYRqNUA,288
14
- cryptodatapy/conf/tickers.csv,sha256=9rMQvB_SgKiH-zoBNMEFK_fpznDIN9lU-xt0mD12aII,357205
5
+ cryptodatapy/conf/tickers.csv,sha256=Bs9KfDKawoUPKIQZMN8CtoLYJuzOkwLh2il30c8CsqE,357066
15
6
  cryptodatapy/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
7
  cryptodatapy/datasets/br_econ_calendar.csv,sha256=mSM0IOIByI-0gIIL1CbDQPqHYI5lK6vavrY1ODj3Jlk,1185318
17
8
  cryptodatapy/datasets/ca_econ_calendar.csv,sha256=GtoopEhCSufBNjpAi2BiorSsm4RmoK5dfZe8lkOS-Jc,1521808
@@ -36,36 +27,47 @@ cryptodatapy/extract/data_vendors/.ipynb_checkpoints/DBNomics-checkpoint.ipynb,s
36
27
  cryptodatapy/extract/data_vendors/.ipynb_checkpoints/InvestPy-checkpoint.ipynb,sha256=ybcHKXzmmlTYEoxC-qkWmd0Pjn1WjJ5CMPvMVotqJ7o,50215
37
28
  cryptodatapy/extract/data_vendors/.ipynb_checkpoints/NasdaqDataLink-checkpoint.ipynb,sha256=hY2QkCcTiLgPnl8SQPsO8spio5-RBMGeBLYzAwgSWb4,147170
38
29
  cryptodatapy/extract/data_vendors/.ipynb_checkpoints/PandasDataReader-checkpoint.ipynb,sha256=n7vzOV6AxC_Ti5CLWW2ABMEEcbbBpiBBs4qTUBQinIg,24171
30
+ cryptodatapy/extract/data_vendors/CoinMetrics.ipynb,sha256=OtepxnBvt2DMCJpPFcY0kGhMRcKhw8ArSL85Cd3oO10,24923
39
31
  cryptodatapy/extract/data_vendors/__init__.py,sha256=Nk6gcT43d0XOLfrlVA9r--5mvHCgHfq295IKL3Puu74,354
40
- cryptodatapy/extract/data_vendors/coinmetrics_api.py,sha256=FrCMunpoF05sWrclgu2oTYT-BtDKYCOZxSHQBmMOPcg,33404
41
- cryptodatapy/extract/data_vendors/cryptocompare_api.py,sha256=yFqU9eSXHiNx7dtJzJtofudumzCnH_TCgH6Waq2y4NY,28889
42
- cryptodatapy/extract/data_vendors/datavendor.py,sha256=63iQ0W_TmRHWKt3Jf6ezcxNYP-drClGnFY_vzj-fuVg,12082
43
- cryptodatapy/extract/data_vendors/glassnode_api.py,sha256=44xpZtMWMp6-QHeCoWbPu6cFS0fKUHioUVkC2UD94V4,13024
44
- cryptodatapy/extract/data_vendors/tiingo_api.py,sha256=dUovHL3HfB5jFWxfUxMCYULTZNaGo7SBELlhcxov2ic,26349
45
- cryptodatapy/extract/datarequest.py,sha256=0TdzpU0FbbLPQlFzFDOl-5masYy76n--F_DNUm5S68Q,18139
32
+ cryptodatapy/extract/data_vendors/coinmetrics_api.py,sha256=2fnsgKkBWjzMa1jzfVa7UbJKTpMWzcFVjo0bKDEud8U,34991
33
+ cryptodatapy/extract/data_vendors/cryptocompare_api.py,sha256=3oBfQioBz1vrs9JNtwE0hBLI4BTtpFBBEEsDawmobE8,28872
34
+ cryptodatapy/extract/data_vendors/datavendor.py,sha256=kGKxHcPng6JiGGhcuPx87ij0DXl4E-OSqxlvxhJ1HQo,12642
35
+ cryptodatapy/extract/data_vendors/glassnode_api.py,sha256=PuuJOjHztoJyFijb5XU1zm1S_2NAj7MX-wC89DL_bWQ,13103
36
+ cryptodatapy/extract/data_vendors/tiingo_api.py,sha256=Bvj5nF8zCkpU3cf5ImUmCS1cd1w2UtjgQvRmQ9Wfg6g,26404
37
+ cryptodatapy/extract/datarequest.py,sha256=KMfrc4WeHivNeIKN-sbLFWD7sqPrwasPFiee6QUWRuA,25015
46
38
  cryptodatapy/extract/getdata.py,sha256=HzWQyacfmphms97LVKbx1gEgcgsQJViBT4BBxL9TBXk,8703
39
+ cryptodatapy/extract/libraries/Untitled.ipynb,sha256=4SGovpmy_kLijEhzBhVJoYNVPrwrERRO0DL6gwzeRvM,614
47
40
  cryptodatapy/extract/libraries/__init__.py,sha256=9rJ_hFHWlvkPwyIkNG5bqH6HTY2jQNPIKQjzYEsVSDo,319
48
- cryptodatapy/extract/libraries/ccxt.ipynb,sha256=soYwl7McUc5IHrlnPVysP5YQ5we4UO2DJE5go0b2n3Q,34526
49
- cryptodatapy/extract/libraries/ccxt_api.py,sha256=V-uYfE7LfURZG33_C26faG2j59b6nvPvw0lmrpWKolQ,24721
41
+ cryptodatapy/extract/libraries/ccxt.ipynb,sha256=O-xkr_jtRBY4kuKWek61UOLaU5AiyNRM7AnquNLUjFs,22865
42
+ cryptodatapy/extract/libraries/ccxt_api.py,sha256=E_jVIKZ5iDjuTK-JwJFENvuWG08B24nN-NcVruWSoeQ,35882
50
43
  cryptodatapy/extract/libraries/dbnomics_api.py,sha256=M6kPIH-hKqkmeBQb-g56dY9jatqLCtSl_MnvPblHtAc,9421
51
44
  cryptodatapy/extract/libraries/investpy_api.py,sha256=qtGm3LDluXxJorvFv0w1bm1oBrcZIfE5cZSYzNYvttY,18409
52
45
  cryptodatapy/extract/libraries/library.py,sha256=070YsO1RJzm4z_enhCjqe5hrj8qsk-Ni0Q_QKoAwQ6U,12316
53
- cryptodatapy/extract/libraries/pandasdr_api.py,sha256=GdNi7ybPqSD2ieuUaaIyhTSmZG-YchMs_P4WQIy5JBw,12943
46
+ cryptodatapy/extract/libraries/pandasdr_api.py,sha256=DFko-N_ZmINUnzmXIct_CgnwEeoTh1xkaXewcJXdR2k,13177
47
+ cryptodatapy/extract/libraries/yfinance_api.py,sha256=E4c8gIpDh5ta8ILsn9SBs3C1pOU1VP4OqwQb6TcOzCc,17311
54
48
  cryptodatapy/extract/web/__init__.py,sha256=8i0fweCeqSpdiPf-47jT240I4ca6SizCu9aD-qDS67w,89
55
49
  cryptodatapy/extract/web/aqr.py,sha256=LS1D7QzG6UWkLUfDMgBFtiHpznnnAUOpec5Sx3vRGME,11875
56
50
  cryptodatapy/extract/web/web.py,sha256=27cAzlIyYn6R29726J7p9NhSwHypas9EQSjHLILtcjk,9748
57
51
  cryptodatapy/transform/__init__.py,sha256=Spb5cGJ3V_o8hgSWOSrF8J_vsSZpFk0uzW7RpkgfbFE,131
58
- cryptodatapy/transform/clean.py,sha256=uWz9qO55o3-TZGZPPsr0tXAhg2QLMElQ6EkNy-pV96Q,12660
59
- cryptodatapy/transform/clean_perp_futures_ohlcv.ipynb,sha256=ZCUKUSQI9YDhFt8H9fcBr3SV13FYyFp-8vXqiYWHNhM,62498
60
- cryptodatapy/transform/convertparams.py,sha256=Y7lDVmRw6bZXOhFwFxczJzPURosb1haQIpZcQyIM42Q,44284
61
- cryptodatapy/transform/filter.py,sha256=TH1cPeV8kylW2MsIeP2ilroOLe43gN8t7lLd7qVESmc,8982
52
+ cryptodatapy/transform/cc_onchain_data.csv,sha256=qA9u3hekHk_NueBlMYQ7IKATh7AlnY-EN9E9X-9kIsU,9544500
53
+ cryptodatapy/transform/clean.py,sha256=C9VypQOjdJ987TcD-qAHh7qYaoJBotvp3cWTr3ttSGM,12807
54
+ cryptodatapy/transform/clean_onchain_data.ipynb,sha256=WrVPs8_WVKEgL6XRvGUATzeinqGUDTbXv_CHivg0nXg,687176
55
+ cryptodatapy/transform/clean_perp_futures_ohlcv.ipynb,sha256=3TFTG6riUfu5f0uYvlMC44iUtQRd27sQPxBMXBXzp6A,72758
56
+ cryptodatapy/transform/cmdty_data.ipynb,sha256=McAMfzNDfrv61gSlzFOkw_DXaOGZE1qfqXc2E_KeSbs,1220371
57
+ cryptodatapy/transform/convertparams.py,sha256=RxAOgtmmFaffX4cs0drLlG-jn3erF5K8BQ8EzlviZDo,43261
58
+ cryptodatapy/transform/credit_data.ipynb,sha256=Wvvnu9ejsmqCb0s3cTG8bLJaywWQCskgk6FBd5J5Vf8,1892822
59
+ cryptodatapy/transform/eqty_data.ipynb,sha256=A5cA13hOPrOe7Fra0HL4QPFkJGVfArigTR0GUUBpQ3A,25609
60
+ cryptodatapy/transform/filter.py,sha256=iQDUXthEXVGcrZUZLjevhDqwf9oywEQHTIh6n_sxOhU,9056
61
+ cryptodatapy/transform/global_credit_data_daily.parquet ,sha256=Dw27SX41AeSYcZyYlrGbwVe8KZM6c35TQ-gzCd2gU2I,745732
62
62
  cryptodatapy/transform/impute.py,sha256=c7qdgFg0qs_xuQnX0jazpt0wgASC0KElLZRuxTkeVKY,5519
63
- cryptodatapy/transform/od.py,sha256=LHCzs-Q1hWHixWaQLhnHRacI-sVNlLX_EFv4jOpp4Zk,31008
64
- cryptodatapy/transform/wrangle.py,sha256=cBPV2Ub4RmVCdFdx3UlOlI2s4Rc_zzoMAXWcJvqbehs,40157
63
+ cryptodatapy/transform/od.py,sha256=z__CWiN70f1leqx12SS9pIvTggxpUPrg1falJIKMZCc,31031
64
+ cryptodatapy/transform/rates_data.ipynb,sha256=olKY4t2j4sfjsCYlhupTgaviC6922HHGBr-y3f80qjQ,13358
65
+ cryptodatapy/transform/us_rates_daily.csv,sha256=BIA4a6egQYrVsLk51IZ54ZXXWMwjrx_t5S4XMdvHg44,6434830
66
+ cryptodatapy/transform/wrangle.py,sha256=uYOrV4PQ3I0z4C5K3x468w82U3uhGRTEIPVrabaSS04,42987
65
67
  cryptodatapy/util/__init__.py,sha256=zSQ2HU2QIXzCuptJjknmrClwtQKCvIj4aNysZljIgrU,116
66
68
  cryptodatapy/util/datacatalog.py,sha256=qCCX6srXvaAbVAKuA0M2y5IK_2OEx5xA3yRahDZlC-g,13157
67
- cryptodatapy/util/datacredentials.py,sha256=KkfJJqDr1jvzdlvpKNqrPwDvWyfbA5GDY87ZG3PHpIA,1510
68
- cryptodatapy-0.2.5.dist-info/LICENSE,sha256=sw4oVq8bDjT3uMtaFebQ-xeIVP4H-bXldTs9q-Jjeks,11344
69
- cryptodatapy-0.2.5.dist-info/WHEEL,sha256=y3eDiaFVSNTPbgzfNn0nYn5tEn1cX6WrdetDlQM4xWw,83
70
- cryptodatapy-0.2.5.dist-info/METADATA,sha256=0EFq0C4Wiznup8Kf3JqXwfMCG09SOOcCv8UiPUPU_fE,6300
71
- cryptodatapy-0.2.5.dist-info/RECORD,,
69
+ cryptodatapy/util/datacredentials.py,sha256=fXuGgI2NKCLlcnK8M37CtdyAc3O_YCV23x3KTlfakjA,2160
70
+ cryptodatapy-0.2.7.dist-info/LICENSE,sha256=sw4oVq8bDjT3uMtaFebQ-xeIVP4H-bXldTs9q-Jjeks,11344
71
+ cryptodatapy-0.2.7.dist-info/METADATA,sha256=lwX6PFxeEg4RAqQo7LAteOZ2vxnh-NefSslgZtaQNzA,6426
72
+ cryptodatapy-0.2.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
73
+ cryptodatapy-0.2.7.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry 1.0.7
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
cryptodatapy/.DS_Store DELETED
Binary file
@@ -1,3 +0,0 @@
1
- # Default ignored files
2
- /shelf/
3
- /workspace.xml
@@ -1,12 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="PYTHON_MODULE" version="4">
3
- <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
6
- <orderEntry type="sourceFolder" forTests="false" />
7
- </component>
8
- <component name="PyDocumentationSettings">
9
- <option name="format" value="PLAIN" />
10
- <option name="myDocStringFormat" value="Plain" />
11
- </component>
12
- </module>
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="CsvFileAttributes">
4
- <option name="attributeMap">
5
- <map>
6
- <entry key="/conf/tickers.csv">
7
- <value>
8
- <Attribute>
9
- <option name="separator" value="," />
10
- </Attribute>
11
- </value>
12
- </entry>
13
- </map>
14
- </option>
15
- </component>
16
- </project>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <profile version="1.0">
3
- <option name="myName" value="Project Default" />
4
- <inspection_tool class="TodoComment" enabled="true" level="WARNING" enabled_by_default="true" />
5
- </profile>
6
- </component>
@@ -1,6 +0,0 @@
1
- <component name="InspectionProjectProfileManager">
2
- <settings>
3
- <option name="USE_PROJECT_PROFILE" value="false" />
4
- <version value="1.0" />
5
- </settings>
6
- </component>
@@ -1,4 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (cryptodatapy)" project-jdk-type="Python SDK" />
4
- </project>
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/cryptodatapy.iml" filepath="$PROJECT_DIR$/.idea/cryptodatapy.iml" />
6
- </modules>
7
- </component>
8
- </project>
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
5
- </component>
6
- </project>