『Plotly實戰指南』--在金融數據可視化中的應用(下)
在金融市場的復雜博弈中,可視化技術如同精密的導航儀。
傳統靜態圖表正在被交互式可視化取代——據Gartner研究,采用動態可視化的投資機構決策效率提升達47%。
本文的目標是探討如何利用 Plotly 實現投資組合分析與金融時間序列的動態可視化。
文中將通過具體的案例和代碼示例,展示 Plotly 在金融數據可視化中的強大功能。
1. 投資組合圖表
在投資組合分析中,資產配置是關鍵的一步。
通過可視化資產配置,投資者可以清晰地了解不同資產在投資組合中的占比,從而評估投資策略的平衡性。
1.1. 資產配置的餅圖與柱狀圖
使用Plotly的plotly.express.pie和plotly.graph_objects.Bar繪制資產分布圖。
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
# 示例數據:資產類別及其權重
data = {"Asset": ["股票", "債券", "現金", "黃金"], "Weight": [0.4, 0.3, 0.2, 0.1]}
fig = make_subplots(
rows=1,
cols=2,
horizontal_spacing=0.1,
specs=[[{"type": "domain"}, {"type": "bar"}]],
subplot_titles=["資產配置餅圖", "資產配置柱狀圖"]
)
# 繪制餅圖
fig.add_trace(
go.Pie(
labels=data["Asset"],
values=data["Weight"],
),
row=1,
col=1,
)
# 繪制柱狀圖
fig.add_trace(
go.Bar(x=data["Asset"], y=data["Weight"]),
row=1,
col=2,
)
fig.show()

1.2. 不同時間點資產配置
Plotly提供了滑動條交互功能,可以動態展示不同時間點的資產配置比例。
這對于分析投資組合的動態調整過程非常有幫助。
import pandas as pd
# 示例數據:不同時間點的資產配置
data = pd.DataFrame(
{
"Date": ["2024-01-01", "2024-02-01", "2024-03-01"],
"股票": [0.4, 0.45, 0.5],
"債券": [0.3, 0.32, 0.3],
"現金": [0.2, 0.18, 0.15],
"黃金": [0.1, 0.05, 0.05],
}
)
# 繪制動態柱狀圖
fig = px.bar(
data, x="Date", y=["股票", "債券", "現金", "黃金"], title="不同時間點的資產配置"
)
fig.update_layout(
updatemenus=[
dict(
type="buttons",
direction="right",
x=0.7,
y=1.2,
showactive=True,
buttons=list(
[
dict(
label="全部",
method="update",
args=[{"visible": [True, True, True, True]}],
),
dict(
label="股票",
method="update",
args=[{"visible": [True, False, False, False]}],
),
dict(
label="債券",
method="update",
args=[{"visible": [False, True, False, False]}],
),
dict(
label="現金",
method="update",
args=[{"visible": [False, False, True, False]}],
),
dict(
label="黃金",
method="update",
args=[{"visible": [False, False, False, True]}],
),
]
),
)
]
)
fig.show()

1.3. 對比不同投資策略下的資產占比
通過繪制多個資產配置圖表,可以對比不同投資策略下的資產占比差異。
這有助于投資者選擇最適合自己的投資策略。
# 示例數據:兩種投資策略的資產配置
strategy1 = pd.DataFrame(
{"Asset": ["股票", "債券", "現金", "黃金"], "Weight": [0.4, 0.3, 0.2, 0.1]}
)
strategy2 = pd.DataFrame(
{"Asset": ["股票", "債券", "現金", "黃金"], "Weight": [0.6, 0.2, 0.1, 0.1]}
)
# 繪制對比柱狀圖
fig = go.Figure(
data=[
go.Bar(name="策略1", x=strategy1["Asset"], y=strategy1["Weight"]),
go.Bar(name="策略2", x=strategy2["Asset"], y=strategy2["Weight"]),
]
)
fig.update_layout(title_text="不同投資策略的資產配置對比")
fig.show()

2. 風險收益關系的散點圖
風險收益關系是投資分析中的重要概念。
通過散點圖,可以直觀地展示投資標的的風險(波動率)與收益之間的關系。
# 示例數據:投資標的的風險與收益
data = pd.DataFrame(
{
"資產": ["股票A", "股票B", "債券C", "基金D"],
"收益": [0.12, 0.1, 0.05, 0.08],
"波動性": [0.2, 0.18, 0.08, 0.15],
}
)
# 繪制散點圖
fig = px.scatter(data, x="波動性", y="收益", text="資產", title="風險收益關系散點圖")
fig.update_traces(textposition="top center")
fig.show()

在上面的散點圖中添加輔助線和注釋可以進一步增強分析的深度。
例如,有效前沿可以幫助投資者識別最優的投資組合。
# 示例數據:有效前沿
frontier = pd.DataFrame(
{
"波動性": [0.05, 0.1, 0.15, 0.2],
"收益": [0.05, 0.08, 0.1, 0.12],
}
)
# 添加有效前沿線
fig.add_trace(
go.Scatter(
x=frontier["波動性"],
y=frontier["收益"],
mode="lines",
name="有效前沿",
),
)
fig.show()

3. 動畫展示投資組合變化
金融時間序列數據的動態可視化可以幫助投資者更好地理解投資組合隨時間的變化。
Plotly的動畫框架(animation_frame)可以實現這一目標。
下面的示例,通過Plotly動畫框架(animation_frame)動態呈現資產權重隨時間的變化。
# 示例數據:投資組合隨時間的變化
data = pd.DataFrame(
{
"日期": ["2024-01-01", "2024-02-01", "2024-03-01"] * 4,
"資產": ["股票"] * 3 + ["債券"] * 3 + ["現金"] * 3 + ["黃金"] * 3,
"權重": [0.4, 0.45, 0.5, 0.3, 0.32, 0.3, 0.2, 0.18, 0.15, 0.1, 0.05, 0.05],
}
)
# 繪制動態柱狀圖
fig = px.bar(
data,
x="資產",
y="權重",
animation_frame="日期",
title="資產權重隨時間的變化",
)
fig.show()

4. 總結
Plotly在金融分析中的核心應用場景涵蓋了從靜態圖表到動態交互的全覆蓋。
通過豐富的交互功能和動態圖表支持,Plotly 能夠幫助投資者更直觀地理解復雜數據,從而輔助投資決策。
展望未來,Plotly與AI模型預測結果的可視化集成具有巨大的潛力。
通過將 AI 模型的預測結果與 Plotly 的可視化功能相結合,投資者可以更好地評估市場趨勢和投資機會,從而實現更高效的投資決策。

浙公網安備 33010602011771號