주가 예측은 동전 던지기와 같다   

2010. 1. 18. 21:46

누군가가 여러분에게 다가와서 이렇게 은밀하게 제안한다고 생각해 보세요.

동전을 던져 앞면이 나오면 1만원을 따고, 뒷면이 나오면 1만원을 잃는 게임을 해보지 않겠소?

여러분이 1만원을 가지고 이 사람이 제안한 게임에 참여한다면, 한 차례의 게임에서 여러분이 기대할 수 있는 돈은 0 입니다.  왜냐하면  기대값이 (1만원) * (1/2) + (-1만원) * (1/2) = 0 ... 이기 때문이죠.

만약 동전 던지기 게임을 1000 번 시행한다면 여러분 수중에 얼마의 돈이 남게 될까요? 게임을 한번 할 때의 기대값이 0 이니까, 1000 번 시행한 후의 기대값도 0 일까요? 매번 동전을 던지는 게임은 서로 '독립적이고 배타적'이므로('베르누이 시행'이라고 부름), 1000 번 던지고 난 뒤의 기대값 역시 0 이라고 생각하기 쉽습니다.

또한 동전을 1000 번쯤 던지면 앞면이 나온 횟수와 뒷면이 나온 횟수가 대략 500 : 500 이 될 것이기 때문에 1000회가 다 끝나면 주머니가 텅 빌 거라 생각할지도 모르겠네요. 그러나 실제로 실험을 해보면, 생각과는 다른 결과를 얻습니다.

실험을 위해 Excel의 Randbetween() 함수를 통해 동전 던지기 게임을 시뮬레이션해 봤습니다. 그랬더니, 많은 돈을 따는 경우, 잃다가 따는 경우, 계속해서 잃는 바람에 파산에 이르는 경우 등 다양한 패턴이 나왔습니다. 아래의 Excel 파일을 다운로드 받으면, 아래의 그림들과 똑같지는 않지만 비슷한 모습의 그래프를 얻을 수 있습니다.(빈 셀에 가서 Del 키를 누르면, 그래프가 리프레쉬됩니다.)



첫번째 그림은 대략 300 ~ 400회까지 50~60만원까지 재산이 불어나다가 그 이후에는 계속 잃기 시작해서 700회가 넘어가면 빈털털이가 되는 패턴입니다. 여러분이 700회까지 온 상황이라면 '60만원일 때 게임을 그만 둘 걸'이라고 후회하겠지요.


두번째 그림은 아주 운이 좋은 사람의 그래프입니다. 등락이 있긴 하지만, 전체적으로 재산이 증가해서 60만원 선까지 이르는 경우입니다. 모든 사람이 꿈꾸는 그래프죠.


세번째 그림은 대단히 운이 없는 사람의 그래프입니다. 초기의 몇 번을 제외하고는 마이너스입니다. 아마 이 사람은 게임을 계속 진행하기 위해 다른 사람에게서 빚을 끌어다 썼을 겁니다. 이런 계좌를 주식에서는 깡통계좌라 부르나요?


이 그림은 800회까지는 0 주변을 왔다 갔다하는 수익을 보이다가 900회가 되면 40만원 선까지 재산이 증가하는 '대기만성'형 그래프입니다. 1000 회까지 기다린 보람이 있군요.


마지막 그림은 오르막과 내리막을 걷다가 1000 회에 이르면 30만원 선까지 재산이 느는 모양이군요. -20만원까지 떨어졌을 때 게임을 중단하지 않고 이어 간 보람이 있습니다.


1000 번의 게임을 한 후에 주머니에 남는 돈이 '0' 이 되는 경우가 흔하지 않는 이유는 동전의 앞면과 뒷면이 골고루 나오지 않고 앞면이나 뒷면이 연속해서 나오는 현상 때문입니다. 계속해서 돈을 따거나, 반대로 계속 돈을 잃는 상황이 생각보다 많이 나온다는 것이죠. 이와 같은 클러스터링 효과는 지난 번 글('미네르바의 예측력을 믿어야 할까')에서 밝힌 바 있습니다.

