『Plotly实战指南』--在金融数据可视化中的应用(下) ...

打印 上一主题 下一主题

主题 2148|帖子 2148|积分 6444

在金融市场的复杂博弈中,可视化技术犹如精密的导航仪。
传统静态图表正在被交互式可视化取代——据Gartner研究,接纳动态可视化的投资机构决议效率提升达47%。
本文的目的是探究如何利用 Plotly 实现投资组合分析与金融时间序列的动态可视化。
文中将通过具体的案例和代码示例,展示 Plotly 在金融数据可视化中的强大功能。
1. 投资组合图表

在投资组合分析中,资产配置是关键的一步。
通过可视化资产配置,投资者可以清晰地了解不同资产在投资组合中的占比,从而评估投资策略的均衡性。
1.1. 资产配置的饼图与柱状图

利用Plotly的plotly.express.pie和plotly.graph_objects.Bar绘制资产分布图。
  1. import plotly.express as px
  2. import plotly.graph_objects as go
  3. from plotly.subplots import make_subplots
  4. # 示例数据:资产类别及其权重
  5. data = {"Asset": ["股票", "债券", "现金", "黄金"], "Weight": [0.4, 0.3, 0.2, 0.1]}
  6. fig = make_subplots(
  7.     rows=1,
  8.     cols=2,
  9.     horizontal_spacing=0.1,
  10.     specs=[[{"type": "domain"}, {"type": "bar"}]],
  11.     subplot_titles=["资产配置饼图", "资产配置柱状图"]
  12. )
  13. # 绘制饼图
  14. fig.add_trace(
  15.     go.Pie(
  16.         labels=data["Asset"],
  17.         values=data["Weight"],
  18.     ),
  19.     row=1,
  20.     col=1,
  21. )
  22. # 绘制柱状图
  23. fig.add_trace(
  24.     go.Bar(x=data["Asset"], y=data["Weight"]),
  25.     row=1,
  26.     col=2,
  27. )
  28. fig.show()
复制代码

1.2. 不同时间点资产配置

Plotly提供了滑动条交互功能,可以动态展示不同时间点的资产配置比例。
这对于分析投资组合的动态调整过程非常有帮助。
  1. import pandas as pd
  2. # 示例数据:不同时间点的资产配置
  3. data = pd.DataFrame(
  4.     {
  5.         "Date": ["2024-01-01", "2024-02-01", "2024-03-01"],
  6.         "股票": [0.4, 0.45, 0.5],
  7.         "债券": [0.3, 0.32, 0.3],
  8.         "现金": [0.2, 0.18, 0.15],
  9.         "黄金": [0.1, 0.05, 0.05],
  10.     }
  11. )
  12. # 绘制动态柱状图
  13. fig = px.bar(
  14.     data, x="Date", y=["股票", "债券", "现金", "黄金"], title="不同时间点的资产配置"
  15. )
  16. fig.update_layout(
  17.     updatemenus=[
  18.         dict(
  19.             type="buttons",
  20.             direction="right",
  21.             x=0.7,
  22.             y=1.2,
  23.             showactive=True,
  24.             buttons=list(
  25.                 [
  26.                     dict(
  27.                         label="全部",
  28.                         method="update",
  29.                         args=[{"visible": [True, True, True, True]}],
  30.                     ),
  31.                     dict(
  32.                         label="股票",
  33.                         method="update",
  34.                         args=[{"visible": [True, False, False, False]}],
  35.                     ),
  36.                     dict(
  37.                         label="债券",
  38.                         method="update",
  39.                         args=[{"visible": [False, True, False, False]}],
  40.                     ),
  41.                     dict(
  42.                         label="现金",
  43.                         method="update",
  44.                         args=[{"visible": [False, False, True, False]}],
  45.                     ),
  46.                     dict(
  47.                         label="黄金",
  48.                         method="update",
  49.                         args=[{"visible": [False, False, False, True]}],
  50.                     ),
  51.                 ]
  52.             ),
  53.         )
  54.     ]
  55. )
  56. fig.show()
复制代码

1.3. 对比不同投资策略下的资产占比

