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

Leo Hwang 님 샘플입니다.

푸른주전자 2017.09.14 15:46 조회수  717 추천 0

새로만들기 전략에서 단순히 아래의 필터만 추가하였습니다.


 if (stock.getFundamentalDividend() === 0)  { return false; }


2017년 9월에 신풍제지, 신한, 이녹스, 코리아에스 종목이 뽑히지 않고 

뽑힌 30종목 모두 배당액이 있음을 확인했습니다.


혹시, 이렇게 해도 안되신다면 소스를 직접 봐야지 알것 같습니다.


function stockFilter(stock) {

    if (stock.market != 1 || stock.isETF)   //코스닥 종목과 ETF 종목을 필털링 합니다.

        return false;

        if (stock.getFundamentalDividend() === 0)  { return false; }

    

var filterMarketCapital = (stock.getMarketCapital() > 0); // 시가총액 500억 이상 기준

var filterTradingValue = (stock.getTradingValue() > 0);   // 일거래대금 10억 이상 기준

       var filterPER = (per(stock) > 0);                        // per가 마이너스인 경우 제외

return (filterMarketCapital &&  filterTradingValue && filterPER);

}



댓글 12
// 필터링 함수 정의
function stockFilter(stock) {
    if (stock.manage === 1 || stock.manage === 2 || stock.manage === 4) { return false; }
    if (stock.getMarketCapital() === 0) { return false; }
   // if (stock.getFundamentalTotalAsset() === 0) { return false; } 
    if (stock.getOpen() === 0) { return false; }
    if (stock.getClose() === 0) { return false; }                      // 상폐종목 제외 (Survivorship Bias 제거)
    if (stock.getTradingValue() === 0) { return false; }               // 거래정지 중인 종목 제외
    if (stock.isETF) { return false; }                                 // ETF 제외
    if (stock.name.substr(stock.name.length -2) === "스팩") { return false; } //스팩 제외
    if (stock.name.substr(stock.name.length -2) === "1호") { return false; } //스팩 제외    
    if (stock.name.substr(stock.name.length -2) === "2호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "3호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "4호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "5호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "6호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "7호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "8호") { return false; } //스팩 제외  
    if (stock.name.substr(stock.name.length -2) === "9호") { return false; } //스팩 제외   
    if (stock.name.substr(stock.name.length -4) === "SPAC") { return false; } //스팩 제외     
    if (stock.getFundamentalNetProfit() <= 0) { return false; }        // 당기 순이익 0 이하 종목 제외
    if (stock.getFundamentalOperatingCashFlow() <= 0) { return false; }// 영업활동으로인한 현금흐름 0 이하 종목 제외
    if (stock.getFundamentalTotalEquity <= 0) { return false; }        // 당기 자본총계 0 이하 종목 제외    
    if (stock.getDividendYieldRatio <= 0) { return false; }            // 배당수익률 0 이상
    if (stock.getPBR() <= 0.1 || stock.getPBR() >= 1) { return false; }  // 0.1 < PBR < 1 
    if (stock.getPER() <= 0 || stock.getPER() >= 10) { return false; }  // 0 < PER < 10  

    stock.loadPrevData(2, 0, 0); 
    if (stock.getFundamentalDividend(0) === 0) { return false; } 
 //       if (stock.getDividendYieldRatio(1) <= 0) { return false; }   
 //       if (stock.getDividendYieldRatio(2) <= 0) { return false; }   
 //       if (stock.getDividendYieldRatio(3) <= 0) { return false; }       
    return true;
}
푸른주전자 2017.09.14 16:26
코리아에스이는 배당금이 최근 4분기에 있습니다.
푸른주전자 2017.09.14 16:27
앗! 이제 됩니다. 감사드립니다^^ 
Leo Hwang 2017.09.14 16:33
레오황님 어디가 문제였었나요?
저도 배당수익률이 안 먹는 것을 발견했네요(그동안 적용되는줄 알았던;).
if (stock.getDividendYieldRatio <= 0) { return false; }            // 배당수익률 0 이상
요렇게 한줄 넣었습니다.숫자를  "0"이 아니라 "5"를 넣어도 백테스트 결과가 똑같길래 발견하였네요.
칸트 2017.09.15 01:28
네~ 저는 필터링 함수에서
if (stock.getDividendYieldRatio <= 0) { return false; }            // 배당수익률 0 이상
코드를 사용 했었는데, 푸른주전자님께서
if (stock.getFundamentalDividend(0) === 0) { return false; } 
코드로 수정해 주셔서 해봤더니 필터링이 되었습니다.

그런데 백테스팅을 해보니 배당을 안준다고 해서 수익이 낮은건 아니라서 해당 코드는 삭제하고 사용하기로 했습니다.
Leo Hwang 2017.09.15 09:29
레오 황님 고맙습니다^^

푸른주전자님, 인텔리퀀트에서 배당관련 명령어는 세 개가 있는데,
getDividendYieldRatio() : 배당수익율
getFundamentalDividend() : 배당액
getDividendPayoutRatio()  : 배당성향
그럼 이중에서 현재 배당액 명령어만 작동이 되는건가요?
칸트 2017.09.15 18:49
칸트님
getFundamentalDividend,  getDividendPayoutRatio 모두 정상 작동합니다.
getDividendYieldRatio 에 약간 오류가 있었지만 수정되었습니다.(재무데이터랑, 시가총액이랑 단위가 다르게 입력되어 있어서 발생한 오류)
좀더 첨언 드리면 재무데이터는 천원단위, 시가총액은 백만단위, 종가는 원단위 입니다.
푸른주전자 2017.09.18 18:14
푸른주전자님 고맙습니다^^
그러면 Ratio는 0.xx로 표현되나요?
예를 들어, if (stock.getDividendYieldRatio < 0.03) { return false; }  //배당수익률 3% 이상
칸트 2017.09.18 20:24
*100이 된 백분율표시입니다.
3% 이상만
if (stock.getDividendYieldRatio < 3) { return false; }  //배당수익률 3% 이상
푸른주전자 2017.09.18 21:46
@푸른주전자
그럼 배당성향도 * 100이 된 백분율 표시인가요?
Prophit 2017.09.19 13:10
네 배당성향도 백분율 표시입니다.
푸른주전자 2017.09.19 13:39
푸른주전자님, 고맙습니다^^
칸트 2017.09.19 17:10
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글