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

최적화는 항상 이율배반인가?

소포클레스 2018.03.16 22:17 조회수  4671 추천 9

최적화란 수익률을 위한 작업만은 아니다. 최대손실폭(MDD)을 줄이는 것 또한 최적화다. 그런데 수익률을 최적화 하다 보면 MDD가 커지고, MDD 최적화를 하다 보면 수익률이 작아진다. 일반적으로 이렇게 된다고 믿고 있는데, 이 글에서는 항상 그런 것은 아니라는 걸 보이려 한다. 다시 말해 MDD를 줄이면서 수익률을 높이는 방법을 설명한다.

 

이번에 소개하는 최적화 방법 중 처음 공개하는 것이 많이 있다. 따라서 다른 사람이 쓴 퀀트 전략 글이나 책에서는 아래의 내용을 찾아볼 수 없다. 왜냐하면 퀀트 전략책은 있지만 퀀트 전략 최적화를 다루는 책이 없기 때문이다. 예를 들어 "기본적인 전략에서 5~6 가지 최적화 과정을 거치면 수익률이 몇 % 올라가며, MDD가 몇 % 낮아진다" 이런 내용의 책이나 논문을 필자는 본적이 없다. 

 

최적화 내용은 무엇인가

기본적인 전략은 매우 단순하다. 메트릭 스튜디오에서 소개된 PBR PER을 사용한 Filter 전략이다. PBR 0~1 사이이면서, PER 0~7 사이인 종목을 매수하는 것이다. 여기에 Smart Beta의 방법(모멘텀과, VALUE, Quality 지표의 Ranking 전략)을 추가하였다. 여기까지가 기본 전략이다. 이 기본 전략에 6가지 최적화 전략을 추가하였더니 아래와 같은 결과가 나왔다.  




튜닝 전 월 수익률은 3.84%로 나쁘지는 않은데, 튜닝 후에 5.36%가 되었으므로 월 수익률이 1.5%정도 개선되었다. 그리고 MDD3배정도 개선되었다. 어떤 이는 "월평균수익률이 별볼일 없구만" 라고 할 수도 있겠다. 하지만 3가지 점에서 타 전략과 차별화된다.

1) 월 매수종목 수가 항상 40종목을 유지함에도 불구하고 5% 초반대의 수익률을 유지하기는 쉽지 않다. 또한 월 매수종목수가 10개인 전략에 비해 슬리피지가 1/4로 줄어드는 것도 장점이 된다. 

2) 항상 월 40종목을 거래하면서 15년간 악성 상장폐지가 한번도 발생하지 않았다. 2017년 1월에 발생한 상장폐지는 악재가 아니라 호재이다. 왜냐하면 합병에 의한 상장폐지 결정은 주가의 상승을 불러오기 때문이다. 15년간 단 한번 발생한 호재성 상장폐지도 아래에서 소개될 5~6번 전략에서는 발생하지 않는다. 왜냐하면 볼린저밴드를 이용한 필터로 종목이 걸러졌기 때문이다.  

3) 2008년의 리먼브라더스 사태를 포함하여 지난 15년간 매매한 MDD가 18% 초반대로 유지하였다. 세계적 금융위기 상황에서 MDD를 18% 초반대로 유지하기는 쉽지 않다.


수익률이나 MDD를 개선하기 위해 아래의 6가지 방법을 사용하였다. 기본전략(Smart Beta)에 아래의 6가지 최적화 방법을 추가적으로 적용하면 수익률이 점점 올라가고 MDD는 점점 내려가는 것을 볼 수 있다.




1,2 번은 각각 적용된 방법이고, 3번부터는 누적된 방법이다. 다시 말해 3번 방법의 수익률과 MDD1+2+3 방법이 모두 사용된 결과이고, 6번의 수익률과 MDD 1~6번 방법이 모두 적용된 결과이다. 1,2 번은 누적결과가 아니며 단순히 1번과 2번을 비교 할 목적으로 사용한 것이다.

 

이제 1번 방법부터 하나씩 자세히 살펴보자.


1.가치가중매수

가치(value)에 따라 매수금액을 조절한다. 예를 들면 상대적으로 PER이 낮은 종목에 돈을 더 주고, PER이 높은 종목에 돈을 덜 준다. 내재가치에 따라 매수금액에 차이를 두는 것이다. 이것은 알려진 방법이다. 하지만 이 방법은 비효율이 큼으로 이 글에서는 그대로 사용하지 않는다.


비효율이란 하나의 지표 점수로 내재가치를 평가한 다는 것이다. 하나의 지표로 내재가치를 대표할 수 는 없다. 따라서 여러 가지 지표의 점수를 합하여 종합점수를 만들어서 가치를 평가하는 것이 더 안전하다.

 

