호돌찌의 AI 연구소
article thumbnail

이전 글에서는 배경과 마켓타이밍, 코인과의 상관성에 대해서 간단하게 점검을 해보았습니다. 이번 글에서 다루는 내용은 마켓타이밍을 실험 설계하고 이에 따라 매매를 하는 것이 좋은지 안 좋은지 성과 공유를 하고자 합니다. 결론부터 이야기하면 아래와 같습니다. 

 

- 2014년 2월 1일부터 2021년 11월 6일까지 3가지 제시한 마켓타이밍을 활용했다면 적어도 승률이 50% 이상은 나오는 매매 방법이라 할 수 있다.  

- 2014년 2월 1일부터 2021년 11월 6일까지, BTC 종가 가격이 BTC 단순 이동평균선 3일, 5일, 10일, 20일 선 하나라도 높을 때 시장 참여하는 것은 수익 기회 손실을 최대한 줄일 수 있다.  

2014년 2월 1일부터 2021년 11월 6일까지, BTC 종가 가격이 BTC 단순 이동평균선 3일, 5일, 10일 선 모두 높을 때 에만 시장 참여하는 것은 손실 관점에서는 제일 좋다고 볼 수 있다. 

그렇다면 출발하기 전에 간단하게 Appendix 언급 후 실험 설계를 해보겠습니다. 

 

 

Appendix - A. 가설 검정 Therory

 

  Predicted
예측(Market Timing)
1
(거래함, 시장참여)
0
(거래하지 않음, 시장 미참여)
Actual
실제(비트코인등락율)
상승(0%이상)
True Positive
거짓(type 2 error)
False Negative
하락(0%미만) 거짓(type 1 error)
False Positive

True Negative

 

- 비트코인이 상승할 때, 시장에 참여하면 이득인 것이니 참이며, 하락일 때 시장에 참여하지 않으면 자산을 지킬 수 있으니 좋은 경우라 할 수 있습니다. 

- type 2 error의 관점에서 봤을 때 실제로 비트코인이 상승했는 데 시장에 참여하지 않으면 소외감을 느낄 수 있습니다. 이 오류가 많이 발생한다면 FOMO를 느끼고, 기회 손실이 발생한다고 생각할 수 있습니다.

- type 1 error의 관점에서 봤을 때 기분이 제일 불편하다고 볼 수 있습니다. 시장에 참여하고 있는데, 코인이 하락하는 경우 손실을 보기 때문입니다. 

 

 

 

Appendix - B. 성과 지표 설명 - Accuracy(정확도), Precision(정밀도), Recall(재현율), F1-score

 

보통 머신러닝에서 학습하여 만든 모델에 대한 Classification Task에서 많이 나오는 이야기입니다. 이 성과 지표를 한 장으로 표현하면 아래 그림과 같습니다. Precision과 Recall에 대한 지표는 구글에 많이 검색하면 많이 나옵니다. '어떤 것을 중점적인 지표로 삼을 것이냐?'Task마다 다르다고 할 수 있습니다. 2가지 예시를 들어보겠습니다. 

스팸 메일 같은 경우에는 실제로 스팸 메일(1)인데 정상 메일(0)로 잘못 예측하는 경우(False Negative) 보다 실제로 정상 메일(0)인데 스팸(1)으로 잘못 예측하는 경우(False Positive)는 작아야 하는 것이 더 중요합니다. 실제로 정말 중요한 메일이 스팸으로 예측돼버리면 손실이 일어나기 때문입니다. 그래서 Precision이 중요합니다. 

암 환자를 잘 예측해야하는 경우에 대해 살펴보겠습니다. 실제로 정상 환자(0)인데 암 환자(1)로 잘못 예측하는 경우(False Positive)보다, 실제로 암 환자(1)인데 정상 환자(0)로 잘못 예측하는 경우(False Negative)인 경우가 훨씬 작아야 합니다. 있어서는 안 된다고 할 수 있겠죠. 그래서 Recall이 이 Task에서 중요합니다.

 

 

 

자, 그러면 이제 비트코인에 대입해서 지표를 제시하면 아래와 같습니다. 제가 생각하기에는 Precision이 높은 경우가 좋다고 할 수 있겠습니다만 종합적으로 보기 위해서 Precision과 Recall을 종합적으로 고려한 F1 score를 많이 보기도 합니다. F1 score은 Precision과 Recall의 조화평균입니다. 

 

 

 

4. 실험 설계 

 

위의 Appendix를 이해했다고 가정하겠습니다. 이 글에서는, Market Timing을 3개 정도 제시해보겠습니다. 

- MT 1 : (비트코인 종가 > 비트코인 3일 단순 이동평균선) | (비트코인 종가 > 비트코인 5일 단순 이동평균선) | (비트코인 종가 > 비트코인 10일 단순 이동평균선)

→ 3, 5, 10일 선 하나라도 종가가 높으면 시장에 참여하는 방식입니다. 

- MT 2 : (비트코인 종가 > 비트코인 3일 단순 이동평균선) | (비트코인 종가 > 비트코인 5일 단순 이동평균선) | (비트코인 종가 > 비트코인 10일 단순 이동평균선) | (비트코인 종가 > 비트코인 20일 단순 이동평균선)

