function PlotVisual(Date, opt_number, Params_EXP, Moneyness_range, Skewness, Kurtosis, MatrixIV, Volumes, expansion)
% Plot of the volumes depending on moneyness level
figure()
bar(-8:5,Volumes./sum(Volumes))
title('Volumes Traded for Selected Options only')
xlabel('Moneyness')
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of average IV smile on common region
meanIV_Mkt = mean(MatrixIV.Mkt);
meanIV_EXP = mean(MatrixIV.EXP);
meanIV_BSM = mean(MatrixIV.BSM);
xx = -8:1/64:5;

figure()
plot(xx(1:8:end),meanIV_Mkt(1:8:end),'.','Markersize',22)
hold on
grid on
plot(xx,meanIV_EXP,'LineWidth',1.2)
plot(xx,meanIV_BSM,'--','LineWidth',1.2)
title('Average option pricing fit across days')
xlabel('Moneyness')
ylabel('Implied Volatility')
legend('Market',expansion,'BSM')
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of average (smoothed) IV smile on the largest region
meanIV_Mkt = mean(MatrixIV.Mkt,'omitmissing');
meanIV_EXP = mean(MatrixIV.EXP,'omitmissing');
meanIV_BSM = mean(MatrixIV.BSM,'omitmissing');

% Smoothing technique
bandwidth = 1;  % for SPX
%bandwidth = 0.5;  % for DAX and Euro Stoxx 50
first = find(~isnan(meanIV_Mkt), 1);
last = find(~isnan(meanIV_Mkt), 1, 'last');
xq = xx(first:last);

smoothed_IV_Mkt = zeros(size(xq));
smoothed_IV_EXP = zeros(size(xq));
smoothed_IV_BSM = zeros(size(xq));

for i = 1:length(xq)
    weights = exp(-0.5 * ((xq - xq(i)) / bandwidth).^2);       % Gaussian kernel
    weights = weights / sum(weights);   % Normalized weights
    smoothed_IV_Mkt(i) = sum(weights .* meanIV_Mkt(first:last));
    smoothed_IV_EXP(i) = sum(weights .* meanIV_EXP(first:last));
    smoothed_IV_BSM(i) = sum(weights .* meanIV_BSM(first:last));
end

figure()
[x,ii] = intersect(xq,xx(1:8:end));
plot(x, smoothed_IV_Mkt(ii),'.','Markersize',22)
hold on
grid on
plot(xq,smoothed_IV_EXP,'LineWidth',1.2)
plot(xq,smoothed_IV_BSM,'--','LineWidth',1.2)
title('Average (smoothed) option pricing fit across days')
xlabel('Moneyness')
ylabel('Implied Volatility')
xlim([x(1)-0.5, x(end)+0.5])
legend('Market',expansion,'BSM')
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of the number of options considered over time
avg_opt_number = mean(opt_number);
figure()
plot(categorical(Date),opt_number,'LineWidth',1.2)
hold on
yline(avg_opt_number,'--','LineWidth',1.2)
title('Number of options')
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of the moneyness range over time
figure()
plot(categorical(Date),Moneyness_range(:,1),'LineWidth',1.2)
hold on
grid on
plot(categorical(Date),Moneyness_range(:,2),'LineWidth',1.2)
fill([categorical(Date); flipud(categorical(Date))], ...
     [Moneyness_range(:, 1); flipud(Moneyness_range(:, 2))], ...
     'k', 'FaceAlpha', 0.1, 'EdgeColor', 'none')
title('Moneyness range')
ylabel('Standardized moneyness')
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of the main characteristics over time
figure()
subplot(3,1,1)
plot(categorical(Date),Params_EXP(:,3),'LineWidth',1.2)
grid on
title('Spot volatility')
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)
subplot(3,1,2)
plot(categorical(Date),Params_EXP(:,1),'LineWidth',1.2)
grid on
title('Spot leverage')
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)
subplot(3,1,3)
plot(categorical(Date),Params_EXP(:,2),'LineWidth',1.2)
grid on
title('Spot vol-of-vol')
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

% Plot of skewness and kurtosis metrics
figure()
subplot(1,2,1)
plot(categorical(Date),Skewness.Mkt,'LineWidth',1.2)
hold on
grid on
plot(categorical(Date),Skewness.EXP,'--','LineWidth',1.2)
title('Skewness: IV^{call} - IV^{put}')
legend('Market',expansion)
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

subplot(1,2,2)
plot(categorical(Date),Kurtosis.Mkt, 'LineWidth',1.2)
hold on
grid on
plot(categorical(Date),Kurtosis.EXP,'--','LineWidth',1.2)
title('Kurtosis: IV^{call} + IV^{put} - 2IV^{atm}')
legend('Market',expansion)
set(gca, 'XTick', categorical(Date(3:5:30)))
set(findall(gca,'Type','Line'),'Linewidth',2)
set(gca,'Fontsize',16)

end