如何在 python 中横断面获取 Fama-Macbeth 回归

How to get Fama-Macbeth Regression Cross-sectionally in python

提问人:Mostafa Bouzari 提问时间:9/2/2023 更新时间:9/2/2023 访问量:41

问:

我对这个话题很陌生,我对理解它的回归和定量方面感到困惑,尽管我发现了惊人的帖子,例如 rationale-of-fama-macbeth-procedure、fama-macbeth-cross-sectional-regressionwhat-are-the-assumptions-in-the-first-stage-of-fama-macbeth

这是一个示例数据(存储在 DataFrame 中),如下所示(我的实际数据是每月一次)。为了让您更清楚列:RIe Pct Return 是每只股票的回报率。:

| year | date_x     | month | Mcap | TotalAssets | NItoCommon | NIbefEIPrefDiv | PrefDiv | NIbefPrefDiv | Sales | GainLossAssetSale | PPT | LTDebt | CommonEquity | PrefStock | OtherIncome | TotalLiabilities | PreTaxIncome | IncomeTaxes | OtherTA | OtherLiabilities | CashSTInv | OtherCA | OtherCL | TotalDiv | Country | Industry | IsSingleCountry | SME | Mcap_w | NItoCommon_w | NIbefEIPrefDiv_w | PrefDiv_w | NIbefPrefDiv_w | Sales_w | GainLossAssetSale_w | PPT_w | LTDebt_w | CommonEquity_w | PrefStock_w | OtherIncome_w | TotalLiabilities_w | PreTaxIncome_w | IncomeTaxes_w | OtherTA_w | OtherLiabilities_w | CashSTInv_w | OtherCA_w | OtherCL_w | TotalDiv_w | fair_value | date_y     | RIe  | RIus | RIus Pct Return | RIe Pct Return | Total Return Index |
|------|------------|-------|------|-------------|------------|----------------|---------|--------------|-------|-------------------|-----|--------|--------------|------------|-------------|------------------|--------------|-------------|---------|------------------|------------|---------|---------|----------|---------|------------|-----------------|-----|--------|-------------|-------------|----------------|------------|---------------------|-------|---------|----------------|-------------------|-------------|-------------------|--------------|-------------|------------|-------------------|------------|----------|---------|-----------|------------|------------|-------|------|-----------------|-----------------|--------------------|
| 2011 | 2011-02-01 | 2     | 63240 | 410876     | 7227       | 7227           | 0       | 7227         | 149809 | 0                 | 204034 | 183595 | 150758       | 0          | 296         | 260875           | 10394        | 3015        | 93101   | 507              | 41407      | 4677    | 29141   | 0        | BD      | Manufacturing | NaN             | Large enterprise | 63240.000 | 7227          | 7227              | 0         | 7227           | 149809   | 0                | 204034  | 183595 | 150758          | 0          | 296            | 260875          | 10394        | 3015       | 93101    | 507              | 41407      | 4677    | 29141   | 0         | 5.959437    | 2011-02-26 | 48.12 | 54.92 | 0.134042        | 0.077564        | 0.78               |
| 2013 | 2013-08-01 | 8     | 57030 | 370658     | 6525       | 6525           | 0       | 6525         | 134985 | 0                 | 183668 | 165522 | 135862       | 0          | 267         | 235191           | 9378         | 2713        | 83949   | 457              | 37780      | 4263    | 26573   | 0        | BD      | Technology    | NaN             | Large enterprise | 57030.000 | 6525          | 6525              | 0         | 6525           | 134985   | 0                   | 183668  | 165522 | 135862          | 0          | 267            | 235191          | 9378         | 2713       | 83949    | 457              | 37780      | 4263    | 26573   | 0         | 5.565474    | 2013-08-28 | 39.27 | 45.62 | 0.103655        | 0.051828        | 0.78               |
| 2014 | 2014-11-01 | 11    | 74220 | 482008     | 8496       | 8496           | 0       | 8496         | 175824 | 0                 | 238183 | 214365 | 176017       | 0          | 344         | 299626           | 11984        | 3472        | 107054  | 584              | 48195      | 5455    | 33935   | 0        | BD      | Finance       | NaN             | Large enterprise | 74220.000 | 8496          | 8496              | 0         | 8496           | 175824   | 0                   | 238183  | 214365 | 176017          | 0          | 344            | 299626          | 11984        | 3472       | 107054   | 584              | 48195      | 5455    | 33935   | 0         | 6.485548    | 2014-11-30 | 53.77 | 61.49 | 0.148460        | 0.073689        | 0.78               |
| 2015 | 2015-05-01 | 5     | 80150 | 521068     | 9184       | 9184           | 0       | 9184         | 190966 | 0                 | 259146 | 233231 | 191151       | 0          | 377         | 323830           | 12953        | 3755        | 116013  | 635              | 52268      | 5923    | 36948   | 0        | BD      | Retail        | NaN             | Large enterprise | 80150.000 | 9184          | 9184              | 0         | 9184           | 190966   | 0                   | 259146  | 233231 | 191151          | 0          | 377            | 323830          | 12953        | 3755       | 116013   | 635              | 52268      | 5923    | 36948   | 0         | 7.057782    | 2015-05-30 | 56.59 | 62.13 | 0.111052        | 0.070297        | 0.78               |
| 2017 | 2017-09-01 | 9     | 69320 | 450400     | 7936       | 7936           | 0       | 7936         | 164384 | 0                 | 223164 | 200848 | 164858

在第一步中,我知道我必须将股票回报与指数回报进行回归,以找到β。在第二步,我应该在每个时间点 t 应用横截面回归。

现在我们在同一页面上(如果我错过了什么,请告诉我),我想用 Python 编写一个代码来执行第一步和第二步。我可以在 R 中找到实现,但在 Python 中找不到。我宁愿你的答案是一种方法,所以如果将来有人想按月或按年进行回归,更改代码会更容易。如果我能以某种方式在 DataFrame 中获取结果,那就太好了。

我尝试使用这个库 Finance-BYU,但我遇到了各种错误,并且无法在互联网上找到一个基本且易于理解的示例。

from finance_byu.fama_macbeth import fama_macbeth, fm_summary

merged_df['date_x']=pd.to_datetime(merged_df['date_x'],format='mixed')

result=fama_macbeth(merged_df,pd.to_datetime(merged_df['date_x'],format='mixed'),'Total return index','RIe Pct Return')
print(fm_summary(result))

在这种情况下我得到的错误:

 50 def _assertions(data,t,yvar,xvar,intercept,n_jobs=-999,backend=-999,memmap=-999,parallel=-999):
 52     assert isinstance(data,pd.core.frame.DataFrame), 'Invalid input for `data`.'

---> 53 assert isinstance(t,str), '无效的输入。 54 assert isinstance(xvar,list), '无效的输入。 55 assert isinstance(intercept,bool), '无效的输入。txvarintercept

AssertionError:的输入无效。t

任何帮助将不胜感激。

Python 熊猫 回归 定量金融

评论


答: 暂无答案