- The Goal is to determine causal relationships between BTC and other major crypto currencies: ETH, BNB, XRP, ADA,DOGE,SOL
- Which causes which? Is this relationship stable? Is it persistent over shorter horizons?
- Can we get by with 1 min data? Is causality more pronounced at higher frequencies? Separately Present Mean Reversion, Cointegration and apply to Crypto Pairs with Notebook.
crypto_causality/ ├── data/ │ ├── raw/ # Store raw CSV files │ └── processed/ # Store processed parquet files ├── src/ │ ├── init.py │ ├── config.py # Configuration parameters │ ├── data/ │ │ ├── init.py │ │ ├── downloader.py # Data download functionality │ │ └── processor.py # Data processing and cleaning │ ├── analysis/ │ │ ├── init.py │ │ ├── outliers.py # Outlier detection │ │ └── causality.py # Granger causality analysis │ └── utils/ │ ├── init.py │ └── helpers.py # Helper functions ├── notebooks/ │ └── analysis.ipynb # Jupyter notebook for exploration ├── tests/ │ └── init.py ├── requirements.txt └── README.md
crypto_analysis/ │ ├── src/ │ ├── init.py │ ├── analysis/ │ │ ├── init.py │ │ ├── outliers.py │ │ ├── causality.py │ │ └── stationarity.py │ ├── data/ │ │ ├── init.py │ │ ├── loader.py │ │ └── processor.py │ ├── visualization/ │ │ ├── init.py │ │ ├── causality_viz.py │ │ └── plots.py │ └── utils/ │ ├── init.py │ └── helpers.py ├── examples/ │ ├── run_analysis.py │ └── visualize_results.py ├── notebooks/ │ └── crypto_exploration.ipynb ├── tests/ │ └── test_analysis.py ├── README.md └── requirements.txt
- Run pip install -r requirements.txt to install the required packages
- Run ../make_dir_structure.sh to create the project structure
- config.py -> src/config.py
- downloader.py -> src/data/downloader.py
- python -m src.data.downloader to download 1m of major Crypto crosses vs Tether (USDT) from binance at 1min intervals.
- The notebooks folder contains basic EDA for the data
- The analysis folder contains the granger causality analysis
- The visualization folder has various visualizations of the data
- The examples folders shows how to use the code
- Determine causality for data using Granger, Multivariate Granger and/or Time-varying Granger Causality
- Determine appropriate lags for the data and appropriate causal structure (which causes which?)
- Can you find a frequency where causality is more pronounced? Can you find a frequency where causality is less pronounced?
- Can you determine if the relationship is stable over time?
- Can you determine if it is assymmetric?
- Can you use this to predict future prices/returns, etc?
- Develop a trading model based on this information. If it is time-varying, you can use EWRLS or RLS that I provided before.
- Please try to provide as many stats as you think good for this trading model.
- Note that you are only testing a set of features. A real model will include other sets of features as well.`(e.g., ARMA/Momentum/Mean-reversion + Granger Causality + Sentiment + LOB data etc)
- Please write up a Notebook and or a report on your findings. Please link to your code base. Please keep the heavy-lifting outside the Notebook. (make it more readable).
- Note that this is meant to show findings, not explorations. You are meant to find some form of working model, no matter what the horizon.
- If it isn't working for 1min, you can do 1sec, 1hour, 1day, etc. Binance has it all.
- BTCUSDT 1 min data including OHLCV
- klines should have OHLCV data etc Binance Public data