Sunteți pe pagina 1din 3

Simulaci on de Precios Correlados

Mauricio Bedoya javierma36@hotmail.com Junio 2013


Tomamos como referencia 3 procesos (puede generalizarse para nprocesos) tal que: X (1) = L(1, 1) Z 1 + L(1, 2) Z 2 + L(1, 3) Z 3 X (2) = L(2, 1) Z 1 + L(2, 2) Z 2 + L(2, 3) Z 3 X (3) = L(3, 1) Z 1 + L(3, 2) Z 2 + L(3, 3) Z 3

(1a) (1b) (1c)

donde Z corresponde a valores provenientes de una disctribuci on normal N(0,1) idd. Lo anterior, se puede expresar de forma matricial, as : X =LZ (2)

Hasta ahora, no se identican los valores que corresponde a la matriz L. Al estar los procesos correlados, la esperanza del producto de los proceso es igual a la matriz de correlaciones: 1 1,2 1,3 E [X X ] = 2,1 1 1,3 3,1 3,2 1 La matrix de correlaciones puede expresarse como el producto de dos matrices al realizar una descomposici on LU (inferior y superior). Es ahora donde empleamos la descomposici on de cholesky de la matrix de correlaciones.

E [X X ] = E [(L Z ) (L Z ) ] operando y sabiedo que la matrix L es constante y la esperanza del producto de Z Z es igual a la matrix identidad, tenemos:

E [X X ] = L L

donde L y L corresponden a la descomposici on de cholesky de la matriz de correlaciones entre el producto de los procesos. Retomando el proceso original (eq 2) y los valores de L (matrix triangular inferior), podemos caracterizar la evoluci on de los procesos1 . Implementaci on en Matlab Sea P la matrix que contiene los precios de los activos en cuesti on denida en el workspace. En el command window de matlab, se procede: 1. Estimar los rendimientos de los precios >> rendimientos = price2ret(P ); 2. Estimar la matriz de correlaciones >> correlaciones = corr(rendimientos); 3. Descomposici on de cholesky >> L = chol(correlaciones, lower ); 4. Simular 1000 N(0,1) por activo en cuestion Al tratarse de 3 activos, tenemos: >> Z = randn(1000, 3); 5. Estimar X (matriz de procesos) >> X = Z L; 6. Calcular drift y difussion del rendimiento Tomando como referencia el proceso de rendimiento geometrico y asumiendo que rf = 0,05 y dt = 1/250, tenemos: >> sigma = std(rendimientos); >> r = 0,05; >> drif t = ones(1000, 1) (r 0,5 sigma. sigma); >> dif ussion = X. (ones(1000, 1) sigma); >> Rsimulado = drif t dt + dif ussion sqrt(dt); Para obtener la serie de precios, realiza un cumsum por columna y multiplica est e resultado por el precio en t = 0: P simulado = S(0) ecumsum(Rsimulado,1) (3) Como se puede identicar, los inputs necesarios para realizar la simulaci on son: los precios de los activos, el tipo libre de riesgo, dt y el numero de simulaciones deseadas. Por lo tanto, recomiendo realizar un script o function en matlab.
1

Vease blog Simulaci on de Precios Moneda Domestica y Extranjera

Todo lo anterior se puede realizar en C ++. Para calcular la descomposici on de cholesky recomiendo acudir a la libreria cientica gsl (http : //www.gnu.org/sof tware/gsl/), es gratuita, facil de implementar e intuitiva. Como segunda alternativa, vease boostublas (http : //www.boost.org/libs/numeric).

S-ar putea să vă placă și