(11-6-02)基于深度强化学习的量化交易Agent:DRL、最小方差和DJIA的可视化

10.7.2  DRL、最小方差和DJIA的可视化

本项目使用Plotly库实现可视化,分别创建 DRL、最小方差和 DJIA 的可视化图。

(1)使用以下命令安装Plotly:

pip install plotly

(2)使用 Plotly 创建了多个散点图 (trace0_portfolio、trace1_portfolio、trace2_portfolio 等),这些图分别表示 A2C 模型的投资组合收益、DJIA 收益以及最小方差投资组合的收益。通过将这些散点图组合在一起,并设置相应的日期和累积收益作为 x 和 y 轴,创建了一个可视化图表,用于比较这三个不同投资策略的表现。

from datetime import datetime as dt

import matplotlib.pyplot as plt
import plotly
import plotly.graph_objs as go
#%%
time_ind = pd.Series(df_daily_return.date)
#%%
trace0_portfolio = go.Scatter(x = time_ind, y = a2c_cumpod, mode = 'lines', name = 'A2C (Portfolio Allocation)')

trace1_portfolio = go.Scatter(x = time_ind, y = dji_cumpod, mode = 'lines', name = 'DJIA')
trace2_portfolio = go.Scatter(x = time_ind, y = min_var_cumpod, mode = 'lines', name = 'Min-Variance')
#trace3_portfolio = go.Scatter(x = time_ind, y = ddpg_cumpod, mode = 'lines', name = 'DDPG')
#trace4_portfolio = go.Scatter(x = time_ind, y = addpg_cumpod, mode = 'lines', name = 'Adaptive-DDPG')
#trace5_portfolio = go.Scatter(x = time_ind, y = min_cumpod, mode = 'lines', name = 'Min-Variance')

#trace4 = go.Scatter(x = time_ind, y = addpg_cumpod, mode = 'lines', name = 'Adaptive-DDPG')

#trace2 = go.Scatter(x = time_ind, y = portfolio_cost_minv, mode = 'lines', name = 'Min-Variance')
#trace3 = go.Scatter(x = time_ind, y = spx_value, mode = 'lines', name = 'SPX')

在上述代码中,trace0_portfolio 表示 A2C 模型的投资组合收益曲线,trace1_portfolio 表示 DJIA 的收益曲线,trace2_portfolio 表示最小方差投资组合的收益曲线。这个图表能够直观展示这三种策略在不同时间点的表现,帮助用户更好地理解它们的差异和优劣。

(3)使用 Plotly 创建了一个可视化图 (fig),将之前定义的三个散点图 (trace0_portfolio、trace1_portfolio、trace2_portfolio) 添加到图表中,并进行一些布局的调整,以提高图表的可读性。

fig = go.Figure()
fig.add_trace(trace0_portfolio)
fig.add_trace(trace1_portfolio)
fig.add_trace(trace2_portfolio)

fig.update_layout(
    legend=dict(
        x=0,
        y=1,
        traceorder="normal",
        font=dict(
            family="sans-serif",
            size=15,
            color="black"
        ),
        bgcolor="White",
        bordercolor="white",
        borderwidth=2   
    ),
)
#fig.update_layout(legend_orientation="h")
fig.update_layout(title={
        #'text': "Cumulative Return using FinRL",
        'y':0.85,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})
#with Transaction cost
#fig.update_layout(title =  'Quarterly Trade Date')
fig.update_layout(
#    margin=dict(l=20, r=20, t=20, b=20),

    paper_bgcolor='rgba(1,1,0,0)',
    plot_bgcolor='rgba(1, 1, 0, 0)',
    #xaxis_title="Date",
    yaxis_title="Cumulative Return",
xaxis={'type': 'date', 
       'tick0': time_ind[0], 
        'tickmode': 'linear', 
       'dtick': 86400000.0 *80}

)
fig.update_xaxes(showline=True,linecolor='black',showgrid=True, gridwidth=1, gridcolor='LightSteelBlue',mirror=True)
fig.update_yaxes(showline=True,linecolor='black',showgrid=True, gridwidth=1, gridcolor='LightSteelBlue',mirror=True)
fig.update_yaxes(zeroline=True, zerolinewidth=1, zerolinecolor='LightSteelBlue')

fig.show()

在上述代码中,fig.add_trace 用于将每个散点图添加到可视化图中,fig.update_layout 用于设置可视化图的整体布局,包括标题、图例的位置和样式、背景色等。最后,通过 fig.show() 显示生成的可视化图。

整体而言,上述代码的功能是创建一个包含 A2C 模型投资组合收益、DJIA 收益和最小方差投资组合收益的可视化图,用于比较它们在累积收益方面的表现。如图10-8所示。

图10-8  投资组合收益的可视化图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值