Financial Toolbox 3.7
Call Option Sensitivity Measures (portfolio of options)
Financial Toolbox™ Graphics Example 3
This demo plots gamma as a function of price and time for a portfolio of 10 Black-Scholes options. The plot shows a three-dimensional surface. For each point on the surface, the height (z-value) represents the sum of the gammas for each option in the portfolio weighted by the amount of each option. The x-axis represents changing price, and the y-axis represents time. The plot adds a fourth dimension by showing delta as surface color. This has applications in hedging.
Contents
Set Up
if ~exist('normpdf') msgbox('The Statistics Toolbox is required to run this demo.','Product dep endency') return end
Set Up a Portfolio of Options on a Single Stock
% Range of stock prices for sensitivity analysis range = 20:90; plen = length(range); % Basic information for each option exprice = [75 70 50 55 75 50 40 75 60 35]; rate = 0.1*ones(10,1); time = [36 36 36 27 18 18 18 9 9 9]; sigma = 0.35*ones(10,1); % Portfolio weights numopt = 1000*[4 8 3 5 5.5 2 4.8 3 4.8 2.5]; zval = zeros(36, plen); color = zeros(36, plen);
Loop Over Each Option in the Portfolio
Calculate "Greeks" gamma and delta
for i = 1:10 pad = ones(time(i),plen); newr = range(ones(time(i),1),:); t = (1:time(i))'; newt = t(:,ones(plen,1)); % Calculate gammas zval(36-time(i)+1:36,:) = zval(36-time(i)+1:36,:) ... + numopt(i) * blsgamma(newr, exprice(i)*pad, ... rate(i)*pad, newt/36, sigma(i)*pad); % Calculate deltas color(36-time(i)+1:36,:) = color(36-time(i)+1:36,:) ... + numopt(i) * blsdelta(newr, exprice(i)*pad, ... rate(i)*pad, newt/36, sigma(i)*pad); end
Plot Sensitivities of a Portfolio of Options
- Height is gamma (second derivative of option price with respect to stock price)
- Color is delta (first derivative of option price with respect to stock price)
figure('NumberTitle', 'off', ... 'Name', 'Call Option Portfolio Sensitivity'); mesh(range, 1:36, zval, color); view(60,60); set(gca, 'xdir','reverse', 'tag', 'mesh_axes_3'); axis([20 90 0 36 -inf inf]); title('Call Option Portfolio Sensitivity'); xlabel('Stock Price ($)'); ylabel('Time (months)'); zlabel('Gamma'); set(gca, 'box', 'on'); cbx = colorbar('horiz'); apos = get(gca,'Position'); cpos = get(cbx,'Position'); set(cbx,'Position',[cpos(1) .075 cpos(3) cpos(4)]) set(gca,'Position',[apos(1) .25 apos(3) .68])
Store