基本因子挖掘 -机器学习1 Kmeans

总体思路
  • 对于基本面因子的挖掘,总体来说,进行数据清洗整理后,通过IC因子分析,来确定有效的因子。在通过选出的有效因子,运用机器学习各类型算法或者其它常规的算法,来刷选出标的。
IC算法
  • 在此对于IC因子进行一定的简介。IC即信息系数(Information Coefficient),表示所选股票的因子值与股票下期收益率的截面相关系数,通过 IC 值可以判断因子值对下期收益率的预测能力。信息系数的绝对值越大,该因子越有效。IC为负表示因子值越小越好,IC为正表示因子值越大越好。 IC计算分为Rank IC 和 Normal IC 其存在的差异性为:Rank IC 是通过计算测试因子数值与排序的名次之间的相关性系数,而Normal IC 则是计算因子数值与其涨跌幅之间的相关性系数。相关公式如下:
    \begin{array}{l} RankIC(n) = \frac {Cov(x,r)} {n} \\note: \\x: \quad value\; of\; factor \\r: \quad rank\; of\; factor \\n: \quad amount\; of\; the\; cross\; sectional\; datas \end{array}
    \begin{array}{l} NormalIC(n) = \frac {Cov(x,v)} {n} \\note: \\x: \quad value\; of\; factor \\v: \quad change\; of\; stock \\n: \quad amount\; of\; the\; cross\; sectional\; datas \end{array}
alphalens模块的使用
  • alphalens 是一个辅助进行IC有效性因子检测的模块,具体使用方法在此不加以阐述。IC分析流程:

    1数据处理后需要的数据格式
    data.png

    2 部分分组后收益数据可视化部分截图
    pic1.png

    3 IC数值图表
    table.png
    pic2.png
有效性因子的刷选与数据挖掘
  • 通过IC进行有效性因子进行刷选后,注意!!!对于选择出来的基本面多因子,很多存在高度相关的因子,因此在进行数据挖掘挖掘之间,需要对因子的相关性进行检测。因子相关性table
    table2.png
  • 剔除高度相关的因子后,便可以使用选出的因子进行因子的挖掘,从而建立策略。在这里对于多种机器学习算法,例如Kmeans,随机森林,SVM,逻辑回归等。只对Kmeans算法的运用进行阐述,Kmeans算法的数学推导过程不做阐述。
    Kmeans在此是一种探索性的运用,只是基于一种想法进行的数据验证。
    在这里先对Kmeans算法的内容做一个简述,k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

  • \color{red}{idea\; start}

  • 从阐述中,不难发现,Kmeans算法是一种发现多维度下,在几何空间中具有邻近关系的聚类算法。那么在知道有效因子的情况下,基于多因子下,使用Kmeans便可以发现在多因子下,哪一些股票具有高度的空间邻近性,那么对于这些聚类分组后高关联性的股票组合,对其涨跌幅或者其他性质进行研究,探索出在这些分组中是否具有在某一方面性质很明显的股票。例如:某一个分组的股票普遍随机时间区间内平均涨跌幅均有极大可能优于其他分组。

  • 在发现某种性质后,便可以基于该性质建立策略,进行工程化并回测,验证策略的有效性。

  • 这里说明一点,由于Kmeans算法进行分组时需要自己设定分组数量,这里需要进行各种尝试。同时由于分组时初始点数据选择是随机的,导致大概率下,进行聚类时,例如某一数据第一次分类可能在第一组,而第二次分类就在第二组。这里需要解决此问题。

  • 解决办法:无论分组在哪一组,具有高度空间邻近性的数据点必定极高概率每一次分组都在同一组中,那么对于每一个数据的每一次数据分组结果均进行分组数字化标签,而后进行协方差计算,高度线性相关
    的便是同一组的数据点。

  • 在此种方式下需要考虑一种比较细的问题,便是由于定义高度相关性是需要阈值的,而在设定阈值后,极有可能出现数据A与数据B高度相关,数据B与数据C高度相关,但数据A与数据C稍低于阈值,从而非高度相关。在此情况需要考虑是取交集还是并集的问题!!!同时需要设计算法来进行高度相关的刷选过程。

  • \color{red}{idea\; end}

  • 在此附上某一性质下刷选出的分组结果截图,其标的均为沪深300成分股。


    pic3.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 以下本文笔记,仅供参考: 很全的面经,供参考 一、常见设计测试用例参考 1、在线支付,第三方支付宝支付的测试点 事...
    灿烂的GL阅读 1,256评论 0 3
  • 1.需求分析:分析需求点。 2.制定测试计划:包括人力,软硬件资源,测试点,集成顺序,进度和风险识别等内容。 3....
    享受健身和阅读阅读 17,107评论 0 15
  • 华泰价值选股系列之相对市盈率 市盈率(PE): 上市公司每股股价除以每股盈利 (EPS) 它把公司的股价与每股盈...
    Kean_L_C阅读 2,078评论 0 0
  • ##首先,作为测试人员需要学习并了解业务,分析需求点 ###为什么测试人员要参加需求分析?也就是进行测试需求分析的...
    蔬菜妞阅读 936评论 0 7
  • 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理...
    小灰辉先生阅读 1,355评论 0 3