这几年买了非常多的基金,一直很好奇基金在非业绩披露期都持有了什么东西?所以写了一个基金净值和各申万一级行业相关系数(以及和市场主流指数)的代码看看能否分析出点东西。
这里依然用了wind API,复现前记得安装。
from WindPy import w
import matplotlib.pyplot as plt
import pandas as pd
from scipy.stats import pearsonr
w.start()
def CorrFund(FundCode, StartDate, EndDate):
# 提取基金净值序列
error_code, fund_data = w.wsd(FundCode, "nav", StartDate, EndDate, usedf=True)
# 提取申万一级行业收盘数据
#index_code = ["801010.SI","801030.SI","801040.SI","801050.SI","801080.SI","801110.SI","801120.SI","801130.SI","801140.SI","801150.SI","801160.SI","801170.SI","801180.SI","801200.SI","801210.SI","801230.SI","801710.SI","801720.SI","801730.SI","801740.SI","801750.SI","801760.SI","801770.SI","801780.SI","801790.SI","801880.SI","801890.SI","801950.SI","801960.SI","801970.SI","801980.SI"]
index_code = ["000001.SH","399001.SZ","899050.BJ","881001.WI","000688.SH","399006.SZ","000300.SH","000905.SH","000852.SH","932000.CSI","8841431.WI","881034.WI","930050.CSI","000016.SH","399850.SZ","931643.CSI","830009.XI","746059.MI","000698.SH","399005.SZ","399330.SZ","000010.SH","000009.SH","000903.SH","000906.SH","000002.SH","000015.SH","399324.SZ","399088.SZ","399106.SZ","399102.SZ","399107.SZ","399311.SZ","399303.SZ","399673.SZ","399295.SZ","399296.SZ"]
Corr_Data = pd.DataFrame()
name_list = []
corr_list = []
for index in index_code:
error_code, index_data = w.wsd(index, "close", StartDate, EndDate, usedf=True)
error_code, index_data0 = w.wsd(index, "sec_name", StartDate, EndDate, usedf=True)
name = index_data0['SEC_NAME'][0]
name_list.append(name)
if len(index_data) == len(fund_data):
data = pd.concat([index_data, fund_data], axis=1)
corr = data.corr("pearson").iloc[0, 1]
print("%s与该基金净值的相关系数为%.4f" % (name, corr))
corr_list.append(corr)
else:
print("数据存在缺失值,请补全")
corr_list.append("error")
# 输出dataframe
Corr_Data['Name'] = name_list
Corr_Data['Corr'] = corr_list
Corr_Data.sort_values(by=['Corr'], ascending=False, inplace=True)
return Corr_Data
# 定义参数
FundCode = "167702.OF"
StartDate = '2024-01-01'
EndDate = '2024-03-01'
data = CorrFund(FundCode, StartDate, EndDate)
print(data)
输出结果:看起来这只基金主要持仓在小微盘股。行业方面与综合、轻工、环保和纺织的相关系数较高。