[계량투자]얼마나 투자해야 할까?

in #kr7 years ago (edited)

안녕하십니까. 금융과 데이터분석을 좋아(만)하는 배성기입니다!
앞으로 금융과 데이터분석에 관한 글들을 쓸 예정입니다.
팔로우해주시면 감사합니다


이번에 이야기 할 것은
"얼마나 투자할 것인가?"
에 대한 것 입니다.

글의 이해를 위해 이전글들을 읽어 주시면 감사하겠습니다.
좋은기업은 좋은주식일까?
계량투자란 무엇인가?(1)
계량투자란 무엇인가?(2)


계량이란 수식화하여 나타낼수 있는 것을 의미합니다.

즉, 투자에서 생각해본다면
수익(Y) = a + bX와 같은 식으로 나타낼수 있는 것을 의미합니다.

또한 위와 같은 식을 과거의 자료를 이용해 통계적으로 검증하는 것을 이야기합니다.

계량투자의 일반적인 로직은 아래와 같습니다.

간혹 단순히 factor를 조립한 백테스팅결과만으로 전략의 성과를 이야기하시는데(P/E+P/B+MOM 했더니 CAGR30% Mdd 9% 최고의전략!)
그것은 명백히 잘못된 행위입니다.

이론적 근거와 통계학적 검증을 통해 나온 결과역시 과적합의 오류와 미래의 불확실성을 내포하고 있습니다.
이러한 과정을 거치지 않은 백테스팅결과만을 신뢰하시고 투자를 하시면 후회할 확..

우리는 좋은기업은 좋은주식일까?에서
“작은 기업일수록 높은 수익률을 가질 것이다”라는 가설을 세웠습니다.

이것을 수식화한다면 다음과 같습니다.

*수익 = a + b x (기업의 크기)
단, b < 0

이 수식은 회귀분석을 통해,
통계적인 검증을 할 수 있습니다.

통계적으로 위의 수식이 검증이 되었다고 가정해봅시다.
그렇다면 다음으로 생각할것은

"어떻게 투자할지?"
입니다.

투자를 가장 간단하게 생각해본다면,

1)자산선정: 어디에 투자할 것인지?
2)자산 배분: 얼마나 투자할 것인지?

의 두가지 문제로 나눌 수 있습니다.

오늘은 "얼마나 투자할 것인지?"에 대해서만 다루도록 하겠습니다.

위의 두가지 문제를 다른 말로 표현하면
"포트폴리오를 어떻게 구성하는가?"로 말할 수 있습니다.

포트폴리오란 아래의 그림같이 투자한 상품에 대해 정리해 둔 표로,
어디에? 얼마나? 투자한지를 적어놓은 것입니다.

그렇다면 포트폴리오의 목적은 무엇일까요?

투자하는 이유가 뭐 있겠습니까..
바로,
"돈 많이 버는거!"입니다.

돈을 잘 버는 것을 수식적으로 표현하면,
다음식에서 포트폴리오의 효용을 최대화하는 문제가 됩니다.

위의 수식에서,
포트폴리오의 기대수익 R_p는
(특정종목의 비중 * 특정종목의 기대수익) 의 합으로 결정됩니다.

여기서 특정종목의 기대수익은 우리의 가설에 따라
a + b x (기업의크기)로 결정되어 집니다.

위험거부도 계수 람다(Lambda)는 투자자가 얼마만큼의 위험을 감수하는지에 따라 달라집니다.

포트폴리오 위험 sigma^2_p는 비중행렬 w와 각 자산 수익률의 공분산 행렬 Omega의 식인
sqrt(transpose(W) %x% Omega %x% W)로 결정됩니다.

sqrt: 제곱근, transpose: 전치, %x%: 행렬곱

그렇다면 실제로 얼마나 투자할지를 정해보도록 하겠습니다.

저희가 투자하기로 결정한 2개의 종목이 있습니다.
각 종목의 시가총액과 공분산은 다음과 같습니다.

회귀분석을 통해 다음과 같은 식을 찾았다고 가정합니다.
기대수익 = 0.3 – 0.02 * 시가총액(단위: 억)

