[CODE] 백테스팅, 과연 만들 수 있을까? (상)
미리보는 한 짤 요약
며칠 동안 두들겨 맞으며 배운 경험담을 남기는 후기 혹시라도 백테스팅 툴 만드려는 분들에게 도움이 되길 바라며…
이미 좋은 툴들
사실 이미 오픈소스로 공개된 좋은 툴들이 많다.
Backtrader Py
그럼에도, 직접 제작하려 한 이유는, 오픈된 툴들이 범용성은 좋지만,
기본적인 전략은 대수의 법칙에 기반해서, 조금이라도 확률우위를 가질 수 있는 전략(55:45 정도라도) 마구잡이로 돌리기
출처: [월가아재] 골드만삭스 11년차 출신 퀀트 - 강승원님 인터뷰 3편 [3부작], ~ 1분 40초
초기 접근
눈으로 orderbook, 차트 보고, 가능한 시나리오 코드로 구현해보기 + 왜 그럴지 생각해보기 우선 시행착오 하면서 (내 개발역량이 부족해서 실행하기 전엔 생각을 못한다…ㅎ) 조금씩 고쳐나가기
(전략에 대해선 다루지 않을 예정)
백테스팅의 어려움
호가창 기반의 limit order 거래를 구현하는 라이브러리 없음 (아님 내가 못찾음)
생존편향, look-ahead bias
시스템 알고리즘의 어려움
그냥저냥 퉁 치고 넘어간 것들 (미쳐 생각하지 못한 점들) 위 -> 아래, 위 -> 아래 -> 위 -> 아래 (체결)
실제 트레이딩에선 backtesting에서 Slippage 정도로 퉁치고 넘어간 것들을 엄밀히 봐야 함 (특히 HFT 같이 timestep이 짧을 수록, 내 주문이 호가에 큰 영향을 미치기 때문에)
막연한 것들을 막상 구현하고자 할 때 특정 MA가 또 다른 MA 밑으로 올 때 매수해야지 (이미 다른 호가에 매수가 걸려있는 경우에? 주문 취소?) 실제 1분간 거래가 없어서 MA가 NAN 값 나오기도 함
결론
C 얼른 자유자재로 사용가능해야 한다…
분당 수 십회 제한이 있는 국내 거래소 API로는 틱 단위 거래는 힘들다… 틱 데이터는 용량이 어마 무시 하다…(한 종목 한 달치 n GB) 이걸 호가창으로 구현하려면 너무 힘들다
다음 후기 쓸 정도엔 어느 정도 안정적으로 돌아갈 수 있게… (깃헙 코드 공개 가능하게)