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