Блог им. Kot_Begemot
function BigRandomTest(N,K,L) %BIGRANDOMTEST производит генерацию N выборок длинной L % и размерностью K коррелированных случайных стратегий и расчитывает их % статистические характеристики X=zeros(L,K); % случайная матрица признаков z=zeros(N,3); % результаты эмпирические lim=zeros(N,3); % результаты теоретические Narr=zeros(N,1); % результаты рассчета эффективной размерности l=ones(1,K); y=ones(L,1); warning('off','all'); for i=1:N X=genRS(K,L); % случайная смешанная матрица C=corr(X); % корреляционная матрица C=abs©; % Рассчитываем пределы lim(i,1)=(2/L)^0.5*erfinv(0.5); % шарп случайной стратегии Ne=1+0.5*(2*K-1-(4*l*C*l'-4*K+1)^0.5); Narr(i)=Ne; lim(i,2)=(2/L)^0.5*erfinv(0.5^(1/Ne)); % шарп лучшей стратегии из множества lim(i,3)=lim(i,2)*(K.^2/(l*C*l'))^0.5; % Рассчитываем статистики sharp=abs(mean(X)./std(X)); z(i,1)=sharp(1); % статистика случайной стратегии z(i,2)=max(sharp); % статистика лучшей стратегии a=(X'*X)\(X'*y); r=X*a; z(i,3)=mean®/std®; % статиситка лучшего портфеля if isnan(z(i,3)) z(i,3)=0; end end warning('on','all'); %% Изображение статистик по отношению к пределам figure; r=z(:,2)./lim(:,2); mr=median®; histfit(r,30,'gev'); title(['Best Sharp Statistic median : ',num2str(mr)]); xlabel('relation sharp to critical level'); ylabel('Frequency'); figure; r=z(:,1)./lim(:,1); mr=median®; histfit(r,30,'wbl'); title(['Random Sharp Statistic median : ',num2str(mr)]); xlabel('relation sharp to critical level'); ylabel('Frequency'); figure; r=z(:,3)./lim(:,3); mr=median®; histfit(r,30,'gev'); title(['Best Portfolio Sharp Statistic median : ',num2str(mr)]); xlabel('relation sharp to critical level'); ylabel('Frequency'); figure; r=z(:,2)./lim(:,2); plot(Narr,r,'.'); title(['Erorrs by effective dim']); xlabel('Effective dim'); ylabel('relation sharp to critical level'); figure; plot(Narr*ones(1,3),lim,'.'); legend({'Random','Best','Portfolio'}); title(['Critical Levels by Effective Dim ']); xlabel('Effective dim'); ylabel('Critical Levels'); end % Генерация случайного набора стратегий размерности K, длинной L function X=genRS(K,L) Ne=ceil(rand(1,1)*K); % эффективная размерность задается случайно A=randn(K,Ne); % случайная матрица смешивания for i=1:K A(i,:)=A(i,:)/sum(A(i,:).^2); end X=randn(L,Ne)*A'; end
Ну не фига себе !
Не, ну не фига ж себе!!!