[Stochasitic Programming]
수익률의 경우 보통 random variables를 가정한다. 하지만 앞쪽에서는 사실 과거 실제 수익률 데이터들의 point estiamtes를 통해 최적화를 진행하였다. 즉, random한 것들을 실제 최적화 식에 반영하지는 않았다. 하지만 이러한 과거 데이터가 미래에 그대로 발생한다는 보장이 없기 때문에 stochastic programming을 random한 시나리오들을 생성하고 그 여러 시나이로들을 통해 미래에 발생할 수 있는 다양한 경우의 수들을 고려하여 포트폴리오 최적화를 진행하게 된다. two-stage stochastic linear program을 보면, 기존의 포트폴리오 최적비중이라는 decision variable를 stage1, 2 로 case를 나누게 되고 1, 2 사이의 stage 2에 불확실성이 있다고 가정하여, stage 1의 결과를 stage2의 결과에 영향을 미치도록 설정하게 된다. 이때, stage 2에 불확실한 요소들이 특정 distribution을 따른다고 가정 (정규분포, 과거발생분포, 국면별 분포 등 여러 분포들로 가정할 수 있음)하고 이에 따라 이를 통해 시나리오를 구성하게 된다. 앞선 Robust Optimization의 경우 uncertainty set을 정하고 그 worst case를 통해 최적화를 진행한다면, stochastic optimization의 경우 uncertainty set의 여러 경우들을 시나리오들을 통해 반영하게 되는 것이다. 이에 worst case를 가정하여 푸는 robust optimization에 비해 덜 보수적인 최적해가 나오게 된다.
포트폴리오 최적화에서 시나리오를 활용하는 이유는 single-period MVO 문제의 경우 asset returns들을 random variables이라 가정하고 랜덤변수의 분포의 point estimates만을 반영하여 문제를 풀게 된다. 하지만 multi-period로 최적화를 진행한다고 했을 때, single-period MVO를 시나리오들을 고려하지 않고 multi-stage로 확장하여 문제를 풀게 되면 단순히 point estimates들을 활용하여 진행하게 되면 미래에 발생한 불확실성을 잘 반영하지 못하게 된다. 가령 시장국면에 따라 자산 수익률의 추이가 변할 수 있는데, 단순히 point estimates를 반영한 MVO의 경우 이러한 다양한 수익률 case들을 반영하지 못하기 때문이다. 반면, 시나리오를 통해 진행 시, 미래를 시나리오로 표현하고 그 정보들을 시나리오들의 기댓값으로 반영하여 최적화를 진행함으로써 미래에 대한 정보를 반영하여 현재 시점에 투자결정을 할 수 있게 되며, 단순히 point estimates로 결정하는 것이 아닌 확률에 따라 다양한 수익률 분포를 적용해줌으로써 더 정교화된 최적화를 진행할 수 있게 된다. 가시적으로 표현하기 위해 보통 scenario trees를 활용하여 시나리오들을 나타내게 되며, 각 시나리오마다 각 자산들의 수익률이 무엇일지에 대한 정보가 반영되게 된다. 또한 매 stage마다의 의사결정을 매 nodes마다 진행하게 되며, 이는 단순히 MVO로 진행하는 단순 최적화 모델보다 훨씬 더 정교한 정보들을 반영한다.
최적화식을 문제를 보면, stage 1의 경우 uncertainty가 없는 제약식이 주어지고, stage2는 첫번째 stage에 발생한 의사결정의 영향을 받는 uncertainty가 존재하는 제약식이 주어지게 된다. (불확실성을 타나내는 random event ‘w’에 따라 바뀌는 값들을 반영) 첫번째 stage는 random한값이 없기 때문에 a.Transpose() * X를 목적식에 그대로 넣어주지만, 두번째 stage 에 해당하는 값은 maximize해주기 원하게 되는데 이때 w값이 무엇인지 알 수 없기 때문에 발생할 수 있는 w값들에 의해 나오는 값 y(w)를 maximize하게 되는 식들의 expectation을 목적식에 넣어주게 된다.
two-stage stochastic linear program을 보면, 기존의 포트폴리오 최적비중이라는 decision variable를 stage1, 2 로 case를 나누게 되고 1, 2 사이의 stage 2에 불확실성이 있다고 가정하여, stage 1의 결과를 stage2의 결과에 영향을 미치도록 설정하게 된다. 이때, stage 2에 불확실한 요소들이 특정 distribution을 따른다고 가정 (정규분포, 과거발생분포, 국면별 분포 등 여러 분포들로 가정할 수 있음)하고 이에 따라 이를 통해 시나리오를 구성하게 된다. 앞선 Robust Optimization의 경우 uncertainty set을 정하고 그 worst case를 통해 최적화를 진행한다면, stochastic optimization의 경우 uncertainty set의 여러 경우들을 시나리오들을 통해 반영하게 되는 것이다. 이에 worst case를 가정하여 푸는 robust optimization에 비해 덜 보수적인 최적해가 나오게 된다.
만약에 first stage decision x를 알고 있다고 하고, random하게 발생하는 w가 무엇인지 알고 있다고 가정한다면, second stage maximize problem은 first stage decision ‘x’를 포함한 제약식을 갖는 LP으로 나타낼 수 있다. 하지만 현실에서는 x와 w를 알고 있는것이 아니기 때문에, 어떤 x가 정해졌다고 했을 때, w들이 여러개가 발생할 수 있게 된다. 이 때 random한 w로 인해 발생할 수 있는 여러 값들의 최대값들을 구할 수 있고 이 값들의 expectation을 f(x)로 두게 된다. 이후, f(x)를 기존 최적화 식의 두번째 stage에 해당하는 목적식에 넣어주어 기존 최적화 식을 표현하게 된다.
이때 w의 distribution이 정의되는지와 정의된다면 어떻게 정의될지에 따라서 f(x)의 기댓값을 구하게 되는데, f(x)의 기댓값을 구하기 위해 향후 시나리오들의 발생확률들을 이용하게 된다. w가 발생할 수 있는 sample space가 infinite하게 되면 w가 발생할 수 있는 경우의 수가 무한이기 때문에 f(x)를 계산하는 것이 힘들어지게 되고, 이에 w가 발생할 sample space이 유한하다고 가정한다면 f(x)를 계산하는 것이 훨씬 수월해진다. 이때 stochastic program이 사용되게 되는데, stochastic programming에서 사용되는 일반적인 방법은 모르는 변수의 확률변수를 알고 있다고 가정하고 그 확률분포로 시나리오들을 뽑아내서 그 시나리오들을 반영하여 기댓값을 계산하는 방법들을 사용하게 된다. 가령 발생가능한 w가 1000개라면 1000개의 시나리오가 나오게 되고, 각 시나리오들이 발생할 확률 p1~p1000까지가 주어지게 된다. 시나리오들을 통해 기댓값을 계산하기 위해 각각의 w1, w2, ... , w1000을 대입했을 때 나오는 최대값들과 각각의 확률들을 곱해 모두 더해주게 되면 우리가 구하고자 하는 기댓값이 구해지게 된다. 즉, 불확실한 요소들을 시나리오들로 표현하고 이를 통해 기댓값을 계산하게 되는 것이다.
이후, 위에서 도출해낸 시나리오들의 최대값과 각 시나리오들의 발생확률들의 곱의 합을 처음 가정한 기존의 목적식의 stage2 부분에 넣어줄 수 있다. S개의 시나리오들이 있다고 가정하면 목적식에 S개의 결정변수가 추가되게 되며 (y1 ~ ys), 마찬가지로 S개의 제약식이 추가되게 된다. 즉, 시나리오를 많이 사용할수록, stage를 많이 늘릴수록 decision variables와 constraints에 매우 많게 증가할 수 있게 되는것이다. 기존의 stochastic 최적화 식에서 위와같이 변형된 최적화식의 경우 random event w들을 sample space에서 유한하게 이미 결정을 해주었기 때문에 (w1, w2, w3,,, w1000), 불확실성이 하나도 없는 LP 최적화식이 된다. 단지, sparse한 constraint matrix를 만드는데 조금 복잡하고 시간이 걸리긴 하다는 단점이 존재한다.
최종적으로 stochastic problem에 대해 정리해보면, 기존의 포트폴리오 최적화에서 기본 세팅이 조금 바뀌었으며 기존의 포트폴리오 최적화에서는 decision variable이 있고 여러 제약들이 존재할 때, 그 optimal value를 구하는 간단한 문제였다. 여기서, decision variable을 stage1과 stage2을 나누며, stage 1,2로 나뉜 이유는 stage 1,2 사이에 불확실한 요소 하나가 발생하기 때문이다. 따라서 stage 1은 확실하게 발생하기에 의사결정을 할 수 있는 반면, stage 2는 불확실한것을 반영하여 의사결정을 해야하며 두 문제를 독립적으로 풀 수 없게 되는데 이는 stage1의 optimal decision variable이 stage2에 영향을 주기 때문이다. 이러한 stage 1의 decision variable이 stage2에 영향을 주는 것을 고려하여 stage1과 stage2를 함께 풀어주어야 하게 된다. 불확실한 요소가 발생하는 것은 기본적으로 특정 distribution을 따른다고 가정하며, 이러한 distribution을 따른다고 했을 때 이를 통해 시나리오들을 뽑아내어 최적화 문제를 다시 reformulate하게 되는 것이다. (reformulate을 위해 모든 시나리오들을 제약식과 목적식에 모두 추가해주어 각 stage들을 반영한 최적화를 진행하게 되는 것이다.) 결국 최적화식은 deterministic 하게 발생하는 stage와 deterministic 이후에 발생하는 stage를 목적식에 반영해주고, 각각의 stage마다의 constraint을 두게 된다. 최종적으로 decision variables들을 하나의 vector로 만들어주고 이를 목적식에 넣고, 모든 constraint을 하나의 sparse한 matrix로 나타내어 최적화 문제를 풀게되면 LP 문제로 간단하게 표현할 수 있게 된다.
시나리오들을 그리기 위해 nodes 들을 결정하게 되는데, 각 nodes마다 decisions을 내리게 되며, 각 노드의 decision을 내릴 때 그때까지 반영된 nodes들에 대한 모든 information을 반영하여 decision을 하게 된다. 이는 포트폴리오에 적용 시 single-stage MVO와 구분되는 점이며, 과거의 모든 결정들을 다음 stage의 decision에 반영하여 진행하기 때문에 미래의 불확실성을 훨씬 반영한 포트폴리오 최적해가 나오게 된다 (물론 미래시점에 어떤 결정이 발생되는지는 현재시점에 알지 못하지만, expectation 값을 구하기 때문에 모든 미래시점, terminal node,에 해당하는 probability를 고려해주기 때문에 미래에 대한 의사결정을 고려하여 포트폴리오 최적화를 진행하게 되는 것이다.)
포트폴리오 최적화에서 시나리오가 어떤식으로 사용되는지를 보면, 일단 nodes에 decision variables을 자산비중이 아닌 자산별 투자금액으로 설정하며 각 node마다 decision variable은 n개씩 존재한다 (n개 종목에 투자한다고 가정 시 ). 단순히 연산을 비중이 아닌 투자금액으로 설정하는 방법은 multi-stage stochastic 문제를 풀기위해 전 stage에서 결정된 투자금액에 따라 다음 stage의 투자금액이 바뀌게 되고, 최종적으로 terminal nodes에서final wealth가 얼마나 되는지를 알기 위해서 비중이 아닌 투자금액으로 decision variables를 정해주게 된다. 추가로 decision variables에 단순히 자산별 투자금액이 아닌 추가로 자산별 매도금액과 매수금액을 추가시키게 된다. 이를 통해 매수한 금액과 매도한 금액에 대한 정보를 통해 거래비용 및 향후 더 세분화된 포트폴리오 의사결정에 대한 분석을 진행할 수 있다 ( [x1, x1+, x1-, x2, x2+, x2-] 이런식으로 3n개의 decision varaibles이 매 nodes마다 발생하게 됨). 각 stage가 진행됨에 따라 불확실한 요소는 n개의 asset return들이며, 각 시나리오는random한 n개의 asset return에 대한 정보를 가지게 된다.
단순 MVO로 multi-stage로 확장시켰을 때를 보자. 가령, 투자 자산이 주식, 채권 두가지만 존재하고, 미래에 발생할 수 있는 국면이 2개 (불황, 호황)으로 놓고, 그 발생확률이 50/50이며, 불황, 호황에 따른 주식, 채권 수익률이 일정하다고 가정하자. 이 때, 매 시점에 단순히 point estimates로 최적화를 진행하기 때문에 같은 국면에 해당하는 투자비중은 변화없이 같은 비중이 발생하게 된다. 이는 같은 historical data에 대한 정보로 1-stage 최적화를 계속해서 반복하는 것과 같기 때문에 미래 정보에 대한 반영이 전혀 되지 않기 때문에 발생한다. 하지만 Multi-stage Stochastic Programming을 통해 시나리오들을 구성하여 미래의 불확실성을 반영한 최적화를 진행할 시, 과거의 결정이 다음 stage nodes에서의 결정에 영향을 미치기 때문에 최적화 투자비중 (here, 자산별 투자금액)이 계속해서 변하게 되며 이는 미래의 불확실성에 대한 정보들을 반영하기 때문에 나타나게 되는 것이다. (T시점 or T 시점 이후의 최종 wealth들이 최대가 되는 초기 최적화 투자 비중을 구하는 것이기 때문에 매 nodes마다 최적 투자비중 또는 투자금액이 변하게 되는 것이다.)
'금융공학' 카테고리의 다른 글
옵션가치계산 : Black–Scholes model (1) | 2025.04.28 |
---|---|
Robust Portfolio (1) - RPO, Resampling (0) | 2023.07.16 |
다양한 MVO (0) | 2023.07.13 |
포트폴리오 최적화 - MVO (0) | 2023.07.13 |
The Capital Asset Pricing Model (2) | 2023.06.23 |