{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gKCNWnuUSDOB"
   },
   "source": [
    "# Gaussian processes\n",
    "\n",
    "## Introduction\n",
    "\n",
    "In supervised learning, we often use parametric models $p(\\mathbf{y} \\lvert \\mathbf{X},\\boldsymbol\\theta)$ to explain data and infer optimal values of parameter $\\boldsymbol\\theta$ via maximum likelihood] or [maximum a posteriori](https://de.wikipedia.org/wiki/Maximum_a_posteriori) estimation. If needed we can also infer a full [posterior distribution](https://en.wikipedia.org/wiki/Posterior_probability) $p(\\boldsymbol\\theta \\lvert \\mathbf{X},\\mathbf{y})$ instead of a point estimate $\\boldsymbol{\\hat\\theta}$. With increasing data complexity, models with a higher number of parameters are usually needed to explain data reasonably well. Methods that use models with a fixed number of parameters are called parametric methods. \n",
    "\n",
    "In non-parametric methods, on the other hand, the number of parameters depend on the dataset size. For example, in [Nadaraya-Watson kernel regression](https://en.wikipedia.org/wiki/Kernel_regression), a weight $w_i$ is assigned to each observed target $y_i$ and for predicting the target value at a new point $\\mathbf{x}$ a weighted average is computed: \n",
    "\n",
    "$$f(\\mathbf{x}) = \\sum_{i=1}^{N}w_i(\\mathbf{x})y_i$$\n",
    "\n",
    "$$w_i(\\mathbf{x}) = \\frac{\\kappa(\\mathbf{x}, \\mathbf{x}_{i})}{\\sum_{i'=1}^{N}\\kappa(\\mathbf{x}, \\mathbf{x}_{i'})}$$\n",
    "\n",
    "Observations that are closer to $\\mathbf{x}$ have a higher weight than observations that are further away. Weights are computed from $\\mathbf{x}$ and observed $\\mathbf{x}_i$ with a kernel $\\kappa$. A special case is k-nearest neighbors (KNN) where the $k$ closest observations have a weight $1/k$, and all others have weight $0$. Non-parametric methods often need to process all training data for prediction and are therefore slower at inference time than parametric methods. On the other hand, training is usually faster as non-parametric models only need to remember training data. \n",
    "\n",
    "Another example of non-parametric methods are [Gaussian processes](https://en.wikipedia.org/wiki/Gaussian_process) (GPs). Instead of inferring a distribution over the parameters of a parametric function Gaussian processes can be used to infer a distribution over functions directly. A Gaussian process defines a prior over functions. After having observed some function values it can be converted into a posterior over functions. Inference of continuous function values in this context is known as GP regression but GPs can also be used for classification. \n",
    "\n",
    "A Gaussian process is a [random process](https://en.wikipedia.org/wiki/Stochastic_process) where any point $\\mathbf{x} \\in \\mathbb{R}^d$ is assigned a random variable $f(\\mathbf{x})$ and where the joint distribution of a finite number of these variables $p(f(\\mathbf{x}_1),...,f(\\mathbf{x}_N))$ is itself Gaussian:\n",
    "\n",
    "$$p(\\mathbf{f} \\lvert \\mathbf{X}) = \\mathcal{N}(\\mathbf{f} \\lvert \\boldsymbol\\mu, \\mathbf{K})\\tag{1}\\label{eq1}$$\n",
    "\n",
    "In Equation $(1)$, $\\mathbf{f} = (f(\\mathbf{x}_1),...,f(\\mathbf{x}_N))$, $\\boldsymbol\\mu = (m(\\mathbf{x}_1),...,m(\\mathbf{x}_N))$ and $K_{ij} = \\kappa(\\mathbf{x}_i,\\mathbf{x}_j)$. $m$ is the mean function and it is common to use $m(\\mathbf{x}) = 0$ as GPs are flexible enough to model the mean arbitrarily well. $\\kappa$ is a positive definite *kernel function* or *covariance function*. Thus, a Gaussian process is a distribution over functions whose shape (smoothness, ...) is defined by $\\mathbf{K}$. If points $\\mathbf{x}_i$ and $\\mathbf{x}_j$ are considered to be similar by the kernel the function values at these points, $f(\\mathbf{x}_i)$ and $f(\\mathbf{x}_j)$, can be expected to be similar too. \n",
    "\n",
    "A GP prior $p(\\mathbf{f} \\lvert \\mathbf{X})$ can be converted into a GP posterior $p(\\mathbf{f} \\lvert \\mathbf{X},\\mathbf{y})$ after having observed some data $\\mathbf{y}$. The posterior can then be used to make predictions $\\mathbf{f}_*$ given new input $\\mathbf{X}_*$:\n",
    "\n",
    "$$\n",
    "\\begin{align*}\n",
    "p(\\mathbf{f}_* \\lvert \\mathbf{X}_*,\\mathbf{X},\\mathbf{y}) \n",
    "&= \\int{p(\\mathbf{f}_* \\lvert \\mathbf{X}_*,\\mathbf{f})p(\\mathbf{f} \\lvert \\mathbf{X},\\mathbf{y})}\\ d\\mathbf{f} \\\\ \n",
    "&= \\mathcal{N}(\\mathbf{f}_* \\lvert \\boldsymbol{\\mu}_*, \\boldsymbol{\\Sigma}_*)\\tag{2}\\label{eq2}\n",
    "\\end{align*}\n",
    "$$\n",
    "\n",
    "Equation $(2)$ is the posterior predictive distribution which is also a Gaussian with mean $\\boldsymbol{\\mu}_*$ and $\\boldsymbol{\\Sigma}_*$. By definition of the GP, the joint distribution of observed data $\\mathbf{y}$ and predictions $\\mathbf{f}_*$  is\n",
    "\n",
    "$$\n",
    "\\begin{pmatrix}\\mathbf{y} \\\\ \\mathbf{f}_*\\end{pmatrix} \\sim \\mathcal{N}\n",
    "\\left(\\boldsymbol{0},\n",
    "\\begin{pmatrix}\\mathbf{K}_y & \\mathbf{K}_* \\\\ \\mathbf{K}_*^T & \\mathbf{K}_{**}\\end{pmatrix}\n",
    "\\right)\\tag{3}\\label{eq3}\n",
    "$$\n",
    "\n",
    "With $N$ training data and $N_*$ new input data, $\\mathbf{K}_y = \\kappa(\\mathbf{X},\\mathbf{X}) + \\sigma_y^2\\mathbf{I} = \\mathbf{K} + \\sigma_y^2\\mathbf{I}$ is $N \\times N$, $\\mathbf{K}_* = \\kappa(\\mathbf{X},\\mathbf{X}_*)$ is $N \\times N_*$ and $\\mathbf{K}_{**} = \\kappa(\\mathbf{X}_*,\\mathbf{X}_*)$ is $N_* \\times N_*$. $\\sigma_y^2$ is the noise term in the diagonal of $\\mathbf{K_y}$. It is set to zero if training targets are noise-free and to a value greater than zero if observations are noisy. The mean is set to $\\boldsymbol{0}$ for notational simplicity. The sufficient statistics of the posterior predictive distribution, $\\boldsymbol{\\mu}_*$ and $\\boldsymbol{\\Sigma}_*$, can be computed with<sup>[1][3]</sup>\n",
    "\n",
    "$$\n",
    "\\begin{align*}\n",
    "\\boldsymbol{\\mu_*} &= \\mathbf{K}_*^T \\mathbf{K}_y^{-1} \\mathbf{y}\\tag{4}\\label{eq4} \\\\\n",
    "\\boldsymbol{\\Sigma_*} &= \\mathbf{K}_{**} - \\mathbf{K}_*^T \\mathbf{K}_y^{-1} \\mathbf{K}_*\\tag{5}\\label{eq5}\n",
    "\\end{align*}\n",
    "$$\n",
    "\n",
    "This is the minimum we need to know for implementing Gaussian processes and applying them to regression problems. For further details, please consult the literature in the [References](#References) section. The next section shows how to implement GPs with plain NumPy from scratch, later sections demonstrate how to use GP implementations from [scikit-learn](http://scikit-learn.org/stable/) and [GPy](http://sheffieldml.github.io/GPy/)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iZJ-sh4rSDOF"
   },
   "source": [
    "## Implementation with NumPy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4mctwze1SDOG"
   },
   "source": [
    "Here, we will use the squared exponential kernel, also known as Gaussian kernel or RBF kernel:\n",
    "\n",
    "$$\n",
    "\\kappa(\\mathbf{x}_i,\\mathbf{x}_j) = \\sigma_f^2 \\exp(-\\frac{1}{2l^2}\n",
    "  (\\mathbf{x}_i - \\mathbf{x}_j)^T\n",
    "  (\\mathbf{x}_i - \\mathbf{x}_j))\\tag{6}\n",
    "$$\n",
    "\n",
    "The length parameter $l$ controls the smoothness of the function and $\\sigma_f$ the vertical variation. For simplicity, we use the same length parameter $l$ for all input dimensions (isotropic kernel). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "eurHykLHSDOH"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "def kernel(X1, X2, l=1.0, sigma_f=1.0):\n",
    "    '''\n",
    "    Isotropic squared exponential kernel. Computes \n",
    "    a covariance matrix from points in X1 and X2.\n",
    "    \n",
    "    Args:\n",
    "        X1: Array of m points (m x d).\n",
    "        X2: Array of n points (n x d).\n",
    "\n",
    "    Returns:\n",
    "        Covariance matrix (m x n).\n",
    "    '''\n",
    "    #sqdist = np.sum(X1**2, 1).reshape(-1, 1) + np.sum(X2**2, 1) - 2 * np.dot(X1, X2.T)\n",
    "    sqdist = np.sum(X1**2, axis=1).reshape(-1, 1) + np.sum(X2**2, axis=1) - 2 * np.dot(X1, X2.T)\n",
    "        \n",
    "    return sigma_f**2 * np.exp(-0.5 / l**2 * sqdist)\n",
    "\n",
    "\n",
    "#>>> a = np.linspace(1,6,6).reshape(2,3)\n",
    "#>>> a\n",
    "#array([[ 1.,  2.,  3.],\n",
    "#       [ 4.,  5.,  6.]])\n",
    "#>>> a.shape\n",
    "#(2, 3)\n",
    "#>>> a.reshape(-1)\n",
    "#array([ 1.,  2.,  3.,  4.,  5.,  6.])\n",
    "#>>> a.reshape(-1,1)\n",
    "#array([[ 1.],\n",
    "#       [ 2.],\n",
    "#       [ 3.],\n",
    "#       [ 4.],\n",
    "#       [ 5.],\n",
    "#       [ 6.]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dzePWVCzSDOJ"
   },
   "source": [
    "There are many other kernels that can be used for Gaussian processes. See \\[3\\] for a detailed reference or the scikit-learn documentation for [some examples](http://scikit-learn.org/stable/modules/gaussian_process.html#gp-kernels)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8guS1302SDOJ"
   },
   "source": [
    "### Prior\n",
    "\n",
    "Let's first define a prior over functions with mean zero and a covariance matrix computed with kernel parameters $l=1$ and $\\sigma_f=1$. To draw random functions from that GP we draw random samples from the corresponding multivariate normal. The following example draws three random samples and plots it together with the zero mean and the 95% confidence interval (computed from the diagonal of the covariance matrix)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Kp4XCgOrSDON"
   },
   "source": [
    "### Prediction from noise-free training data\n",
    "\n",
    "To compute the sufficient statistics i.e. mean and covariance of the posterior predictive distribution we implement Equations $(4)$ and $(5)$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "0yrzbi2YSDOO"
   },
   "outputs": [],
   "source": [
    "from numpy.linalg import inv\n",
    "\n",
    "def posterior_predictive(X_s, X_train, Y_train, l=1.0, sigma_f=1.0, sigma_y=1e-8):\n",
    "    '''\n",
    "    Computes the suffifient statistics of the GP posterior predictive distribution \n",
    "    from m training data X_train and Y_train and n new inputs X_s.\n",
    "    \n",
    "    Args:\n",
    "        X_s: New input locations (n x d).\n",
    "        X_train: Training locations (m x d).\n",
    "        Y_train: Training targets (m x 1).\n",
    "        l: Kernel length parameter.\n",
    "        sigma_f: Kernel vertical variation parameter.\n",
    "        sigma_y: Noise parameter.\n",
    "    \n",
    "    Returns:\n",
    "        Posterior mean vector (n x d) and covariance matrix (n x n).\n",
    "    '''\n",
    "    K = kernel(X_train, X_train, l, sigma_f) + sigma_y**2 * np.eye(len(X_train))\n",
    "    K_s = kernel(X_train, X_s, l, sigma_f)\n",
    "    K_ss = kernel(X_s, X_s, l, sigma_f)\n",
    "    K_inv = inv(K)\n",
    "    \n",
    "    # Equation (4)\n",
    "    mu_s = K_s.T.dot(K_inv).dot(Y_train) # optional + np.mean(X_s) for non-zero mean GP\n",
    "\n",
    "    # Equation (5)\n",
    "    cov_s = K_ss - K_s.T.dot(K_inv).dot(K_s)\n",
    "    \n",
    "    return mu_s, cov_s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RROZFHrGSDOP"
   },
   "source": [
    "and apply them to noise-free training data `X_train` and `Y_train`. The following example draws three samples from the posterior predictive and plots them along with the mean, confidence interval and training data. In a noise-free model, variance at the training points is zero and all random functions drawn from the posterior go through the trainig points. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "ScvAho7eSDOP",
    "outputId": "6c1a3f66-d9a6-4268-d19d-a6bd2e99120f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fce5ee2d50>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Noise free training data X_s\n",
    "X = np.arange(-5, 5, 0.2).reshape(-1, 1)\n",
    "\n",
    "X_train = np.array([-4, -3, -2, -1, 1]).reshape(-1, 1)\n",
    "Y_train = np.sin(X_train)\n",
    "\n",
    "# Compute mean and covariance of the posterior predictive distribution\n",
    "mu_s, cov_s = posterior_predictive(X, X_train, Y_train)\n",
    "\n",
    "\n",
    "#samples = np.random.multivariate_normal(mu_s.ravel(), cov_s, 3)\n",
    "\n",
    "# plot \n",
    "X = X.ravel()\n",
    "mu_s = mu_s.ravel()\n",
    "uncertainty = np.sqrt(np.diag(cov_s))\n",
    "    \n",
    "plt.fill_between(X, mu_s + uncertainty, mu_s - uncertainty, alpha=0.1)\n",
    "plt.plot(X, mu_s, label='Mean')# prédiction GPR\n",
    "#for i, sample in enumerate(samples):\n",
    "#    plt.plot(X, sample, lw=1, ls='--', label=f'Sample {i+1}')\n",
    "plt.plot(X_train, Y_train, 'ro')\n",
    "plt.legend()\n",
    "####\n",
    "Y_test = np.sin(X)\n",
    "plt.plot(X, Y_test, 'kx')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "q1v56MAaSDOS"
   },
   "source": [
    "### Prediction from noisy training data\n",
    "\n",
    "If some noise is included in the model, training points are only approximated and the variance at the training points is non-zero."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "id": "2OU5CuuFSDOT",
    "outputId": "665e9c34-b208-43e9-acdf-47c658f1e354"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1fce9dc2350>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "noise = 0.2\n",
    "X = np.arange(-5, 5, 0.1).reshape(-1, 1)\n",
    "\n",
    "# Noisy training data\n",
    "X_train = np.arange(-3, 4, 0.1).reshape(-1, 1)\n",
    "Y_train = np.sin(X_train) + noise * np.random.randn(*X_train.shape)\n",
    "\n",
    "# Compute mean and covariance of the posterior predictive distribution\n",
    "mu_s, cov_s = posterior_predictive(X, X_train, Y_train, sigma_y=noise)\n",
    "\n",
    "samples = np.random.multivariate_normal(mu_s.ravel(), cov_s, 3)\n",
    "\n",
    "X = X.ravel()\n",
    "mu_s = mu_s.ravel()\n",
    "\n",
    "uncertainty = 1.96 * np.sqrt(np.diag(cov_s))\n",
    "    \n",
    "plt.fill_between(X, mu_s + uncertainty, mu_s - uncertainty, alpha=0.1)\n",
    "plt.plot(X, mu_s, label='Mean')\n",
    "#for i, sample in enumerate(samples):\n",
    "#    plt.plot(X, sample, lw=1, ls='--', label=f'Sample {i+1}')\n",
    "plt.plot(X_train, Y_train, 'rx')\n",
    "plt.legend()\n",
    "\n",
    "Y_test = np.sin(X)\n",
    "plt.plot(X, Y_test, 'g', label='True function Sin(x)')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lAG8Gj6ISDOY"
   },
   "source": [
    "### Effect of kernel parameters and noise parameter\n",
    "\n",
    "The following example shows the effect of kernel parameters $l$ and $\\sigma_f$ as well as the noise parameter $\\sigma_y$. Higher $l$ values lead to smoother functions and therefore to coarser approximations of the training data. Lower $l$ values make functions more wiggly with wide confidence intervals between training data points. $\\sigma_f$ controls the vertical variation of functions drawn from the GP. This can be seen by the wide confidence intervals outside the training data region in the right figure of the second row. $\\sigma_y$ represents the amount of noise in the training data. Higher $\\sigma_y$ values make more coarse approximations which avoids overfitting to noisy data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EQf0ihbsSDOd"
   },
   "source": [
    "Optimal values for these parameters can be estimated by maximizing the log marginal likelihood which is given by<sup>[1][3]</sup>\n",
    "\n",
    "$$\n",
    "\\log p(\\mathbf{y} \\lvert \\mathbf{X}) = \n",
    "\\log \\mathcal{N}(\\mathbf{y} \\lvert \\boldsymbol{0},\\mathbf{K}_y) =\n",
    "-\\frac{1}{2} \\mathbf{y}^T \\mathbf{K}_y^{-1} \\mathbf{y} \n",
    "-\\frac{1}{2} \\log \\begin{vmatrix}\\mathbf{K}_y\\end{vmatrix} \n",
    "-\\frac{N}{2} \\log(2\\pi) \\tag{7}\n",
    "$$\n",
    "\n",
    "In the following we will minimize the negative log marginal likelihood w.r.t. parameters $l$ and $\\sigma_f$, $\\sigma_y$ is set to the known noise level of the data. If the noise level is unknown, $\\sigma_y$ can be estimated as well along with the other parameters. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "id": "AEBI_h8iSDOe",
    "outputId": "8d9af034-3647-45e8-ee5f-4e20a2cc2751"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.4310665534573905 0.7918458617759678\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fca02bccd0>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from operator import itemgetter\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from numpy.linalg import cholesky, det, lstsq\n",
    "from scipy.optimize import minimize\n",
    "from functools import partial\n",
    "\n",
    "np.random.seed(777)\n",
    "\n",
    "noise=0.2\n",
    "\n",
    "X = np.arange(-5, 5, 0.2).reshape(-1, 1)\n",
    "# Noisy training data\n",
    "X_train = np.arange(-3, 4, 1).reshape(-1, 1)\n",
    "Y_train = np.sin(X_train) + noise * np.random.normal(0,1,X_train.shape)\n",
    "\n",
    "\n",
    "\n",
    "def nll_fn(X_train, Y_train, noise, theta):\n",
    "    '''\n",
    "    Returns a function that computes the negative log marginal\n",
    "    likelihood for training data X_train and Y_train and given \n",
    "    noise level.\n",
    "    \n",
    "    Args:\n",
    "        X_train: training locations (m x d).\n",
    "        Y_train: training targets (m x 1).\n",
    "        noise: known noise level of Y_train.\n",
    "        naive: if True use a naive implementation of Eq. (7), if \n",
    "               False use a numerically more stable implementation. \n",
    "        \n",
    "    Returns:\n",
    "        Minimization objective.\n",
    "    '''\n",
    "   \n",
    "    # Naive implementation of Eq. (7). Works well for the examples \n",
    "    # in this article but is numerically less stable compared to \n",
    "    # the implementation in nll_stable below.\n",
    "    K = kernel(X_train, X_train, l=theta[0], sigma_f=theta[1]) + noise**2 * np.eye(len(X_train))\n",
    "    likelihood = 0.5 * Y_train.T.dot(inv(K)).dot(Y_train) + 0.5 * np.log(det(K)) + 0.5 * len(X_train) * np.log(2*np.pi)\n",
    "    return likelihood.ravel()\n",
    "\n",
    "    \n",
    "\n",
    "\n",
    "\n",
    "# Minimize the negative log-likelihood w.r.t. parameters l and sigma_f.\n",
    "# We should actually run the minimization several times with different\n",
    "# initializations to avoid local minima but this is skipped here for\n",
    "# simplicity.\n",
    "\n",
    "objective = partial(nll_fn, X_train, Y_train, noise)\n",
    "optima = [minimize(objective,[1, 1], bounds=((1e-5, None), (1e-5, None)),method='L-BFGS-B').x]\n",
    "#optima = [minimize(objective,[1, 1], bounds=((1e-5, None), (1e-5, None)),method='Powell').x]\n",
    "\n",
    "N_restarts=100\n",
    "objective =partial(nll_fn, X_train, Y_train, noise)\n",
    "\n",
    "for iteration in range(N_restarts):\n",
    "    # optima.append(minimize(objective,[np.random.uniform(0.5,1.5,None), np.random.uniform(0.5,1.5,None)], bounds=((1e-5, None), (1e-5, None)),method='L-BFGS-B').x)\n",
    "    optima.append(minimize(objective,[np.random.uniform(0,1,None), np.random.uniform(0,1,None)], bounds=((1e-5, None), (1e-5, None)),method='Powell').x)\n",
    "    lml_values=list(map(itemgetter(1), optima))\n",
    "    l_opt=optima[np.argmin(lml_values)][0]\n",
    "    sigma_f_opt=optima[np.argmin(lml_values)][1]\n",
    "    #print(l_opt)\n",
    "    #print(sigma_f_opt)\n",
    "\n",
    "# Store the optimization results in global variables so that we can\n",
    "# compare it later with the results from other implementations.\n",
    "#l_opt, sigma_f_opt = res.x\n",
    "print(l_opt, sigma_f_opt)\n",
    "\n",
    "# Compute the prosterior predictive statistics with optimized kernel parameters and plot the results\n",
    "mu_s, cov_s = posterior_predictive(X, X_train, Y_train, l=l_opt, sigma_f=sigma_f_opt, sigma_y=noise)\n",
    "\n",
    "#plot \n",
    "Xr = X.ravel()\n",
    "mu_sr = mu_s.ravel()\n",
    "\n",
    "uncertainty = 1.96 * np.sqrt(np.diag(cov_s))\n",
    "plt.fill_between(Xr, mu_sr + uncertainty, mu_sr - uncertainty, alpha=0.1)\n",
    "\n",
    "\n",
    "plt.plot(X,np.sin(X),'k')\n",
    "plt.plot(Xr,mu_sr)\n",
    "\n",
    "plt.plot(X_train, Y_train, 'rx')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lione\\AppData\\Local\\Temp\\ipykernel_10108\\4292420161.py:14: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
      "  Z[i, j] = nll_fn(X_train, Y_train, noise, [L[i, j], Sigmaf[i, j]])\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAyIAAAIjCAYAAAD/Zq9PAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAldZJREFUeJzt3QeYU9XWBuCV6UPvTYogXelNihRBELHiFcSGNMsPIqCiWEBsiAWwINgAy0VQEayACgKiIEVR0StIL9IFhqFNSf5nbUhIZpJMyil77/O9z3OUJCcnJ5Nksr9Zu7g8Ho+HAAAAAAAALJRg5YMBAAAAAAAwBBEAAAAAALAcgggAAAAAAFgOQQQAAAAAACyHIAIAAAAAAJZDEAEAAAAAAMshiAAAAAAAgOUQRAAAAAAAwHIIIgAAAAAAYDkEEQAAhTz++OPkcrlIVh07dqSLLrqowP22bdsmnseMGTMsOS8AAJAPgggAKIkbsNyQXbNmjS2P//PPP4vHf/TRR0Pu8/fff4t9RowYYem5AQAAqABBBAAgBk2bNqW6devSBx98EHKfmTNniv/fcssthj0uB5+TJ08adjwAAAC7IIgAAMTo5ptvpi1bttDKlSuD3s4hhcMKh5ZQjh8/HtVjJiUlUVpaWtTnCgAAIBsEEQDQ1i+//ELdu3enYsWKUZEiRahz585BQ8Nvv/1GHTp0oPT0dKpcuTI99dRTNH36dNGtiscyhAsi/pUPf2vXrqUNGzb49mG33367OI/NmzfTFVdcQUWLFvXd/v3339MNN9xAVatWpdTUVKpSpQoNHz48X/Uj2BiRb775htq1a0clSpQQx69Tpw49/PDDAfucPn2axowZQzVr1vQdf+TIkeJ6f3zsIUOG0EcffUT169cXP5PWrVvT77//Lm5//fXXxTE4DPF4kFA/H37+bdq0EfevXr06TZ06lQrCrwP/jGrUqCGOX6FCBerfvz8dOnQo6M9g06ZNYn9+3sWLF6d+/frRiRMn8h33/fffp5YtW1KhQoWoZMmS1L59e/r6668D9pk/fz5dcsklVLhwYfG69OjRg/74448CzxkAAGKXFMd9AQCkxY1IblhyCOEGd3JysmhEc+N56dKl1KpVK7Hf7t27qVOnTqJhO2rUKNEQfeutt0RjvSDcwObG9ocffkgTJ06kxMRE323ecHLTTTcF3CcnJ4e6desmgsMLL7wgGseMG/7ciL777rupdOnStGrVKnrllVdo165d4rZwz/PKK6+khg0b0hNPPCHOmxvoP/zwg28ft9tNV199NS1fvpzuuOMOqlevnggWfM4bN26kefPmBRyTQ9Fnn31GgwcPFpfHjRsnHoN/jq+99hr93//9Hx0+fJiee+45ERQWL14ccH++jYNWr169qE+fPuLnw88rJSVF7B8KByquMHGg4BDCz+2NN94Q/+cAmTeA8fH5NeDz4zE7/LqVK1eOxo8f79tn7NixIrjw68Q/Hz6Hn376SZxz165dxT7vvfce9e3bV7wufF9+HaZMmSJeIw6z559/fshzBgCAOHgAABQ0ffp0D/8KW716ddDbr732Wk9KSopn8+bNvuv++ecfT9GiRT3t27f3XXfPPfd4XC6X55dffvFdd+jQIU+pUqXE8bdu3Rr2PCZPniz2W7hwoe+63Nxcz3nnnedp3bp1wL59+/YV+z700EP5jnPixIl8140bN06c2/bt233XjRkzRhzDa+LEieLygQMHQp7je++950lISPB8//33AddPnTpV3PeHH37wXceXU1NTA57366+/Lq6vUKGCJyMjw3f9qFGj8v2MOnToIK578cUXfdedPn3a07hxY0+5cuU8WVlZ4jq+D+/Hr2O4n8EHH3wg9lu2bFm+n0H//v0D9r3uuus8pUuX9l3++++/xfPm6/k18ed2u8X/jx075ilRooRn0KBBAbfv3bvXU7x48XzXAwCAcdA1CwC0k5ubK7reXHvttaKbj1fFihVFhYIrAxkZGeK6BQsWiK5HjRs39u1XqlSpgC5V4fTu3VtUW/y7Z3HFhSstoY7B1YG8uAuT/7iRgwcPir/iczbgv8qHwt2S2KeffioqH8FwRYWrIDxehY/r3S699FJx+3fffRewP3dh868CeKtH119/vei2lPd6rmLkHcdy5513+i5zFYIv79+/X3TZCsX/Z3Dq1ClxjhdffLG4zBWPvO66666Ay1wB425c3teWKz38Mxk9ejQlJAR+3XmrK1yFOXLkiKjc+P9suLrFzy/vzwYAAIyDIAIA2jlw4IDoXsNjJfLiBjk3Tnfu3Ckub9++XYx5yCvvdUePHqW9e/f6tn///Vdcz92ouEvP3LlzReOZcSjhxjh3HcqLr+dxKHnt2LFDjHfgEMTjPMqWLSvGrXgfO1wQatu2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33777WK/vNuFF17o2+fxxx/Pd3vdunUteDYAmoQQcAyEEACwHEIOyBJEjh8/To0aNaLJkydHtP9LL71Ee/bs8W07d+6kUqVK0Q033BCwHwcT//2WL19u0jMA0BCqIY6phgBA9D759CNq3q6BNN2yxPm0vSiqQ93avxc9Pf5xg04MQNF1RLp37y62SBUvXlxsXlxBOXz4MPXr1y9gv6SkJKpQoYKh5wpgBFRDFA8hGkE1BGSR68mlNYdW0YFT+6lsWjlqXrolJbrMW1r9odH30dzP54h/JyclU8WKleiaHj3prgGDRfuhoL/kX9HtKupwSaeoHvPWAb2pbp369MjIMWQ0cT7tojufVya+Efq5mlmxQDUEdFrQ8O2336YuXbpQtWrVAq7/+++/RXevtLQ0at26NY0bN46qVq0a8jinT58Wm1dGRoap5w3OpEQIkakaIiNNqiEIISCLr/9ZQE//Ppb2ntrju65CWkV6pMEY6lrpctMe95I2HWjc2OcpKyuLli7/jp54djQlJyXRnQMGF3hfblvwJotYzqdE8RKmnQ8EOuZOp1wsaKjfYPV//vmH5s+fTwMHDgy4vlWrVjRjxgxasGABTZkyhbZu3UqXXHIJHTt2LOSxOKh4qy28ValSxYJnAE6CEKJBNQQhBMBQX+/9moauvjsghLB9p/aK6zmkmCUlJYXKlilH51WqTDf1upXatGpHi5d+K247mnGURj46glq0b0iNWtelgYP70rbtW0N2zXplykS6pld3mvfFJ3Rp97bUrN1FNPzBIZR5PFPc/tBj99GqtSvp3ZnTqE7jamLbtXtn0PPi+7/25ss08tHh1KR1PerUvQ0tWvIN/XvkX7p76ABq0qouXXV9V/r9j19Dds165bUJdM0Nl9O8z+fQpZe3oWZtLqThIwf7zidY1yze77U3XqaRjwynJi3rUKeuF9Oi776mf/89RHff019cd1XPywIeVzzOf7oFnP+M996iS7u19l1+6JHh9H9DB9DUN1+hNh2aUPPW9enVKRMpJyeHxr/wJLVscyG179yc5sydHcOrCDpQNoi88847VKJECbr22msDrueuXjxmpGHDhtStWzf66quv6MiRI/Thhx+GPNaoUaPo6NGjvo3HngA4KoQAAFjcHYsrIR7y5LvNe93T68eK/ayQmppK2TnZvq5b6//8jaZMeotmz/hEnM8d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",
      "text/plain": [
       "<Figure size 1000x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Créer une grille de valeurs pour l et sigmaf\n",
    "l_values = np.linspace(0.001, 3, 100)\n",
    "sigmaf_values = np.linspace(0.001, 2, 100)\n",
    "L, Sigmaf = np.meshgrid(l_values, sigmaf_values)\n",
    "Z = np.zeros_like(L)\n",
    "\n",
    "\n",
    "X_train = np.arange(-3, 4, 1).reshape(-1, 1)\n",
    "Y_train = np.sin(X_train) + noise * np.random.randn(*X_train.shape)\n",
    "\n",
    "# Calculer la log-vraisemblance pour chaque paire (l, sigmaf)\n",
    "for i in range(len(l_values)):\n",
    "    for j in range(len(sigmaf_values)):\n",
    "        Z[i, j] = nll_fn(X_train, Y_train, noise, [L[i, j], Sigmaf[i, j]])\n",
    "\n",
    "# Tracer les contours\n",
    "plt.figure(figsize=(10, 6))\n",
    "cp = plt.contourf(L, Sigmaf, Z, levels=50, cmap='viridis')\n",
    "plt.colorbar(cp)\n",
    "plt.xlabel('l')\n",
    "plt.ylabel('sigmaf')\n",
    "plt.title('Log-Vraisemblance')\n",
    "\n",
    "# Superposer le point optimal\n",
    "plt.scatter(l_opt, sigma_f_opt, color='red', label='Point optimal')\n",
    "# Superposer le point intial\n",
    "plt.scatter(1, 1, color='blue', label='Point initial')\n",
    "plt.legend()\n",
    "\n",
    "# Trouver l'indice du minimum de Z\n",
    "min_index = np.unravel_index(np.argmin(Z), Z.shape)\n",
    "l_min = L[min_index]\n",
    "sigmaf_min = Sigmaf[min_index]\n",
    "\n",
    "# Indice du minimum\n",
    "plt.scatter(l_min, sigmaf_min, color='green', label='Point minimum')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MAGIqCqBSDOi"
   },
   "source": [
    "Note how the true sine wave is approximated much better after parameter optimization.\n",
    "\n",
    "## Libraries that implement GPs\n",
    "\n",
    "This section shows two examples of libraries that provide implementations of GPs. I'll provide only a minimal setup here, just enough for reproducing the above results. For further details please consult the documentation of these libraries.\n",
    "\n",
    "### Scikit-learn\n",
    "\n",
    "Scikit-learn provides a `GaussianProcessRegressor` for implementing [GP regression models](http://scikit-learn.org/stable/modules/gaussian_process.html#gaussian-process-regression-gpr). It can be configured with [pre-defined kernels and user-defined kernels](http://scikit-learn.org/stable/modules/gaussian_process.html#gp-kernels). Kernels can also be composed. The squared exponential kernel is the `RBF` kernel in scikit-learn. The `RBF` kernel only has a `length_scale` parameter which corresponds to the $l$ parameter above. To have a $\\sigma_f$ parameter as well, we have to compose the `RBF` kernel with a `ConstantKernel`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "id": "ZGOgSH7-SDOj",
    "outputId": "39708400-adf2-4dc2-ba6e-195efd8fe8ca"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.2987237243113556 0.8178726157069065\n"
     ]
    },
    {
     "ename": "AssertionError",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
      "\u001b[31mAssertionError\u001b[39m                            Traceback (most recent call last)",
      "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[28]\u001b[39m\u001b[32m, line 19\u001b[39m\n\u001b[32m     17\u001b[39m \u001b[38;5;28mprint\u001b[39m(l,sigma_f)\n\u001b[32m     18\u001b[39m \u001b[38;5;66;03m# Compare with previous results\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m19\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m(np.isclose(l_opt, l))\n\u001b[32m     20\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m(np.isclose(sigma_f_opt, sigma_f))\n\u001b[32m     22\u001b[39m \u001b[38;5;66;03m# Plot the results\u001b[39;00m\n\u001b[32m     23\u001b[39m \u001b[38;5;66;03m#plot_gp(mu_s, cov_s, X, X_train=X_train, Y_train=Y_train)\u001b[39;00m\n",
      "\u001b[31mAssertionError\u001b[39m: "
     ]
    }
   ],
   "source": [
    "from sklearn.gaussian_process import GaussianProcessRegressor\n",
    "from sklearn.gaussian_process.kernels import ConstantKernel, RBF\n",
    "\n",
    "rbf = ConstantKernel(1.0) * RBF(length_scale=1.0)\n",
    "gpr = GaussianProcessRegressor(kernel=rbf, alpha=noise**2)\n",
    "\n",
    "# Reuse training data from previous 1D example\n",
    "gpr.fit(X_train, Y_train)\n",
    "\n",
    "# Compute posterior predictive mean and covariance\n",
    "mu_s, cov_s = gpr.predict(X, return_cov=True)\n",
    "\n",
    "# Obtain optimized kernel parameters\n",
    "l = gpr.kernel_.k2.get_params()['length_scale']\n",
    "sigma_f = np.sqrt(gpr.kernel_.k1.get_params()['constant_value'])\n",
    "\n",
    "print(l,sigma_f)\n",
    "# Compare with previous results\n",
    "assert(np.isclose(l_opt, l))\n",
    "assert(np.isclose(sigma_f_opt, sigma_f))\n",
    "\n",
    "# Plot the results\n",
    "#plot_gp(mu_s, cov_s, X, X_train=X_train, Y_train=Y_train)\n",
    "\n",
    "Xr = X.ravel()\n",
    "mu_sr = mu_s.ravel()\n",
    "\n",
    "uncertainty = 1.96 * np.sqrt(np.diag(cov_s))\n",
    "plt.fill_between(Xr, mu_sr + uncertainty, mu_sr - uncertainty, alpha=0.1)\n",
    "\n",
    "plt.plot(Xr,mu_sr)\n",
    "plt.plot(X,np.sin(X),'k')\n",
    "plt.plot(X_train, Y_train, 'rx')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## GPR and Black-Scholes pricing formula : 1 training input"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy.stats as st\n",
    "import numpy as np\n",
    "import numpy.random as npr\n",
    "from numpy.linalg import cholesky, det, lstsq\n",
    "from scipy.optimize import minimize\n",
    "from functools import partial\n",
    "from numpy.linalg import inv\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def BS_model_path(S0,r,sigma,T,nSteps,nPaths):\n",
    "    \n",
    "    # S0 spot price\n",
    "    # r instantenous interest rate\n",
    "    # sigma volatility\n",
    "    # T maturity\n",
    "    # nSteps number of time steps\n",
    "    # nPaths : number of possible scenarios\n",
    "    dt=T/(nSteps) # time step\n",
    "    Log_returns=(r-sigma**2/2)*dt+ sigma*np.sqrt(dt)*npr.normal(0,1,(nPaths,nSteps)) # brownian increments\n",
    "    \n",
    "    Log_returns=np.concatenate((np.ones((nPaths,1))*np.log(S0),Log_returns),axis=1)\n",
    "    \n",
    "    Log_path=np.cumsum(Log_returns, axis=1)# concatenate with S0\n",
    "    S= np.exp(Log_path) \n",
    "    t=np.matrix(np.linspace(0,T,nSteps+1))\n",
    "    \n",
    "    return t,S\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'S_t')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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NUUOHDiAoUOHihRjeg7YuHFjqd+zf/9+tG/fXjyWGzdujGXLlhn2IGkai6kYP/30k8re3l71ww8/qM6ePat64oknVLVq1VLFxcXpvf+ff/6psrGxUc2dO1d17tw51axZs1R2dnaqM2fOVPuxm/N5Hj9+vGrBggWqkydPqv777z/VpEmTVB4eHqro6OhqP3ZzP9cKUVFRqoCAAFXPnj1Vw4cPr7bjtZTznJWVperYsaNq8ODBqkOHDonzvX//ftWpU6eq/djN+TyvXr1a5eDgIN7TOd65c6fKz89P9cILL1T7sZsS27dvV7355puq9evX03S3asOGDSXePzIyUuXs7Kx68cUXxbXw66+/FtfGHTt2GOwYWexUgk6dOqmmT5+u+TgvL0/l7++v+uijj/Tef/To0aohQ4bofK5z586qJ5980uDHaknnuTC5ubkqNzc31fLlyw14lJZ7run8duvWTfX999+rJk6cyGLHAOd54cKFqkaNGqmys7Or8Sgt7zzTffv27avzObogd+/e3eDHai6gDGJn5syZqpYtW+p8bsyYMaqBAwca7Li4jVVBsrOzcfz4cdEi0d6xRR8fPnxY7/fQ57XvTwwcOLDY+zMVO8+FSU9PR05ODry8vAx4pJZ7rufMmQMfHx9Mnjy5mo7U8s7z5s2b0bVrV9HG8vX1RatWrfDhhx8iLy+vGo/c/M9zt27dxPcora7IyEjRKhw8eHC1HbclcLgGroW8CLSCxMfHiycaeuLRhj4+f/683u+JjY3Ve3/6PFN157kwr776quglF/7jYip/rg8dOoQlS5bg1KlT1XSUlnme6aK7d+9ePPzww+Lie+nSJUybNk2IeEqmZarmPI8fP158X48ePcQ27dzcXDz11FN44403qumoLYPYYq6FtB09IyND+KWqGq7sMGbNxx9/LIyzGzZsEAZFpupISUnBo48+KgzhderUqenDMWvy8/NF9Wzx4sXo0KEDxowZgzfffBOLFi2q6UMzK8g0SxWzb7/9FidOnMD69euxbds2vPfeezV9aEwl4cpOBaEndxsbG8TFxel8nj6uW7eu3u+hz5fn/kzFzrPC/PnzhdjZvXs3WrdubeAjtbxzffnyZVy5ckVMYWhflAlbW1tEREQgODi4Go7c/B/TNIFlZ2cnvk+hefPm4hUytWvs7e0NftyWcJ7feustIeCnTJkiPqaJ2bS0NEydOlWIS2qDMZWnuGuhu7u7Qao6BP/mKgg9udArrD179ug80dPH1FvXB31e+/7Erl27ir0/U7HzTMydO1e8GtuxYwc6duxYTUdrWeeaIhTOnDkjWljK27Bhw9CnTx9xm8Z2map5THfv3l20rhQxSVy4cEGIIBY6VXeeyd9XWNAoApPXSFYdNXItNJj12ULGGmlMcdmyZWJ8burUqWKsMTY2Vnz90UcfVb322ms6o+e2traq+fPni5Hod955h0fPDXCeP/74YzFu+uuvv6pu3rypeUtJSanB/wvzPNeF4Wksw5zna9euiYnCZ555RhUREaHaunWrysfHR/X+++/X4P+F+Z1nek6m87xmzRoxHv3777+rgoODxSQtUzz03EpRH/RGsuKzzz4Tt69evSq+TueYznXh0fNXXnlFXAspKoRHz40cygeoV6+euLjSmOORI0c0X+vVq5d48tdm7dq1qpCQEHF/Gr3btm1bDRy1eZ/n+vXriz+4wm/0RMZU/WNaGxY7hjvPf/31l4iqoIs3jaF/8MEHYuyfqbrznJOTo5o9e7YQOI6OjqqgoCDVtGnTVImJiTV09KbBvn379D7nKueW3tO5Lvw9bdu2Fb8XejwvXbrUoMdoRf8xXN2IYRiGYRimZmHPDsMwDMMwZg2LHYZhGIZhzBoWOwzDMAzDmDUsdhiGYRiGMWtY7DAMwzAMY9aw2GEYhmEYxqxhscMwDMMwjFnDYodhGIZhGLOGxQ7DMAzDMGYNix2GYcyW3r17Y8aMGTV9GAzD1DAsdhiGYRiGMWt4NxbDMGbJpEmTsHz5cp3PRUVFoUGDBjV2TAzD1AwsdhiGMUuSkpIwaNAgtGrVCnPmzBGf8/b2ho2NTU0fGsMw1Yxtdf+DDMMw1YGHhwfs7e3h7OyMunXr1vThMAxTg7Bnh2EYhmEYs4bFDsMwDMMwZg2LHYZhzBZqY+Xl5dX0YTAMU8Ow2GEYxmyhyavw8HBcuXIF8fHxyM/Pr+lDYhimBmCxwzCM2fLyyy+L6asWLVqISaxr167V9CExDFMD8Og5wzAMwzBmDVd2GIZhGIYxa1jsMAzDMAxj1rDYYRiGYRjGrGGxwzAMwzCMWcNih2EYhmEYs4bFDsMwDMMwZg2LHYZhGIZhzBoWOwzDMAzDmDUsdhiGYRiGMWtY7DAMwzAMY9aw2GEYhmEYBubM/wEGnJ87PvClWgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "BS_PATH=BS_model_path(100,0.05,0.2,1,100, 5)\n",
    "\n",
    "plt.plot(BS_PATH[0].T,BS_PATH[1].T)\n",
    "plt.xlabel('t')\n",
    "plt.ylabel('S_t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import scipy.stats as st\n",
    "import numpy as np\n",
    "from numpy.linalg import cholesky, det, lstsq\n",
    "from scipy.optimize import minimize\n",
    "from functools import partial\n",
    "from numpy.linalg import inv\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "def bsformula(cp, s, k, rf, t, v, div):\n",
    "        \"\"\" Price an option using the Black-Scholes model.\n",
    "        cp: +1/-1 for call/put\n",
    "        s: initial stock price\n",
    "        k: strike price\n",
    "        t: expiration time\n",
    "        v: volatility\n",
    "        rf: risk-free rate\n",
    "        div: dividend\n",
    "        \"\"\"\n",
    "\n",
    "        d1 = (np.log(s/k)+(rf-div+0.5*v*v)*t)/(v*np.sqrt(t))\n",
    "        d2 = d1 - v*np.sqrt(t)\n",
    "\n",
    "        optprice = (cp*s*np.exp(-div*t)*st.norm.cdf(cp*d1)) - (cp*k*np.exp(-rf*t)*st.norm.cdf(cp*d2))\n",
    "        delta = cp*st.norm.cdf(cp*d1)\n",
    "        vega  = s*np.sqrt(t)*st.norm.pdf(d1)\n",
    "        gamma= st.norm.pdf(d1)/(s*v*np.sqrt(t))\n",
    "        return optprice, delta, vega, gamma\n",
    "\n",
    "\n",
    "vbsformula=np.vectorize(bsformula)  \n",
    "\n",
    "\n",
    "\n",
    "\n",
    "def European_Price_BS_MC(cp, s, k, rf, t, v, div, M):\n",
    "        \"\"\" Price an option using the Black-Scholes model.\n",
    "        cp: +1/-1 for call/put\n",
    "        s: initial stock price\n",
    "        k: strike price\n",
    "        t: expiration time\n",
    "        v: volatility\n",
    "        rf: risk-free rate\n",
    "        div: dividend\n",
    "        M: Monte Carlo Sample size\n",
    "        \"\"\"\n",
    "\n",
    "        G=npr.normal(0,1,M)\n",
    "    \n",
    "        S=s*np.exp((rf-div - 0.5*v**2)*t+ v*np.sqrt(t)*G)\n",
    "        \n",
    "        if cp==1 :\n",
    "            payoff= np.exp(-rf*t)*np.maximum(S-k,0)\n",
    "        else :    \n",
    "            payoff= np.exp(-rf*t)*np.maximum(k-S,0)\n",
    "            \n",
    "        MC_price=np.mean(payoff)\n",
    "        MC_error= 1.96*np.std(payoff)/np.sqrt(M)\n",
    "        \n",
    "        return MC_price\n",
    "\n",
    "\n",
    "vbsformula=np.vectorize(bsformula)  \n",
    "\n",
    "vEuropean_Price_BS_MC=np.vectorize(European_Price_BS_MC)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kernel(X1, X2, l=1.0, sigma_f=1):\n",
    "    '''\n",
    "    Isotropic squared exponential kernel. Computes \n",
    "    a covariance matrix from points in X1 and X2.\n",
    "    \n",
    "    Args:\n",
    "        X1: Array of m points (m x d).\n",
    "        X2: Array of n points (n x d).\n",
    "\n",
    "    Returns:\n",
    "        Covariance matrix (m x n).\n",
    "    '''\n",
    "    sqdist = np.sum(X1**2, 1).reshape(-1, 1) + np.sum(X2**2, 1) - 2 * np.dot(X1, X2.T)\n",
    "    return sigma_f**2 * np.exp(-0.5 / l**2 * sqdist)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "def posterior_predictive(X_s, X_train, Y_train, l=1.0, sigma_f=1.0, sigma_y=1e-8):\n",
    "    '''\n",
    "    Computes the suffifient statistics of the GP posterior predictive distribution \n",
    "    from m training data X_train and Y_train and n new inputs X_s.\n",
    "    \n",
    "    Args:\n",
    "        X_s: New input locations (n x d).\n",
    "        X_train: Training locations (m x d).\n",
    "        Y_train: Training targets (m x 1).\n",
    "        l: Kernel length parameter.\n",
    "        sigma_f: Kernel vertical variation parameter.\n",
    "        sigma_y: Noise parameter.\n",
    "    \n",
    "    Returns:\n",
    "        Posterior mean vector (n x d) and covariance matrix (n x n).\n",
    "    '''\n",
    "    K = kernel(X_train, X_train, l, sigma_f) + sigma_y**2 * np.eye(len(X_train))\n",
    "    K_s = kernel(X_train, X_s, l, sigma_f)\n",
    "    K_ss = kernel(X_s, X_s, l, sigma_f)\n",
    "    K_inv = np.linalg.inv(K)\n",
    "    \n",
    "    # Equation (4)\n",
    "    mu_s = K_s.T.dot(K_inv).dot(Y_train)\n",
    "\n",
    "\n",
    "    # Equation (5)\n",
    "    cov_s = K_ss - K_s.T.dot(K_inv).dot(K_s)\n",
    "    \n",
    "    return mu_s, cov_s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## On fait varier un seul paramètre Spot S_0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "&&&&&&\n",
      "0.1983124823135312 16.79593537419549\n",
      "*****\n",
      "0.0019470536622198092\n",
      "[6.77905163e-15]\n",
      "[-0.00152256]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fca457dd10>]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAO2pJREFUeJzt3QtwXPV1x/EjWY+VLWsvhiAZ25IWSgoJRDyruNBYwR4Mk5JQaBqoO1iEQkKB2EAIcadgQ2hMoCWG8koyFLvDIw0zNSm0wBBji1BsB0yskJAQSPRwTCSHwEqW7dXDu53zv7orrbQr7dr7uPfu9zOzI2t3JXZZWfvz/5z/+ZfEYrGYAAAAuEhpoR8AAADARAQUAADgOgQUAADgOgQUAADgOgQUAADgOgQUAADgOgQUAADgOgQUAADgOmXiQdFoVN577z2ZPXu2lJSUFPrhAACANOhs2L1798oxxxwjpaWl/gsoGk4WLFhQ6IcBAAAOwa5du2T+/Pn+Cyi6cuI8wZqamkI/HAAAkIb+/n6zwOC8j/suoDhlHQ0nBBQAALwlnfYMmmQBAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAIDrEFAAAChya9askU83Nso3Fi+W3/9e5MYb7Yv++Rvf+IZ8OhSSNS0teX1MnjyLBwAAZC+cbNiwQTq7umRLV5f84tTF8p+9m8xtP/7xYnnttZfMn8859ljJp5JYLBYTD56GGAwGpa+vj8MCAQA43HDS2Zlw/SI5R9qkQ8RcRM4JhWTTb38r+Xz/psQDAECRamtrmxROzPXyUjyczJtpydce+q0p9+QTAQUAgCLU0tIiXV1d095v9/4P5bzzRL7zHckrAgoAAEUYTtrb26Wjo0OqqkJT3neRLJZly0S+9CXJKwIKAABFpqurS8LhsFRUWHLggJZyUocULfc0di6WuXPz+hAJKAAAFNvqSUlJifnz0FBYRKx4v0kq//x/L5ktyPnENmMAAIpES2OjtPf2SjgSkbKykIyMaDDRkDK1RsuSgwcPSj6xggIAQLH0nfTa4aSqJDAaTnT1ZKLEck9jY6MsX7FC1mzZIvlEQAEAoAjmnXR3d5twMmtGQA7EIhKQQJLVE7vcM2tWaCycLF9uvj7fCCgAAPjchg0bzI6defNCsu+gHU4iEklyz7CUl1uyb1+HhEKhgoWTQwooL7/8slxwwQVyzDHHmCabp59+OuF2HUx76623yty5c6WqqkqWLFki77zzTsJ9PvjgA1m2bJmZImdZllxxxRUyMDBw+M8GAABMKu3ojh21e7e9Yyd5OLFXTYaHw+a9ub6+vmDh5JACyr59+6SpqUkeeOCBpLffddddct9998nDDz8s27dvl1mzZsnSpUslEhn7n6Hh5Be/+IW8+OKL8uyzz5rQc9VVVx3eMwEAAEnnnWhAKS11+k0m79ixyz32CovScfRb8txzMknsMOiXb9y4Mf55NBqN1dXVxe6+++74deFwOFZZWRl78sknzedvvfWW+brXXnstfp/nnnsuVlJSEtu9e3da/92+vj7zPfQjAACYbPXq1bFQKGTeL8vLLfNRxPk4dglIwHysqbA/6tfo1+ZCJu/fWe1B0fpWT0+PKes4NIU1NzfL1q1bzef6UZeOzjjjjPh99P6lpaVmxSWZwcFBc8DQ+AsAAJj6EEB9X66rC5myjd0AO7Ep1i736K6e/qGIWIFAwUs7jqwGFA0nqra2NuF6/dy5TT8effTRCbeXlZXJnDlz4veZaO3atSboOJcFCxZk82EDAOAba1paZMO998YPAezpcSbFJpt30mHmoeiuHg0nTbW1hS/teGkXz6pVq8zRzM5l165dhX5IAAC4UltXl3SONsWOSTYp1u5J0XkoumOnqblZtiQ52dgXAaWurs587O3tTbheP3du04979uxJuH1kZMTs7HHuM1FlZaXZ8TP+AgAAEmlpJr2IYZd7Zs+2Q4q2lbpl5SQnAUUTmIaMTZs2xa/TfhHtLVm4cKH5XD9qN/GOHTvi93nppZckGo2aXhUAAHDofSdOaWe6cKLzTvbutbcUNzQ0iNtkfBaPzit59913459rA87OnTtND4k21qxcuVLuuOMOOf74401gueWWW8zMlAsvvNDc/8QTT5TzzjtPrrzySrMVeXh4WK699lq55JJLzP0AAECuwokKS1VVyJxirOFER4e4bfXkkALK66+/Lp/+9Kfjn99www3mo06bW79+vXzta18zs1J0romulJx99tny/PPPSyCge6xtjz/+uAklixcvNrt3Lr74YjM7BQAAZK6trS3NcGLTcKKLCLqw4MZwokp0r7F4jJaNdDePNszSjwIAKPZhbN3d3aaikenX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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from operator import itemgetter\n",
    "import numpy.random as npr\n",
    "\n",
    "from numpy.linalg import cholesky, det, lstsq\n",
    "from scipy.optimize import minimize\n",
    "from functools import partial\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "lb_S = 20   # lower bound on domain\n",
    "ub_S = 200  # upper bound on domain\n",
    "training_number = 70    # Number of training samples\n",
    "testing_number = 1000    # Number of testing samples\n",
    "r=0.04\n",
    "T=1\n",
    "vol=0.2\n",
    "Strike=100\n",
    "div=0\n",
    "noise=1e-2\n",
    "l_opt=1\n",
    "sigma_f_opt=1\n",
    "\n",
    "\n",
    "X_train = np.linspace(0, 1, training_number).reshape(training_number, 1)\n",
    "Y_train = vbsformula(1, X_train*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div)[0]\n",
    "# Y_train = vEuropean_Price_BS_MC(1, X_train*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div, 1000) + noise * npr.normal(0,1,X_train.shape)\n",
    "\n",
    "\n",
    "#X_test = np.random.random(testing_number).reshape(testing_number, 1)\n",
    "X_test = np.linspace(0, 1, testing_number).reshape(testing_number, 1)\n",
    "\n",
    "Y_test = vbsformula(1, X_test*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div)[0]\n",
    "# Y_test = vEuropean_Price_BS_MC(1, X_test*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div, 1000) + noise * npr.normal(0,1,X_test.shape)\n",
    "\n",
    "\n",
    "def nll_fn(X_train, Y_train, noise, theta):\n",
    "    '''\n",
    "    Returns a function that computes the negative log marginal\n",
    "    likelihood for training data X_train and Y_train and given \n",
    "    noise level.\n",
    "    \n",
    "    Args:\n",
    "        X_train: training locations (m x d).\n",
    "        Y_train: training targets (m x 1).\n",
    "        noise: known noise level of Y_train.\n",
    "        naive: if True use a naive implementation of Eq. (7), if \n",
    "               False use a numerically more stable implementation. \n",
    "        \n",
    "    Returns:\n",
    "        Minimization objective.\n",
    "    '''\n",
    "   \n",
    "   \n",
    "    K = kernel(X_train, X_train, l=theta[0], sigma_f=theta[1]) + noise**2 * np.eye(len(X_train))\n",
    "    likelihood = 0.5 * Y_train.T.dot(inv(K)).dot(Y_train) + 0.5 * np.log(det(K)) + 0.5 * len(X_train) * np.log(2*np.pi)\n",
    "    \n",
    "    return likelihood.ravel()\n",
    "\n",
    "    \n",
    "\n",
    "\n",
    "\n",
    "# Minimize the negative log-likelihood w.r.t. parameters l and sigma_f.\n",
    "# We should actually run the minimization several times with different\n",
    "# initializations to avoid local minima but this is skipped here for\n",
    "# simplicity.\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "objective = partial(nll_fn, X_train, Y_train, noise)\n",
    "#res = minimize(objective,[1, 1], bounds=((1e-5, None), (1e-5, None)),method='Powell')\n",
    "optima=[minimize(objective,[1, 1], bounds=((1e-5, None), (1e-5, None)),method='L-BFGS-B').x]\n",
    "\n",
    "N_restarts=100\n",
    "objective =partial(nll_fn, X_train, Y_train, noise)\n",
    "\n",
    "for iteration in range(N_restarts):\n",
    "    optima.append(minimize(objective,[np.random.uniform(0.5,2,None), np.random.uniform(25,55,None)], bounds=((1e-5, None), (1e-5, None)),method='L-BFGS-B').x)\n",
    "    #optima.append(minimize(objective,[np.random.uniform(0,2,None), np.random.uniform(0,2,None)], bounds=((1e-5, None), (1e-5, None)),method='Powell').x)\n",
    "    lml_values=list(map(itemgetter(1), optima))\n",
    "    l_opt=optima[np.argmin(lml_values)][0]\n",
    "    sigma_f_opt=optima[np.argmin(lml_values)][1]\n",
    "\n",
    "\n",
    "   \n",
    "\n",
    "# Store the optimization results in global variables so that we can\n",
    "# compare it later with the results from other implementations.\n",
    "#l_opt, sigma_f_opt = res.x\n",
    "print('&&&&&&')\n",
    "print(l_opt, sigma_f_opt)\n",
    "\n",
    "\n",
    "# Store the optimization results in global variables so that we can\n",
    "# compare it later with the results from other implementations.\n",
    "#l_opt, sigma_f_opt = res.x\n",
    "#print(l_opt, sigma_f_opt)\n",
    "\n",
    "# Compute the prosterior predictive statistics with optimized kernel parameters and plot the results\n",
    "mu_s, cov_s = posterior_predictive(X_test, X_train, Y_train, l=l_opt, sigma_f=sigma_f_opt, sigma_y=noise)\n",
    "\n",
    "\n",
    "Xr = lb_S+(ub_S-lb_S)*X_test.ravel()\n",
    "\n",
    "mu_sr = mu_s.ravel()\n",
    "\n",
    "X_test=lb_S+(ub_S-lb_S)*X_test.ravel()\n",
    "uncertainty = 1.96 * np.sqrt(np.diag(cov_s))\n",
    "\n",
    "plt.fill_between(Xr, mu_sr + uncertainty, mu_sr - uncertainty, alpha=0.1)\n",
    "\n",
    "\n",
    "\n",
    "plt.plot(X_test,mu_s,'b+')\n",
    "\n",
    "plt.plot(lb_S+(ub_S-lb_S)*X_train, Y_train, 'rx')\n",
    "\n",
    "\n",
    "\n",
    "RMSE=np.sqrt(np.mean(((Y_test-mu_s))**2))\n",
    "\n",
    "print('*****')\n",
    "print(RMSE)\n",
    "print(Y_test[3])\n",
    "print(mu_s[3])\n",
    "\n",
    "\n",
    "plt.plot(X_test, Y_test, 'kx')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lione\\AppData\\Local\\Temp\\ipykernel_10108\\1694299544.py:12: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
      "  Z[i, j] = nll_fn(X_train, Y_train, noise, [L[i, j], Sigmaf[i, j]])\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAIjCAYAAAB1STYOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYE5JREFUeJzt3Qd8E/X/x/FPulll7z0UVKaAyBIVBBUH4hYFBXEh04kKKA5A3IqAiOBAURRQ+f9EEQVF9lBBFAcIVfYssyv5Pz5fbWxKZ0Zzl3s9H4+jzeV6uTQld+98vsPl8Xg8AgAAAAB+ivL3BwEAAABAESoAAAAABIRQAQAAACAghAoAAAAAASFUAAAAAAgIoQIAAABAQAgVAAAAAAJCqAAAAAAQEEIFAAAAgIAQKgDAoh599FFxuVxiVeeee640btw43+3+/PNP8zymT59eJMcFACh6hAoAlqcXo3pRunr16rA8/tq1a83jP/LII7lu89tvv5lthg0bVqTHBgCAFRAqACAfZ555pjRq1Ejee++9XLd59913zdcbb7wxaI+rIeb48eNB2x8AAKFCqACAAujVq5ds3rxZli9fnuP9Gjg0eGgAyc3Ro0cL9ZgxMTGSkJBQ6GMFAKCoESoARIR169bJRRddJImJiVKyZEnp3LlzjgHgxx9/lE6dOkmxYsWkRo0a8sQTT8i0adNM0yVt+59XqMhakchqzZo1smnTJu826uabbzbH8ccff8jFF18spUqV8t7/7bffytVXXy21atWS+Ph4qVmzpgwdOvSkqkROfSoWLFggHTp0kDJlypj9N2zYUB566CGfbVJSUmTUqFHSoEED7/7vv/9+sz4r3ffdd98ts2bNktNPP938Ttq2bSvr168390+ePNnsQ4ON9p/I7fejz79du3bm5+vWrSuTJk2S/OjroL+jevXqmf1XqVJF+vbtK/v27cvxd/D777+b7fV5ly5dWm655RY5duzYSft955135KyzzpLixYtL2bJl5ZxzzpEvvvjCZ5vPPvtMOnbsKCVKlDCvS/fu3eWnn37K95gBALmLyeM+ALAFvSDUi0QNFHrxHBsbay6I9UJ48eLF0qZNG7Pd33//Leedd565SB0+fLi5qHz99dfNhXd+9GJZL5w/+OADef755yU6Otp7X2bQuOGGG3x+Jj09Xbp162ZCwDPPPGMudJVexOsF8Z133inly5eXlStXyssvvyx//fWXuS+v53nJJZdI06ZNZfTo0ea49WL7u+++827jdrvlsssukyVLlshtt90mp512mgkJesy//vqrzJ0712efGnA++eQTGTBggLk9ZswY8xj6e3z11VflrrvukgMHDsjTTz9tLvq/+uorn5/X+zQ0XXPNNXL99deb348+r7i4OLN9bjQcaeVHw4EGCn1ur732mvmqYTB7mNL962ugx6d9XPR1q1SpkowbN867zWOPPWZCiL5O+vvRY1ixYoU55q5du5pt3n77benTp495XfRn9XWYOHGieY00mNapUyfXYwYA5MEDABY3bdo0j75drVq1Ksf7e/To4YmLi/P88ccf3nXbt2/3lCpVynPOOed41w0cONDjcrk869at867bt2+fp1y5cmb/W7ZsyfM4JkyYYLb7/PPPvesyMjI81atX97Rt29Zn2z59+phtH3zwwZP2c+zYsZPWjRkzxhzb1q1bvetGjRpl9pHp+eefN7f37NmT6zG+/fbbnqioKM+3337rs37SpEnmZ7/77jvvOr0dHx/v87wnT55s1lepUsWTnJzsXT98+PCTfkedOnUy65599lnvupSUFE/z5s09lSpV8qSmppp1+jO6nb6Oef0O3nvvPbPdN998c9LvoG/fvj7bXnHFFZ7y5ct7b//222/meet6fU2ycrvd5uvhw4c9ZcqU8fTv39/n/p07d3pKly590noAQMHR/AmArWVkZJjmLT169DBNaTJVrVrVVA70E/vk5GSzbv78+aZ5T/Pmzb3blStXzqfZUl6uvfZaUwXJ2gRKKyFaAcltH/qpfXbaTChrP4u9e/eaT9f1Ol8/Lc+NNv1RH3/8salI5EQrHVqd0P4dut/M5fzzzzf3f/311z7bazOxrJ/OZ1Z1rrzyStM0KPt6rS5k7/dx++23e29rdUBv79692zSLyk3W38GJEyfMMZ599tnmtlYisrvjjjt8bmtlSptKZb62WoHR38nIkSMlKsr31JZZ9dDqyMGDB01FJevvRqtO+vyy/24AAAVHqABga3v27DFNWLRvQXZ6ca0XmklJSeb21q1bTR+B7LKvO3TokOzcudO77N+/36zXpkrabGbOnDnmQlhpwNALa22ek52u134b2W3bts30D9BAo/0iKlasaPp5ZD52XqGmffv2cuutt0rlypXluuuuM82N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59myZYtn9uzZngoVKnjuv/9+7za83vYetW/dunVm0cvS5557zny/devWAr+2F154oadFixaeFStWeJYsWWJGAbz++uvD+KyciVCBiKRvTDkt06ZN826jb0h33XWXp2zZsuaC5IorrjDBA5EZKni9I8unn37qady4sRlaslGjRp7XXnvN534dinLEiBGeypUrm206d+7s2bRpU9iOF/5LTk42/5f1Q4GEhARPvXr1PA8//LAnJSXFuw2vt319/fXXOZ6vNUwW9LXdt2+fCRElS5b0JCYmem655RYTVlC0XPpPUVZGAAAAAEQW+lQAAAAACAihAgAAAEBACBUAAAAAAkKoAAAAABAQQgUAAACAgBAqAAAAAASEUAEAAAAgIIQKAAAAAAEhVABABDr33HNlyJAh4T4MAIBDECoAAAAABIRQAQAAACAghAoAAAAAASFUAAAAAAgIoQIAAABAQAgVAAAAAAJCqAAAAAAQEEIFAAAAgIAQKgAAAAAEhFABAAAAICAuj8fjCWwXAAAAAJyMSgUAAACAgBAqAAAAAASEUAEAAAAgIIQKAAAAAAEhVAAAAAAICKECAAAAQEAIFQAAAAACQqgAAAAAEBBCBQAAAICAECoAAAAABIRQAQAAAEAC8f+UL7FAhMEbzQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "l_values = np.linspace(0.001, 100, 100)\n",
    "sigmaf_values = np.linspace(0.001, 100, 100)\n",
    "L, Sigmaf = np.meshgrid(l_values, sigmaf_values)\n",
    "Z = np.zeros_like(L)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Calculer la log-vraisemblance pour chaque paire (l, sigmaf)\n",
    "for i in range(len(l_values)):\n",
    "    for j in range(len(sigmaf_values)):\n",
    "        Z[i, j] = nll_fn(X_train, Y_train, noise, [L[i, j], Sigmaf[i, j]])\n",
    "# Tracer les contours\n",
    "plt.figure(figsize=(10, 6))\n",
    "cp = plt.contourf(L, Sigmaf, Z, levels=50, cmap='viridis')\n",
    "plt.colorbar(cp)\n",
    "plt.xlabel('l')\n",
    "plt.ylabel('sigmaf')\n",
    "plt.title('Log-Vraisemblance')\n",
    "\n",
    "# Superposer le point optimal\n",
    "plt.scatter(l_opt, sigma_f_opt, color='red', label='Point optimal')\n",
    "# Superposer le point intial\n",
    "plt.scatter(1, 1, color='blue', label='Point initial')\n",
    "plt.legend()\n",
    "\n",
    "# Trouver l'indice du minimum de Z\n",
    "min_index = np.unravel_index(np.argmin(Z), Z.shape)\n",
    "l_min = L[min_index]\n",
    "sigmaf_min = Sigmaf[min_index]\n",
    "\n",
    "# Indice du minimum\n",
    "plt.scatter(l_min, sigmaf_min, color='green', label='Point minimum')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Apprendre le Delta "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lione\\AppData\\Local\\Temp\\ipykernel_10108\\1417587221.py:18: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
      "  K_prime[i, j] = (1.0/(l_opt**2)) * (X_train[j] - X_test[i]) * K_test_train[i, j]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.008490144161493485\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fca46c5d10>]"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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MgIAAGxFGAEAALYijAAAAFsRRgAAgK0IIzEsXLhQxo8fb1Z8HTRokFx33XWybdu2iGMuvfRSsxps+OWWW26RbFdVVdXpdZ111lmhx5uamuT73/++nHDCCdK3b1+ZOnWq7Nu3T7JdeXl5p9etF32tTnu///znP8s111xjVkTU1/HSSy9FPK497fPnz5ehQ4dKr169ZPLkyfKPf/wj4pjPP/9cvva1r5kFkvr37y/f/va35fDhw5LNr72lpUVuv/12Oeecc6RPnz7mmGnTppnVn7v7Wbn//vslm9/zb37zm51e01VXXeX491zF+nevlwcffDCr3/OFCXyOJfL7fMeOHXL11VdL7969zZ/zk5/8RFpbW5N+voSRGN544w3zBq1fv15effVV80vqyiuvlMbGxojjZs6cKXv27Aldfv7zn4sT/NM//VPE63rzzTdDj82ePVv+93//V5577jnz96S/qK+//nrJdhs3box4zfq+q3/913913PutP8ejR4+WpUuXxnxcX9cvf/lLWbZsmWzYsMF8ME+ZMsX84rLoh9L//d//mb+nP/zhD+YX/ne+8x3J5td+5MgR2bx5s8ybN89cv/DCC+aX97XXXtvp2HvuuSfiZ+HWW2+VbH7PlYaP8Nf0zDPPRDzuxPdchb9mvSxfvtyEDf1gzub3/I0EPse6+33u9/tNEGlubpa1a9fKr3/9a3nyySfNf1aSTqf2omv79+/X6c/BN954I3TfJZdcErztttuCTrNgwYLg6NGjYz5WW1sbzM/PDz733HOh+7Zu3Wr+btatWxd0En1vTz311GAgEHD0+63v3Ysvvhi6ra93yJAhwQcffDDifS8sLAw+88wz5vYHH3xgnrdx48bQMX/84x+DLpcruGvXrmC2vvZY3n77bXPcp59+GrrvpJNOCi5evDiYrWK97unTpwf/+Z//Oe5zcuk917+Hyy+/POK+bH/PY32OJfL7/JVXXgm63e7g3r17Q8c88sgjQa/XG/T5fMFkojKSgLq6OnM9cODAiPt/85vfSElJiYwaNUrmzp1r/mflBFqS15LmKaecYv43pGU6tWnTJpOutWxv0SGcESNGyLp168Qp9H8BTz31lHzrW9+K2JjRqe93uO3bt8vevXsj3mPdV6KioiL0Huu1lunHjRsXOkaP1z2ktJLitH/7+jOgrzeclui1tH3eeeeZcn4qytbptmbNGlOGP/PMM2XWrFny2WefhR7LlfdchyhefvllMwQVLdvf87qoz7FEfp/rtQ5bDh48OHSMVkl1Yz2tkiVTVmyUZ/eOwT/60Y9k0qRJ5kPIctNNN8lJJ51kPrTfffddM9asJV0t7WYz/dDRMpz+QtJS5N133y0XXXSRvP/+++ZDqqCgoNMvZv1B1cecQseUa2trzTi609/vaNb7GP7Lx7ptPabX+qEVLi8vz/ySc9LPgQ5L6ft84403Rmwe9sMf/lDOP/9883q1dK3BVP+tLFq0SLKVDtFoef7kk0+Wjz/+WO6880750pe+ZD6MPB5PzrznOgyhPRbRQ8/Z/p4HYnyOJfL7XK9j/S6wHksmwkg3dMxNP4jD+yZU+FipJkdt9rviiivMP+RTTz1VspX+ArKce+65Jpzoh/Bvf/tb08yYCx5//HHz96DBw+nvN2LT/zH+27/9m2nmfeSRRyIemzNnTsS/Ef2F/t3vftc0DGbrMuI33HBDxM+3vi79udZqif6c5wrtF9FqcFFRkaPe8+/H+RzLJAzTdOEHP/iBadR6/fXXpbS0tMtj9UNbffTRR+IkmprPOOMM87qGDBlihjC0ahBd2tTHnODTTz+V1157TW6++eacfL+t9zG6oz78Pdbr/fv3RzyuJWudbeGEnwMriOjPgjb+dbeluv4s6Ouvrq4Wp9AhWh2StH6+nf6eq7/85S+m2tndv/1se89/EOdzLJHf53od63eB9VgyEUZi0P8N6Rv44osvyurVq03psjtbtmwx1/o/ZifRqXv6v399XWPHjpX8/HxZtWpV6HH9x6s9JRMmTBAneOKJJ0w5WjvIc/H91p91/SUT/h7r+LD2BVjvsV7rLzAdc7bovxMtBVshLduDiPZNaSjVHoHu6M+C9k5ED2Nks507d5qeEevn28nveXhFVH/H6cwbJ7znwW4+xxL5fa7X7733XkQQtQL62WefnfQTRpRZs2YFi4uLg2vWrAnu2bMndDly5Ih5/KOPPgrec889wXfeeSe4ffv24P/8z/8ETznllODFF18czHb//u//bl63vq633norOHny5GBJSYnpxFa33HJLcMSIEcHVq1eb1z9hwgRzcQK/329e2+233x5xv9Pe74aGhuBf//pXc9FfAYsWLTJfWzNG7r///mD//v3N63z33XfN7IKTTz45ePTo0dCfcdVVVwXPO++84IYNG4Jvvvlm8PTTTw/eeOONwWx+7c3NzcFrr702WFpaGtyyZUvEv31r5sDatWvNrAp9/OOPPw4+9dRTwRNPPDE4bdq0YLa+bn3sxz/+sZlBoT/fr732WvD8888372lTU5Oj33NLXV1dsHfv3mamSLRsfc9ndfM5lsjv89bW1uCoUaOCV155pXn9K1euNK997ty5ST9fwkgM+gMb6/LEE0+Yx3fs2GE+iAYOHGimPJ522mnBn/zkJ+YHOttVVlYGhw4dGiwoKAgOHz7c3NYPY4t+IH3ve98LDhgwwPzj/Zd/+RfzA+4Ef/rTn8z7vG3btoj7nfZ+v/766zF/vnV6pzW9d968ecHBgweb13vFFVd0+jv57LPPzAdR3759zTS/GTNmmF/62fza9YM43r99fZ7atGlTsKKiwvySLyoqCo4cOTJ43333RXxoZ9vr1g8n/bDRDxmd6qnTWGfOnBkxndOp77nlV7/6VbBXr15mumu0bH3PpZvPsUR/n1dXVwe/9KUvmb8f/Y+p/oe1paUl6efraj9pAAAAW9AzAgAAbEUYAQAAtiKMAAAAWxFGAACArQgjAADAVoQRAABgK8IIAACwFWEEAADYijACAABsRRgBAAC2IowAAABbEUYAAIDY6f8DiHK34CUuUXgAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy as sp\n",
    "\n",
    "# Delta GPR\n",
    "K_prime = np.zeros([len(X_test), len(X_train)])\n",
    "\n",
    "X_test = np.linspace(0,1,testing_number).reshape(testing_number, 1)\n",
    "\n",
    "K = kernel(X_train, X_train, l=l_opt, sigma_f=sigma_f_opt) + noise * np.eye(training_number)\n",
    "\n",
    "K_test_train=kernel(X_test, X_train, l=l_opt, sigma_f=sigma_f_opt)\n",
    "\n",
    "K_inv = np.linalg.inv(K)\n",
    "\n",
    "\n",
    "for i in range(len(X_test)):\n",
    "    for j in range(len(X_train)):\n",
    "     \n",
    "        K_prime[i, j] = (1.0/(l_opt**2)) * (X_train[j] - X_test[i]) * K_test_train[i, j]\n",
    "        # (1/(l_opt**2)) * (X_train[i] - X_test[j]) * K_test_train[i, j] * K_inv[j, j] * Y_train[i]\n",
    "        \n",
    "\n",
    "\n",
    "\n",
    "# On fait par Cholesky au lieu d'inverser\n",
    "K_y = K + np.eye(training_number) * noise\n",
    "#L = sp.linalg.cho_factor(K_y)\n",
    "#alpha_p = sp.linalg.cho_solve(np.transpose(L), Y_train)\n",
    "\n",
    "#Delta_GPR= np.dot(K_prime, alpha_p)/ (S_ub - S_lb)\n",
    "\n",
    "Delta_GPR= np.dot(K_prime, np.linalg.solve(K_y, Y_train))/ (ub_S - lb_S)\n",
    "\n",
    "#Delta_GPR=np.dot(K_prime, alpha_p)/ (ub_S - lb_S)\n",
    "\n",
    "\n",
    "\n",
    "Delta_test = vbsformula(1, X_test*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div)[1]\n",
    "\n",
    "\n",
    "RMSE_Delta=np.sqrt(np.mean(((Delta_test-Delta_GPR))**2))\n",
    "\n",
    "print(RMSE_Delta)\n",
    "\n",
    "\n",
    "plt.plot(lb_S+(ub_S-lb_S)*X_test,Delta_test,'xr')\n",
    "plt.plot(lb_S+(ub_S-lb_S)*X_test,Delta_GPR,'x')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Apprendre le gamma"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lione\\AppData\\Local\\Temp\\ipykernel_10108\\448484518.py:19: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
      "  K_prime[i, j] = (1.0/(l_opt**2)) * (X_train[j] - X_test[i]) * K_test_train[i, j]\n",
      "C:\\Users\\lione\\AppData\\Local\\Temp\\ipykernel_10108\\448484518.py:20: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
      "  K_second[i,j]= (-1.0/(l_opt**2)) * K_test_train[i, j] + (1.0/(l_opt**4)) * (X_train[j] - X_test[i])**2 * K_test_train[i, j]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1fca0f74910>]"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import scipy as sp\n",
    "\n",
    "# Delta GPR\n",
    "K_prime = np.zeros([len(X_test), len(X_train)])\n",
    "K_second = np.zeros([len(X_test), len(X_train)])\n",
    "\n",
    "X_test = np.linspace(0,1,testing_number).reshape(testing_number, 1)\n",
    "\n",
    "K = kernel(X_train, X_train, l=l_opt, sigma_f=sigma_f_opt) + noise * np.eye(training_number)\n",
    "\n",
    "K_test_train=kernel(X_test, X_train, l=l_opt, sigma_f=sigma_f_opt)\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "for i in range(len(X_test)):\n",
    "    for j in range(len(X_train)):\n",
    "     \n",
    "        K_prime[i, j] = (1.0/(l_opt**2)) * (X_train[j] - X_test[i]) * K_test_train[i, j]\n",
    "        K_second[i,j]= (-1.0/(l_opt**2)) * K_test_train[i, j] + (1.0/(l_opt**4)) * (X_train[j] - X_test[i])**2 * K_test_train[i, j]\n",
    "\n",
    "\n",
    "\n",
    "# On fait par Cholesky au lieu d'inverser\n",
    "K_y = K + np.eye(training_number) * noise\n",
    "#L = sp.linalg.cho_factor(K_y)\n",
    "#alpha_p = sp.linalg.cho_solve(np.transpose(L), Y_train)\n",
    "\n",
    "\n",
    "\n",
    "Gamma_GPR= np.dot(K_second, np.linalg.solve(K_y, Y_train))/ (ub_S - lb_S)**2\n",
    "\n",
    "\n",
    "Gamma_test = vbsformula(1, X_test*(ub_S-lb_S)+lb_S, Strike, r, T, vol, div)[3]\n",
    "\n",
    "\n",
    "\n",
    "RMSE_Gamma= np.sqrt(np.mean(((Gamma_test-Gamma_GPR))**2))\n",
    "\n",
    "\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(lb_S+(ub_S-lb_S)*X_test,Gamma_test,'xr')\n",
    "plt.plot(lb_S+(ub_S-lb_S)*X_test,Gamma_GPR,'x')"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "Copie de gaussian_processes.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
