function GP_Status( )
% 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);
% Obtem 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 = get(obj,'String');
str = strtok(str,'%');
pesos(i)=str2num(str)*0.01;
end
% Calculo de risco X retorno da carteira
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]=portstats(MTxretRisco,CovAtivosRisco,pesos);
hold
plot(Risco,Retorno,'r*');
legend('Portifolio Total','Fronteira Eficiente','Carteira',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);
% Restaura ButtonDownFcn do Eixo
obj = gca;
set(obj,'ButtonDownFcn','GP_Ponto');