안녕하세요? 인텔리퀀트 팀입니다.
그동안 스크립트 알고리즘에서는 백테스트 단계에서 복수계좌를 사용하여 여러 전략 또는 모델의 성과를 비교할 수 있도록 지원하고 있었던 것에 반해, 그러한 복수계좌 사용 스크립트 알고리즘을 IQ Live에 그대로 적용하는 것은 부주의한 경우 문제가 발생할 수 있어서 허용되지 않았습니다.
하지만 보다 창의적인 투자전략을 실전에서 구사하실 수 있도록, 앞으로는 복수계좌를 사용한 알고리즘도 IQ Live에 등록하여 실행할 수 있도록 하였습니다.
다만, 문제 발생을 피하기 위해서는 아래와 같은 가이드라인을 꼭 지켜 주시기 바랍니다.
예제:
basket1, basket2, basket3가 각각 account1, account2, account3에 연결되어 있을 때,
function onDayClose(now) {
......
if ( ... ) {
flag = 1;
} else {
flag = -1;
}
......
}
function onComplete() {
if(flag === 1) {
IQLive.addPortfolio(basket1, 0.9);
logger.info("Current Basket = basket1");
} else {
IQLive.addPortfolio(basket2, 0.9);
logger.info("Current Basket = basket2");
}
}
==> IQ Live에 오류 없이 등록은 가능하나 정상동작 보장 못함 : 같은 시점에는 하나의 Account에 속한 Basket만 등록되지만, 교대과정에서 의도하지 않은 결과 발생 가능
function onDayClose(now) {
......
if ( ... ) {
basket3.setPortfoliobuilder(...); // basket1에 지정된 포트폴리오 빌더 함수로 설정
} else {
basket3.setPortfoliobuilder(...); // basket2에 지정된 포트폴리오 빌더 함수로 설정
}
basket3.buildPortfolio();
......
}
function onComplete() {
IQLive.addPortfolio(basket3, 0.9);
}
==> IQ Live에서 허용 : 최종적으로 하나의 Account에 속한 Basket만 실전포트폴리오 등록에 사용하므로 정상 동작
function onComplete() {
IQLive.addPortfolio(basket1, 0.45);
IQLive.addPortfolio(basket2, 0.45);
}
==> IQ Live에서 금지 (등록 실패) : 두개 이상의 Account에 각각 속한 Basket들의 포트폴리오를 동시에 등록 시도하므로 금지