그런데 어디서 이런 모양의 그래프들을 본 적이 없나요? 매일매일 시시각각 변하는 주가의 등락 그래프와 닮았습니다. 위의 그래프들을 각각 개별 회사의 주가 변동이라고 이야기해도 믿을 정도로 비슷합니다. 그렇다면 주가의 움직임은 동전 던지기처럼 무작위(random)하다고 말할 수 있을까요?

이 질문에 Yes라고 대답하는 사람들이 바로 '랜덤 워크(Random Walk) 가설'을 주장하는 자들입니다. 그들은 주가의 등락은 무작위하게 변하고 특별한 원인을 잡아내기가 불가능하다고 말합니다. 랜텀 워크 가설은 '효율적 시장 가설'의 일종인데, 이것과 이론적인 대척점에 있는 '펀더멘탈 투자 이론'에서는 시장 정보나 기업의 실적이 주가를 결정한다고 가정합니다. 또 다른 대척점에 놓인 '기술적 분석 이론'은 주가 등락에 보이지 않는 패턴을 잡아내려고 하지요. 

하지만, 랜덤 워크 주장자들은 주가는 동전 던지기와 같은 무작위성에 기반을 둔다고 주장합니다. 어제의 주가와 오늘의 주가는 전혀 관련이 없는 '독립적이고 배타적'이라고 가정합니다. 주가가 도박과 다를 바 없다는 것이죠.

무엇이 실제의 주가 변동을 옳게 설명하는 가설인지 의견이 분분하지만(아마 인류가 멸망하는 날까지 논쟁은 계속되겠지만), 100%는 아니더라도 주가의 랜덤 워크 경향이 어느 정도 존재한다는 말은 틀리지 않아 보입니다. 역사적으로 주식 시장의 폭락을 가져온 대표적 사건들(1987년 블랙 먼데이, 2000년의 닷컴 붕괴, 2007년의 서브 프라임 사태 등)을 떠올려 보십시오. 

지나고 나면 특별한 원인과 패턴이 존재하는 것 같지만(그래서 사후에 경제분석가들이 열심히 분석기사를 쏟아내지만), 사전에 그 사건들을 예측하지 못했다는 것은 랜덤 워크 효과를 보여주는 단적인 증거가 아닐까요?

저는 주식 투자를 한번도 해본 적이 없습니다. 그래서 이런 글을 쓸 자격이 없을지는 모르지만, 시장의 불확실성을 어떻게든 이겨내고 예측하려는 노력은 부질 없다는 생각을 평소에 가지고 있습니다. 그래서 차라리 동전을 던져서 주식 투자를 하는 것이 낫다고 믿습니다. 물론 저와 생각이 다른 분들도 있겠죠.

주식의 움직임에 대해 '이렇다'라고 분명히 말하는 자가 있다면 그는 사람이 아니라 신입니다. 우리는 결코 신이 아니니 불확실성을 이겨내려는 오만을 벗고 겸손해져야 합니다. 그것이 동전 던지기 게임이 전하는 단 하나의 메시지가 아닐까요?

(*참고도서 : '지하철과 코코넛', '머니 해킹', '춤추는 술고래의 수학 이야기')

*************************************

이 포스트는 이제 아이폰 App으로도 볼 수 있습니다. 아래의 링크를 눌러서 여러분의 아이폰에 inFuture App을 설치해 보세요. 




  
,

엑셀로 프랙탈 그리기   

2009. 12. 19. 10:45

프랙탈(Fractal)이란, 자기유사성(self-similarity)를 가지면서 끊임없이 반복되는 패턴을 의미합니다. 혼돈 이론(카오스 이론)과 밀접하게 관련이 있지요.

프랙탈 이미지를 보면 그걸 어떻게 그릴까, 어렵게 느껴지는데 여러분이 표 계산을 사용할 때 쓰는 엑셀(excel)로도 프랙탈을 그릴 수 있습니다. 비주얼 베이직(Visual Basic)을 좀 알아야 한다는 어려움이 있긴 하지만, 몰라도 쉽게 따라할 수 있습니다.

이렇게 해 보세요.

