ETF与指数的相关性分析
在金融市场中,指数无法直接交易,这催生了 ETF 基金的诞生。ETF 基金以追踪特定市场指数为目标,其交易价格和基金份额净值的波动趋势与所跟踪指数高度拟合。投资者在买卖 ETF 时,本质上是在间接交易其所跟踪的指数,进而有机会获取与该指数近乎一致的收益回报。
但值得注意的是,市场上基金品类繁多,不同基金所跟踪的指数各异。基金的价格走势与对应指数走势之间的相关性强弱并非固定不变,而是受到多种因素的综合影响,这就需要投资者运用专业知识和分析工具,自行对其相关性进行精准评判和深入分析,以便做出更为明智的投资决策,在复杂多变的市场中把握投资机遇,实现资产的稳健增值。
安装依赖
# 安装 efinance
# !pip install efinance
查看指数与各etf的关联关系
首先,需要核准一下etf与大盘走势的关联关系,由于指数价格和各etf的价格差异较大,需要先进行归一化,这里使用标准差进行归一化。
import efinance as ef
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 8)) # 单位为英寸
def z_score_normalize(data):
"""
使用标准差进行归一化
:param data: 数据列表
:return: 归一化后的数据列表
"""
data = np.array(data)
mean = np.mean(data)
std = np.std(data)
return (data - mean) / std
sh_code = '上证指数'
df_sh = ef.stock.get_quote_history(sh_code, beg = '20050101')
sh = z_score_normalize(df_sh["开盘"])
date_sh = np.array(df_sh["日期"])
date_sh = [i.replace('-','') for i in date_sh]
plt.plot(date_sh, sh, label = "sh")
shetf_code = '上证综合ETF'
df_shetf = ef.stock.get_quote_history(shetf_code)
shetf = z_score_normalize(df_shetf["开盘"])
date_shetf = np.array(df_shetf["日期"])
date_shetf = [i.replace('-','') for i in date_shetf]
plt.plot(date_shetf, shetf, label = "shetf")
sh50etf_code = "上证50ETF"
df_sh50etf = ef.stock.get_quote_history(sh50etf_code)
sh50etf = z_score_normalize(df_sh50etf["开盘"])
date_sh50etf = np.array(df_sh50etf[