작은 창업/돈 버는 지식

[퀀트] n일 고가 돌파 후 추이/고가 돌파는 유효한가?

도도새 도 2023. 2. 8. 21:40

주식 고가 돌파

 

 일반적으로 많은 사람들이 주식 고가 돌파에 거래를 시작한다. 예를 들면 터틀 전략은 20일 고가 돌파시 매수하고 n일 저가 하양 돌파시 매도한다.  이는 돌파가 유효하기 때문일 것이다. 그런데 나는 주가 데이터를 직접 분석할 수 있다는 것을 알게 된 이후 모든 정보의 진실 여부를 판단하는 데에 관심을 가지기 시작했다.

 

 이를테면 일반적으로 진실이라 여겨지는 주가-이동평균선 돌파는 검토상 모든 환경에서 적용되는 사실이 아니라는 것을 알게 되었다. 다시 말해서 아무 이동평균선 돌파에 매수했다가 매도하기를 반복하면 햄스터한테 매매를 시키거나, 동전을 던져서 홀짝으로 매매 하는 것과 큰 차이가 없다는 것이다.

 

 이것에 충격을 받아 이번에는 n일 고가 돌파 후 추이를 검토해봤다.

 

물론 나는 아직(아마 평생) 전문가가 아닐 것이기 때문에 그저 프로그래밍을 조금 아는 사람의 재미 정도로 봐주길 바라며, 검토에 사용하는 데이터가 적기에 흐름을 파악하는 데에만 유용할 뿐 실질적 전략을 세우기에는 미미하리라는 것을 미리 밝히는 바이다.

 

사용한 주가 데이터는 50개이며, 검토한 기간은 2년이다. 사실상 내가 짠 코드로 더 큰 기간과 더 많은 데이터를 확인 할 수는 있으나, 내 CPU가 감당하지 못했다. 

 

 만일 실질적으로 이것으로 무언가 전략을 세워보기를 원한다면 직접 코드를 돌려보거나(설치해야 할 것이 많기에 꽤나 번거로울 것이다.) 댓글을 적으면 입맛에 맞게 코드를 재작성하여보겠다.(이 과정에서 나는 공부가 되고, 댓글 작성자는 단 몇 글자로 몇 시간을 아낄 수 있으니 상부상조(?)일 것이다.)

 

https://doompa.tistory.com/328

 

[퀀트] (이평선 돌파는 유의미한가?)이동평균선 돌파 후 수익률/거래량 폭발 후 수익률

이동평균선 돌파 문병로 교수님의 매트릭 스튜디오를 읽은 후 내 심정에 많은 변화가 생겼다. 처음에는 그저 내 기법을 강화하기 위한 수단으로 해당 책을 선택했다. 그러나 해당 책은 내 인식

doompa.tistory.com

 

아래는 내가 작성한 파이썬 코드이다. 잘못된 점이 있을 시 댓글로 알려주기를 간곡히 부탁하는 바이다.

https://github.com/fkthfvk112/quant/tree/main/n%EC%9D%BC_%EA%B3%A0%EA%B0%80%EB%8F%8C%ED%8C%8C

 

GitHub - fkthfvk112/quant

Contribute to fkthfvk112/quant development by creating an account on GitHub.

github.com

 

고가 돌파 결과

 

거두절미하고 내가 도출해낸 결과들은 아래와 같다. 결과값은, 예를 들어 20일 고가 돌파 추이 테이블의 1일 후 컬럼들은, 20일 고가돌파가 이루어진 날(20일 내의 최고 종가보다 금일 시가가 낮은 상태에서 금일 종가가 20일 내 최고 종가보다 높아짐) 매수하여 1일 후 매도하였을 시의 데이터이다.

20일 고가 돌파 추이     날짜(2020, 1, 1 ~2022-02-06)  
1일 후 3일 후 7일 후 30일 후 60일 후
최대값 29.873 최대값 53.486 최대값 94.929 최대값 128.745 최대값 357.399
최소값 -29.916 최소값 -31.695 최소값 -31.695 최소값 -58.72 최소값 -61.311
평균 0.3820504017531049 평균 0.76353250547845 평균 0.8616099342585848 평균 2.2958392987582155 평균 5.435214024835649
중위수 0.0 중위수 -0.104 중위수 -0.424 중위수 -0.328 중위수 0.481
총 돌파 데이터 개수 1369 총 돌파 데이터 개수 1369 총 돌파 데이터 개수 1369 총 돌파 데이터 개수 1369 총 돌파 데이터 개수 1369
상승한 개수 657 상승한 개수 647 상승한 개수 628 상승한 개수 664 상승한 개수 693
하락한 개수 712 하락한 개수 722 하락한 개수 741 하락한 개수 705 하락한 개수 676
오를 확률 0.4799123447772096 오를 확률 0.47260774287801316 오를 확률 0.4587289992695398 오를 확률 0.4850255661066472 오를 확률 0.506208911614317
떨어질 확률 0.5200876552227903 떨어질 확률 0.5273922571219869 떨어질 확률 0.5412710007304602 떨어질 확률 0.5149744338933528 떨어질 확률 0.493791088385683
상승한 데이터의 평균 3.190237442922375 상승한 데이터의 평균 5.328808346213299 상승한 데이터의 평균 7.400154458598722 상승한 데이터의 평균 15.241987951807216 상승한 데이터의 평균 23.7881515151515
상승한 데이터의 중위수 2.026 상승한 데이터의 중위수 3.406 상승한 데이터의 중위수 4.593 상승한 데이터의 중위수 9.844000000000001 상승한 데이터의 중위수 15.213
하락한 데이터의 평균 -2.209212078651686 하락한 데이터의 평균 -3.3275110803324117 하락한 데이터의 평균 -4.6798286099865045 하락한 데이터의 평균 -9.897412765957444 하락한 데이터의 평균 -13.379261834319507
하락한 데이터의 중위수 -1.5575 하락한 데이터의 중위수 -2.451 하락한 데이터의 중위수 -3.659 하락한 데이터의 중위수 -8.636 하락한 데이터의 중위수 -11.5315
         
