sigma = ul.fnp(np.sqrt(np.diag(Cov)))

    ## Plot the results
    gl.plot_timeRegression(x_grid,
                           y_pred,
                           sigma,
                           dates,
                           timeSeries,
                           sigma_eps,
                           labels=["GP own implementation", "Time", "Price"],
                           nf=1)

    optflag = 1
    if (optflag):
        ### Optimize the parameters and do it again ####
        xopt = gp.optimize_parameters(sigma_0, l, sigma_eps)
        sigma_0, l, sigma_eps = xopt
        gp.fit(dates,
               timeSeries,
               kernel=GPown.compute_Kernel,
               params=dict([["l", l], ["sigma_0", sigma_0]]),
               sigma_eps=sigma_eps)
        ## Generate a Validation set and obtain the regressed values !
        y_pred, Cov = gp.predict(x_grid)
        sigma = ul.fnp(np.sqrt(np.diag(Cov)))
        gl.plot_timeRegression(x_grid,
                               y_pred,
                               sigma,
                               dates,
                               timeSeries,
                               sigma_eps,
           params = dict([["l",l],["sigma_0",sigma_0]]),
            sigma_eps = sigma_eps)
    

    y_pred, Cov = gp.predict(x_grid)
    sigma = ul.fnp(np.sqrt(np.diag(Cov)))

    ## Plot the results
    gl.plot_timeRegression(x_grid, y_pred, sigma,
                            dates, timeSeries,sigma_eps, 
                            labels = ["GP own implementation","Time","Price"], nf = 1)
    
    optflag = 1
    if (optflag):
        ### Optimize the parameters and do it again ####
        xopt = gp.optimize_parameters(sigma_0, l, sigma_eps)
        sigma_0, l, sigma_eps = xopt
        gp.fit(dates,timeSeries, 
               kernel = GPown.compute_Kernel, 
               params = dict([["l",l],["sigma_0",sigma_0]]),
                sigma_eps = sigma_eps)
        ## Generate a Validation set and obtain the regressed values !
        y_pred, Cov = gp.predict(x_grid)
        sigma = ul.fnp(np.sqrt(np.diag(Cov)))
        gl.plot_timeRegression(x_grid, y_pred, sigma,
                                dates, timeSeries,sigma_eps, 
                                labels = ["GP Estimation (Opt)","Time","Price"], nf = 1)
                    
        ## Plot realizations !! 
    #    f_s = gp.generate_process(x_grid, N = 20)
    #    gl.plot(x_grid,f_s, legend = ["Realization"], nf = 0)