# -*- coding: utf-8 -*- """ @author: turinici 10/11/2022 """ import numpy as np import matplotlib.pyplot as plt from scipy.stats import norm T=1 N=255 dt=T/N M=1000 print("M=",M) S0=100 K=110 mu=0.15 sigmareel=0.2 r=0.05 #construction mouvement brownien par somme cummulative dW= np.sqrt(dt)*np.random.randn(N,M) W= np.zeros((N+1,M)) W[0,:]=0 W[1:,:]=np.cumsum(dW,axis=0) t=np.linspace(0,T,N+1,endpoint=True) #plot plt.figure('brownian') plt.plot(W) # construction du processus de prix S: dS/S = mu*dt + sigma* dWt S= S0*np.exp( (mu-sigmareel**2/2)*t[:,None] + sigmareel*W) plt.figure('S') plt.plot(S) #DELTA HEDGING : t=0 : mise en place du portefeuille de replication cash=np.zeros_like(S)# matrice du meme format que S #Calcul prix initial et vente de call delta=np.zeros((N+1,M)) delta[0,:]=np.heaviside(S0-K,0)#calcul de Delta(t=0) cash[0,:]=cash[0,:]-delta[0,:]*S[0,:]#achat de Delta(0) parts #de sous jacent: mettre en memoire Delta(0) et mettre a jour le cash for jj in range(N):#boucle en temps: cash[jj+1,:]=cash[jj,:]*np.exp(r*dt)#capitalisation du cash delta[jj+1,:]=np.heaviside(S[jj+1,:]-K,0)#recalcul de Delta nouveau cash[jj+1,:] -= (delta[jj+1,:]-delta[jj,:])*S[jj+1,:]#achat ou vente de sous-jacent et mise à jour cash # liquidation du portefeuille de replication cash[-1,:] += delta[-1,:]*S[-1,:] # histograme de la valeur finale du portefeuille c'est a dire # du cash #cash_old=cash plt.figure('cash') plt.hist(cash[-1,:],int(np.sqrt(M))) #plt.hist(cash_old[-1,:])