Ошибка: Length of values does not match length of index

Burevestnik

Новичок
Пользователь
Ноя 4, 2020
1
0
1
Windows 10, Python 3.8, все библиотеки и модули:

import numpy as np
import arch as arch_model
import pandas as pd
import scipy.stats
import matplotlib.pyplot as plt
from datetime import datetime
from arch import arch_model
import yfinance as yf

Python:
def make_copula_simulation(returns, copula_func, n_samples, univariate_dist):



    # объявляем копулу

    cop = copula_func(dim=returns.shape[1])

    cdfs = returns.copy()

 

    distribution_params = {}



    # моделируем частные распределения для каждой акции

    for col in cdfs.columns:

        if univariate_dist == 't':

            t_df, t_mean, t_sigma = scipy.stats.t.fit(returns[col])

            distribution_params[col] = (t_df, t_mean, t_sigma)

            cdfs[col] = scipy.stats.t.cdf(cdfs[col], df=t_df, loc=t_mean, scale=t_sigma)



        elif univariate_dist == 'gennorm':

            beta, loc, scale = scipy.stats.gennorm.fit(returns[col])

            distribution_params[col] = (beta, loc, scale)

            cdfs[col] = scipy.stats.gennorm.cdf(cdfs[col], beta, loc, scale)



        elif univariate_dist == 'garch':

            cdf, am, res = get_garch_residuals(returns[col], dist)

            distribution_params[col] = (am, res)

            cdfs[col] = cdf

            

            

    # фитим копулу

    cop.fit(cdfs)



    # делаем сэмплирование квантилей из совместного распределения копулы

    copula_simulations = cop.random(n_samples, seed=42)

    copula_simulations = pd.DataFrame(copula_simulations, columns=cdfs.columns)



    return_simulations = copula_simulations.copy()



    # трансформируем квантили в доходности с помощью частных функций распределений из первого шага

    for col in cdfs.columns:

        if univariate_dist == 't':

            t_df, t_mean, t_sigma = distribution_params[col]

            return_simulations[col] = scipy.stats.t.ppf(copula_simulations[col], df=t_df, loc=t_mean, scale=t_sigma)



        elif univariate_dist == 'gennorm':

            beta, loc, scale = distribution_params[col]

            return_simulations[col] = scipy.stats.gennorm.ppf(copula_simulations[col], beta, loc, scale)



        elif univariate_dist == 'garch':

            am, res = distribution_params[col]

            return_simulations[col] = make_garch_forecast(copula_simulations[col], dist, res, am)

            

    # возвращаем матрицу сэмплированных доходностей

    return return_simulations

После следующей функции получаю ошибку
Python:
return_simulations = make_copula_simulation(returns, ClaytonCopula, n_samples=10**5, univariate_dist='garch')
После этой функции получаю ошибку
Безымянный.png
 

Форум IT Специалистов