예를 들어 PER 점수 하나만으로 차등 매수(가치가중매수)하는 것 보단 PBR + PER + PCR + PSR 의 점수를 종합하여 차등 매수하는 것이 더 안전한 방법이다. 비유하자면 사고로 다리 하나를 잃은 사람은 중심을 잡기가 어려워 잘 넘어지지만 두발로 선 사람은 잘 넘어지지 않는다. 한발 더 나아가 강아지 같은 네발 동물은 넘어지는 경우가 거의 없을 정도로 안전하다.


예를 들어 PER로 차등 매수한 사람은 PCR로 차등 매수한 전략이 잘나갈 때 보고만 있어야 한다. 또한 PSR로 차등 매수한 전략이 수익률이 최고일 때 PER이나 PCR 하나로 차등 매수한 사람의 수익률은 상대적으로 좋지 않다. 이번에는 수익률이 아니라 MDD 관점으로 생각해보자. PER 지표 하나로 가중 매수한 전략의 수익률이 좋지 않아 마이너스가 크다고 가정하자. 이럴 때 PER에 PCR과 PSR을 섞어 놓으면 MDD가 안정되는 효과가 있다. 모든 것은 시간대가 맞아야 한다. 어떨 때는 PCR이 좋고, 어떨때는 PSR이 좋고, 어떨 때는 PBR이 좋고.... 그러니 지표 3~4개를 섞으면 안정적인 수익률과 MDD를 유지할 수 있다. 

 

소스의 152~ 220 LINE이 이 부분이다. 여기서는 PER, PCR, CAP(시총의 역수), DIV(배당수익률) 등의 4가지 방법으로 테스트 하였다. 이렇게 적용하니 월 수익률이 0.41% 좋아졌고, MDD 0.09% 낮아졌다. 하지만 이 정도는 밑에서 소개될 내용에 비교하면 아무것도 아니다.  

 

혹시라도 CAP PER 등의 지표가 아님으로 사용할 수 없다고 주장하는 사람도 있을 것이다. 나는 CAP이야 말로 다른 지표들보다 더 좋은 것이라고 믿는다. 소형주 효과보다 수익성이 더 큰 지표가 어디 있는가? 형식에 얽매이다 보면 많은 것을 잃는다. 다시 말해 PER, PBR등은 CAP보다 수익성이 못한 지표다.

           

2.가치가중선정

종목을 선택할 때 여러 가지 지표로 Ranking(순위)를 만들어서 순위의 합이 가장 낮은 종목을 선택하게 된다. '주식시장을 이기는 작은 책' 에서 소개된 이후로 많이 쓰는 방법이다. 하지만 이 방법 역시 비효율이 있음으로 그대로 사용해선 안 된다


대선의 예를 들어보자. 대통령 후보가 4명일 때 득표율이 1:1:1:1인 경우를 보았는가? 각 후보의 득표율이 어떻게 25%로 동일 할 수 있겠는가? 자연상태에서는 웬만해서는 이런 일이 일어나지 않는다. 포트폴리오를 구성할 때도 마찬가지다.


예를 들어 PBR, PER, PCR, PSR의 순위를 모두 합하고, 네 가지 순위의 합이 가장 작은 10종목을 선택한다고 치자. 바로 이것이 비효율이다. 여기서 PBR, PER, PCR, PSR을 모두 1:1:1:1로 두었는가? 자연상태에서는 PBR, PER, PCR, PSR의 중요도가 모두 다르다예를 들어 1.2 : 2.5: 0.6 : 0.8 일 수 있다. 1:1:1:1에서 1이라는 숫자는 자연상태에서는 거의 발생하지 않으며 인간이 만들어낸 허상에 불과하다.

 

각 지표 별로 자연상태에서의 비율을 찾아야 한다. 이런 것이야 말로 최적화이지 않은가? 241~245라인의 비율들( momRatio, gpaRatio, epRatio, bpRatio, rcapRatio)를 사용하는 이유는 자연상태의 값들을 찾고 그것을 사용하기 위함이다. 2번 가치가중선정뿐 아니라 1번의 가치가중매수도 마찬가지다. 소스의 208~211 라인에서 pcrRatio, divRatio, perRatio, capRatio를 사용한 이유이기도 하다. 자연상태에서의 최적 비율을 찾는 과정은 시간이 아주 오래 걸리는 노동 집약적 작업이다.   


마지막으로 한가지만 더 이야기하고 최적화 전략 3번으로 넘어가자. 시총기준 하위 10~20%로 필터링하여 소형주 효과를 보겠다는 것은 위험한 생각이다. 왜냐하면 기본적인 전략(PBR과 PER 필터링 + 스마트 베타)에 절대모멘텀이라도 추가한다면 종목수 40을 지키지 못하고 들쑥날쑥 하기 때문이다. 심지어 2008년의 금융위기 상황에서는 종목수가 거의 나오지 않을 수도 있다. 또한 매수할 종목수가 몇 개밖에 되지 않는다면 슬리피지가 매우 커진다. 왜냐하면 40종목을 매매하다가 갑자기 10 종목이 되면 슬리피지가 4배가 되기 때문이다.