1. 엑셀을 엽니다.
2. sheet 전체를 선택한 다음, 행 높이를 4.5, 열 너비를 0.4 정도로 작게 설정합니다.
3. '도구 > 매크로 > Visual Basic Editor'를 클릭합니다. 새로운 창이 하나 뜹니다.
4. 새롭게 뜬 창에서, '보기 > 코드' 를 클릭하면 빈 편집 공간이 나타납니다.
5. 거기에 다음의 코드를 넣습니다.

Sub bin_sip()
Cells.Interior.ColorIndex = xlNone
Const xcell = 150
Const ycell = 150
Dim x, y
  For x = 1 To xcell
    For y = 1 To ycell
       If (x + y And Abs(x - y)) = 0 Then
           ActiveSheet.Cells(x, y).Interior.ColorIndex = 1
       End If
    Next
   Next
End Sub

6. '실행 > 매크로 실행' 을 클릭합니다.
7. excel sheet로 가보면 아래와 같은 그림이 나타납니다. (이 그림은 '시어핀스키' 삼각형과 유사합니다.)


8. 다른 프랙탈 이미지를 얻으려면, 위의 코드에서 빨갛게 표시된 부분을 바꿔 주면 됩니다.
    그 부분을 다음의 것들로 바꾸면 다양한 프랙탈을 볼 수 있습니다.

(x + y And Abs(Int(Sqr(x)) - Sqr(y))) = 0


(x * x * x + y * y * y And 8) = 8


그 밖에 다음과 같은 식을 넣어보세요. 이 식 이외에 여러분이 마음대로 바꿔 봐도 됩니다. 단, x, y, And, = 의 패턴을 유지해야 합니다.

(x * y And y / x) = 0
(x * y + y * x And 12) = 12
(x * x * y + x * y * y And 20) = 20
(x * x / y + y * y / x And 32) = 32
(x * x + y * y And 100) = 100

프랙탈 이미지는 보면 볼수록 신비롭고 경이롭습니다. 주말에 엑셀로 프랙탈 이미지를 만들어 보면 재미있을 겁니다. ^^



  
,

혼돈과 나비효과가 지배하는 세상   

2009. 12. 18. 13:26

어떤 동물(토끼나 쥐)들이 한정된 공간에서 서식할 때, 다음 세대의 군집 크기를 어떻게 예측할 수 있을까요? 우리는 보통 다음과 같은 방정식을 써서 다음 세대의 군집 크기를 예상합니다. 여기서 출생률은 1마리의 토끼가 낳은 새끼의 수라고 간주하면 됩니다. 

다음세대의 군집 크기 = 출생률 * 지금세대의 군집 크기

하지만, 위의 '선형(線形) 방정식'은 한정된 공간이 가지는 제약조건인 '자원의 한계'를 반영하지 못합니다. 먹이와 거주 공간의 부족 때문에 다음세대의 군집이 일정하게 늘어나지 않습니다. 군집의 크기가 일정 수준을 넘어서면 먹이와 거주지 경쟁으로 서로 공격하거나 스트레스를 받아서 군집의 크기가 줄어들거나 정체되기 때문입니다.

한정된 공간과 자원을 두고 경쟁하는 동물(혹은 사람)의 군집 크기 변화를 보다 잘 반영하려면, 아래와 같은 '비선형(非線形) 방정식'을 고려해야 합니다.

다음세대 군집 크기 = 출생률 * 지금세대 군집 크기 * (1 - 지금세대 군집 크기)

이 방정식은 현재 군집이 점유한 부분과, 군집이 채우지 않은 부분이 서로 상호작용하여 다음세대의 군집 크기를 결정한다는 의미를 담았습니다. '(1 - 지금세대 군집 크기)'라는 항이 군집이 채우지 않은 부분을 가리킵니다. 예를 들어, 최대 정원이 100명인 버스가 있을 때, 현재 60명이 탑승 중이라면 다음 정류장에서 태울 수 있는 사람의 수는 현 탑승자인 60명과 40명분의 빈 자리의 관계로 결정된다는 뜻입니다.

'채워진 부분'과 '채워지지 않은 부분' 사이의 상호작용은 때론 크게, 때론 작게 나타납니다. 그 결과가 바로 출생률이죠. 세대를 거치면서 출생률은 고정되지 않고 매번 '진동'합니다.

