LinearModels регрессия

Я пытаюсь запустить двухступенчатую модель регрессии на некоторых фондовых факторах, используя библиотеку линейных моделей. Я создал Panel Data на 300 акций с ежемесячными характеристиками, которая выглядит следующим образом. Моя дата и тикер являются частью многоуровневого многоуровневого индекса, а для уровня даты установлено время даты. Я хотел бы запустить регрессию для каждого тикера в качестве переменной Y, а Div Div Yield и Current Ratio - как X переменных. Однако, когда я запускаю регрессию, я не могу регрессировать факторы одновременно на доходности (я могу сделать только один фактор за раз). Есть ли у кого-нибудь опыт использования линейных моделей на отдельных акциях? Моя ошибка гласит, что мне нужно больше портфелей, чем факторов, но в этом случае мои "портфели" - это мои отдельные тикеры, которые превосходят мои 2 фактора. Как я могу получить пакет, чтобы понять, что каждая акция является "портфелем"?

                                       Dividend Yield Current Ratio  Returns
 2016-10-31  AAL                       0.985222        0.760201      10.898660
             AAPL                      0.66510         0.88956       4.97

from linearmodels.asset_pricing import LinearFactorModel
import statsmodels.api as sm
factors = join3[['Dividend Yield','Current Ratio']]
portfolios=join3[['Returns']]
mod = LinearFactorModel(portfolios, factors)
res = mod.fit()


ValueError                                Traceback (most recent call last)
    <ipython-input-133-2b259cbd5317> in <module>()
          3 factors = join3[['Dividend Yield','Current Ratio']]
          4 portfolios=join3[['Returns']]
    ----> 5 mod = LinearFactorModel(portfolios, factors)
          6 res = mod.fit()

    c:\users\philz\anaconda\envs\py36\lib\site-packages\linearmodels\asset_pricing\model.py in __init__(self, portfolios, factors, risk_free, sigma)
        331         self._risk_free = bool(risk_free)
        332         super(LinearFactorModel, self).__init__(portfolios, factors)
    --> 333         self._validate_additional_data()
        334         if sigma is None:
        335             self._sigma_m12 = self._sigma_inv = self._sigma = np.eye(self.portfolios.shape[1])

    c:\users\philz\anaconda\envs\py36\lib\site-packages\linearmodels\asset_pricing\model.py in _validate_additional_data(self)
        353         nrp = (f.shape[1] + int(self._risk_free))
        354         if p.shape[1] < nrp:
    --> 355             raise ValueError('The number of test portfolio must be at least as '
        356                              'large as the number of risk premia, including the '
        357                              'risk free rate if estimated.')

    ValueError: The number of test portfolio must be at least as large as the number of risk premia, including the risk free rate if estimated.

0 ответов

Другие вопросы по тегам