# 数据源

基金费率信息我们的数据源主要来自于:

  1. 谁牛基金
  2. 蛋卷基金
  3. 韭圈儿

其中谁牛基金(基金决策宝)的数据需要先查询基金前面的对应码,然后拼接字符(SZxxx)才能请求接口,调用比较麻烦; 蛋卷基金的命中率太低;所以最后使用韭圈儿结合蛋卷基金来处理基金的费率信息,目前只保存申购和赎回费率,对于运行费率信息,我们暂时不关心,后期可以视情况保存。

# 解决的问题

# 区间处理

一开始我们对前中后的费率区间分别进行处理,这个时候需要针对每一种进行判断并单独处理,导致代码复杂度较高; 之后我们引入portion模块来处理区间信息,其中区间的最小值为 0,最大值为portion.inf,在存入数据库时,必须将inf转为None,即 MySQL 中的NULL;对于赎回费率区间,我们统一转为“天”的概念;对于申购费率区间,我们统一转为“元”的概念;区间我们统一处理为前闭后开的区间([0,inf)),因为后期在计算赎回费率的时候,我们借助pandas.cut可以更方便地切割;另外值得注意的一点是:对于时间区间,我们对天数进行了区间的转换,参阅parse_portion()方法;而对于金额区间,我们则直接按照匹配到的数据强制转换为前闭后开的区间,因为金额的最小精度是0.01

# 币种

另外,在处理费率信息过程中,有一部分的基金计算费率并不是以人民币作为结算数据,所以我们也对币种进行了匹配,目前数据中的币种我们还没有存入数据库,需要下一步处理。

# TODO

  • [ ] 对于封闭期基金,因为我们的赎回费率是按照天数来做区分的,所以暂时无法处理封闭基金的费率信息,暂时只能抛出IsClosedDurationError异常;
  • [ ] 爬虫效率太低,需要使用多线程(是否会导致反爬机制返回假数据待验证)

# ref

#460 (opens new window)