이럴  사용할  있는 것이 소스 245 LINE rcapRatio이다 값을 크게 주면 소형주를 매수할 가능성이 커진다반대로  값을 작게 주면 중형주나 심지어 대형주도 매수하게 된다 소형주뿐만 아니라 중형주대형주도 매매 대상이 됨으로 종목 수를 일정하게 유지할  있다.


시총기준으로 필터링 하는 대신에 소형주효과 비율(rcapRatio)을 사용한다면 장단점이 있다. 장점은 매매 종목수를 일정하게 할수 있다는 것이고, 단점은 중형주 혹은 대형주가 매수될 수 있다는 것이다. 아래 소스의 241~245 LINE을 보자. 대형주가 소형주보다 모멘텀, GP/A, PER, PBR 순위(Ranking)를 압도한다면 소형주를 매수하지 않을 수도 있도록 코딩되어 있다. 그런데 이렇게 Value, 모멘텀, Quality 지표가 소형주보다 상대적으로 좋은 대형주를 매수 할 경우 이것이 항상 단점이 될까?  아닐 가능성이 높다고 생각한다. 그래서 필자는 소형주 효과를 보면서도 매매 종목수를 항상 일정하게 유지하는 전략을 사용한 것이다.     

 

3.가치가중선정 + 가치가중매수

수정된 가치가중선정과 수정된 가치가중매수를 결합해서 사용한다. 수익률에서 두 배의 효과를 얻을 수 있다. 가치가중선정 + 가치가중매수를 동시에 사용하면 수익률 상승효과가 희석되지 않는다는 뜻이다. 수익률은 동시에 적용되고 MDD는 둘 중에 낮은 것을 따라가니 일석이조이다. 이렇게 두 방법을 동시에 적용하니 튜닝 전 전략에 비하여 월 수익률은 0.9% 좋아졌고, MDD 0.67% 좋아졌다.

 

4.현금비중조절(손절)

개별종목 별로 손절을 하면 큰 시장의 흐름을 읽지 못한다. 따라서 전체 손절을 하거나 부분 현금비중을 조절하려면 시장의 큰 흐름을 타야 한다. 그렇다면 어떻게 시장의 큰 흐름을 알 수 있을까?

 

필자가 시장의 흐름을 읽는데 사용하는 것은 모멘텀이다. 흔히 모멘텀은 매수할 종목을 고르는데 사용하고 있다. 모멘텀이 살아있는 종목의 수익률이 더 높다는 것이다. 하지만 모멘텀은 용도가 하나 더 있다. 모멘텀은 손절 타이밍을 잡을 때 쓰는 것이다.


1년 모멘텀이 PLUS인 종목수를 전체종목수로 나누면 모멘텀이 PLUS인 비율이 나온다. 이것이 137 라인의 momentumPlusRatio이다. 이 비율을 이용하여 손절 타이밍을 잡는데 쓴다. 저번 달에 비해 이번 달에 모멘텀이 PLUS인 비율이 25% 하락한다면 시장에 대단한 악재가 터진 것이라고 보아야 한다.


또한 1년 모멘텀이 PLUS인 비율이 30% 미만이라면 하락장(drawDown_flag 값이 -1)으로 정의하였다만약 1년 모멘텀이 PLUS인 비율이 20% 미만이라면 80% 이상의 종목이 하락 중이라는 뜻이다. 이런 시기는 폭락장(drawDown_flag 값이 -2)이 왔다는 뜻이다. 소스의 140~144 라인이 여기에 해당한다.


이번에 소개할 전략에서는 현금비중조절이 두 가지로 나뉜다. 폭락장에서는 모멘텀이 -4% 이상 하락하면 전체손절(현금비중 100%)을 하고, 하락장에서는 모멘텀이 -4% 이상 하락하면 전월에 비해 주식비중을 절반으로 줄인다. 폭락장은 쉬운데 하락장은 로직이 어려운가? 하락장 현금비중조절의 예를 들어보겠다. 하락장에서 모멘텀이 처음으로 -4% 이하로 떨어졌다면 주식비중은 50%이다. 다음달에도 하락장이면서 모멘텀이 -4% 이하로 나온다면 주식비중은 25%이고, 그 다음달에 모멘텀이 또 -4% 이상 하락한다면 주식비중은  12.5% 이다.


