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');