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_Ponto( )
function GP_Ponto( )
% Ponto
[x,y,button] = ginput(1);
TargetRet = y;

% Recupera Dados
h=gcf;
obj=findobj(h,'Tag','GP');
Num=get(obj,'UserData');
obj=findobj(h,'Tag','RPainel');
ANum=get(obj,'UserData');
% Ativos: Risco e Livre de Risco
NA = size(ANum,2);
NAtivosRisco=ANum(1,1:NA-1);
NAtivoLivreRisco=ANum(1,NA-1);
AtivosRisco=Num(:,1:NA-1);
AtivoLivreRisco=Num(:,NA);
% 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,[],TargetRet);
hold
% Exibe ponto da carteira objetivo
plot(Risco,Retorno,'k*');
legend('Portifolio Total','Fronteira Eficiente','Carteira Objetivo',0)
hold
% Preencher campos no GUIDE
obj=findobj(h,'Tag','riRisco');
str=[ num2str(Risco*100,'%2.2f') '%'];
set(obj,'String',str);
obj=findobj(h,'Tag','riRetorno');
str=[ num2str(Retorno*100,'%2.2f') '%'];
set(obj,'String',str);
% Preenche pesos dos ativos
for i=1:NA-1
    % Tag do objeto
    TagObj=[ 'w' NAtivosRisco{i}];
    % Pesos do Portifolio de risco
    obj=findobj(h,'Tag',TagObj);
    str=[ num2str(Pesos(i)*100,'%2.2f') '%'];
    set(obj,'String',str);
end


% Restaura ButtonDownFcn do Eixo
obj = gca;
set(obj,'ButtonDownFcn','GP_Ponto');

Contact us at files@mathworks.com