A repository to perform backtests and create trading strategies for cryptocurrencies.
pip install crypto-strategy[full]
- Moving Average Strategy
-
Description
BestMaStrategy(symbols, freq, res_dir, flag_filter, flag_stop)
- symbols: asset name, e.g., BTCUSDT
- freq: data frequency to use, 1h | 4h
- res_dir: results directory
- flag_filter: filter to use, [mmi | ang]
- mmi: Market Meanness Index filter
- ang: Linear Regression Angle filter
- flag_stop: early stop flag, [ts_stop | sl_stop | tp_stop]
- ts_stop: trailing stop
- sl_stop: stop loss
- tp_stop: take profit
-
Example: Find the best params using 1h data with mmi filter and ts_stop
BestMaStrategy( symbols=['BTCUSDT', 'ETHUSDT'], freq='1h', res_dir='results/best-1h-ma-mmi-filter', flag_filters='mmi', flag_stop='ts_stop' )
- Breakout Strategy
-
Description: A method to optimize the BO strategy
- symbols: a list of symbols to be optimzied on, e.g., 'BTCUSDT'
- freq: currently supported values: '1h' or '4h'
- res_dir: the output directory
- flag_filter: currently supported filters: 'vol', 'ang', default: None
- flag_stop: early stop flag, [ts_stop | sl_stop | tp_stop]
- ts_stop: trailing stop
- sl_stop: stop loss
- tp_stop: take profit
-
Example: Find the best params for bo strategy with vol filter using BTCUSDT 4h data and sl_stop
BestBoStrategy( symbols = 'BTCUSDT', freq = '4h', res_dir = 'results/best-4h-bo_rev-vol-filter', flag_filters = 'vol', flag_stop = 'sl_stop', )
-
- MACD Strategy
BestMacdStrategy(symbols, freq, res_dir, flag_filter)
- symbols: asset name, e.g., BTCUSDT
- freq: data frequency to use, 1h | 4h
- res_dir: results directory
- flag_filter: filter to use, [mmi | ang | stoch | sma]
- vol: Volume filter
- ang: Linear Regression Angle filter
-
MA Strategy
- Description: A method to inspect the MA strategy with given params
InspectMaStrategy(symbols, freq, name, n1, n2, timeperiod, threshold, flag_filter, stop_vars)
- symbol: the name of the crypto, e.g., 'BTCUSDT'
- freq: currently supported values are '1h' or '4h'
- name, n1, n2: the name and the params of the ma strategy, e.g., 'sma', 100, 50
- timeperiod: param used in either mmi or ang filter
- threshold: param used in ang filter
- flag_filter: currently supported fitlers: 'mmi', 'ang', default: None
- stop_vars: dictionary of stop vars, currently support 'ts_stop', 'sl_stop', 'tp_stop', default None
- Example: Inspect MA strategy
linear_reg
withn1=30 & n2=280
andsl_stop=0.1 & tp_stop=0.1
InspectMaStrategy( symbols, freq='4h', name='linear_reg', n1=30, n2=280, stop_vars={'sl_stop':0.1, 'tp_stop':0.1})
- Description: A method to inspect the MA strategy with given params
-
BO Strategy
-
Description: A method to inspect the BO strategy
InspectBoStrategy(symbol, freq, long_window, short_window, ts_stop, timeperiod, multiplier, threshold, flag_filter, flag_ts_stop)
- symbols: a list of symbols to be optimzied on, e.g., 'BTCUSDT'
- freq: currently supported values: '1h' or '4h'
- long_window, short_window: breakout params
- flag_filter: currently supported fitlers: 'vol', 'ang', default: None
- timeperiod, multiplier: volume filter params
- timeperiod, threshold: angle filter params
- stop_vars: dictionary of stop vars, currently support 'ts_stop', 'sl_stop', 'tp_stop', default None
-
Example: Inspect 4h BTCUSDT breakout strategy with volume filter and trailing stop
InspectBoStrategy( 'BTCUSDT', freq='4h', long_window=100, short_window=50, flag_filter='vol', timeperiod=20, multiplier=2, stop_vars={'ts_stop':0.1})
-
Backtests can also be carried out in command line. To find out more
crypto --help
Example 1: Find the best params for BO strategy with vol filter using 4h data
crypto best-bo-strategy -f 4h -r results/best-4h-bo-vol-filter -g vol -e bo
Example 2: Find the best params for MA strategy with mmi filter and ts_stop using 1h data
crypto best-ma-strategy -f 1h -r results/best-1h-ma-mmi-filter -g mmi -t ts_stop
pytest