通过绘制多个资产配置图表,可以对比不同投资策略下的资产占比差异。
这有助于投资者选择最适合自己的投资策略。
  1. # 示例数据:两种投资策略的资产配置
  2. strategy1 = pd.DataFrame(
  3.     {"Asset": ["股票", "债券", "现金", "黄金"], "Weight": [0.4, 0.3, 0.2, 0.1]}
  4. )
  5. strategy2 = pd.DataFrame(
  6.     {"Asset": ["股票", "债券", "现金", "黄金"], "Weight": [0.6, 0.2, 0.1, 0.1]}
  7. )
  8. # 绘制对比柱状图
  9. fig = go.Figure(
  10.     data=[
  11.         go.Bar(name="策略1", x=strategy1["Asset"], y=strategy1["Weight"]),
  12.         go.Bar(name="策略2", x=strategy2["Asset"], y=strategy2["Weight"]),
  13.     ]
  14. )
  15. fig.update_layout(title_text="不同投资策略的资产配置对比")
  16. fig.show()
复制代码

2. 风险收益关系的散点图

风险收益关系是投资分析中的紧张概念。
通过散点图,可以直观地展示投资标的的风险(颠簸率)与收益之间的关系。
  1. # 示例数据:投资标的的风险与收益
  2. data = pd.DataFrame(
  3.     {
  4.         "资产": ["股票A", "股票B", "债券C", "基金D"],
  5.         "收益": [0.12, 0.1, 0.05, 0.08],
  6.         "波动性": [0.2, 0.18, 0.08, 0.15],
  7.     }
  8. )
  9. # 绘制散点图
  10. fig = px.scatter(data, x="波动性", y="收益", text="资产", title="风险收益关系散点图")
  11. fig.update_traces(textposition="top center")
  12. fig.show()
复制代码

在上面的散点图中添加辅助线和注释可以进一步加强分析的深度。
比方,有用前沿可以帮助投资者识别最优的投资组合。
  1. # 示例数据:有效前沿
  2. frontier = pd.DataFrame(
  3.     {
  4.         "波动性": [0.05, 0.1, 0.15, 0.2],
  5.         "收益": [0.05, 0.08, 0.1, 0.12],
  6.     }
  7. )
  8. # 添加有效前沿线
  9. fig.add_trace(
  10.     go.Scatter(
  11.         x=frontier["波动性"],
  12.         y=frontier["收益"],
  13.         mode="lines",
  14.         name="有效前沿",
  15.     ),
  16. )
  17. fig.show()
复制代码

3. 动画展示投资组合变化

金融时间序列数据的动态可视化可以帮助投资者更好地明白投资组合随时间的变化。
Plotly的动画框架(animation_frame)可以实现这一目的。
下面的示例,通过Plotly动画框架(animation_frame)动态出现资产权重随时间的变化。
  1. # 示例数据:投资组合随时间的变化
  2. data = pd.DataFrame(
  3.     {
  4.         "日期": ["2024-01-01", "2024-02-01", "2024-03-01"] * 4,
  5.         "资产": ["股票"] * 3 + ["债券"] * 3 + ["现金"] * 3 + ["黄金"] * 3,
  6.         "权重": [0.4, 0.45, 0.5, 0.3, 0.32, 0.3, 0.2, 0.18, 0.15, 0.1, 0.05, 0.05],
  7.     }
  8. )
  9. # 绘制动态柱状图
  10. fig = px.bar(
  11.     data,
  12.     x="资产",
  13.     y="权重",
  14.     animation_frame="日期",
  15.     title="资产权重随时间的变化",
  16. )
  17. fig.show()
复制代码

4. 总结

Plotly在金融分析中的核心应用场景涵盖了从静态图表到动态交互的全覆盖。
通过丰富的交互功能和动态图表支持,Plotly 可以或许帮助投资者更直观地明白复杂数据,从而辅助投资决议。
展望未来,Plotly与AI模型推测效果的可视化集成具有巨大的潜力。
通过将 AI 模型的推测效果与 Plotly 的可视化功能相结合,投资者可以更好地评估市场趋势和投资时机,从而实现更高效的投资决议。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

鼠扑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表