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

주식 비중과 개별 종목 비중을 조절 해보자

푸른주전자 2023.01.26 12:19 조회수  1314 추천 4

안녕하세요. 인텔리퀀트 푸른주전자입니다.


오늘은 저희 인텔리퀀트 스튜디오를 요모조모 활용해 보겠습니다. ^^


첫번째는

리밸런싱을 매월 1, 15일에 두번 리밸런싱하고, 거래수수료를 기본값에서 0.3%로 수정합니다.

    IQEnvironment.stockCommission = 0.003;   // commission for stocks 0.0015
    IQEnvironment.etfCommission = 0.003;     // commission for ETFs 0.0015
    IQEnvironment.stockTax = 0.003;          // trade tax for stocks  
    
    // 월 리밸런싱
    IQDate.addRebalSchedule(IQDate.setMonthlyStart(1));
    IQDate.addRebalSchedule(IQDate.setMonthlyStart(15));


두번째는

기술적 분석을 이용하여 주식 비중을 조절하겠습니다.

코스피와 코스닥의 MACD 값이 signal 값 아래면 주식 비중을 60% 수준으로 줄입니다.

        var Kospi_Idx = IQIndex.getIndex('001');
    	var MacdKospi = Kospi_Idx.getMACD(12, 26, 9);
        
        var Kosdaq_Idx = IQIndex.getIndex('004');
    	var MacdKosdaq = Kosdaq_Idx.getMACD(12, 26, 9);
        
        if (MacdKospi.macd < MacdKospi.signal && MacdKosdaq.macd < MacdKosdaq.signal) {
           stock_weight = 0.6*0.95;
           logger.debug('비중 축소!');
        } else 
           stock_weight = 0.95;

세번째는

개별 종목 비중을 뽑힌 순서대로 비중을 더 주어서 우선 순위의 종목 비중이 가장 높게 조정합니다.

다만 종목의 MACD 값이 signal 값 아래이고 0보다 작은면 60% 수준으로 줄입니다.

function getBand(stock) {    
    var Flag = 0;
    var Macd = stock.getMACD(12, 26, 9);
    
    if (Macd.macd < Macd.signal && Macd.macd < 0)
        Flag = 0.6; 
    else 
        Flag = 1;

    return Flag;
}
    stock_basket.reset();
    var amount = 0;
    var qty = 0;
    for (var i = realPortfolio.length-1; i >= 0; i--) { 
        var band = getBand(realPortfolio[i]);
        // 종목당 비중 계산 : 순위가 높을 수록 비중이 높음
        amount = totalEquity*stock_weight*((20-i)/210) * band;
        // 종목당 수량 계산
        qty = Math.floor( amount / realPortfolio[i].getAdjClose() );
	stock_basket.enter(realPortfolio[i], qty);        
    } 

바스켓 enter() 함수를 사용함으로 initialize에서 setPortfolioBuilder()함수를 사용하지 않습니다.

또한 enter() 함수 사용전 reset() 함수를 사용하여 바스켓에 직접 추가한 종목을 삭제해 주어야 합니다.


시장이 하향하면 주식 비중을 줄이고, 우선 순위 종목에 비중을 높게 줍니다.

다만, 주가가 떨어진다고 생각되면 개별 종목의 비중을 축소하는 개념입니다.


테스트 조건은 

2010-01-01 ~ 2023-01-20

ETF, 우선주, 관리/정리매매, 자본 잠식 종목 제외

거래대금, 시총 제한 없이 시총 하위 20%

PER+PBR+GPOA 전략

매월 1, 15일 두번 리밸런싱



백테스트 결과를 보면

연평균 수익률 40%, 연환산 표준편차 15%, 샤프지수가 2.1로 상당히 양호합니다.

또한 MDD가 22.76% 로 지수 MDD의 절반 수준이며 손실폭 그래프로 보아도 괜찮은 모습을 보입니다.

 


2022-01-01 ~2023-01-20

최근 시장이 안 좋은 구간에서도 큰 폭의 손실은 없어 보입니다.



단순한 전략이지만 주식 비중과 개별 종목의 비중을 적절히 조절하여 나름 안정적인 고수익 전략으로 바뀌었습니다. ^^

감사합니다. 


제가 작성한 모든 글과 공개한 알고리즘은 사용하셔도 되지만
다른 곳에서 사용하실 경우 꼭 원출처와 원작자를 명확하게 밝혀주시기 바랍니다.
댓글 3
좋은 전략 감사드립니다.
소포클레스 2023.01.26 16:23
인버스가 포함된 전략이군요!
설림픽 2023.02.03 00:48
훌륭한 전략 감사합니다. 
Lexus 2023.07.15 16:51
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글