9.9 交易
假设我们在2019年1月1日有1,000,000美元的初始资本,接下来使用A2C模型来交易道琼斯30支股票。
(1)下面的代码划分了名为df的数据集,选择了日期范围从'2020-07-01'到'2021-10-31',并使用之前定义的参数env_kwargs创建了一个名为e_trade_gym的股票交易环境。
trade = data_split(df,'2020-07-01', '2021-10-31')
e_trade_gym = StockPortfolioEnv(df = trade, **env_kwargs)
(2)下面的代码返回trade数据集的形状(行数和列数),由于提供的代码片段中未包含完整的上下文,无法提供确切的答案。如果需要获取trade数据集的形状,请将这行代码与其上下文一起使用。
trade.shape
执行后会输出:
(9436, 19)
(3)使用经过训练的A2C模型 (trained_a2c) 对测试环境 (e_trade_gym) 进行预测,并返回两个数据框 (df_daily_return 和 df_actions)。df_daily_return 包含每日回报率,而 df_actions 包含了每个交易日的模型预测的股票权重。
df_daily_return, df_actions = DRLAgent.DRL_prediction(model=trained_a2c,
environment = e_trade_gym)
执行后会输出:
=================================
begin_total_asset:1000000
end_total_asset:1363803.996631671
Sharpe: 1.8078156710226434
=================================
hit end!
(4)下面的代码显示了 df_daily_return 数据框的前几行内容,该数据框包含了每日的回报率信息。
df_daily_return.head()
执行后会输出:
date daily_return
0 2020-07-01 0.000000
1 2020-07-02 0.005197
2 2020-07-06 0.014996
3 2020-07-07 -0.013876
4 2020-07-08 0.005758
(5)将df_daily_return数据框保存为 CSV 文件(df_daily_return.csv),并显示了 df_actions 数据框的前几行内容,其中包含了每个交易日的交易动作信息。
df_daily_return.to_csv('df_daily_return.csv')
df_actions.head()
执行后会输出:
AAPL AMGN AXP BA CAT CRM CSCO CVX DIS GS ... MMM MRK MSFT NKE PG TRV UNH VZ WBA WMT
date
2020-07-01 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 ... 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714 0.035714
2020-07-02 0.026683 0.072532 0.026683 0.026683 0.049773 0.050339 0.044964 0.026683 0.026782 0.026683 ... 0.026683 0.026683 0.026683 0.072532 0.054498 0.042832 0.026683 0.029133 0.053768 0.026683
2020-07-06 0.026683 0.072532 0.026683 0.026683 0.049773 0.050339 0.044964 0.026683 0.026782 0.026683 ... 0.026683 0.026683 0.026683 0.072532 0.054498 0.042832 0.026683 0.029133 0.053768 0.026683
2020-07-07 0.026683 0.072532 0.026683 0.026683 0.049773 0.050339 0.044964 0.026683 0.026782 0.026683 ... 0.026683 0.026683 0.026683 0.072532 0.054498 0.042832 0.026683 0.029133 0.053768 0.026683
2020-07-08 0.026683 0.072532 0.026683 0.026683 0.049773 0.050339 0.044964 0.026683 0.026782 0.026683 ... 0.026683 0.026683 0.026683 0.072532 0.054498 0.042832 0.026683 0.029133 0.053768 0.026683
(6)将 df_actions数据框保存为 CSV 文件(df_actions.csv),具体实现代码如下所示。
df_actions.to_csv('df_actions.csv')