다음세대의 군집 크기가 비선형 방정식을 따르고, 출생률이 진동한다고 가정하면, 흥미로운 그래프를 얻을 수 있습니다. 아래의 그래프가 바로 그것입니다. (대학 다닐 때 이 그래프를 PC로 그리느라 C 언어로 무진 고생했는데, 이제 Excel로 쉽게 그릴 수 있으니 편리한 세상입니다.)


출생률이 2.3에서 약 3.0이 될 때까지는 군집의 크기가 66% 정도로 수렴됩니다. 그러나 3.0을 넘어서면, 군집의 크기는 두 개의 가능성을 가집니다. 예를 들어, 출생률이 3.3일 때, 군집의 크기는 약 45%이거나 80%가 됩니다.

헌데, 출생률이 3.45를 넘어서면 군집의 크기는 4개의 가능성을 갖고, 3.55를 넘으면 8개의 가능성이 드러납니다. 그 이상을 넘어가면, 군집의 크기는 그래프에서 보다시피 무수히 많은 가능성을 가지게 되죠. 그야말로 '혼돈(카오스)'에 빠지는 모습입니다. 출생률이 3.55 이상인 구간에서는 출생률이 아주 미묘하게 변화한다 해도 그 결과가 크게 달라지기 때문에 다음세대의 군집 크기를 예측하기가 불가능합니다.

이 그래프에서 한 가지 재미있는 것은 '자기유사성(Self-similarity)'을 갖는다는 사실입니다. 그래프의 검은 부분(출생률이 3.55 이상인 부분)을 확대하면 수많은 '갈래'들이 나타나는데, 그 모양이 3.0에서 3.55사이의 구간에서 보는 갈래 모양과 같다는 것이죠. 모양을 끊임없이 반복하는 겁니다. 이런 그림을 프랙탈(Fractal)이라고 하죠.

군집 크기에서 나타나는 혼돈(카오스) 현상은 '나비효과'의 개념과 이어집니다. 아마존에서 나비가 펄럭거리면 그것이 멕시코만에 허리케인을 일으킨다는 개념이죠. 기상학자인 로렌쯔가 처음 제시한 현상이죠. 나비효과는 Excel을 써서 여러분도 쉽게 재현할 수 있습니다. 

원래 0.808080 의 질량을 갖는 물체가 있는데, 측정 오차에 의해서 0.808081 로 측정했다고 가정해 보겠습니다. 고작 0.000001 의 오차라서 이 정도는 무시할 수 있겠다 싶지만, 그 측정치가 다시 '시스템' 속에 피드백(되먹임)되면 오차는 폭증합니다.

아래의 그래프는 0.808080 을 두배씩 증가시킨 값에서, 0.808081을 두배씩 증가시킨 값을 뺀 '오차'를 나타냅니다. 30회만 진행했는데도, 오차가 기하급수적으로 증가하는 모습을 나타냅니다. 아마존의 나비가 허리케인을 일으킬 만합니다.


위에서 언급한 '군집크기에서 나타나는 혼돈 현상'과 '오차의 폭증'은 지난 번에 포스팅한 '개인의 미시적 동기가 큰 변화를 일으킨다'와 연결됩니다. 위의 그래프는 미묘한 변화가 걷잡을 수 없는 커다란 결과로 나타남을 수학적인 이미지로 그려낸 것이기 때문입니다.

우리는 지구라는 '닫힌 계' 속에 비선형 방정식의 지배를 받으며 삽니다. 우주여행이 일상화되지 않은 한, 우리가 누릴 수 있는 자원은 한계가 있습니다. 통신수단의 발달로 상호작용이 활발해졌습니다. 그로 인해 작은 오차가 우리의 네트워크 속에 피드백되면 큰 파국(catastrophe)을 발생시킬 가능성이 존재합니다. 우리에게 놓인 불확실성이란 바로 이런 겁니다. 그리고 그 파국의 조짐은 등 뒤에서 우리를 늘 응시하고 있습니다.

위의 그래프는 아래의 Excel 파일에 있습니다. 여러 가지 조건으로 시뮬레이션 해보면 재미있을 겁니다. ^^



  
,