我有每日股票回报率,可以通过说最小方差算法进行优化。这给了我每日最佳权重的输出。如果我每天都用新的最佳权重来重新平衡投资组合,那么我只是将收益滞后一个时期,然后乘以最佳权数*收益。
但是,我很困惑如何测试每月的重新平衡。我想要的基本上是保持每日收益的优化,但仅使用接下来30天在月底计算出的最优权重。
通常如何做?如果我将接下来的30天权重设置为上个月最后一天的最佳权重,并与收益组合,那不是每天的某种重新平衡,而仅仅是旧的权重?
我很困惑该怎么做。请在下面的示例中找到一个时间序列的股票收益和最佳每日权重的数据外观。
import numpy as np
import numpy.random as nrand
import pandas as pd
date = pd.date_range(start='12/31/2017', periods=60)
returns = pd.DataFrame(nrand.uniform(-0.1, 0.1, 60))
weights = pd.DataFrame(nrand.uniform(0, 1, 60))
weights_returns = pd.concat([returns,weights],axis=1)
weights_returns["date"] = date
weights_returns = weights_returns.set_index("date")
weights_returns.columns.values[0] = "weights"
weights_returns.columns.values[1] = "returns"
print(weights_returns)
答案 0 :(得分:1)
我觉得您在这里问财务和熊猫问题。如果您可以将最后一天的体重增加到下个月,那么merge_asof
是您的朋友。
weight_month_end = (weights_returns['weights'].resample('M')
.last()
.rename('weight_new'))
pd.merge_asof(weights_returns, weight_month_end,left_index=True,right_index=True)