brunch

You can make anything
by writing

C.S.Lewis

by TUGU Aug 31. 2023

자동화 매매, HTS와 백테스팅의 한계점

알렉산더 엘더

지난 반년 간  완전 자동화된  알고리즘 트레이딩을 위하여 예스트레이더, 시그널 메이커 등 자동 매매 프로그램을 활용해서 수 없이 알고리즘 짜보고 백테스팅을 해 보았다. 여기서 얻은 몇 가지 사실을 정리해보려고 한다.


1. 우선  완전 자동화를 위해서는 HTS 만으로는 불가하고  반드시 별도의 프로그래밍이 필요하다. 

예스트레이더나 시그널 메이커는 결국 HTS가 켜진 상태에서만 시스템 매매가 구동하게끔 되어 있다. 이 부분은 증권사에 매우 아쉬운 부분이다. 시대가 어느때인데 아직도 사용자 PC의 HTS가 켜진 상태여야지만 시스템 매매가 가능하게 한 것인지... 국내 HTS가 갈 길이 아직도 한참 멀었다는 것을 최근에 많이 느꼈다.  24시간 서버 기반으로  운영하고, 사용자는 클라이언트에서 접속만하면되는 HTS가 꼭 만들어지기를 바란다.


2. 수 없이 많은 벡테스팅을 해 보며 느낀 것은... 트레이딩 전략에서 결국 가장 중요한 것은 진입 후 포지션 청산 손익비를 어떻게 설정할 것인가이다. 

진입 후 손익비를 1:1로 두는 경우, 사실 어렵지 않게 승률 50% 이상의 시스템 매매 전략을 짤 수 있다. 하지만 이 경우 문제는 승률이 50%이상이라 하더라고 트레이딩 시마다 발생하는 슬리피지와 수수료로 인해 결국 우하향 곡선을 그리는 전략으로 갈 수 밖에 없다는 것이다. 손익비를 1:1에서 1:2, 1:3으로 높일 수록 당연한 얘기지만 승률은 반비례할 수 밖에 없다. 그렇다고 승률을 높이기 위해 손익비를 2:1, 3:1로 가져간다면 이또한 필패전략이다. 여러번의 조그마한 이익이, 한두번의 큰 손실거래로 무산되버리기 때문이다. 여기에 거래비용이 계속 붙으니 필패다.


3. 초단위, 분단위 매매 전략으로 돈을 벌수 있는 트레이딩 전략은 극히 힘들다. 기술이 아닌 예술의 영역에 가깝다.

많은 트레이더의 꿈이다. 초,분단위로 매매해서 지속적인 수익을 바로바로 확인하는 것. 하지만 잦은 매매는 수수료, 슬리피지로 인한 거래 비용이 매우 커지게 되는데 잦은 매매라는 말 자체가 폭이 매우 작은 수익을 목표로 한다는 것이다. 아무리 승률이 높아도 매 거래마다 거래비용을 넘어서는 이익을 발생시키려면 잦은 매매를 피해야 한다.  내 생각에 스캘퍼로 돈을 버는 것은 기술이 아닌 예술의 영역으로 보인다.


4. 백테스팅의 한계, 허구성이 존재한다. 

간혹 Drawdown이 매우 적으면서, 거래비용까지 다 감안해도  장기적으로 우상향 손익그래프를 그리는 전략을 발견할 때가 있다. 마치 돈을 버는 나만의 비밀을 발견한 것 같은 착각에 휩싸인다. (보통 이러한  꾸준한 우상향 그래프는 시스템 전략에서 Trailing stop을 설정해놓고, 이 Trailing 폭을 평균 봉의 크기보다 작게 설정하는 경우에 발생한다.) 하지만 이러한 전략은 실제 자동화 적용해봐야 아무 쓸모 없다. 왜냐하면 백테스팅은 결국 봉의 시,고,종,저 데이터만을 가지고 테스팅 하는 것이고 하루 중 일어나는 틱의 변화를 반영할 수 없기 때문이다. 따라서 우상향하는 전략을 발견해도 실전에 적용해보면 잦은 매매로 이어지거나 오히려 우하향하는 결과로 이어짐을 어렵지 않게 확인할 수 있다. 어떠한 백테스팅 프로그램을 활용하더라도 이는 피할 수 없다. 비교적 정확한 백테스팅 결과를 얻고 싶다면 평균 봉의 크기 이상의 손익비를 설정하면 될 것이다.



최근에 트레이딩 대가 중 한명인 알렉산더 엘더의 서적을 몇 권 읽게되었는데 이런 얘기가 나온다. 가장 정확한 백테스팅 방법은 차트를 과거 시점으로 (오래될수록 좋다) 쭈욱가서, 차트를 오른쪽으로 계속이동하면서 내가 준비한 전략에 따른 시그널이 발생할 때 포지션을 진입했다고 가정하고 이후 차트를 직접 수동으로 이동하며 승패를 판단해 보는 것이다. 이렇게 특정한 전략을 100번의 시그널을 직접 손매매한다고 가정하고 실험해보면 가장 정확한 백테스팅 결과를 얻을 수 있다고 했다. 


알고리즘을 통해서 완전 자동화하기 보다는 알고리즘을 통해서 매매 시그널만 받은 후, 실제 포지션 진입/청산은 사람이 직접하되 Stop 주문을 통해서 포지션 청산에 나의 주관적 감정이 개입하지 않도록 하는 것이 가장 최선인것 같다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari