[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