안녕하세요.
오랫만에 글을 써봅니다.
원하는 날짜만큼 분할 매수/매도 할 수 있도록 코드를 작성해 봤습니다.
소형주 전략의 단점으로 지적되는것 중 하나가 유동성 부족입니다.
(유동성이 적을수록 슬리피지도 커지고, 체결시키기도 힘들어 백테스트와 실제 계좌간 간극이 커지게 됩니다.)
특히, 시드머니가 커질수록 이런 문제가 눈에띄게 드러나게 됩니다.
이 유동성 문제를 조금이나마 완화시키고자 사용할 수 있는 방법중 하나는 시기의 분산입니다.
시기를 분산하는 방법으로, 여러개 계좌를 이용한 풍차돌리기를 할 수도 있고,
하나의 계좌에서 분할 매도 & 분할 매수 하는 방법이 있습니다.
다들 아시다시피 인텔리퀀트의 IQLive는 여러 계좌를 연동하기 어렵습니다.
그렇다면, 전자의 풍차돌리기는 불가능하고( 계정을 여러개 만들면 가능하긴 하겠네요 ),
분할 매도 & 분할 매수 방법은 사용 해 볼만 하다고 생각됩니다.
아래 백테스트는 아주 단순한 마법공식류 전략에 분할매수/매도 시스템을 적용한 결과입니다.
- 전략 개요
- PSR + GP/A + 신FScore
- 분할매수/매도 3일 적용 (rebal_day 변수 조절하면 변경 가능)
- 10개 종목 매수
- 변동성 기반 종목별 비중 설정
3일 기준으로 했을 때, 1일기준(당일 매수/매도 완료) 전략과 비교해서 큰 차이는 없었고,
10일 이상으로 가면 CAGR이 조금 낮아지긴 하지만, 큰 흐름은 손상되지는 않았습니다.
전략을 변경하고 싶으시면, getModelPortfolio() , getTargetWeight() 함수 정도만 수정하시면 됩니다.
show_log 플래그를 true로 두시면, 다음과같이 편입중인 종목과 편출중인 종목의 현황이 3일간 표시되게 됩니다.
많은분들께 도움되었으면 합니다.
오류가 있으면 댓글로 달아주세요!
시간될 때 수정해서 다시 공유 드리겠습니다^^
감사합니다