def test_portfolio(asset_count):
# 生成测试数据
dfs = []
for i in range(asset_count):
# 其中 500 是收益周期数,0.05 是每日最大收益参数,0.94 用于控制 alpha 大小
daily_returns = np.random.rand(200) * 0.05 - np.random.rand(200) * 0.05 * 0.9
net_value = np.cumprod(daily_returns + 1)
dfs.append(pd.DataFrame({"收益": daily_returns, "净值": net_value}))
# 等权重组合资产,组合日收益和净值
portfolio_daily_returns = sum([df["收益"] for df in dfs]) / len(dfs)
portfolio_net_value = (portfolio_daily_returns + 1).cumprod()
portfolio_df = pd.DataFrame({"组合收益": portfolio_daily_returns, "组合净值": portfolio_net_value})
net_value_df = portfolio_df[["组合净值"]]
for i, x in enumerate(dfs):
net_value_df[f"净值{i}"] = x["净值"]
T.plot(net_value_df, title="资产 vs 组合")
daily_returns_df = portfolio_df[["组合收益"]]
for i, x in enumerate(dfs):
daily_returns_df[f"收益{i}"] = x["收益"]
T.plot(daily_returns_df, title="资产 vs 组合")
test_portfolio(10)