파이썬 라이브러리인 Backtrader를 이용한 비트코인 백테스트 툴 입니다.
CCXT를 통해 binance 거래소의 시세데이터를 받아 백테스팅을 실행합니다 (default settings) 설정에 따라 데이터가 저장된 csv파일을 이용하거나 influxDB를 사용할 수도 있습니다.
Backtrader 라이브러리를 통해 새로운 전략을 추가하거나 기존 전략을 변경할 수 있습니다.
설정에 따라 백테스트 결과를 csv파일로 저장 할 수 있습니다.
- repository clone
git clone https://github.com/kysyo/backtrader-backtesting
- install Python library
pip install -r requirements.txt
- run backtesting
python backtrader_main.py
backtest_confing : 백테스트에 필요한 설정.
ccxt_config : 코인 시세조회를 위한 ccxt 라이브러리에 관한 설정.
influxdb_config : influxDB에 대한 접속정보와 measurements정보. 접속정보를 os 환경변수에 등록 후 사용할 수 있습니다.
start_time, end_time 을 변경하여 원하는 기간만 백테스트 하거나
symbol을 변경하여 ETH/USDT, XRP/USDT 등 다양한 암호화폐를 백테스트 할 수 있습니다.
Input | Type | Description |
---|---|---|
data_type | int | 백테스트 데이터를 어디서 가져올 것인지 선택 1: ccxt에서 바로 조회 2: csv 파일사용 3: influxDB 데이터 |
save_result_csv | boolean | 백테스팅 결과를 csv파일로 생성할것인지 여부. True: 생성 False: 미생성 |
start_time | string | 백테스트 시작시간 (ccxt와 influxDB데이터에서 사용) |
end_time | string | 백테스트 종료시간 (ccxt와 influxDB데이터에서 사용) |
cash | int | 백테스트 초기 자금 설정 |
commission | float | 백테스트 수수료 설정 |
Input | Type | Description |
---|---|---|
ccxt_rate_limit_time | float | ccxt api 조회제한 회피용 대기 시간 |
time_type | string | ccxt에서 조회할 시간 타입 (1d, 1w, 4h...) |
symbol | string | ccxt에서 조회할 심볼 (BTC/USDT, ETH/USDT ... ) |
ccxt_limit_cnt | int | ccxt api 최대 조회제한 갯수 (default 1000개) |
backtrader_main.py의 strategy 변수에 사용할 전략을 등록하면 됩니다.
SmaCross strategy
[BTC/USDT] 요청한 시작시간 데이터가 CCXT에 존재하지 않습니다 시작시간 재조정 : 2017-01-01 00:00:00 -> 2017-08-17 00:00:00
[1d] 현재수행 횟수 / 남은횟수 :: 1000 / 1963
[1d] 현재수행 횟수 / 남은횟수 :: 1963 / 1963
CCXT 데이터 조회 완료 2017-08-17 00:00:00 ~ 2022-12-31 00:00:00
+-----+-------+---------------------+----------+---------------------+----------+--------+-------------+--------+------+-------------+------------+------+------------+--------+--------+
| ref | 포지션종류 | 진입일 | 진입가 | 청산일 | 청산가 | 가격변동%| 손익 | 손익% | size | value | 누적손익 | 캔들갯수| 손익/캔들갯수| mfe% | mae%|
+-----+-------+---------------------+----------+---------------------+----------+--------+-------------+--------+------+-------------+------------+------+------------+--------+--------+
| 1 | long | 2017-10-03 09:00:00 | 4380.0 | 2017-12-30 09:00:00 | 14378.99 | 228.29 | 1139029.45 | 49.91 | 114 | 499320.0 | 1139029.45 | 88 | 12943.52 | 352.02 | -6.16 |
| 2 | short | 2017-12-30 09:00:00 | 14378.99 | 2018-02-21 09:00:00 | 11195.07 | -22.14 | 234853.09 | 10.24 | -74 | -1064045.26 | 1373882.54 | 53 | 4431.19 | 58.27 | -19.45 |
| 3 | long | 2018-02-21 09:00:00 | 11195.07 | 2018-03-14 09:00:00 | 9151.92 | -18.25 | -215385.32 | -9.48 | 105 | 1175482.35 | 1158497.21 | 21 | -10256.44 | 4.6 | -29.43 |
| 4 | short | 2018-03-14 09:00:00 | 9151.92 | 2018-04-19 09:00:00 | 8173.99 | -10.69 | 113606.96 | 4.97 | -117 | -1070774.64 | 1272104.17 | 36 | 3155.75 | 29.74 | -1.99 |
| 5 | long | 2018-04-19 09:00:00 | 8173.99 | 2018-05-16 09:00:00 | 8462.0 | 3.52 | 39108.43 | 1.68 | 139 | 1136184.61 | 1311212.6 | 27 | 1448.46 | 22.58 | -1.15 |
| 6 | short | 2018-05-16 09:00:00 | 8462.0 | 2018-07-09 09:00:00 | 6712.1 | -20.68 | 237160.93 | 9.34 | -136 | -1150832.0 | 1548373.53 | 54 | 4391.87 | 32.05 | -1.74 |
| 7 | long | 2018-07-09 09:00:00 | 6712.1 | 2018-08-09 09:00:00 | 6283.27 | -6.39 | -82031.32 | -3.39 | 189 | 1268586.9 | 1466342.21 | 31 | -2646.17 | 26.51 | -9.57 |
...............................
| 64 | short | 2022-08-23 09:00:00 | 21400.75 | 2022-09-17 09:00:00 | 19803.3 | -7.46 | 294060.12 | 3.52 | -186 | -3980539.5 | 7290096.51 | 25 | 11762.4 | 13.5 | -6.53 |
| 65 | long | 2022-09-17 09:00:00 | 19803.3 | 2022-09-21 09:00:00 | 18874.31 | -4.69 | -197392.36 | -2.41 | 209 | 4138889.7 | 7092704.15 | 4 | -49348.09 | 1.95 | -8.47 |
| 66 | short | 2022-09-21 09:00:00 | 18874.31 | 2022-10-12 09:00:00 | 19060.0 | 0.98 | -42984.84 | -0.53 | -214 | -4039102.34 | 7049719.32 | 21 | -2046.9 | 3.96 | -8.48 |
| 67 | long | 2022-10-12 09:00:00 | 19060.0 | 2022-10-16 09:00:00 | 19068.4 | 0.04 | -1445.64 | -0.02 | 211 | 4021660.0 | 7048273.68 | 4 | -361.41 | 4.68 | -4.56 |
| 68 | short | 2022-10-16 09:00:00 | 19068.4 | 2022-10-27 09:00:00 | 20771.61 | 8.93 | -362739.81 | -4.78 | -211 | -4023432.4 | 6685533.87 | 11 | -32976.35 | 2.19 | -10.23 |
| 69 | long | 2022-10-27 09:00:00 | 20771.61 | 2022-11-11 09:00:00 | 17602.45 | -15.26 | -589134.28 | -8.18 | 185 | 3842747.85 | 6096399.59 | 15 | -39275.62 | 3.41 | -24.96 |
| 70 | short | 2022-11-11 09:00:00 | 17602.45 | 2022-12-08 09:00:00 | 16836.64 | -4.35 | 151158.91 | 2.06 | -201 | -3538092.45 | 6247558.5 | 27 | 5598.48 | 12.08 | -0.53 |
| 71 | long | 2022-12-08 09:00:00 | 16836.64 | 2022-12-24 09:00:00 | 16778.52 | -0.35 | -15386.7 | -0.21 | 215 | 3619877.6 | 6232171.79 | 16 | -961.67 | 9.21 | -3.45 |
+-----+-------+---------------------+----------+---------------------+----------+--------+-------------+--------+------+-------------+------------+------+------------+--------+--------+
MDD : 43.25, CAGR: 29.03, SHARP: 0.79
* 초기 투자금 : 1,000,000 $
* 백테스트 후 투자금 : 7,281,494 $
수익률 : 628.15 %