왜 현금비중조절을 두가지로 구분했나?
항상 하락장 --> 폭락장으로 넘어가지 않기 때문이다. 하락장에서 정상장으로 돌아갈 가능성도 있다. 따라서 하락장(1년 모멘텀이 Plus인 종목이 30% 미만인 상황)에서 1~2개월 모멘텀도 -4% 이하가 되면 현금비중을 점점 늘려나간다. 상황이 더 악화되어 폭락장(1년 모멘텀이 Plus인 종목이 20% 미만인 상황)이 와서 2~3개월 모멘텀이 -4% 이하라면  전체손절을 한다. 반대로 하락장에서 정상장으로 들어가면 주식비중을 100% 로 늘린다.


이번 전략은 현금비중조절(손절)이 거의 발생하지 않는다. 왜냐하면 하락장과 폭락장이라고 해도 2개월 혹은 3개월 모멘텀이 -4%이상 하락해야 현금비중조절(손절)을 하고, 정상장에서는 아무리 하락해도 현금비중조절(손절)을 아예 하지 않기 때문이다. 하지만 생각 보다 위험하지는 않다. 왜냐하면 월 매수종목수가 40정도되면 개별 기업에 의한 비체계적 위험이 별로 없기 때문이다. 또한 PBR X PER이 8.43 이하인 종목만 매수됨으로 재무적으로 악성 종목을 고르는 것은 원천적으로 불가능 하다. 만약 그렇다면 오히려 정상장에서 매수와 손절을 자주 반복하는 것이 더 위험하지 않을까?

 

모멘텀을 이용한 손절은 MDD를 줄이는데 탁월하다. 3번 방법(가치가중선정 및 매수)에 현금비중조절(손절)을 전략을 더하니 MDD가 매우 좋아졌다. 월평균 수익률은 처음으로 5%를 돌파했고, MDD 54.38%에서 19.63%로 획기적으로 낮아졌다. 하락장과 폭락장에서 현금비중을 조절하였더니 드디어 사용해 볼만한 전략이 만들어 졌다. 하지만 우리는 여기서 멈출 순 없다.

      

5.BolingerBand 필터

다양한 퀀트 전략을 보았지만 기초적인 필터전략(예를 들면 PBR 1보다 작고, PER 7보다 작은 종목 선택)이나 SMART BETA의 방법(Value, Quality, Momentum, LowVol, 배당수익률)등의 지표를 이용하는 것이 전부였다. 기본적(재무적) 지표나 모멘텀만 가지고 모든 것을 해결하려는 생각은 위험하다. 이 글에서는 대표적인 기술적 지표인 볼린저 밴드를 이용한 필터전략을 다룬다.   

 

볼린저밴드는 활용도가 아주 많다. 예를 들면 LowVol 전략에 활용될 수 있다. 밴드의 폭이 8% 미만이라면 에너지가 응집되고 있다는 뜻이다. 따라서 시간이 어느 정도 지나고 응집된 에너지가 폭발하면 수익률이 좋게 나올 가능성이 높아진다. 하지만 아래 전략에서 사용된 것은 LowVol 전략이 아니라 추세추종전략이다.

 

볼린저 밴드를 이용한 추세추종 방법은 메트릭 스튜디오라는 책을 참조하라. 그 전략을 요약하자면 밴드의 폭이 넓을 때는 주가가 밴드상단 바로 밑에 붙어서 따라가면 수익률이 좋다는 것이다. 반대로 밴드의 폭이 넓을 때 주가가 밴드상단을 돌파하면 수익률이 매우 좋지 않다. 여기서는 수익률을 좋게 하는 방법은 쓰지 않았다. 반대로 밴드폭이 넓을 때 밴드상단을 돌파한 종목을 제거하였다. 왜냐하면 이런 패턴의 종목은 짧은 시간내에 하락추세로 빠지기 때문이다. 소스의 104 LINE이 그것이다

 

위의 전략은 미래에 하락추세로 바뀔 종목들을 제거한 것이다. 볼린저 밴드를 이용한 또 하나의 필터링 방법은 이미 하락추세에 들어선 종목을 제거하는 것이다. 즉 밴드의 폭이 넓을 때 주가가 밴드 하단의 바로 위에 있는 종목(하락추세 시작인 종목)을 제거하였다. 소스의 106 LINE이 그것이다이렇게 두 가지 필터링을 함으로써 수익률이 월 0.04% 좋아지고 MDD 1.09% 좋아졌다. 하지만 아직 나는 배가 고프다. 한발 더 나아가 보자.  

 

6.가치가중매수 + Power

가장 쉽게 수익률을 올릴 수 있는 방법이다. 하지만 이 방법을 과도하게 사용하면 아주 위험하다.왜냐하면 POWER를 과도하게 올리는 순간 안전을 위해서 계란을 한 바구니에 담지 말라’ 는 포트폴리오 이론에서 벗어나기 때문이다. 예를 들어 포트폴리오의 전체종목수가 20이라고 가정하면, POWER 2~3 이상으로 사용한다면 2~3 종목에 50% 이상의 금액이 몰리게 된다. 운이 좋게도 자금이 집중된 2~3종목이 상승해 준다면 좋겠지만, 예상과 다르게 2~3종목이 많이 하락해버린다면 MDD가 커지게 된다.   

 

