커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

팩터 로테이션 전략

푸른주전자 2022.05.13 13:14 조회수  791 추천 5

안녕하세요!


인텔리퀀트 푸른주전자 입니다.


지난 글 "2021년 value 팩터 중 가장 빛나는 성과를 낸 지표 어떤 것일까?"  쓰면서 들었던 생각이 

"지표 중에서 지난 한달 동안 수익률이 가장 좋은 지표를 이번 리밸런싱에 이용하면 수익률이 더 좋아 지지 않을까"

라고 생각 했습니다.


즉, PER, PBR, PSR, POR, PCR, PRR 각각의 지표 수익률을 측정하고 이중 가장 수익률이 높았던 지표를

선택해서 그 지표로 뽑힌 종목으로 리밸런싱을 하는 것입니다.

바로, 팩터 로테이션 전략을 구현하는 것입니다.



제가 생각한 코드는 

먼저, onDayClose()에서 

diffValue[0] = (totalEquity - ReValue)/ReValue;

PER, PBR, PSR, POR, PCR, PRR 각 지표의 수익률을 순차적으로 diffValue 배열에 저장합니다.


팩터 로테이션 전략에서 

var pointsort = diffValue.slice().sort(function(a, b)  { return b - a; });
var pointsortNUM = pointsort.slice(0, 1);

수익률이 가장 높은 수치를 찾아서 저장하고


for (var i = 0; i < pointsortNUM.length; i++) {        
        point[diffValue.indexOf(pointsortNUM[i])] = 1;
        logger.debug(diffValue.indexOf(pointsortNUM[i]));
}

해당하는 위치에 point 배열에 1을 입력

for (var i = 0; i < diffValue.length; i++) {        
            if (point[i] != 1)
                point[i] = 0;
}

그외 0으로 입력합니다.



for (var i = 0; i < universe.length; i++) {
        var stock = universe[i];
        
        stock.setScore("combi_rank", 
                         point[0]*sortedByPer.indexOf(stock) 
                       + point[1]*sortedByPbr.indexOf(stock) 
                       + point[2]*sortedByPsr.indexOf(stock) 
                       + point[3]*sortedByPor.indexOf(stock) 
                       + point[4]*sortedByPcr.indexOf(stock) 
                       + point[5]*sortedByPrr.indexOf(stock) 
                       );
    }

이런식으로  point 배열에 해당 지표는 1로 활성화, 나머지는 0으로 비활성화 됩니다.



테스트 조건은

2010-01-01~2022-04-29 까지 

전체 종목중에서 ETF, 우선주 만 제외하고, 매월 1일 20종목 래밸런싱합니다. (시총, 거래대금 제한 없음)



성과를 보면

단일 지표로 PER의 수익률이 가장 높고, 샤프지수도 높지만

팩터 로테이션 전략이 PER보다 수익률, 샤프지수, MDD 모두 더 좋아지는 것을 알 수 있습니다.



이런, 팩터 로테이션 전략을 응용하면 더 다양한 전략을 구현 할 수 있을 것 같습니다.

예를 들어 단순 PER+PBR+GPoA 전략에서 PER 지표를 다른 지표로 유동적으로 변경하는 전략도 가능하고

아니면 여러 전략들 중에서 기간 수익률이 높은 전략으로 변경하는 전략도 구현 가능 할 것입니다.

정말 활용도가 높은 인텔리퀀트 백테스트입니다. ^^



혹시 이상한 부분이 있으면 말씀해주세요.

감사합니다,



제가 작성한 모든 글과 공개한 알고리즘은 사용하셔도 되지만
다른 곳에서 사용하실 경우 꼭 원출처와 원작자를 명확하게 밝혀주시기 바랍니다.
댓글 2
상대모멘텀을 지수가 아닌 개별주식에 어떻게 적용할지 고민 중 이었는데  모범답안이 나왔네요. 팩터별 상대 모멘텀을 측정하는 것을 테스트 하셨네요.   푸른주 전자님 감사드립니다^^
소포클레스 2022.05.13 17:56
말씀 하신 대로  해당 전략을 모티브로 다양한 전력 구현이 가능해지겠군요. 감사합니다
은준빠 2022.05.14 09:10
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글