가상화폐 투자마법 공식 발췌 (전체코드는 아래 파일에 있습니다)
투자전략 : 이동평균 + 현금 비중 80% 이상
투자전략 3(가상화폐 분산투자 + 현금비중 90%)와 거의 유사한 전략이나, 이동평균으로 필터하여 상승장에만 투자하여 승률을 더 높이는 전략이다.
# 트레이딩 전략 3 : 가상화폐 분산투자 + 현금 비중 90%
가상화폐 투자마법 공식 발췌 (전체코드는 아래 파일에 있습니다) 투자전략 : 가상화폐 분산투자 + 현금 비중 90% 아주 간단한 전략이다. 투자에 시간을 많이 쓰고 싶지 않은 분께 추친드리는 전
tenmillionquant.tistory.com
투자대상 : 아무 가상화폐나 몇 개 선택
투자기간 : 2013.12 ~ 2022.03
거래비용 : 0.2% 적용
투자전략
- 선택한 가상화폐의 5일 이동평균을 1일 1회 체크
- 현재 가격이 이동평균보다 높으면 매수 또는 보유
- 현재 가격이 이동평균보다 낮으면 매도 또는 투자 보류
- 현금 비중은 80%로 유지
- 자금 관리 : 가상화폐별 투입 금액은 자산의 20% / 가상화폐 수 (5개 화폐를 포함할 경우 각 화폐에 자산의 20% / 5 = 4% 를 투자)
필요한 데이터를 불러온다
import pybithumb
import pandas as pd
import numpy as np
일단 비트코인 하나로만 가지고 해보자. 그리고 해당 비트코인의 5일 이동평균선을 구해보자.
btc_df = pybithumb.get_ohlcv('BTC')
# 5일 이동평균선 구하기
btc_df['ma_5'] = btc_df['close'].rolling(window=5).mean()
# 5일 이평선이 없는 날짜는 삭제한다
btc_df.dropna(inplace=True)
이제, 시드 1억을 가지고 백테스팅을 진행해보자. 기본적으로 비트코인 가격이 5일이평선보다 커지면 매수, 비트코인 가격이 5일 이평선보다 작아지면 매도한다.
total_capital = 0 # 전체 투자금액
investing_weight = 0.2 # 80%정도 현금을 남긴다
cash = 100000000 # 현금, 처음 시드머니 1억
fee = 0.002 # 수수료 0.2%
btc_invested = 0 # 가상화폐에 투자된 금액
btc_close_price_list = []
total_capital_list = []
for i in range(len(btc_df)):
yesterday_btc_close = btc_df.iloc[i-1]['close']
btc_close = btc_df.iloc[i]['close']
# 비트코인 변동만큼 투자금액에 반영한다
btc_invested *= (btc_close / yesterday_btc_close)
# 총금액은 현금과 비트코인 투자한 금액
total_capital = cash + btc_invested
# 만약 btc 가격이 5일이평선보다 커지면 매수한다
if (btc_df.iloc[i]['close'] >= btc_df.iloc[i]['ma_5']) and (btc_invested == 0):
print('buy')
# 현금은 80% 남긴다
cash = total_capital * (1 - investing_weight)
# 비트코인에는 20%만 투자한다(수수료비용은 차감한다)
btc_invested = total_capital * (investing_weight) * (1 - fee)
total_capital = cash + btc_invested # 전체 투자금액은 현금에 비트코인에 투자된 금액이다
# 만약 btc 가격이 5일이평선보다 작아지면 매도한다
elif (btc_df.iloc[i]['close'] < btc_df.iloc[i]['ma_5']) and (btc_invested != 0):
print('sell')
# 비트코인을 매도한다 (매도할때 수수료 차감한다)
btc_invested = btc_invested * (1 - fee)
total_capital = cash + btc_invested # 전체 투자금액은 현금에 비트코인에 투자된 금액이다
cash = total_capital #전체 투자금액은 현금으로 보유한다
# 비트코인 투자금액을 0으로 만든다
btc_invested = 0
btc_close_price_list.append(btc_close)
total_capital_list.append(total_capital)
print(btc_close, total_capital)
이제 수익률을 구해보자. 수익률을 확인해보면, 5배정도 올랐다. 트레이딩 전략 3인 가상화폐 분산투자 + 현금 비중 90%보다는 훨씬 좋은 수익률을 기록한다.
# 트레이딩 전략 3 : 가상화폐 분산투자 + 현금 비중 90%
가상화폐 투자마법 공식 발췌 (전체코드는 아래 파일에 있습니다) 투자전략 : 가상화폐 분산투자 + 현금 비중 90% 아주 간단한 전략이다. 투자에 시간을 많이 쓰고 싶지 않은 분께 추친드리는 전
tenmillionquant.tistory.com
ror_df = pd.DataFrame({"btc_close" : btc_close_price_list, "total_capital" : total_capital_list}, index = btc_df.index)
ror_df['ror'] = ror_df['total_capital'].pct_change() + 1
ror_df['cum_ror'] = ror_df['ror'].cumprod()
ror_df
수익률 그래프를 그려보면 아래와 같다. 2018년 ~ 2019년 선방을 하고 2021년에 좋은 수익률을 기록한다.
import matplotlib.pyplot as plt
plt.plot(ror_df['cum_ror'])
'가상화폐 퀀트 전략' 카테고리의 다른 글
트레이딩 전략 6 : 듀얼 모멘텀 + 현금 비중 최소 90% (0) | 2022.04.05 |
---|---|
# 트레이딩 전략 5 : 슈퍼상승장 + 변동성 조절 (1) | 2022.04.04 |
# 트레이딩 전략 3 : 가상화폐 분산투자 + 현금 비중 90% (0) | 2022.03.29 |
# 트레이딩 전략 2 : 오버나잇(Overnight) 매수 (0) | 2022.03.24 |
# 트레이딩 전략 1 : 저가매수, 고가매도 (buy low, sell high) (0) | 2022.03.15 |
댓글