[Returnanalytics-commits] r2563 - pkg/Meucci/demo
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sat Jul 13 19:51:20 CEST 2013
Author: xavierv
Date: 2013-07-13 19:51:19 +0200 (Sat, 13 Jul 2013)
New Revision: 2563
Added:
pkg/Meucci/demo/S_GenerateMixtureSample.R
pkg/Meucci/demo/S_PasturMarchenko.R
pkg/Meucci/demo/S_SemiCircular.R
Log:
-added three more demo files
Added: pkg/Meucci/demo/S_GenerateMixtureSample.R
===================================================================
--- pkg/Meucci/demo/S_GenerateMixtureSample.R (rev 0)
+++ pkg/Meucci/demo/S_GenerateMixtureSample.R 2013-07-13 17:51:19 UTC (rev 2563)
@@ -0,0 +1,26 @@
+#' This script generates draws from a univarite mixture, as described in A. Meucci, "Risk and Asset Allocation",
+#' Springer, 2005, Chapter 4.
+#'
+#' @references
+#' \url{http://symmys.com/node/170}
+#' See Meucci's script for "S_GenerateMixtureSample.m"
+#'
+#' @author Xavier Valls \email{flamejat@@gmail.com}###
+
+##################################################################################################################
+### Inputs
+a = 0.8;
+m_Y = 0.1;
+s_Y = 0.2;
+m_Z = 0;
+s_Z = 0.15;
+
+T = 52;
+
+##################################################################################################################
+### Computations
+P = runif(T);
+Q = QuantileMixture( P, a, m_Y, s_Y, m_Z, s_Z );
+
+dev.new();
+plot( Q );
\ No newline at end of file
Added: pkg/Meucci/demo/S_PasturMarchenko.R
===================================================================
--- pkg/Meucci/demo/S_PasturMarchenko.R (rev 0)
+++ pkg/Meucci/demo/S_PasturMarchenko.R 2013-07-13 17:51:19 UTC (rev 2563)
@@ -0,0 +1,45 @@
+#' This script illustrate the Marchenko-Pastur limit of runifom matrix theory, as described in A. Meucci,
+#' "Risk and Asset Allocation", Springer, 2005, Chapter 4.
+#'
+#' @references
+#' \url{http://symmys.com/node/170}
+#' See Meucci's script for "S_PasturMarchenko.m"
+#'
+
+##################################################################################################################
+### Inputs
+T = 1500;
+N = 900;
+
+##################################################################################################################
+### Empirical eigenvalues
+
+#X = matrix( runif(T*N), T, N ) ; # normal
+#X = (matrix( runif(T*N), T, N ) - 0.5) * sqrt(12); # uniform
+X = log(matrix( runif( T*N ), T, N )) + 1; # exponential
+
+Y = ( t(X) %*% X ) / T; # symmetrize and rescale
+E = t(eigen(Y)$values);
+
+NumBins = ceiling( 10 * log( length( E )));
+h = hist(E, NumBins, 1);
+t_= h$mids;
+b = h$counts;
+D = t_[ 2 ] - t_[ 1 ];
+h = b / (D * N);
+
+##################################################################################################################
+### Theoretical eigenvalues
+q = N / T;
+t_min = ( 1 - sqrt( q )) ^ 2;
+t_max = ( 1 + sqrt( q )) ^ 2;
+t = seq(t_[ 1 ], t_[length(t_)], (t_[ length(t_) ]- t_[ 1 ])/100 );
+a = pmax( t_max - t, 0);
+b = pmax( t - t_min, 0);
+y = 1 / ( q * 2 * pi * t) * sqrt(a * b);
+
+##################################################################################################################
+### Plots
+#barplot(t_,h);
+plot(t_,h, type="h", lwd=5);
+lines(t , y, col = 'red', lwd = 3);
Added: pkg/Meucci/demo/S_SemiCircular.R
===================================================================
--- pkg/Meucci/demo/S_SemiCircular.R (rev 0)
+++ pkg/Meucci/demo/S_SemiCircular.R 2013-07-13 17:51:19 UTC (rev 2563)
@@ -0,0 +1,40 @@
+#' This script illustrate the semi-circular law of random matrix theory, as described in A. Meucci,
+#' "Risk and Asset Allocation", Springer, 2005, Chapter 4.
+#'
+#' @references
+#' \url{http://symmys.com/node/170}
+#' See Meucci's script for "S_SemiCircular.m"
+#'
+
+##################################################################################################################
+### Inputs
+N = 1000; # matrix size
+
+##################################################################################################################
+### Empirical eigenvalues
+
+#X=rnorm(N); # normal
+#X=( runif(N)-0.5 ) * sqrt(12); # uniform
+X = log( matrix( runif(N^2), N, N )) + 1; # exponential
+
+Y = (X + t(X) ) / ( 2 * sqrt( 2 * N )); # symmetrize and rescale
+E = t(eigen(Y)$values);
+
+##################################################################################################################
+### Theoretical eigenvalues
+t = seq( -1, 1, 0.01 );
+g = 2 / pi * sqrt(1 - t^2);
+
+NumBins = ceiling( 10 * log( length( E )));
+h = hist(E, NumBins, plot = FALSE);
+t_= h$mids;
+b = h$counts;
+D = t_[ 2 ] - t_[ 1 ];
+h = b / (D * N);
+
+##################################################################################################################
+### Plots
+dev.new();
+#bar(t_, h);
+plot(t_, h, type = "h", lwd = 5);
+lines(t, g, col = "red", lwd = 3);
More information about the Returnanalytics-commits
mailing list