개미들을 위한 퀀트 자동 매매 프로그램 개발자 블로그입니다. 프로그래밍과 퀀트 투자를 합니다.

방구석퀀트

네이버카페 : 방구석 퀀트 놀러오세요^^ https://cafe.naver.com/conerquant 가입해 주세요.

2021년 10월 3일 일요일

방구석지니 퀀트 자동 분할 매매 기능 추가(2/3) - 종목교체 리밸런싱 스케줄링 개발

지난 글에서 분할 매매 기능 초기 버전의 UI만 개발 했다.

https://euhyeji.blogspot.com/2021/09/12.html


이후 실제 매수,매도 주문 로직을 개발하려고 보니... 부족한 것이 보여 아래와 같이 매매스케쥴을 변경하였다.


기존 매매 시간만 표시하던 것을 시작시간과 종료시간을 표시하게 해서 Timer가 돌아갈 때 해당시간이 만족한다면 정해진 '매수','매도'에 따라 동일비중금액으로 주문이 나가도록 로직을 개발 완료 하였다. 


그리고 동일비중 관련해서는 기존 투자금의 50%만 투자하고 있다가 75%로 투자비중을 올리고 싶을 때를 위하여 아래와 같이 비중 리밸런싱을 설정 할 수 있도록 하였다. 



나 같은 경우는 마켓타이밍에 따라 25% 단위로 비중을 감소, 증가 시키기 때문에 아주 좋은 기능이라고 할 수 있겠다. 이번 9월 29일에 25% -> 0%로 분할매도, 9월 30일에 0% -> 100%로 분할매수를 이용해 비중 조절을 성공적으로 마쳤다. 다만 9월30일 분할매수는 오후 12시 40분부터 15시 19분까지 분할매수를 시행하였는데 장 종료 후 -0.5% 정도의 수익률이 기록되었다. 만약 기존과 같이 종가 부근에 1회 매수를 했다면 -0.23% 수익률이 되었을텐데 결과적으로 분할매수가 안좋은 결과를 가져왔다. 하지만 이번 경우는 12시 40분 이후 지수가 종가까지 계속 하락을 한 경우인데 반대로 상승을 했다면 최종 수익은 플러스가 되었을 수도 있으니... 이건 뭐 그날에 따른 복불복이 아닌가 생각된다.


지금까지는 종목교체가 포함되지 않은 단순히 현재 포트폴리오에 등록되어 있는 종목에 대해서 비중을 증가시키고, 감소시키는 기능의 개발이었다. 이 기능도 충분히 좋은 기능이지만 더 좋은 기능이 되려면 분기마다 1번있는 포트폴리오 교체 리밸런싱 때도 분할매매가 적용되게 하는 것이다.


종목교체 리밸런싱 시 고려 사항


1. 단순 종목교체

이 경우는 현재 계좌 잔고에 있는 보유 종목의 목록과 새로 교체할 포트폴티오의 종목을 비교해서 매도시에는 교체될 종목을 분할매도하고, 매수시에는 신규종목을 분할매수하면 된다. 


2. 종목교체 & 비중 변경

이 경우는 종목교체 리밸런싱을 하면서 투자 비중을 함께 변경하는 경우이다. 예를 들어 기존 투자되고 있는 비중이 100%였는데 종목교체 리밸런싱을 하면서 비중을 50%로 줄이거나 반대로 50%에서 100%로 비중을 늘이면서 종목교체를 하는 경우다.


이 같은 경우는 만약 100% -> 50% 변경시 교체매도될 종목은 100% -> 0% 로 줄어들면서 완전 매도가 되어야 하고, 비중만 변경되어야 할 종목은 100% -> 50%로 분할 매도가 되어야 한다. 즉, 분할 매도시 적용되는 비중들이 교체될 종목과 유지하는 종목간에 차이가 나는 것이다. (아... 머리 아파.. 매수도 마찬가지다.) 분할매매 개발을 처음 시작할 때는 쉽게 보고 시작했는데... 갈수록 고려해야 할 점들이 늘어나고 있다. 


먼저 아래와 같이 종목들을 구분해야 한다.

A. 교제매도

- 기존 보유종목 중 신규 포트폴리오에 포함되지 않아 완전 교체 매도 되어야 할 종목들

B. 교체매수

- 신규 포트폴리오 종목 중 기존 보유종목과 겹치지 않는 신규로 매수 되어야 할 종목들

C. 리밸런싱매도,리밸런싱매수

- 기존 보유종목이면서 신규 포트폴리오에도 포함된 종목들. 비중 변경만 필요


분할매매 스케줄링도 위 3개 그룹 각각으로 할당되어야 한다. 그래서 우선 스케줄링 기능만 개발해 보았다.


Case 1. 비중변경 없을 떄



위와 같이 설정된 고정 비중(50%) 만큼만 교체될 종목은 교체매도, 신규 매수할 종목은 교체매수하는 스케줄링을 하면 된다.


Case 2. 비중을 낮추는 경우 ( 100% -> 50% )


교체매도 종목들은 100% -> 0%로 줄어드는 '교체매도', 유지하면서 비중만 줄여야 하는 종목들은 100% -> 50%로 줄어드는 '리밸런싱매도' 가 되게 하였다.


Case 3. 비중을 높이는 경우 ( 50% -> 75% )

교체될 종목은 '교체매도', 신규로 매수될 종목은 0%->75%가 되게 '교체매수', 유지하면서 비중만 50% -> 75% 변경되는 종목은 '리밸런싱매수'로 각각 스케줄링이 되었다.

여기까지 개발하고나니... 힘이 다 빠져버렸다. 다음 분기 종목교체 리밸런싱은 11월 18일 정도가 되려나... 쉬엄쉬엄 해야겠다. 


향후 개발 사항


1. 종목 나누기
- 교체매도종목, 신규매수종목, 비중리밸런싱종목


2. 매매 방법에 따른 매매주문 로직


3. 매매 현황 모니터링 


댓글 없음:

댓글 쓰기

가장 많이 본 글