从0开始搭建基金分析系统粮草篇

兵马未动粮草先行,一件事儿的准备工作,和做好这件事本身几乎一样重要。

什么是基金分析系统的粮草呢?当然就是数据了。既然是分析基金的,那基金从哪里来,基金数据有哪些,这些是第一步要搞定的事儿。

数据的来源很多,最常见的就是大家都用过的数据终端产品了,专业的数据终端一般有wind,iFinD,Choice,我们经常看到一些大V文章,里面的各种表格数据,多数都是从这里提取的;各家券商交易端或多或少也能看到或者导出一些数据;此外还有一些开放的PythonAPI接口,里面也能提取到数据。但如果要搭建系统,手工从Choice这样的终端导出数据就不太合适了,毕竟数据要一个个的导出为excel,再在excel里面手工操练一堆的步骤,数据更新了又要重搞一遍,费时费力;API接口呢,也不理想,每次用数据都要调用一遍接口,数据量大了肯定就很慢,就算把历史取到的数据缓存到了本地,如果历史数据发生变化,其实是无从得知的。那怎么正规的干这件事呢,答案就是金融数据库。

我们以后使用的数据的载体(形式)是关系型数据,sqlserver,oracle或者mysql,在我们的本地。数据提供商通过同步程序,把他们那加工好的数据源源不断的推送到我们本地。如果历史数据有变更,供应商会推送这部分变更的数据,覆盖我们本地的数据。用我们自己策略算出来的衍生数据,也是一样的存在数据库中。很早些年前,用SAS,matlab干策略的时候,一些分析师会把自己算的中间结果保存为文件,一步步调用的时候就一步步的读文件,再写新的文件,这些文件格式不标准,也不利于复用。而存在数据库中的数据,在这方面就要好的多。市场上的主流金融数据提供商(泛指股、债、基、资讯等数据都比较平衡的,聚焦在单一标的上的厂商先不算在内)的有wind,聚源,同花顺,其他还有东财,财汇,巨灵,巨潮等。

先说wind(万得),国内数据的巨无霸,它最强的是终端,买方卖方几乎人手一个账号,单独终端账号一年就好几万,如果需要EDB数据,API接口,就更贵。放个历史的报价单吧:

WFT就是普通终端,要EDB的话,得+钱;要API的话,还得+钱~当然,这也是正常的,毕竟功能多了嘛,付费是为了供应商更好的成长嘛^_^。

但咱今天不说它的终端,说说它的数据库,特点还是一个字:贵。但有什么好处呢,因为它终端使用的机构非常非常多,也就是给它挑错的人很多,所以相应的,数据质量可能就好一些;或者换个角度说,它可能成为一种事实上的数据benchmark,如果你用了别的数据提供商的数据给你的客户提供服务,某个指标的值和wind不同,你的客户如果发现了,第一个反应是,“你的数据和wind的不同,你一定是错了”,哪怕事实是相反的。没错,wind在国内就是这么牛。不过由于wind的强势,以及更强势的每年涨价策略,它的终端份额近期被同花顺抢走了不少。下面是wind数据库的数据字典:

可以看到,wind不但在数据上防着被人抄袭,就连数据字典也是一样,上图马赛克的部分是因为它打了很多登陆账号的水印,我就粗糙点给全部抹掉了。因为截图还要去掉水印,下面就不放wind的表结构截图了。wind库相比后面提到的两者,还有个不太好描述的优点就是使用起来舒服,怎么个舒服法呢,比如如果你要查宁德时代的行情,在wind里面只要:

select*fromAShareEODPriceswhereS_INFO_WINDCODE=.SZ

就可以了,用股票的自己代码从一张表查询数据即可。

如果是下面提到的聚源,这件事情就要从2个表关联查询,

selects.SECUCODE,s.SECUABBR,q.*

fromQT_DAILYQUOTEqinnerjoinSECUMAINs

onq.INNERCODE=s.INNERCODE

wheres.SECUCATEGORY=1ands.SECUMARKETin(83,90)

ands.SECUCODE=

这个是个小小的优点,如果我们查科创板股票行情,

select*fromAShareEODPriceswhereS_INFO_WINDCODE=.SH

还是相同的表,相同的查询语句,可是要在聚源里面查就麻烦了,因为聚源把科创板的这波票的数据,从行情,到财务数据各种,单拉了一块出来,所以科创板的行情表与A股(其实也包括科创啦)居然不在同一个表里面:

selects.SECUCODE,s.SECUABBR,q.*

