私募基金数量化绩效评价体系(九)-净值披露频率不一致问题的解决方案

量化小白Literacy
5822021-10-17 14:09
好投课代表敲重点啦!!!本文介绍了如何处理私募基金净值数据中不一致的披露频率问题,通过提取数据、初步清洗和生成统一的时间序列,确保净值数据一致性和可比性,解决了计算中的干扰。这种方法有助于处理不同披露频率的私募基金净值数据,确保数据的一致性和可比性。

作者:量化小白Literacy

题图:量化小白Literacy微信公众号


在前期我们曾经发文告诉大家如何批量从朝阳永续数据库获取私募基金的净值用于研究使用,详见如何获取并整理可用的私募基金净值数据?其中我们也介绍了如何在Excel中的每一个sheet中放入一个产品的日期和对应的净值数据,方便每只产品循环计算指标。

在日常研究和交流的过程中有朋友咨询,数据中净值披露频率不一致的问题,比如某一只产品在2020年前是日净值,在2020年后按照周净值披露,导致有些指标无法计算或者计算出的指标明显有异常,该如何处理?这样的问题非常多,对于这样的情况,最好解决方案是将数据全部统一为周净值。

解决步骤如下:

1、首先提取数据,注意这一步,选项中勾选日历日,和缺失值用前值替代。为什么?有时候我们会碰到假期,比如2021年9月30日是周四,当周的周五是10月1日,因为统一按照每周五披露净值的逻辑,我们需要填充缺失值为前一个有净值的数据。

若使用客户端的设置如下:

Image

若使用excel函数,代码如下:

=FF_FDH2("产品代码","复权累计净值(优选)","2014-01-01","2021-09-30",
"data_fill=0","date_interval=1","date_type=0","order=ASC","display_mode=1","layout=1","ROW=2830:COL=2")

2、数据提取后,按照如何获取并整理可用的私募基金净值数据?的方法对数据进行初步清洗,最后在一个EXCEL中每个产品一个sheet。

3、此时的数据中的净值日期均为连续的日历日,接下来是关键,思路是对每一个产品,我们生成一个时间序列,包括了产品的运作起始日,净值的最后一天,以及两者之间每周五的日期,随后以这个日期作为索引,提取我们需要的每周五的净值,这样就解决了净值序列中周净值和日净值同时存在时给数据的计算带来的干扰。

日期序列的示范如下:

Image

完整代码如下:

#读取朝阳永续数据库导出的全部待选基金净值数据,含有大量的缺失值和净值不全的产品数据
#date_filter用于在筛选每一个基金的开始日期,必须小于'2020-01-01',保证一定的样本数量
date_filter='2020-01-01' 
date_filter=datetime.datetime.strptime(date_filter,'%Y-%m-%d')
raw_data = pd.read_excel('') #数据文件路径
raw_data['日期']=pd.to_datetime(raw_data['日期'])
raw_data.set_index('日期',inplace=True)
#净值截止日期,为当前日期往前推21天,设定为筛选条件,这一点目的是将大量的净值未更新的数据剔除
deadline=datetime.datetime.now().date()- datetime.timedelta(days=21)
writer=pd.ExcelWriter('处置完毕后净值.xls')
fund_num=0
for i in raw_data.columns:
    df = raw_data[[i]]
        df1 = df.copy()
        df1.dropna(inplace=True) #删除运作起始日前的缺失值
        start_date =df1.index[0] #运作起始日
        end_date = df1.index[-1] #净值的最新日
        d1 = pd.date_range(start_date, end_date, freq='W-FRI')  #每周五的日期
        d2 = pd.to_datetime([start_date, end_date])
        datesample=d1.union(d2)  #日期索引
        df1=df1.loc[datesample,:]
        df1.index.name='日期' 
        if len(df1)>10:        if (df1.index[-1].date()>deadline) and (df1.index[0]<date_filter):
                    df1.to_excel(writer, sheet_name=i)
                        fund_num=fund_num+1
            writer.save()
writer.close()
print('一共处理完成%s只产品数据'%(fund_num))
#数据处理完毕,将原一个sheet的文件分割成一个excel中按照基金名字分开的多个sheet的文件
#处理完毕后的数据均为周净值数据

版权声明:文章版权归原作者所有,部分文章由作者授权本平台发布,若有其他不妥之处的可与小编联系。

免责声明:
您在阅读本内容或附件时,即表明您已事先接受以下“免责声明”之所载条款:
1、本文内容源于作者对于所获取数据的研究分析,本网站对这些信息的准确性和完整性不作任何保证,对由于该等问题产生的一切责任,本网站概不承担;阅读与私募基金相关内容前,请确认您符合私募基金合格投资者条件。
2、文件中所提供的信息尽可能保证可靠、准确和完整,但并不保证报告所述信息的准确性和完整性;亦不能作为投资决策的依据,不能作为道义的、责任的和法律的依据或者凭证。
3、对于本文以及文件中所提供信息所导致的任何直接的或者间接的投资盈亏后果不承担任何责任;本文以及文件发送对象仅限持有相关产品的客户使用,未经授权,请勿对该材料复制或传播。侵删!
4、所有阅读并从本文相关链接中下载文件的行为,均视为当事人无异议接受上述免责条款,并主动放弃所有与本文和文件中所有相关人员的一切追诉权。

0
好投汇
第一时间获取行业新鲜资讯和深度商业分析,请在微信公众账号中搜索「好投汇」,或用手机扫描左方二维码,即可获得好投汇每日精华内容推送和最优搜索体验,并参与编辑活动。

推荐阅读

0
0

评论

你来谈谈?
发表

联系我们

邮箱 :help@haotouxt.com
电话 :0592-5588692
地址 :福建省厦门市湖里区航空商务广场7号楼10F
好投汇微信订阅号
扫一扫
关注好投汇微信订阅号
Copyright © 2017-2026, All Rights Reserved 闽ICP备19018471号-6