量化投资:第5节 选股策略的开发

作者: 阿布

阿布量化版权所有 未经允许 禁止转载

abu量化系统github地址(欢迎+star,你的支持是我更新的动力!)

本节ipython notebook

在第一节即说过:

  • 在对的时间,遇见对的人(股票),是一种幸福
  • 在对的时间,遇见错的人(股票),是一种悲伤
  • 在错的时间,遇见对的人(股票),是一声叹息
  • 在错的时间,遇见错的人(股票),是一种无奈

之前的节讲的都是择时(什么时候投资), 本节将讲解选股。

1. 选股因子的编写

与择时小节类似,实现示例在中abu量化系统实现一个选股策略。

如下代码AbuPickRegressAngMinMax为选股因子,它的作用是将股票前期走势进行线性拟合计算一个角度,参数为选股条件,将选股条件作用于角度后进行股票的筛选。

from abupy import AbuPickStockBase, ps, ABuRegUtil

class AbuPickRegressAngMinMax(AbuPickStockBase):
    """拟合角度选股因子示例类"""
    def _init_self(self, **kwargs):
        """通过kwargs设置拟合角度边际条件,配置因子参数"""

        # 暂时与base保持一致不使用kwargs.pop('a', default)方式
        # fit_pick中 ang > threshold_ang_min, 默认负无穷,即默认所有都符合
        self.threshold_ang_min = -np.inf
        if 'threshold_ang_min' in kwargs:
            # 设置最小角度阀值
            self.threshold_ang_min = kwargs['threshold_ang_min']

        # fit_pick中 ang < threshold_ang_max, 默认正无穷,即默认所有都符合
        self.threshold_ang_max = np.inf
        if 'threshold_ang_max' in kwargs:
            # 设置最大角度阀值
            self.threshold_ang_max = kwargs['threshold_ang_max']

    @ps.reversed_result
    def fit_pick(self, kl_pd, target_symbol):
        """开始根据自定义拟合角度边际参数进行选股"""
        # 计算走势角度
        ang = ABuRegUtil.calc_regress_deg(kl_pd.close, show=False)
        # 根据参数进行角度条件判断
        if self.threshold_ang_min < ang < self.threshold_ang_max:
            return True
        return False

    def fit_first_choice(self, pick_worker, choice_symbols, *args, **kwargs):
        raise NotImplementedError('AbuPickRegressAng fit_first_choice unsupported now!')

上面编写的AbuPickRegressAngMinMax即为一个完整的选股策略:

  1. 选股策略必须继承自AbuPickStockBase
  2. 选股策略必须实现fit_pick,即完成通过选股阶段金融时间序列对股票决策是否选中
  3. 选股策略必须实现fit_first_choice, 但是可以raise NotImplementedError,fit_first_choice后面的章节示例
  4. fit_pick上的装饰器ps.reversed_result稍后讲解

选股模块主要功能依托AbuPickStockWorker,其类似择时模块中的AbuPickTimeWorker,其通过init_stock_pickers()函数将所有选股因子实例化,然后在之后的fit()操作中,遍历所有选股因子,使用选股因子的fit_pick()函数,保留所有选股因子的fit_pick()都返回True的股票,只要有一个选股因子的fit_pi

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值