Code covered by the BSD License  

Highlights from
MATLAB no Desenvolvimento de Modelos para Financas

image thumbnail
from MATLAB no Desenvolvimento de Modelos para Financas by Elia Matsumoto
Slides and demo files using Brazilian market data.

GP_Aversao( )
function GP_Aversao( )
% Recupera Dados
h=gcf;
obj=findobj(h,'Tag','GP');
Num=get(obj,'UserData');
obj=findobj(h,'Tag','RPainel');
ANum=get(obj,'UserData');
NA = size(ANum,2);
% Ativos: Risco e Livre de Risco
NAtivosRisco=ANum(1,1:NA-1);
% Calculo de retorno
n=length(Num);
Txret=(Num(2:n,:)./Num(1:n-1,:))-1;
MTxret=mean(Txret);
MTxretRisco=MTxret(1:NA-1);
MTxretLivreRisco=MTxret(NA);
% Fronteira Eficiente
CovAtivosRisco=cov(Txret(:,1:NA-1));
[Risco,Retorno,Pesos]=frontcon(MTxretRisco,CovAtivosRisco,20);
% Portifolio Total: Risco e Livre de Risco
% Obtem Grau de Aversao a Risco
h = gcf;
obj=findobj(h,'Tag','GAR');
GAR=exp(get(obj,'Value'));
[RRisk, RReturn, RWts, RFraction, ORisk, OReturn] = ...
    portalloc(Risco,Retorno,Pesos,MTxretLivreRisco,NaN,GAR);
% Grafico
xP = RRisk*RFraction;
yP = MTxretLivreRisco + ...
    ((RReturn - MTxretLivreRisco)/RRisk)*xP;
xRFree = [0 xP RRisk];
yRFree = [MTxretLivreRisco yP RReturn];
hp=plot(xRFree,yRFree,':',Risco,Retorno,'g*', ...
    xRFree(1),yRFree(1),'b*',xRFree(2),yRFree(2),'r*' );
set(hp(1),'LineWidth',3);          
set(hp(2),'LineWidth',3);
set(hp(3),'LineWidth',3);          
set(hp(4),'LineWidth',3);
legend('Portifolio Total','Fronteira Eficiente',0)
xlabel('Risco - Var(Portifolio)')
ylabel('Retorno - E(Portifolio)')

% Preencher campos no GUIDE
h = gcf;
for i=1:(NA-1)
    % Tag do objeto
    TagObj=[ 'w' NAtivosRisco{i}];
    % Pesos do Portifolio de risco
    obj=findobj(h,'Tag',TagObj);
    str=[ num2str(RWts(i)*100,'%2.2f') '%'];
    set(obj,'String',str);
end
obj=findobj(h,'Tag','rtRisco');
str=[ num2str(ORisk*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','rtRetorno');
str=[ num2str(OReturn*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','wRisco');
str=[ num2str(RFraction*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','wRiskfree');
str=[ num2str((1-RFraction)*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','riRisco');
str=[ num2str(RRisk*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','riRetorno');
str=[ num2str(RReturn*100,'%2.2f') '%'];
set(obj,'String',str);

Contact us at files@mathworks.com