复制链接
克隆策略
In [1]:
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)