이 때, Lambda를 고정하면
포트폴리오 효용 U_p는 비중행렬 W에 대한 식으로 나타낼 수 있습니다.

성기전자의 비중에 따른 포트폴리오 효용의 변화를 보면 아래와 같습니다.

포트폴리오의 효용은 W에 의해 변하며,
포트폴리오의 효용을 최대화하는 W가 존재하는 것을 확인 할 수 있습니다.

그렇다면 어떻게 효용을 최대화하는 W를 찾을 수 있을까요?
이러한 문제를 해결하는 것을 경사상승법(Gradient ascent Method)이라 합니다.

경사상승법이란 값을 기울어진 방향으로 조금씩(Learning rate) 이동하면서 극점을 찾는 방법을 이야기 합니다.

물론 그냥 수학적으로 편미분해서 풀으셔도 됩니다.


궁금할지도 모르는 분들을 위한 코드(R)

cap <- matrix(c(2.15, 4.3))
cov <- matrix(c(0.05,0.03, 0.03, 0.1),nrow = 2)
lambda <- 1

Portfolio_utility <- vector()
for(W in seq(0,1,0.01)){
  weight <- matrix(c(W, 1-W))
  
  Rp <- t(0.3 - 0.02 * cap) %*% weight
  Risk <- sqrt( t(weight) %*% cov %*% weight)
  
  Portfolio_utility <- append(Portfolio_utility,Rp - lambda*Risk)
}
plot(Portfolio_utility ~ seq(0,1,0.01),
     main = "포트폴리오 효용~성기전자비중",
     xlab="W_Sungki_Electronics")

조금만 응용하시면,
Risk_parity같은걸 할 수 있습니다.
관련해서는 옛날에 블로그에 써둔 글을 공유합니다.
Risk Parity 읽어보기


부족한 글 읽어주셔서 감사합니다!

글이 마음에 드셨다면 저를 해주세요^^

Sort:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.

Congratulations @sungkibae! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of comments

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

좋은글 같습니다만 제가 지식이 부족하여 이해를 못하겠습니다 ^^

관심가져주셔서 감사합니다!

읽는분들께 조금 더 친절한 글 쓸 수 있도록 노력하겠습니다ㅠㅠ
글재주가 영 없어서..쓰다보면 늘겠죠? 하하

문득 최적화된 값을 찾으려고 숫자를 조금씩 대입해보던 과거의 저가 그려졌습니다 ㅠㅠ 재밌게 읽었습니다:) @홍보해

SNEK에 첫글을 투고했던게 1년이 다되가네요..ㅋㅋ
지금도 잘 모르지만 그때쯤 썻던 글들을 보면 눈물이납니다ㅠㅠ.
재밌게 읽어주셔서 감사합니다!
홍보해라는게 참 좋은거더라고요ㅋㅋ 홍보해주셔서 감사합니다!

스팀 채굴도 좋지만 가끔은 SNEK에서 원화 채굴도 하시지요 ㅎㅎ 연휴 마무리 잘하세요:)

일단 kr커뮤니티에 저 말고 다른 계량투자자가 나타난게 너무 좋네요 ㅠㅠ 계량투자를 저보다 훨씬 더 깊게 파셔서 배울것이 많습니다. 무의미한 백테스트 반복을 통한 최적값을 찾는 행위는 지양해야겠죠. 동의합니다.

역시 팔로우 해두길 잘했습니다. 친하게 지내요:)

관심가져주셔서감사합니다.
계량투자를 깊게 공부하진 않았습니다ㅠ..
저도 많이 배우겠습니다.

감사합니다!

@sungkibae님 안녕하세요. 개대리 입니다. @joeuhw님이 이 글을 너무 좋아하셔서, 저에게 홍보를 부탁 하셨습니다. 이 글은 @krguidedog에 의하여 리스팀 되었으며, 가이드독 서포터들로부터 보팅을 받으셨습니다. 축하드립니다!

보팅했는데 오르는지도 모르게 쪼끔 오르네요ㅠ 많이 배우고 팔로우 누르고 갑니다! :)

감사합니다 :)

Congratulations @sungkibae! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @sungkibae! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!