60일 고가 돌파 추이     날짜(2020, 1, 1 ~2022-02-06)  
1일 후 3일 후 7일 후 30일 후 60일 후
최대값 29.873 최대값 50.396 최대값 94.929 최대값 128.745 최대값 312.955
최소값 -29.916 최소값 -31.695 최소값 -31.695 최소값 -58.72 최소값 -61.311
평균 0.5988458781362009 평균 1.0643010752688156 평균 1.2925997610513746 평균 2.4738864994026275 평균 5.812074074074076
중위수 0.0 중위수 0.0 중위수 -0.311 중위수 0.0 중위수 -0.242
총 돌파 데이터 개수 837 총 돌파 데이터 개수 837 총 돌파 데이터 개수 837 총 돌파 데이터 개수 837 총 돌파 데이터 개수 837
상승한 개수 413 상승한 개수 409 상승한 개수 395 상승한 개수 412 상승한 개수 410
하락한 개수 424 하락한 개수 428 하락한 개수 442 하락한 개수 425 하락한 개수 427
오를 확률 0.4934289127837515 오를 확률 0.4886499402628435 오를 확률 0.47192353643966545 오를 확률 0.4922341696535245 오를 확률 0.48984468339307047
떨어질 확률 0.5065710872162486 떨어질 확률 0.5113500597371565 떨어질 확률 0.5280764635603346 떨어질 확률 0.5077658303464755 떨어질 확률 0.5101553166069295
상승한 데이터의 평균 3.6477191283292973 상승한 데이터의 평균 6.000415647921765 상승한 데이터의 평균 8.503129113924054 상승한 데이터의 평균 15.918832524271828 상승한 데이터의 평균 26.091109756097538
상승한 데이터의 중위수 2.305 상승한 데이터의 중위수 4.048 상승한 데이터의 중위수 5.397 상승한 데이터의 중위수 10.4755 상승한 데이터의 중위수 16.7085
하락한 데이터의 평균 -2.3709292452830204 하락한 데이터의 평균 -3.652686915887851 하락한 데이터의 평균 -5.151199095022627 하락한 데이터의 평균 -10.559802352941176 하락한 데이터의 평균 -13.659599531615921
하락한 데이터의 중위수 -1.6575 하락한 데이터의 중위수 -2.742 하락한 데이터의 중위수 -4.044 하락한 데이터의 중위수 -9.091 하락한 데이터의 중위수 -12.048
         
120일 고가 돌파 추이     날짜(2020, 1, 1 ~2022-02-06)  
1일 후 3일 후 7일 후 30일 후 60일 후
최대값 29.87 최대값 50.396 최대값 94.929 최대값 128.745 최대값 312.955
최소값 -15.129 최소값 -19.463 최소값 -31.313 최소값 -58.72 최소값 -61.311
평균 0.6396274834437082 평균 1.1389519867549653 평균 1.5200264900662257 평균 2.5408923841059594 평균 6.925938741721856
중위수 0.0 중위수 0.0505 중위수 -0.419 중위수 -0.295 중위수 -0.3085
총 돌파 데이터 개수 604 총 돌파 데이터 개수 604 총 돌파 데이터 개수 604 총 돌파 데이터 개수 604 총 돌파 데이터 개수 604
상승한 개수 300 상승한 개수 302 상승한 개수 280 상승한 개수 294 상승한 개수 295
하락한 개수 304 하락한 개수 302 하락한 개수 324 하락한 개수 310 하락한 개수 309
오를 확률 0.4966887417218543 오를 확률 0.5 오를 확률 0.46357615894039733 오를 확률 0.4867549668874172 오를 확률 0.48841059602649006
떨어질 확률 0.5033112582781457 떨어질 확률 0.5 떨어질 확률 0.5364238410596026 떨어질 확률 0.5132450331125827 떨어질 확률 0.5115894039735099
상승한 데이터의 평균 3.764863333333332 상승한 데이터의 평균 6.304490066225163 상승한 데이터의 평균 9.640328571428578 상승한 데이터의 평균 16.74459863945577 상승한 데이터의 평균 28.85266101694914
상승한 데이터의 중위수 2.5505 상승한 데이터의 중위수 4.2475 상승한 데이터의 중위수 6.1845 상승한 데이터의 중위수 10.553 상승한 데이터의 중위수 17.808
하락한 데이터의 평균 -2.4444868421052655 하락한 데이터의 평균 -4.026586092715233 하락한 데이터의 평균 -5.49751851851852 하락한 데이터의 평균 -10.929719354838715 하락한 데이터의 평균 -14.007339805825257
하락한 데이터의 중위수 -1.85 하락한 데이터의 중위수 -3.135 하락한 데이터의 중위수 -4.678 하락한 데이터의 중위수 -9.178999999999998 하락한 데이터의 중위수 -12.644
         
