1. 기술/통계, 시계열

주가 데이터 분석을 위한 로그 변환의 의미, ln(1+return)과 return의 실질적 근사(+파이썬 코드)

swsong 2023. 4. 6. 22:47

 주가 데이터를 그대로 분석하기에는 여러 가지 제약이 있다. 단일 주가를 분석할 때에는 그 자체로 정상성이 확보되어 있지 않다는 점, 여러 주가를 비교분석할 때에는 각 종목마다 분포(스케일)가 다르다는 점이 대표적이다.

따라서 일반적으로 금융 시장 매크로를 분석하거나 머신러닝 모델을 구축할 때 price가 아닌 return을 활용하는 경우가 많다. 더 나아가 논문 수식이나 자료를 찾다 보면 단순히 net return(이하 return)을 쓰기보다 로그를 취한 ln(1+return)이 빈번하게 등장한다. 

직관적으로 ln(1+return)은 return과 (거의) 같다. 정확히 말하면 로그 수익률 ln(1+return)은 연속복리 개념을 가정하므로 실제로는 수익률 단위가 분, 초, 밀리세컨드 이하로 내려가야만 극한값으로 수렴해 일치하게 된다. 그러나 일반적인 상황에서는 수익률을 최소 일단위 이상으로 계산하므로 현실에서 같을 수 없다. 따라서 여타 경제학 모형이 그렇듯 현실 적용을 위해 정밀성보다 편의성을 챙긴 수식이라고 이해하는 편이 좋다. 둘의 차이를 따져서 얻는 효용보다 약간의 오차를 감수하고 로그를 사용함으로써 얻는 실익이 더 크기 때문이다.

일반적으로 주가는 한자리 수 단위로 수익률(%)이 움직이고, 더군다나 국내의 경우 +/- 30%까지 상승/하락폭에 제약이 있다. 아래 이미지의 좌측 그래프는 -0.99~+0.99 까지의 x(return)에 대해 1을 더하고 자연로그를 취한 ln(1+x)를 보여주고, 우측 그래프는 두 축에 대해 -0.3~+0.3 구간을 확대한 것이다.

-0.3~+0.3 구간을 보면 알 수 있듯이 일반적인 주가 움직임에서 return과 ln(1+return)의 차이는 극히 적다. 특히 절대값 return이 감소할수록 그 차이는 거의 사라진다.

앞서 log return이 정밀성보다 편의성을 챙긴 수식이라 하였다. 이는 복리계산과 연율화 등을 위해 숱하게 반복 계산해야 하는 (1+return)에 대한 승법 연산이 경우에 따라 복잡하고 번거롭기 때문인데, 간단히 log를 취해줌으로써 가법 연산으로 변환이 가능하다. 즉, 기간별 수익률을 구한다고 가정했을 때, (1+return_1)x(1+return_2)x.....x(1+return_t-1)x(1+return_t) 방식의 승법 모형을 sum(r_1, r_2,... , r_t) 방식의 가법 모형으로 변환할 수 있다는 의미다.(여기서 r은 로그 리턴 값)

실제 x(=return), y(=ln(1+x)) 값과 그 차이를 비교해보면 다음과 같다.

이외에도 로그변환은 우측으로 쏠린 수익률에 대한 확률분포를 0%을 중심으로 재조정해주는 효과가 있다. 즉, 10% 상승 후 10% 하락하는 것과 10% 하락 후 10% 상승하는 것을 동일하게 취급하여 복리에 의한 negative 왜도(skewness) 효과를 상쇄시켜주는 것이다.