fromLC_STIBDAILYQUOTEqinnerjoinSECUMAINs

onq.INNERCODE=s.INNERCODE

wheres.SECUCATEGORY=1ands.SECUMARKETin(83,90)

ands.SECUCODE=

A股的行情在QT_DAILYQUOTE表,科创行情在LC_STIBDAILYQUOTE表。看起来也没啥,但是如果你要算股票因子,要从N多张财务数据的表,取各种指标,就头疼了,相当于每个因子要算两遍。就比如算个PE吧,先要判断是不是科创板股票,如果是,price从K1表取,eps从K2表取;然后如果不是科创板股票,price从A1表取,eps从A2表取....看出差别了吧,蛋疼。可能也是被客户diss的多了,后来聚源做了批DZ_*开头的表,把两波表合并了,但也不是所有的表都有对应的DZ_*表,遇到一些小众指标时,你还得按照股票板块,从两个表取数据。除此以外,wind在行情表里面直接放了后复权价格,这样算股票(区间)涨跌就很方便了。聚源也能做,不过要再关联一张复权因子表,取到那个表里面的复权因子,再和普通的收盘价乘起来。也没有太复杂,但毕竟多做一步。

其次,来看看近2年上升势头很猛的同花顺,如果你炒股,一定知道它。但这里要说的不是它的交易端,很多券商的交易端都是套壳的同花顺或者通达信,我们要说的是同花顺的iFinD数据终端,

左侧那个树,就是非常有名的EDB(EconomicDatabase)。wind里面这个模块是要另外收费的。iFinD里面的数据非常非常非常多,界面也很漂亮。我不太理解,很多券商其实套壳的同花顺,可做的还是很丑陋。这个终端和券商(套壳)有啥区别呢,差别就在更专业的数据上。比如说华泰证券,它有很多不同的终端版本,底层是同花顺版本对应华泰证券专业版3,底层是通达信版本对应华泰证券高级版,我们打开华泰证券专业版3(同花顺版本的),输入,这是中证偏股基金指数,是评价基金时候非常常用的一个benchmark,

华泰这个终端虽然是同花顺壳,但它里面是没有这个数据的。现在看看iFinD终端,

就有这个指数。当然,大家说的更多的,这个是wind编的偏股基金指数,所以iFinD上也是没有的,只在wind上有。不过中证指数公司更官方,所以个人还是喜欢.CSI,至少很多终端上都有它,而且它是市值加权的,更接近真实情况。是等权的,而等权,做过量化策略就知道,其实是很难战胜的。

今天的主角是数据库,不是终端,所以我们看下同花顺数据库的数据字典(首页),

左侧的那些是表中文名,右侧就是表列,及数据说明,它的基金数据有这些:

左边是分类,比如我们最最最多用到的基金净值数据,

就在类别下面,右侧就是它的表结构了,如果我们想查一个基金的净值,只需要写一个sql语句:

select*fromfund_net_valuewherefund_code=xxxxxxorderbyeddesc;

它也会基于净值算很多衍生数据,像教科书指标,排名,同类对比等,

在这就能看到它提供的各种衍生数据。

还可以“投资组合”里面,看基金买的股票、债券等详细信息:

最后,聊下恒生聚源。它也有终端,但可以等同于没有。因为机构用户,绝绝绝(此处没有结巴)大多数用的都是wind和iFinD。聚源与同花顺、wind比一个明显的劣势就是EDB指标的缺乏,虽然也有,但很少。wind是国内EDB指标最多最全的,同花顺后来者居上,大致达到了wind七成(个人估计,不对此负任何责任)的水平,聚源就更弱点了,估计只有同花顺的7成水平。这里就要提提为什么EDB指标这么重要了,机构客户用终端产品,各种行情(股票,债券,基金,商品,指数)这叫做基本盘,必须有;各种财务数据(上市公司财报,盈利预测,基金季报,债券估值)这些还是基础,也是必须有。那在哪块竞争呢,就是EDB,各种你想的到的,想不到的指标,都要有!指标不全的话,我怎么在Excel里面构建我的模型呢?哪怕个指标,就1个没有,也没法用,我的excel插件总不能99个指标从聚源取了后,剩下的1个取不到怎么办,这活没法干了。另外,聚源不像东方财富(Choice)有很多的C端流量,所以虽然它的数据体量对散户而言绝对是降维打击,但是no流量,nomoney。