52(365)고가 돌파 추이     날짜(2020, 1, 1 ~2022-02-06)  
1일 후 3일 후 7일 후 30일 후 60일 후
최대값 29.87 최대값 50.396 최대값 94.929 최대값 128.745 최대값 312.955
최소값 -15.129 최소값 -21.821 최소값 -31.313 최소값 -58.72 최소값 -61.311
평균 0.6341728971962612 평균 1.1312009345794405 평균 1.4458387850467296 평균 3.317214953271026 평균 7.979808411214946
중위수 0.0 중위수 0.0 중위수 -0.28049999999999997 중위수 0.244 중위수 -0.872
총 돌파 데이터 개수 428 총 돌파 데이터 개수 428 총 돌파 데이터 개수 428 총 돌파 데이터 개수 428 총 돌파 데이터 개수 428
상승한 개수 213 상승한 개수 211 상승한 개수 204 상승한 개수 218 상승한 개수 207
하락한 개수 215 하락한 개수 217 하락한 개수 224 하락한 개수 210 하락한 개수 221
오를 확률 0.4976635514018692 오를 확률 0.4929906542056075 오를 확률 0.4766355140186916 오를 확률 0.5093457943925234 오를 확률 0.48364485981308414
떨어질 확률 0.5023364485981309 떨어질 확률 0.5070093457943925 떨어질 확률 0.5233644859813084 떨어질 확률 0.49065420560747663 떨어질 확률 0.5163551401869159
상승한 데이터의 평균 3.868356807511735 상승한 데이터의 평균 6.696739336492886 상승한 데이터의 평균 9.436299019607844 상승한 데이터의 평균 18.099954128440363 상승한 데이터의 평균 31.78770531400967
상승한 데이터의 중위수 2.663 상승한 데이터의 중위수 4.814 상승한 데이터의 중위수 5.720000000000001 상승한 데이터의 중위수 11.317499999999999 상승한 데이터의 중위수 19.891
하락한 데이터의 평균 -2.569925581395352 하락한 데이터의 평균 -4.280451612903228 하락한 데이터의 평균 -5.8311874999999995 하락한 데이터의 평균 -12.028676190476208 하락한 데이터의 평균 -14.319895927601818
하락한 데이터의 중위수 -2.083 하락한 데이터의 중위수 -3.501 하락한 데이터의 중위수 -4.7575 하락한 데이터의 중위수 -10.684000000000001 하락한 데이터의 중위수 -12.867

 

개인적인 해석

 

 위의 데이터를 보고 나는 다소 재미를 느꼈다. 며칠 고가 돌파이든 간에 도출된 데이터 상에서는 떨어질 확률이 오를 확률보다 크다. 즉 고가 돌파한 당일 주식을 매수하면 다음 날 매수가보다 주가가 떨어져 있을 확률이 더 크다는 것이다.

 

 이 오를 확률과 떨어질 확률은 n일이 지나도 대체로 같은 형태로 유지됨을 보인다. 즉, 매수했다가 존버하여도 대체로 가지고 있던 주식이 떨어졌을 확률이 크다는 것이다.(단 한 번이라도 n%오를 확률로는 계산하지 않았고 단순히 n일 후의 가격으로 비교하였다.)

 

 그런데도 재밌는 것이 바로, 평균가격은 모든 경우 +라는 것이다. 즉, 상승된 개수보다 하락한 개수가 더 많지만, 상승폭이 하락폭을 압도하였다는 재미있는 결과가 나온다. 즉 확률적으로는 하락이 우위에 있지만, 상승폭과 하락폭을 비교하면 상승폭이 하락폭보다 크다. 무작위 홀짝이었던 이동평균선 돌파와는 차이를 보인다.

 

또한 n일 종가 돌파의 n값이 클수록 대체로 수익률도 올라가는 경향이 있음을 확인하였다. 이는 내가 믿어오던 그대로 매물대의 방해가 상대적으로 적은 덕분이지 않을까 생각한다.

 

 개인적으로는 이 점을 이용하여 매매를 할 수 있지 않을까 싶다. 예를 들어 손절가를 조절해가며 수익을 극대화하는 방식이다. 

 

 다음 번에는 n일 이동평균선을 하양 돌파할 시 종가 매도하는 전략을 사용하면 수익이 어떻게 될지를 확인해 봐야겠다.