인프런 커뮤니티 질문&답변

김동혁님의 프로필 이미지
김동혁

작성한 질문수

비트코인 알고리즘 트레이딩 봇 개발

추세 적응형 알고리즘

음 모르겠어요

작성

·

281

1

해당영상에 나오는 백테스트 결과를 알 수 있을까요

 

처음시작할때의 코인가격

백테스트 끝날때의 코인가격

 

처음 시작할때의 잔고(보유평가액) 

마지막 끝났을때의 잔고(보유평가액)

알기 쉽게 천만원으로 시작했다면 백테스트가 끝났을 때 총 보유자산이 얼마인지 알고 싶어요

비트코인의 경우 1년 돌려봤는데 어떠한 트레이딩을 하지 않고 들고만 있어도 6배정도 올랐는데

트레이딩 알고리즘을 했을때는 3배밖에 안오른 경우가 있어서요 

 

답변 9

2

멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 김동혁님.

백테스트할 때 시작가격은 626원이고 종료가격은 1130원입니다. 트레이딩하지 않고 그냥 보유했을 때의 수익률은 80.51%입니다. 즉 504원의 이익을 얻을 수 있다는 것입니다.

트레이딩 프로그램으로 백테스트 시작할 때 잔고는 10만원이고 종료했을 때의 잔고는 218082.952원입니다. 즉, 118082.952원의 수익을 얻을 수 있었습니다. 수익률은 118%입니다. 중간에 얻은 수익을 재투자 했더라면 수익률이 좀 더 올라갔을 것입니다. 하지만, 테스트 상에서는 10만원만 가지고 계속 투자를 했습니다.

김동혁님께서 궁금한 것은 다음과 같은 상황일 겁니다.

운좋게 (1-1) 지점에서 개당 200원에 50개의 코인을 매수하고, (1-2) 지점에서 개당 2,300원에 매도했다면 수익은 105,000(50개X2,300원)원이 될겁니다. 그러면 최종 잔고는 205,000원이 되겠죠. 하지만, 트레이딩 프로그램으로 같은 시점에 매수하고 매도한다면 수익은 80,000원이고 최종 잔고는 18,000원이 됩니다. 그냥 사서 들고 있는 경우가 오히려 수익 좋습니다.

하지만 (3-1) 시점에서 매수하고 (3-2) 시점에서 매도한다면 손실이 발생할 것입니다. 투자자에게는 얼마든지 발생 가능한 상황입니다. 매수 시점에서는 지금이 저점인지 고점인지 알 수가 없으니까요. 이것은 매도 시점도 마찬가지 입니다. 손실을 보고 매도했을 때 곧바로 가격이 상승할 수도 있고, 가격이 더 떨어질 수도 있습니다. 미래는 알 수 없으니까요. 트레이딩 프로그램을 사용했을 경우 같은 기간에 크지는 않지만 약간의 수익을 얻은 것을 확인할 수 있습니다.

트레이딩 프로그램은 수익률이 시간이 지남에 따라 우상향하는 것이 좋습니다. 자산 가격이 상승할 때는 수익률이 급격히 올라갔다가 자산 가격이 하락할 때는 수익률이 급격히 떨어진다면 아무리 수익률이 높아도 좋은 프로그램이 아닙니다. 트레이딩을 시작하는 시점이 하락시기인지 상승시기인지 아무도 알 수 없기 때문입니다.

위 그래프는 지나간 가격을 표현한 것입니다. 그래서 어디가 저점이고 고점인 것을 직관적으로 알 수 있습니다. 백테스트 또한 마찬가지 입니다. 지나간 과거의 데이터를 가지고 프로그램을 테스트하기 때문에 맹신해서는 안되는 것입니다.

여기에서 중요한 것은 자산 가격이 하락할 때에도 손실이 발생하지 않는 프로그램을 만드는 것입니다. 

감사합니다.

김동혁님의 프로필 이미지
김동혁
질문자

공부하면서 드는 생각은 아무래도 선물시장에 더욱더 적합한게 알고리즘 트레이닝 같아요. 

이유는 현물시장을 공략하더라도 두가지 전략이 필요한데

1. 상승장에 많이 먹기

2. 하락장에 손실 적게

근데 이걸 완벽하게 구현할정도면 오히려 1번이 롱이고 2번이 숏인데, 

선물시장가면 수익이 더욱더 극대화될 것이라는 현재 생각만 가지고 있습니다.

멀티코어님의 프로필 이미지
멀티코어
지식공유자

네 선물 시장이 알고리즘 트레이딩에 보다 적합한 것이 사실입니다. 대표적으로 바이낸스에서 선물 상품을 제공하고 있습니다. 관심있으시면 바이낸스 선물 거래를 찾아보시기 바랍니다. 하지만 바이낸스는 국내에 정식으로 신고하지 않은 상태라는 점 유념하셔야 합니다. 

감사합니다.

0

멀티코어님의 프로필 이미지
멀티코어
지식공유자

첨부해드린 강의자료 하단에 보면 그래프를 실행하는 코드가 들어있습니다.

예를 들어 trading_adv2_backtest.ipynb 파일의 경우는 다음과 같습니다.

공개적으로 곤난한 질문은 이메일(multicore.it@gmail.com)로 보내주세요. 

감사합니다.

 

import matplotlib.pyplot as plt

 

fig = plt.figure(figsize=(12, 6)) 

plt.subplot(2, 1, 1) 

plt.plot(revenue_list)

plt.grid(True)

plt.title('[adv2 revenue]')

plt.show()

 

fig = plt.figure(figsize=(12, 6)) 

plt.subplot(2, 1, 2)  

plt.plot(price_list, color='red')

plt.grid(True)

plt.title('[adv2 price]')

plt.show()

0

파일에 올려주신 comm 전체가 모듈에러가납니다..

 

답답하네여 ㅠ

juho72 카톡으로답변주시면..너무 감사드리겠습니다..ㅜ

계속만져본결과 comm이라는폴더 이름을변경하니 파이썬에서는 일단돌아갑니다 충돌이일어나는것같내요..

그리고 글 맨위에 그래프형태? Gui??로 백테스팅을하고싶은데 방법을모르겠습니다..영상에는안나와있네요

0

0

멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 tecis님.

파일을 다 올리셨다면 프로그램을 실행하신 후 오류화면 전체를 캡쳐해서 보내주세요. 지금 보내주신 화면은 짤려서 오류 메시지를 확인할 수 없습니다.

감사합니다.

0

강의파일에있는거누전부 올렸습니다

0

멀티코어님의 프로필 이미지
멀티코어
지식공유자

안녕하세요 tecis님.

오류 메시지 전체가 안보여서 원인이 뭔지 정확히 알 수는 없느나, 프로그램에서 사용하는 파일이 없는 것 같습니다. comm 폴더에 있는 config.py  파일이 올라가 있는지 확인해보세요.

그래도 계속 문제가 발생하면 오류화면 전체를 갭쳐해서 다시 올려주세요.

감사합니다.

0

0

안녕하세요 aws 서버에 등록하려고하니 오류가떠서요  모듈이없다고나오는데 주로 comm 에러가계속나옵니다

 

 

 

김동혁님의 프로필 이미지
김동혁

작성한 질문수

질문하기