function totalvar = optrisk
% Delta-gamma VaR estimation on Portfolio Data
%
% examp: change to ir to input
% var = optrisk1(ir)
%
% var = optrisk1(.5)
% [fname, pname] = uigetfile('*.xls','Select a file with equity data');
fname = 'equity.xls';
if fname==0
return
end
fname= 'D:\Demos\finsem\ukdemos\Risk\riskhedge\equity.xls';
range='a1:j789';
% get equity data
edat = excelget(fname, 1, range);
eprice = cell2mat(edat(2:end, 2:end)); % price data
eret = log(eprice(2:end,:)./eprice(1:end-1,:));
alpha = norminv(0.95,0,1);
% risk free rate
ir = 0.08;
% time to maturity
T = 0.25;
% contract size
csize = 10000;
% daily volatility of returns
sigma = std(eret);
% annualised volatility
annsig = sigma * sqrt(260);
sprice = eprice(end,:);
% Assuming strike price is 2% higher than the current
% underlyings
strike = sprice*1.02;
call = blsprice(sprice,strike,ir,T,annsig,0).*csize;
delta = blsdelta(sprice,strike,ir,T,annsig,0).*csize;
gamma = blsgamma(sprice,strike,ir,T,annsig,0).*csize;
% 3D graphing
asset = 1:9;
del = linspace(min(delta),max(delta),40);
[ASSET,DELTA]=meshgrid(asset,del);
GAMMA = griddata(asset,delta,gamma,ASSET,DELTA,'v4');
surf(ASSET,DELTA,GAMMA)
shading flat
colormap(winter)
xlabel('Assets','color','w')
ylabel('Delta','color','w')
zlabel('Gamma','color','w')
title('Gamma vs. Delta for each Asset','color','w')
set(gcf,'color',[0.3241 0.3241 0.3241])
set(gca,'xdir','reverse','xtick',[0:9],'color','k','xcolor','w','ycolor','w', ...
'zcolor','w','xticklabel',{'0';'1';'2';'3';'4';'5';'6';'7';'8';'9'})
cbar = colorbar;
set(cbar,'ycolor','w')
% current price squared
cpsq = eprice(end,:).^2;
% variance = std.^2
vrnc = sigma.^2;
var = alpha * sqrt(delta.^2.*vrnc.*cpsq + 0.5*(gamma.*vrnc.*cpsq).^2);
totalvar = sum(var);