일게이들 안녕~! 오늘은 내가 finite difference method (FDM) 에 대해 얘기하려고 한다.
세벽에 딸안치고 내 글 읽는거 보니 용하다. 좀전에 올렸는데, 주목을 못받아서 퇴근길에 한번 더 올려본다.
여러번 내가 얘기하지만, 공학이 국력이며 생명이다. 그리고, 대학교 갈 때 꼭 공학전공해라.
사실 인류 문명에서 산업화는 인간의 잠재력을 기하급수적으로 늘렸다.
그 산업화를 뒷바침 해준 것이 바로 공학이다. 공학은 이렇게 산업화에도 쓰이지만 사실 산업화 말고도, 금융같은 여러분야에도 다양하게 쓰인다.
그러므로 공학은 국력이다. 한 나라에 공학자가 많아야지 그 나라의 미래가 보이며, 나아가 그 나라가 발전할 수 있다.
서강대 전자공학 레이디각하 돋盧?
늦은 밤까지 잠안자고 읽는 고딩게이가 있다면, 니네들이 "어디다 써먹어?"라고 질문하는 미적분, 행렬 등 수학이 다
이 공학에 써먹기 위한 기초지식이다. 마치 더하기 빼기가 곱셈 나눗셈의 기초가 되듯이 말이다.
공학도나 이과를 전공하지 않는다면 경제학도가 Time Value of Money계산할 때 외에는 미적분을 써먹을 데가 별로 없겠지만, 워낙 기초적인 스킬이라 대학교 1학년때부터 미적분 배우려면 내가 보기에도 좀 버거워 보이니, 고등학교 때 충실히 기초를 다져두기 바란다.
하지만, 이런. 수학이 어디에 쓰이는지도 모르고 무작정 익히기에는 그 과정이 너무 고통스러우며, 설령 익히더라도 그게 나중에 어디에 쓰일지 모르는 소리없는 방황을 하고 있다고 생각해. 어떻게 보면 다양한 학문에 아직 노출도 안된 너네들에게 결정하라고 종용하는게 불합리한 시스템이지.
그래서 이 글을 쓰는거니, 딸안치고 읽어준다면 고맙다. 나 잘난체하려는 마음은 추호에도 없다.
일베특성상, 식이나 전문용어는 최소화하겠다. 솔직히 일베에서 이 글 하나 읽고, 다 알거 같다면 다른사람들은 학비들여가며 대학교를 4년동안 왜 다니겠냐? 맛보기로 어떤가 안 다음, 나중에 니 전공고를 때 참조했으면 한다.
나는 솔직한거 좋아한다. 솔직히, 대학교에서 공학을 전공한뒤, 공학쪽에 계속 남아, 공학쪽으로 직장구하기란 참 어렵다.
특히 한국처럼 기계공학이 끝발날리지 못하는 나라에서는 더더욱 그럴거다.
나도 그렇지만, 대학교 때 공학을 전공하고 나서 정작 직장은 금융쪽으로 잡았다. 황소은행 아盧?
하지만, 공학이 수학을 다루는 학문이다 보니, 적용이 안되는 곳이 없다. 그래서 오늘은 내가 일하는 쪽에서 공학이 어떻게 다양하게 적용 되며, 왜 대학교 때 공학을 전공하는게, 문과에 비해 좋은지 보여주고 싶다.
일단은 저번에 얘기했듯이 유체역학의 기본 Governing Equation인 Navier-Stokes eqn에 대해 알아보자.
호옹~! 노알라 놀랠라! 이걸 파이프에 쓸 수 있도록 풀어쓰면 이렇게 되는데,
2D, Fully Developed, steady, with no press gradient flow 로 간단하게 정리하게 되면
이렇게 2nd Order Partial Differential Equation (PDE)이 된다. 목적은 유체의 속도인 u의 함수를 구하는건데, 자세히 보면 저기 dr 하고 dz가 있지 않냐? 이게 partial differential equation이라는 건데, 적분하기 존나 어렵다. 이걸 적분하려면 Ordinary Differential Equations가 아니라서, similarity solution을 써서 variable을 2개에서 하나로 줄이던지, 아니면 finite difference method로 근삿값을 구해야 되는거다. 자세히 알아보려면 위키에서 찾아봐라.
그럴려면 수학공부 해야겠지? 자극이 짜릿하게 됬으면 한다.
이런걸 풀 줄 알아야지 대한민국이 강대국이 되며, 천조국처럼 끝발날리는 비행기를 만들 수 있는거다.