그럼 어떻게 하란 말인가? POWER 1을 초과해서는 사용하지 말라는 것인가? 그렇지는 않다. 1을 초과해서 사용 할 수 있는 방법이 있다. 1번의 가치가중매수에서 한발로 서는 것보다 4발로 서는 것이 더 안정적이라고 설명 한바 있다. 4발(4가지 지표)로 서면 안정적임으로 POWER를 올리더라도 MDD가 늘어나는 폭이 적어진다. 반대로 PER과 같이 한가지 지표로만 가치가중매수를 한 상태에서 POWER를 늘린다면 MDD가 급격히 커질 가능성이 높아진다.

 

가치가중 매수 시 3~4가지 지표를 사용하였다면, 이제 POWER를 조금씩 늘려서 반복적으로 테스트 한다. 1로 시작하여 0.1씩 늘리면서 아래의 세 가지 케이스를 찾아야 한다. 아래의 경우가 아니라면 Power를 1보다 초과해서 사용하는 것은 위험하다.

1)    POWER0.1씩 늘릴 때 MDD는 거의 그대로 이면서 수익률만 올라가는 경우

2)    POWER0.1씩 늘릴 때 수익률은 거의 그대로 이면서 MDD만 내려가는 경우

3)    POWER0.1씩 늘릴 때 수익률은 올라가고 MDD는 내려가는 경우(드문 경우임). 이런 경우를 찾으면 빙고!를 외쳐야 한다^^


341 LINEpowerNumber도 이런 방법으로 찾은 것이다. 1번 가치가중매수, 2번 가치가중선정에서 사용된 숫자(~Ratio)들도 이런 식으로 찾았다. 다시 한번 말하지만 자연상태의 통계에서는 정수 1, 2, 3, 4… 로 딱 떨어지는 경우는 드물다. 소스의 powerNumber 1.49 처럼 소수점이 포함된 자연상태의 숫자를 찾아야 한다. 이렇게 하니 월평균 수익률은 0.3% 정도 좋아졌고, MDD 0.2% 좋아졌다.

 

결론

1) 여러 가지 지표를 사용하여 가치가중매수 방법을 사용하라. 하나의 지표를 사용하는 것보다 안정성이 높아진다. 또한 각 지표 별로 서로 다른 중요도(~Ratio)를 적용한다면 최적화 할 수 있다.

2) 종목을 선정(가치가중선정)할 때도 각 지표 별로 서로 다른 중요도(~Ratio)를 적용한다면 최적화 할 수 있다. 이렇게 한다면 소형주 효과를 얻기 위해 시총상위 80% ~ 90% 종목을 제거할 필요는 없다. 

3) 1)번과 2)번을 동시에 사용하라. 수익률이 희석되지 않으며 MDD도 좋은 쪽으로 적용된다.

4) 장기모멘텀과 단기모멘텀의 역할을 구분하라.1년 모멘텀을 이용하여 하락장이나 폭락장을 판별하라. 하락장이나 폭락장에서 2개월 혹은 3개월 모멘텀이 일정기준 이상 하락하면 현금비중을 조절하라. 반대로 정상장이나 상승장에서 손절은 휩소를 만나 손해 볼 가능성이 높다.

5) 기술적 지표를 사용하라. 간단한 필터만으로 수익률을 올라고 MDD를 낮출 수 있다.

6) 가치가중매수에서 높은 POWER를 사용하면 MDD 또한 높아진다. 그러므로 POWER를 조금씩 늘려가면서 수익률은 높아지고, MDD는 줄어드는 최적 값을 찾아야 한다.   


PS

이 글에서 최적화는 주관적인 관점에서 쓰여졌음을 밝혀둔다. 왜냐하면 최적화는 개인마다 다를 수 있고, ‘어떤 특정한 방법을 써야만 최적화된다라는 규칙은 없기 때문이다그럼에도 불고하고 이 글을 쓴 이유는 '최적화를 어떻게 할 것인가?'를 고민하는 사람들이 많이 있는데, High Risk High Return이라는 말을 철썩 같이 믿고 있기 때문이다.


“수익률 높아지는 최적화를 했기 때문에 MDD는 좀 높아도 되” 하는 사람들은 다시 한번 생각 해보길 바란다. 퀀트 전략을 믿고 오래 투자하려면 수익률보다 MDD가 낮아야 한다. 그러므로 위의 1~6번 기법을 당신이 사용하는 전략에 적용해보라. 최적화라는 것은 각각의 퀀트전략마다 다름으로 좋아지지 않는 경우도 많을 것이다. 하지만 이 글에서 소개된 최적화 기법들 중 하나라도 당신의 퀀트전략에 적용하여 수익률이 높아지거나 MDD가 낮아진다면 필자의 바램이 달성된 것이다.


