리밸런싱날짜를 고정값이 아니라 함수, 변수로 설정해보고 싶어서 이것저것 시도해봤는데 잘 안되네요. 리밸런싱 주기탭은 날짜값이나 날짜값 리스트가 아니면 동작이 안되는 건가요?
댓글 7
블록 알고리즘은 사용편리성을 위해 기능적으로 제한을 많이 한 것이라서, 리밸런싱 날짜를 자유자재로 지정할 수 없고, 고정된 날짜 규칙을 사용하셔야 합니다.
보다 많은 자유도를 가지고 아이디어를 테스트해 보시려면 결국 스크립트로 알고리즘을 작성하셔야 할 것 같습니다.
감사합니다.
| 인텔리퀀트| 2021.05.06 12:49
구체적으로 알려주실 수 있나요?
| koa55| 2021.05.06 21:53
스크립트로 예시를 들어달라는 말씀으로 이해하고 예시를 아래와 같이 만들어 보았습니다:
------------------------------------------------------------------------------------------------------------------------------------
function initialize() {
IQDate.addRebalSchedule(IQDate.setMonthlyStart(1)); // 매월 1일 리밸런싱 - 디폴트 설정
}
......
function newRebalDate(today) { // 조건에 따라 리밸런싱 날짜 또는 규칙을 바꾸는 사용자 정의 함수
var new_daterule;
if (today.getMonth()+1 >= 5 && today.getMonth()+1 <= 10) { // 5월 ~ 10월 사이
new_daterule = IQDate.setMonthlyStart(15); // 리밸런싱 주기를 매월 15일로 설정
} else {
new_daterule = IQDate.setWeekly(1); // 리밸런싱 주기를 매주 월요일로 설정합니다
}
return new_daterule;
}
function onDayClose(now) {
IQDate.resetRebalSchedule(); // 리밸런싱 규칙 초기화
IQDate.addRebalSchedule(newRebalDate(now)); // 오늘(now)에 해당하는 리밸런싱 날짜규칙을 호출
if (IQDate.isRebalancingDay(now)) {
// 리밸런싱 수행
}
}
------------------------------------------------------------------------------------------------------------------------------------
블록 알고리즘에서는 리밸런싱 규칙이 무조건 initialize() 함수 내에만 코드가 생성되도록 하였기 때문에 동적으로 변화하는 규칙을 사용할 수 없습니다.
답변들 감사합니다. 투자공부랑 병행하기 힘들어서 한동안 자바스크립트쪽은 놓고 있었는데 다시 해봐야겠네요.
| LimSung Hyun| 2021.05.07 16:36
리밸런싱 주기를 매일로 놓고
함수를 만들어서 리밸런싱 시그널이 최초 발생할 때의 종목, 수량 매일 반영시켜주면 비슷하게 구현은 가능할 수도 있습니다. 비효율적이긴 하지만 ㅎㅎ;
아래 링크가 도움이 될지도 모르겠습니다
https://www.intelliquant.co.kr/article/865?forum=0