안녕하십니까. 금융과 데이터분석을 좋아(만)하는 배성기입니다!
앞으로 금융과 데이터분석에 관한 글들을 쓸 예정입니다.
팔로우해주시면 감사합니다
이번에 이야기 할 것은
"EXCEL을 사용해 간단하게 하는 가상화폐 백테스팅"
에 대한 것 입니다.
백테스팅이란,
자신의 가설을 과거의 정보에 적용해서
성과를 확인하는 것을 이야기합니다.
물론 가장 좋은 방법은 코딩을 배우는 것 이지만,
쉽게 접하기 어려운 방법이므로
오늘은 예제를 통해 엑셀로 백테스팅을 하는 법에 대해 설명하겠습니다.
일반적인 백테스팅의 구조는 다음과 같습니다.
1. 아이디어 구상
가장 먼저 해야할 것은 무엇을 테스트할지 정해야 합니다.
간단하게 스팀에 추세투자법을 테스트해보겠습니다.
룰은 다음과 같이 정했습니다.
- 지난 3일의 평균가격보다 오늘의 가격이 높다면 보유함
- 지난 3일의 평균가격보다 오늘의 가격이 낮고 자산을 보유중이라면 매도함
2. 데이터 수집 및 전처리
다음으로는 백테스트에 필요한 데이터를 수집해야합니다.
지금 필요한 데이터는 SBD의 일별 가격정보입니다.
가상화폐의 일별(혹은 주, 월별) 가격정보는
여기가셔서,
기간을 설정하시고, 데이터다운로드를 클릭하시면 받을 수 있습니다.
다른 가상화폐의 데이터역시 취급하고 있습니다.
혹시 분이나 시간단위의 데이터가 필요하시면
이 글을 참고하시거나,
댓글로 요청해주시면 업로드하겠습니다.
다음으로는 받은 엑셀파일에서,
필요하는 데이터만을 뽑고, 변형시키는 작업이 필요합니다.
이를 전처리(Pre-Processing)이라고 합니다.
먼저 받은 데이터는 아래와 같은 모습을 가지고 있습니다.
먼저 날짜를 오름차순으로 바꿔줍니다.
A2열을 마우스 좌측클릭하시고 A열의 마지막행을 Shift+좌측클릭(그냥 드래그하셔도 됩니다.)
한 뒤, 아래의 그림을 따라해 주시면 됩니다.
다음으로는,
현재가(=종가)를 이용해 지난3일의 평균가격을 구해줍니다.
같은 방법으로 매일의 수익률도 구해줍니다.
3. For~,If~
행렬선언은 EXCEL특성상 생략했습니다.
다음으로는 If문을 사용해 조건을 충족할때를 찾아,
매수포지션을 가지고가야합니다.
4. 전략의 유효성 검증
다음으로는누적수익률, MDD, 표준편차등을 구해보겠습니다.
누적수익률
누적수익률은 다음과 같은 식으로 구할 수 있습니다.
날짜와 누적수익률의 열을 통해 쉽게 그려프도 그릴 수 있습니다.
Draw Down
손실폭은 아래와 같이 구할 수 있습니다.
역시 같은 방법으로 그래프를 그릴 수 있으며,
MAX함수를 쓴다면 MDD를 바로 찾을 수 있습니다.
표준편차
표준편차를 구하는 함수는 STDEV입니다.
연간으로 환산하고 싶다면,
STDEV에 수익률의 열을 넣어주시고, 월 데이터라면 *SQRT(12)를, 일간 데이터라면 *SQRT(252)를 해주시면 됩니다.
수익률 연율화
아래의 수식을 이용하시면됩니다.
간단하게 백테스팅을 하는법에 대해서 포스팅했습니다.
백테스팅이라는 것은 단지 자신의 생각이,
과거의 데이터에 맞게 떨어지는지를 확인하는 과정일 뿐입니다.
블랙스완의 저자인 니콜라스 탈레브는 이런 말을 했습니다
"과거가 그 역사적 기록으로 정확히 설명되지 않으며,
과거수익률로 미래의 수익 예상 분포를 얻는 것은 부정확하다”
특히 가상화폐는 짧은 시계열과 지금까지 우상향을 계속했던 편향된 자료이므로,
백테스트는 단지 과거의 자료로만 받아들이셨으면 합니다.
엑셀도 이렇게 활용이 될 수 있군요.
잘보고 갑니다.ㅎ
엑셀 참 유용한 도구라고 생각합니다.
하지만 적응만 되면 코딩하는게 훨씬 편합니다 ㅋㅋ..
엄청 고생하셨네요! 잘 봤습니다 @홍보해
핳 감사합니다!
복잡네요 ㅜㅠ
스팀잇여러분들이 복 많이 받으라고
"복" 잡히도록 글을 썻...
죄송합니다.ㅠ
새해복많이받으세요!
도움되는 글 감사합니다..^^
감사합니다!^^
잘 봤습니다 :) 백테스팅을 하고 싶은데 분단위 백테스트 자료를 얻을 수 있을까요?
원하시는 자산과 기간을 이야기해주시면 빠른시일내로 포스팅하겠습니다.
감사합니다~
아아 다시 읽어보니 저기서 구할 수 있군요. 제가 하겠습니다 ㅎㅎ
좋은 글 감사합니다.
좋게 봐주셔서 감사합니다~!