끝으로 두서 없고, 실력도 없는 사람의 긴 글을 읽어준 분들께 감사 드린다. 

댓글 29
이런글을 두서없는 글이라고 폄하하시다니요^^
글의 내용도 훌륭하지만, 사람냄새가 물씬나네요.
이 정도글을 오픈하는건 나이와 지위를 막론하고 따뜻한 사람일 것이라 생각합니다.
결코 쉽게 얻을수 있는 지혜가 아니기 때문입니다.
다른 분들도 이글을 꼭 참고하시고 자신만의 기준을 세워서 투자하시면 좋겠습니다.

개인 의견을 첨부하자면,
4번이 핵심인데 이를 어떻게 더 일반화 할 것인지 고민해봐야겠습니다.
하락/폭락장일때 미국 달러화로 그쪽 채권을 매수하는 로직이 필요할 것 같습니다.
제가 이 플랫폼을 만들었다면,
미국 주요 ETF자료를 가져와서 시뮬레이션에 활용하도록 만들고 싶네요. 

다시 한번 좋은글 감사합니다.
복리마법 2018.03.17 17:28
안녕하세요 복리마법님
과찬이십니다.
그리고 4번은 정확히 파악하셨네요. MDD 줄이기의 핵심은 현금비중조절이 맞습니다^^
소포클레스 2018.03.17 18:23
소중한 연구내용 공유해주셔서 감사합니다.
글을 읽고있으니 다른 아이디어들도 떠오르네요
Prophit 2018.03.18 17:07
프러핏님 오랜만입니다.
다른 아이디어로 구현하시면 글 올려주세요^^
기대됩니다.
소포클레스 2018.03.18 18:30
소포클래스님. 아래 자료를 참고하시면 더 도움이 될 것 같습니다.
2018년 3월 현재 전세계 지표 데이터 입니다. 지표값에 왜곡이 있을것 같아 PCR <0 종목들은 제외한 통계 입니다.
nation        count     pdr  payout     pbr      psr     per     pcr     pfr  quick_ratio  current_ratio  change_1y     ytd  sales_growth_5y  eps_growth_5y  gross_margin_5ya  operating_margin_5ya  netprofit_margin_5ya  dividend_yield_5ya  
-----------  ------  ------  ------  ------  -------  ------  ------  ------  -----------  -------------  ---------  ------  ---------------  -------------  ----------------  --------------------  --------------------  --------------------
Argentina        26    1.43    6.64    6.61     3.76   19.35   15.49   13.84         1.20           1.56      57.77    4.99            40.74          23.86             24.53                 25.06                 15.20                  3.67
Australia       234    3.17   31.65    2.65  2147.84   12.04   18.02   20.51         1.24           3.01      15.25   -2.80            13.31           3.79             35.26                -73.17                -67.87                  1.92
Austria          27    2.07   18.57    1.53     2.04   14.80   15.65   24.65         0.57         564.26      20.78    0.94            -2.08           5.72             25.30                 17.83                 10.94                  2.06
Belgium          30    1.32   20.69    1.93     2.95   16.13   17.06   23.03         0.96           1.66      -0.68    0.50             6.35           6.75             46.74                 17.58                 11.83                  1.94
Brazil          130    2.58   16.36    2.03     1.88   12.10   15.66   15.34         1.37           2.02      33.46    7.77             5.09           9.03             22.12                 14.03                  6.28                  2.75
Canada          366    3.26   23.21    1.87     9.52   11.51   15.29   21.38         1.41           3.66       7.08   -1.59             9.93           7.63             24.74                 -0.83                 23.65                  1.92
Chile            50    2.14   15.85    1.77   553.15   18.08   18.69   52.36         0.92           3.63      36.59    4.72             2.07          -1.19             19.24                 10.11                 19.93                  2.98
China           600    1.05  101.95    2.76     3.04   22.21   24.20  163.27         1.68           2.22     -12.48   -3.55            11.61           6.71             20.91                  8.81                  7.85                  0.79
Denmark          53    1.68   18.92    2.35     2.32   13.68   20.75   16.15         1.18           1.78      11.95    3.21             3.73          15.01             35.84                 16.93                 10.52                  1.36
EuroZone        178    0.44   34.11    4.09     2.36   16.06   24.16  109.27         0.93           2.35       8.61   -3.88             3.75           3.09             35.45                 14.97                  8.73                  2.41
Finland          48    2.42   23.50    2.62     1.13   15.65   18.87   16.06         0.86           1.40      10.56    1.37             4.37           6.61             37.91                  5.93                  4.12                  2.24
France          194    2.14   25.45    2.21     2.83   15.01   20.48   28.81         1.01           1.71      18.31    0.69             4.50           7.04             34.61                 11.77                 10.58                  2.34
Germany        1437    1.98   24.29    4.27    10.17   16.57   20.43   23.08         1.18           2.37      11.84   -0.82             5.43           7.93             39.37                 11.33                  6.69                  1.56
Greece           46    1.88    6.62    1.23     1.85   11.08   18.14   18.56         1.61           4.47      74.68   18.37             1.51           7.62             15.60                -11.77                -17.73                  1.10
HongKong        570    1.96   25.29    1.87     4.58   11.34   15.76   20.45         1.66           2.92      13.42    4.54             5.46           1.27             24.66                 21.49                 18.99                  1.37
Iceland          11    1.44   13.50    2.19     2.22   17.23   19.60   30.15         0.40           0.89       1.77    1.56             8.00          13.33             38.44                 36.33                 18.97                  0.23
India           341    0.65  161.35    3.09     1.75   12.08   13.33    2.33         1.20           1.96      12.16  -10.14             4.37           5.19             31.16                  9.32                  1.88                  0.59
Indonesia       171    1.83    9.10    1.66     1.94   11.01   14.47   16.28         1.30           2.09      14.07   10.34             6.86           3.62             23.21                 13.81                  8.45                  0.91
Ireland          11    1.28   11.80    2.10     1.81   16.29   27.49   27.99         1.19           1.57       5.01   -3.33             1.66          10.71             12.54                  1.64                  2.29                  9.28
Israel          151    3.96   26.87    1.82     1.95   10.64   15.44   54.36         0.84           2.05       3.52    0.03             4.49          12.02             30.32                 17.79                 28.34                  2.38
Italy            82    2.04   18.76    2.26     1.64   15.60   18.54   17.26         0.86           1.41      33.62    1.36             1.78          12.69             46.47                  5.20                  1.29                  1.28
Japan          1697    1.60   21.18    1.69     1.02   15.74   19.04   31.27         1.78           2.34      24.64   -1.48             3.68          14.28             24.61                  5.95                  4.24                  1.68
Mexico           66    2.30   21.23    1.81     2.34   14.04   18.30   17.55         0.85           2.53       0.99   -1.44            11.32           6.40             30.30                 15.27                 10.77                  1.07
Netherlands      40    2.42   29.30    3.37     2.31   14.14   25.35   22.14         0.77           1.60      15.94    0.11             5.00           5.71             38.48                 13.61                  6.42                  1.55
Norway           67    3.79    4.94    2.04     6.99   10.15   13.71   12.42         0.89           3.39      10.38    3.18             5.15           4.43             27.30                 13.68                 10.04                  2.84
Russia           89    2.15    4.42    2.91     0.95    7.03   10.57   13.29         1.69           2.09       6.47    1.96             7.53           7.39             26.03                 11.04                  6.52                  1.43
Singapore       207    2.16   11.22    1.25     2.16   10.42   13.72   17.80         1.94           2.64      11.31   -0.56             5.53           3.28             25.18                  8.72                  6.82                  1.37
SouthKorea      694    1.36   10.00    1.54     1.26   11.84   16.02   17.16         2.41           3.13       8.35    6.62             3.59           3.80             17.61                  5.33                  3.88                  0.98
Spain            72    2.35   11.74    2.80     3.24   14.69   21.68   20.78         0.90           1.40      21.27   12.88             4.42           5.90             35.86                  6.98                  2.36                  1.04
Sweden          120    2.19   10.31    3.10     3.14   17.29   21.26   21.30         0.71           1.70      -0.12    0.94             9.21           8.55             32.86                -54.64                -53.74                  1.73
복리마법 2018.03.19 23:14
복리마법님  좋은 자료 잘 보겠습니다. 감사합니다. 이런 자료는 어떻게 취합하는지 궁금하네요^^ 
소포클레스 2018.03.20 09:47
수익률 곡선이 분리되는 모습이 아름답네요.
멋있습니다.
퀀트퀸 2018.03.20 16:32
퀀트킴님 과찬이십니다. 도움이 되었으면 합니다^^
소포클레스 2018.03.20 18:35
investing.com의 자료를 다운받아 가공했습니다.
매달 한번씩 프로그램으로 만드는데 잊지않으면 게시판에 올리도록 하겠습니다.
복리마법 2018.03.20 23:07
@복리마법
그렇군요. 좋은정보 감사합니다 
소포클레스 2018.03.21 00:05
소포클레스님 대단하십니다. 배우고자 하는 열망조차도 식네요. ㅎㅎ;;
혹시 나중에 시간되실 때 섹터ETF 모멘텀 가중 최적화도 부탁드려봅니다.
(만지작 거리다 손을 놓아 버렸네요. ㅠ)
칸트 2018.03.27 22:37
@칸트
과찬이십니다.
 섹터ETF 모멘텀 가중 최적화는 제가 능력이 될지 모르겠네요^^
