Hi @Julian,
Calibrating the Heston model with incomplete data can be a complex task, but it is manageable with the right approach. After reviewing the documentation provided by you as shown in the link below
The key to successful calibration lies in effectively handling the missing data while making sure that the calibration process remains robust. So, as I am aware now that it is defined by the following stochastic differential equations. To calibrate the model, you need to prepare the data by creating a matrix that captures the available strikes and maturities. So, I will use interpolation techniques to fill in the missing data points. Below is a detailed example code in MATLAB that demonstrates how to handle the incomplete strike-maturity-price matrix and calibrate the Heston model parameters.
% Define parameters for the Heston model mu = 0.05; % Drift theta = 0.04; % Long-term variance sigma = 0.1; % Volatility of volatility rho = -0.7; % Correlation between asset price and variance S0 = 100; % Initial asset price
% Define the available strikes and maturities strikes = [90, 100, 110]; % Example strikes maturities = [0.1, 0.5, 1.0]; % Example maturities in years
% Create a matrix of call option prices (with some missing data) % Assume we have the following call prices for the given strikes and maturities callPrices = [ 10, NaN, 5; % Prices for maturity 0.1 8, 7, NaN; % Prices for maturity 0.5 NaN, 6, 4 % Prices for maturity 1.0 ];
% Interpolate missing data using linear interpolation [interpStrikes, interpMaturities] = meshgrid(strikes, maturities); interpPrices = fillmissing(callPrices, 'linear', 2); % Interpolate along rows
% Display the interpolated prices
disp('Interpolated Call Prices:');
disp(interpPrices);
% Calibration function (simplified for demonstration) function params = calibrateHestonModel(S0, strikes, maturities, prices) % Placeholder for calibration logic % In practice, you would use optimization techniques to fit the model params = [0.05, 0.04, 0.1, -0.7]; % Example output parameters end
% Call the calibration function calibratedParams = calibrateHestonModel(S0, interpStrikes, interpMaturities, interpPrices);
% Display calibrated parameters
disp('Calibrated Heston Model Parameters:');
disp(calibratedParams);
So, going through the code, you will find out that the parameters for the Heston model are defined, including drift, long-term variance, volatility of volatility, and correlation. The available strikes and maturities are defined, along with a matrix of call option prices that includes missing values (NaN). Then, I used the fillmissing function which is used to perform linear interpolation on the call prices, filling in the missing data points. A placeholder function calibrateHestonModel is defined to simulate the calibration process. In a real-world scenario, this function would implement optimization techniques to fit the model to the data. Finally, the interpolated prices and calibrated parameters are displayed.
Please see attached.

So, by employing interpolation techniques, you can manage the challenges posed by incomplete data in the calibration of the Heston model. Hope this helps. If you have any further questions, please feel free to ask.