주식,가상화폐 백테스팅

[백테스팅 1] 최적 보조지표 선택을 위한 백테스팅 -1 (파이썬 소스 포함)

NAKYUP 2021. 1. 31. 11:02

앞선 포스팅에서 MACD, Stochastic, RSI, 볼린저밴드 4가지의 보조지표를 함수로 만들었습니다.

이제 각 보조지표에서 밤 12시에 매수, 매도 포지션이 변경될 때마다 당일 시가에 거래가 성공했다는 가정을 전제로, 가장 좋은 수익을 나타내는 보조지표를 선택해 보겠습니다.

언급했듯이 백테스팅은 실제 거래 상황과는 달리 이상적인 거래 성공을 전제로 하기때문에 실전 투자와는 결과가 다르다는 것을 꼭 기억해 주세요.

1. for문을 이용해 4개 지표가 차례로 선택되면서 백테스팅을 실행

2. 1년치의 일봉 기준으로 백테스팅 결과, 최종 수익률 산출

3. 백테스팅 결과, 최종적인 (즉, 현재의) 매수-매도 포지션 반환

4. 백테스팅은 일봉 데이터와 보조지표 이름을 입력받고 실행하는 함수로 구현

5. 보조 지표 결과 중에 가장 수익률이 높은 보조지표 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
df=call_data(juso) # call_data함수가 일봉 데이터를 불러오는 함수
result=[]
for 보조지표 in ["MACD","RSI","stochastic","bb"]:
    if 보조지표 =="MACD":   
        현재상태, df=call_MACD(df)
    elif 보조지표 == "RSI":
        현재상태, df=call_RSI(df)
    elif 보조지표 == "stochastic":
        현재상태, df=call_stochastic(df)
    elif 보조지표 == "bb":
        현재상태, df=call_bb(df)   
    else:
        pass
    print("[%s]"%보조지표, 현재상태)
    result.append([보조지표, backtesting(df,보조지표)[0]])
 
max_수익=0
for i in result:
    if max_수익<i[1]:
        max_수익=i[1]
        select=i[0]
print("가장 좋은 성과가 예상되는 보조지표는 \"%s\"입니다."%select)
cs

🙋이 자료를 처음 보시는 분들은 "가상화폐 일봉 데이터 불러오기" 및 4가지 보조지표 함수 만들기 포스팅을 먼저 봐주셔야 이해하실 수 있습니다.

 

2021/01/31 - [주식,가상화폐 백테스팅] - [백테스팅 2] 최적 보조지표 선택을 위한 백테스팅 - 2 (파이썬 소스 포함)

 

[백테스팅 2] 최적 보조지표 선택을 위한 백테스팅 - 2 (파이썬 소스 포함)

 가상화폐 일봉 데이터를 pandas DataFrame으로 불러온 뒤,  MACD, RSI, Stochastic, 볼린저밴드 함수의 기본 매수-매도 sign에 따라 이상적인 거래가 성공한다는 가정으로 백테스팅 함수를 구현해보겠습니

nakyup.tistory.com

 

반응형