천조국 성님들 ㄷㄷㄷ.. 꼬리날개 없는거 보이노? 자주 올리지만 볼때마다 후장떨린다.
이렇듯, 자연에 일어나는 여러 현상은 손으로 풀수 있는 (Analytical solution)이 없기 때문에, 우리 공학자들은 Finite difference method를 통해 근삿값을 구하는거다.
노무노무 어려워!
고딩게이는 이런거 盧알란가몰라~
뿐만아니라, 금융에서도 널리 쓰인다.
이것에 대해 예를 들자면 나는 yield curve에 대한 예를 들고 싶다. 먼저 얘기할려면 배경지식이 조금 필요하다. 그래서 Fiat currency와 국채가 어떻게 거래되는지에 대해 간단히 설명해야 될거 같다.
먼저 우리가 흔히들 쓰는 원화 화폐나 천조국 달러 화폐는 중앙은행에서 발행하는 fiat currency다. 이 뜻은 중앙은행이 (미국의경우) open market operations를 통해 국채를 사들임으로서 시중은행에게 돈을 푼다는 뜻이다. (이걸 expansion of fed's balance sheet이라고 부른다,) 일정기간 매번 돈을 푸니, 돈의 가치가 시간이 지남에 따라 필연적으로 노짱 운지하듯 떨어지겠지? 세계에서 통념적으로 사용하는 화폐중에서 fiat currency가 아닌 화폐는 찾기 어렵다. 단 요즘에 화제거리가 되고 있는 BitCoin은 중앙은행이 없다는 면에서 fiat currency가 아니다. 궁금한 게이들은 구글링해봐라.
국채는 국가가 자본조달을 위해 발행하는 채권이다. 국가를 담보로 하니, 어떻게 보면 가장 안전한 종류의 채권이라 볼수 있다.
종류에는 여러가지가 있는데, 니가 지금 쓰는 종잇장 지폐도 채권의 한 종류다.
천조국 워싱턴 성님 ㅅㅌㅊ 얼굴 옆에 "This note is legal tender for all DEBTS, PUBLIC and PRIVATE"이라고 적혀있지 않냐? 니가 이 지폐를 쓰면 The US Federal Reserve (연방준비은행)가 이 지폐가치에 대한 보증을 선다고 대충 이해하면 된다. (내가 국어가 좀 약하다. 이해해라.) 그 뜻을 풀이하면, 이 화폐를 가지고 있는자는 그 국가에 속한 중앙은행에 대한
채권자라고 해석 할 수 있다. 실제로, 한때에는 이 종잇장이 화폐에 가치를 부여하기 위해서 Fed (연방준비은행)에서는 gold standard라고 달러당 금 몇 온스로 정해놓고, 돈을 풀 때마다 금을 시장에서 더 사들였다.
하지만 경제학 게이는 알다시피 이것이 expansionary policy에 발목을 잡기에 1971년 이 정책을 폐기했다.
그래서 이해해야 되는게, 가장 안전한 종류의 채권이면, 이 채권에 대한 이자가 뭘 의미 할까? 맞다. 가장 안전한 자산에 대한 이자율을 의미하는거다. 즉, 이것보다 덜 안전한 자산이라면 이 "기준 이자율" (risk-free rate)에 더 얹혀서 (risk premium)이자를 내야겠지? 그래서 자산 가치를 계산할 때 뭐 경제학도 기초인 time value of money따위 계산 할 때 risk free rate를 많이 쓰기도 한다. 하지만 문제는, 국채를 매일 발행하는냐다. 예를 들어 ㅌ세계 최고 안전자산으로 쳐지는 미국 국채인 US Treasury securities에 대해 얘기하겠다.
위 스케쥴이 보이냐? 위 스케쥴이 올 2013년 발행하는 국채에 대한 auction 날짜들이다. 그럼 중요한건 이렇듯 benchmark risk free rate라면 만기일과 발행일 사이에 있는 이자율은 어떻게 계산하는가이다.
이 사이에 있는 이자율(yield)을 계산해서 만기에 차트로 표기한게 yield curve인데, 이건 그럼 어떻게 그릴까?
맞다 바로, 모델링을 해서 construct하는거다. 위 커브는 쌕끈하게 슨상님 하늘로 승천하듯 매끄럽지만 사실은 그렇지 않다.
3-month T-Bill 가격을 토대로 yield curve를 construct 하려고 한다.
spline을 넣어주니 쌕끈하노?
그럼 이 modelling을 어떻게 하고, finite difference method를 어떻게 계산 하냐고? 자세한 알고리듬 계산은 swapping도 넣고 금융게이들은 TIPS arbitrage도 넣어야 되니 복잡하다. 일베에서 찾지 말고 가까운 대학교 도서관이나 전공책 사서 봐라.
그래도, 개념을 이해시키기 위해선 기초적이고 짧은 예가 하나 필요할 거 같다.
실제로는 더 복잡하거나, 어려운 알고리듬을 써서 연산이 빨리되게끔하지만 (시간이 생명인 금융에서는 알고리듬의 연산이 가장 적게 들어야 빨리빨리 계산해서 앞서서 거래하겠지?), 일베가 일베인지라, 게이들 이해시키기 위해 내가 이렇게 쓰겠다. 내가 말했지? 코스트코 맛보기라고.
예로 가장 기초적인
Bisection과 Newton's method를 들어볼려고 한다.
Bisection method는 예를 들어 손으로 풀수 없는 어떤 식이있다고 치자. 근데 너는 이 식이 언제 x축을 통과하는지 궁금한거야. 그래서 니가 y가 양수와 음수인 두 점을 기준으로 iteration을 하면서 y=0인곳이 어딘가를 찾는거야.
말그대로 bisection이니, 한번 씩 할 때마다 절반으로 싹둑 싹둑 잘라나가면서 y=0일 때의 x값 (x-intercept 혹은 root이라고 부른다(이 점을 한국말로 머라그러는지 모르겠다... ㅜㅜ))을 찾는거다.
그래프로 그리면 이렇다.
귀찮으니 위키에 있는 예를 그대로 쓰겠다.
예를 들어 y = x^3 - x -2 의 y =0일 때 x 의 값을 찾는다 치자
시작 점을 a = 1와 b = 2로 해서 시작하자.
(x1=1)과 (x2=2)점을 더해서 나누면 우리의 새로운 iteration point가 생기겠지?
음수다. 그럼 양수였던 f(2) = 4와 위 방법을 또해서 또 좁혀나가는거다.
그럼 Newton's Method를 살펴볼까?
먼저 미리 말하지만, Newton's Method는 Bisection보다 연산횟수를 덜 요구한다. 이 뜻은 어느정도 경제나 금융에 뜨여있는 게이들은 알겠지만 Efficient Market Theory에 근거하면, 시장은 available한 정보를 바로 바로 (efficient)하게 반영한다는거다. 하지만, 거래량이 적거나, 인터넷속도가 느리거나 등등 여러가지 이유로 인해 비효율(inefficiency)가 생길 수 있다.
그럼 inefficiency가 생기면 뭐하냐고? 우리같은 트레이더들은 그 비효율을 arbitrage해서 돈을 버는거다. 그러므로, 내가 하고자 하는 말은 연산횟수를 덜 요구한다는 뜻은, 같은 기계로 계산을 더 빨리 할 수 있다는 뜻이다. 그럼 남보다 앞서나가는 거니까, 내가 돈을 벌수 있겠지?
자 알고리듬에 대해 설명하겠다. 피아제 시계에 대한 노짱의 해법처럼, 이것도 은근히 단순하다.
미분할 수 있는 어떤 함수f(x)에 대해 어떤점을 안다고 치자.
함수를 미분하면 그 함수의 그점에대한 기울기 (tangent slope)가 나오겠지? 그럼 그 기울기로 1차 식을 적는다. (first order; y = ax + b 이런식으로) 그럼 그 식이 어떤 x에서 y=0인지 찾는다. 그럼 그 x가 새로운 x가 되어 간격을 좁혀 나간다. 밑에 애니메이션(.swf)을 보면 이해가 한결 쉬울거다.
니네 고3 적분 배울때 배우는 Mean value theorem이 여기서 쓰여지는거다. [어떤 두 점이 있을 경우 그 사이에는 그 두점을 기준으로 한 기울기 [f(a)-f(b)]/(a-b)를 tangent slope로 가진 점이 반드시 존재한다.] 다시 말하지만, 기초공부확실히 해라. 핵심을 모르면 밖에 나가서 병신취급받는다.
뿐만아니라, Option 거래에서 쓰이는 Black-Scholes Modelling에서도 위에서 말한 risk free rate, expiration date, strike price등을 토대로한 partial differential equation을 쓰는데, 이걸 풀기 위해서도 finite difference method를 써야 된다.
돈 벌려면 수학 많이 알아야 겠지?
아래는 Black-Scholes Formula의 governing equation이다. (r은 risk free rate, v 는 base asset의 가격, s 는 strike price, t는 만기일 까지 남은 시간, sigma는 standard deviation를 의미한다.)
시간이 없는 결과 여기까지다.
내가 마지막 하고자 하는 말은, 대학교 갈 때 공학전공해라는 말이다.
내가 글을 쓰는거도, 어짜피 고딩들의 진로결정에 도움을 주기 위해 맛보기로 써주는거니까 전공자 및 등등은 읽기 싫거나 못마땅하면 너도 하나 써서 보충해줘라.
1. 공학은 국력이다. 고딩게이는 딸치지말고 공부해서 기초를 쌓아라. 자지도 쉬어야 된당께
2. 공학을 배우면 여러분야에 쓰이는 Finite difference method를 배우게 된다.
3. 이해하고 알려면 수학을 잘해야 된다. 수학 공부해라.