→ 3, 5, 10, 20일 선 하나라도 종가가 높으면 시장에 참여하는 방식입니다. 20일을 추가한 이유는 변동성이 크기 때문에 조금 더 고려해볼 만한 이동평균선이라 생각하고 추가하였습니다. 

- MT 3 : (비트코인 종가 > 비트코인 3일 단순 이동평균선) & (비트코인 종가 > 비트코인 5일 단순 이동평균선) & (비트코인 종가 > 비트코인 10일 단순 이동평균선)

→ 3, 5, 10일 이동평균선 모두 종가가 높으면 시장에 참여하는 방식입니다. 더 확실한 장세에 보수적으로 참가하겠다는 뜻이라고 생각하시면 됩니다. 

 

 

5. BTC 마켓 타이밍 간단 통계 산출

 

산출 기간은 14년 2월 1일 부터 글 쓰는 시점 21년 11월 6일 시점입니다. MT 발생 횟수는 시장에 참여한 횟수를 뜻하고, MT 비율은 MT 발생 횟수에 총거래일을 나눈 값임을 알려드립니다. 

 

MT 번호 총 거래일 MT 발생횟수(시장 참여일) MT 비율
MT 1 2,746 1,915 69.74%
MT 2 2,746 2,061 75.05%
MT 3 2,746 1,064 38.75%

 

 

6. BTC 별 상승/하락 비율

 

전일 대비 상승률이 0%일 경우만 상승일 비율이라고 정의합니다. 0% 기준 상승 비율은 어느 한쪽에 편향되어 있지 않기 때문에 Reasonable 하다고 판단하여 0%를 기준 잡았습니다. 

 

상승/하락율 기준 BTC 상승일 비율 하락일 비율
0% BTC 52.03% 47.57%

 

 

7. MT Performance 결과 

3개의 MT에 대해서 결과는 다음과 같습니다. 

 

MT Accuracy Precision Recall F1 score MT 비율
1 (3 5 10 or) 72.83% 68.09 90.61 77.75 69.74%
2 (3 5 10 20 or) 69.04% 64.28 92.07% 75.71 75.05%
3 (3 5 10 and) 73.96% 84.02 62.12 71.43 38.75%

 

임의로 해석하면 아래 처럼 할 수 있겠습니다.

- 시장에 적절히 참여하면서 성과도 괜찮게 챙기고 싶다면?  → MT 1 활용

- 좀 잃어도 괜찮으니까 시장에 최대한 많이 참여하면서 기대 손실을 줄이고 싶다면? → MT 2 활용

- 시장에 참여를 적게해도 괜찮으니까 손실이 나는 것이 정말 죽어도 싫다면? → MT 3 활용

- 과거 7년 동안 충분히 단순 이동평균선과 비트코인에만 집중해도 승률이 적어도 5할은 넘고 비트코인 자산을 우상향 시킬 수 있었다. 

 

 

8. 결론 & 더 고려해야할 사항 & 추후에는?

 

- 7년이라는 기간은 어떻게 보면 짧고, 어떻게 보면 긴 기간이라고 할 수 있습니다. 하지만 제가 임의로 설계한 이 기간 안에 regime change가 일어났다고 생각할 수 있습니다. 자산 시장은 살아 움직이는 생명과도 같기 때문입니다. 주식에서 과거 오일 쇼크나, 미국의 금융 위기, 코로나 등 시장 참여자들의 성격과 비중 등등 계속 변해왔기 때문에, 코인도 큰 폭락 이후로 참여자들이 변할 수 있습니다. 

- 다음 글에서는 이 기간을 조금 짧게(18.2.1~)하고 다른 요인을 추가하여 더 좋은 결과를 보일 수 있는지 보여드릴 예정입니다. 

- 과거 7년엔 이러한 퍼포먼스를 보여줬지만, 미래에는 이렇게 되라는 법이 없긴 합니다. 하지만 본인이 비트코인 매매에 승률을 올리고 싶다면 이 방법을 고려해볼 수 있겠습니다. 

- 상승과 하락의 기준이 꼭 0%으로 임의로 잡았습니다. 이 기준을 -0.5% 이런 식으로 변경하면서 상승/하락의 비중을 50 : 50으로 맞추어서 비교 분석하는 것도 좋은 방법입니다. 

- 일별로 분석한 결과이지만 이 타임 프레임을 짧게 나누거나(1시간, 4시간 봉) 혹은 길게 Rolling 하여 응용해볼 여지가 있습니다. 

- 승률은 이렇게 쉽게 계산할 수 있지만, 매수를 어떻게 하느냐에 따라서 손익비는 바뀌기 때문에 고려하지는 않았습니다. 

 

 

<Reference>

아래 글은 한국 시장 Kospi, Kosdaq 마켓 타이밍에 대한 글입니다. 논리 구조는 같게 가져가되, BTC로 바꾸어 분석함을 알려드립니다. 

https://cafe.naver.com/newsystock/2157

 

젠포트 마켓타이밍 팩터 분석

안녕하세요. 유저분들 요청으로 추가되었던 젠포트 마켓타이밍 팩터에 대해서 간단하게 분석해봤습니다. 현재 마켓타이밍 팩터는 단순 이동평균 3, 5, 10일를 사용하면서 K...

cafe.naver.com

 

profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!