虽然它的终端一般,但数据库那是真的强。机构客户至少半壁江山(谦虚的说。也不透露太多具体信息了)的数据库市场是聚源的。我们先看看聚源数据字典的首页:

这个首页,讲真,比同花顺的清楚。左侧有哪些类型的数据一目了然,右侧还有个全局的大图。这里只说说基金的:

也很清楚,分成了基础数据和衍生两块。

很多人写文章引述的一个基金经理自购比例,

就出自上表。

此外,分析基金过程中和净值几乎同等重要的,就是基金持仓:

一季度,三季度是十大重仓股,二季度,四季度先披露季报,然后有个半年报和年报会披露全持仓。十大重仓是季频的,全持仓是半年频的,虽然频率很低,但它却是各种持仓补全算法的基础。做业绩归因,也必须依赖它。

再比如公募基金仓位,

多数人重点看的还是权益资产仓位。在熊市或者牛市前期,基金经理能不能把仓位降下去或者提上来(只针对灵活配置型基金),择时能力强不强,就看这个表了~这个数据是季频的,它是各种回归算法对齐,或者说检验误差的benchmark。

衍生表就更多了,如果想做,可以无穷无尽的做下去,光是基金经理有关的表,

就有这么多。如果偷懒,买个库表来直接做终端足足够用~

除此以外,但凡是基金季报里面披露的数据,供应商基本都会收录,比如说加权平均净值利润率,衡量期间基金的盈利能力,常用来表征投资者真实感觉到的收益率,在基金季报的这个位置:

聚源是收录在这个表中的:

公募基金的数据比股票少太多了,搞来搞去就只有净值,季报,路演,纪要等,所以供应商收录的还是比较全的。想要做基金分析,先找份基金的年报完整的看一遍,对里面犄角旮旯的数据指标先有个感官认识,然后对着某家数据供应商的基金数据字典再捋一遍,分析中有哪些指标、维度就有个初级的理解了。

常规金融数据库三巨头说完了,其实还有不少好的供应商。巨潮,天子门生(深交所旗下的)。巨灵有个特点是便宜,真的很便宜。东财的Choice终端普及率也蛮高了。财汇早就被大智慧收购了,它的债券数据做的很牛。

但是等会,上面提到的都是公募基金,私募这块市场呢,还有两家非常厉害的选手,就是私募排排和朝阳永续,它们都有很强的私募数据库产品(好买基金好像没有数据库对外卖的)。虽然上面提到的三家厂商也有私募数据,但如果真打算分析私募,还是建议直接买更专业选手的产品。私募不像公募那样必须定期披露季报、按日披露净值,也就是约束少,收集私募的数据非常困难,单一个对公募而言非常普通非常简单的净值吧,私募的净值就会有各种意想不到的情况发生。私募多数周频披露净值数据,但是哪天披露,不一定。周一到周日都行,还不固定,可以本周周三披露,下周周四披露~。还有比周频更长的披露间隔,或者披露2周,停一周,继续披露。这个事儿就比较麻烦,比如说算个区间收益率,大家净值头尾都对不齐,你说咋整。再比如比较30个产品吧,结果10位大哥是每周二披露的净值,10位大哥是每周四披露的净值,还有10位大哥是一周披露2次,每周一和每周五都披露净值。说到这是不是觉得私募忒难搞了?其实是也不是,我搞了N年的私募分析,确实大把的时间都在想法规整这些不规则的数据,以及处理各种意想不到的数据问题,但看的多了,也有套方法把它们摁的老老实实的;但和公募比,私募又是简单的,因为它只有净值呀!顶多再加个尽调撑s了。公募有季报,持仓,持有人结构,FOF配了多少,基金经理还经常出来路演,访谈的纪要,各种乱七八糟的数据一大堆。

最后,如果我们有雄心壮志,想做一个更的基金分析系统,除了公募、私募外,还要考虑未来兼容银行理财,券商资管,甚至信托的数据是不?资管新规之后,这些类型的产品都奔着净值化的道路去了,未来和基金的形式是一样的了。拿银行理财来说,你可能又得去买普益标准的数据库,接入他们的数据,那我们手上的公募,私募,银行理财,券商资管的净值(及其他财务类指标)数据就来自四家数据供应商,每家都有自己独特的唯一key,它们的数据怎么用,怎么混在一起用,到后面的具体章节再和大家细说。

下期见~

上期链接:从0开始搭建基金分析系统-开篇



转载请注明地址:http://www.huataia.com/htxd/12607.html
  • 上一篇文章:
  • 下一篇文章: 没有了