소포클레스 2018.03.28 09:52
안녕하세요 이렇게 좋은 자료 공유해주셔서 너무 감사드립니다. PER 역순 구하는 함수에서 getFundamentalNetProfit 함수는 분기 당기순이익인데 주로 저희가 얘기하는 PER는 연간 당기순이익으로 알고 있는데 일부러 분기 당기 순이익을 사용하신건지 궁금합니다 다른 코드에서 본거처럼 지난 4분기의 이익을 더해서 다시 돌려보면 수익이 약간 감소하고 MDD가 상승하는 경향을 보이긴 한데 의도적으로 당기순이익을 분기 자료만 사용하신건가요? 
황금오리 2018.03.31 18:35
안녕하세요. 황금오리님 
PER등 모든 지표는 분기 지표 입니다. 왜냐하면 리발란싱 주기가 짧기(한달~3달) 때문입니다. 리발란싱 주기를 1년으로 하신다면 PER등도 지난 4분기 합으로 하시는게 좋을듯 합니다.
감사합니다.
소포클레스 2018.03.31 21:29
아 리밸런싱 주기에 맞춰서 분기별 지표로 바꾸신거군요. 답변 감사합니다.
황금오리 2018.04.02 10:39
퀀트든 가치투자든 어떤 요소들을 잘 요리하시는 분들 보면 감탄이 절로 나옵니다. 퀀트 지식도 퀀트 지식이지만 어떻게 프로그래밍으로 구현도 손쉽게  하시는 지요. 
잡다백수 (잡다백수) 2018.04.13 20:38
잡다백수님 반갑습니다. 저의 경우 자바스크립트 초보라 유투브 강의가 도움이 되었습니다. 생활코딩 자바스크립트 라고 검색하시면 강의가 나옵니다. 참고하세요.
소포클레스 2018.04.14 12:46
안녕하세요 이 로직을 파이썬으로 실제 거래 해보려고 하는데 구현하는게 쉽지 않네요.. 혹시 어떤 툴로 해보고 계신지 알 수 있을까요?ㅠㅠ 
황금오리 2018.05.14 10:40
@황금오리
안녕하세요. 자동매매는 각 증권사별 API 매뉴얼을 참고하시어 코딩하시는 게 좋을 것 같습니다.
대표적인 곳은 이베스트 xingAPI 입니다. 
인텔리퀀트가 유료(수수료) 자동매매도 지원했으면 좋겟습니다. 
소포클레스 2018.05.14 16:31
저는 키움으로 해보고 있었는데 볼린저 밴드와 관련된 APi가 좀 부족한거같더라구요 데이터 조회 제한도 있어서 재무제표는 크롤링으로 대체하려고 하구요  xingAPI로 해보면 좀더 수월할까요?
황금오리 2018.05.14 19:34
@황금오리
저는 자동매매를 하고 있진 않습니다. 하지만 xingAPI를 사용하면 간단한 엑셀 매크로로 자동매매가 가능합니다. 
소포클레스 2018.05.16 11:24
정말 멋진 글 너무 잘봤습니다. 소스도 공유해주시고. 또 이렇게 배우네요!!
Chris Yoo 2018.05.30 14:03
@Chris Yoo
안녕하세요. 크리스 유님 감사합니다. 별볼일 없는 글을 칭찬해주시다니...
소포클레스 2018.06.04 23:40
좋은 글 잘 봤습니다. 공유해주셔서 감사합니다.
소녀갑부 2019.02.24 22:41
신입인데... 그저 놀랍습니다.
goldyman 2020.05.10 16:40
이번꺼는 358라인이네요... 너무 많은 로직이 들어가 있어서 시간좀 걸리겠네요~
소중한 자료 잘 보겠습니다~
자산배분만 보다가.. 퀀트로 넘어오고나서 근 한달동안 밤새도록 공부했네요..
공부의 양이 몇십배 이상 늘어났습니다~
데이빗 2022.05.09 23:25
데이빗님 반갑습니다. 최적화는 항상 이율배반인가?의 소스에는 과최적화(비율을 소수점까지 조정)가 들어있습니다. 제가 소스를 작성 해놓고도 부끄러워 지네요. 그러니 최적화 시리즈 0~9를 참고하시는게 더 좋을 듯 합니다. 감사합니다
소포클레스 2022.05.10 16:19
가입하여 님의 글을 보면서 탄성을 몇번을 지르게 되네요. 멋진 글 솜씨와 이론이 정신을 차리게 합니다. 이론도 알아야 하고 코드도 알아야 하고 갈길이 한참 입니다. 하지만 님의 재주를 차용해서 열심히 배우고 싶네요. 거듭 감사합니다. 
희망울 2022.06.28 10:22
희망울님 감사드립니다^^
소포클레스 2022.06.28 20:29
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글