繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

面向对象策略框架升级版: 多因子选股+多因子权重排序示例策略。

作者/大师做交易 2019-06-04 00:00 0 来源: FX168财经网人物频道

程序框架说明:
与之前发布过的面向对象二八小市值是基本类似的,只是整个框架更加完善更加灵活了。
重点类说明:

1. Rule(object)
所有规则的基类。
该框架以事件触发式设计,包含聚宽策略的事件
Initialize,handle_data,before_trading_start.....等等。即每次聚宽事件都会调用所有规则的相关事件,除了handle_data,会根据策略流程可能中断执行,不会所有都执行。
除此之外,新增自定义的一些事件
on_sell_stock ,on_buy_stock ,before_clear_position ,on_clear_position 
为卖股,买股,清仓前,清仓后触发的事件。
假如有其它事件要求,可自行在Rule类添加。
2. Group_Rules(Rule)
为包含一系列规则组合的规则,通该类或扩展该类,实现树形策略执行流程。
3. Global_variable(object)
自定义所有规则共用的全局变量,用于规则通用数据存储。一个策略对应一个    Global_variable.
包含较为通用的卖股、买股、清仓函数。
4. Pick_stocks2(Group_rules)
    选股规则组合器。此类通过一系列Filter_query(query选股),Filter_stock_list(list 过滤选股)的子类组合选出股票池

5. Pick_financial_data(Filter_query)
根据聚宽财务数据的多因子选股器。
6. SortRules(Group_rules,Filter_stock_list)
多因子权重排序规则组合器。多因子权重排序算法实现类。(注,此处看似为多重继承,实际上Filter_stock_list只是定义了一个函数声明,可以理解为继承自 一个类 一个接口,故不必去看多重继承的一些坑)

类继承结构(部分):
多因子类结构图.png


策略流程查看日志生成的策略结构就成行了:

多因子小市值策略
    1.预先处理的辅助规则
        1.1. 设置系统参数:[使用真实价格交易] [忽略order 的 log] [设置基准]
        1.2. 根据时间设置不同的交易费率
        1.3. 持仓信息打印
        1.4. 策略绩效统计
    2.调仓执行条件的判断规则组合
        2.1. 调仓时间控制器: [调仓时间: ['14:50'] ]
        2.2. 大盘高低价比例止损器:[指数: 000001.XSHG] [参数: 160日内最高最低价: 2.2倍] [当前状态: False]
        2.3. 多指数20日涨幅损器[指数:['000016.XSHG', '399333.XSHE']] [涨幅:0.50%]
        2.4. 调仓日计数器:[调仓频率: 3日] [调仓日计数 0]
    3.选股
        3.1. 多因子选股:
                ---[ 0 < valuation.circulating_market_cap < 100 ]
                ---[ 0 < valuation.pe_ratio < 200 ]
                ---[ 0 < indicator.eps ]
                ---[排序:valuation.circulating_market_cap 从小到大]
                ---[限制选股数:200]
        3.2. 过滤创业板股票
        3.3. 一般性股票过滤器:['st', 'high_limit', 'low_limit', 'pause']
        3.4.多因子权重排序器
            3.4.1. [权重: 100 ] [排序: 从小到大 ] 流通市值排序
            3.4.2. [权重: 20 ] [排序: 从小到大 ] 按当 PriceType.now 价格排序
            3.4.3. [权重: 10 ] [排序: 从小到大 ] 按 20 日涨幅排序
            3.4.4. [权重: 10 ] [排序: 从小到大 ] 按 60 日涨幅排序
            3.4.5. [权重: 10 ] [排序: 从小到大 ] 按换手率排序 
        3.5. 获取最终待购买股票数:[ 3 ]
    4.调仓执行规则组合
        4.1. 股票调仓卖出规则:卖出不在buy_stocks的股票
        4.2. 股票调仓买入规则:现金平分式买入股票达目标股票数
        4.3. 显示调仓时买卖的股票

关于多因子选股的说明
其实没啥好说明的,无非是根据各种条件取并集而已。
多因子选股有待扩展的是按市场分布比例取集,比如,取流通市值最小的20%的股票,以后有空再做吧,果仁有这个功能。
关于多因子权重排序说明
对于每个因子,都对股票池进行独立的排序,然后以该因子排名*因子权重加到总权重。最后再对总权重进行排序。


关于策略实盘的说明
Shipane_manager 规则为把聚宽持仓同步到实盘同步的规则
使用该规则需下载 trader_sync.py和shipane_sdk.py到研究里。
下载地址:https://pan.baidu.com/s/1skZHEVV
Purchase_new_stocks为自动打新规则,需要 shipane_sdk.py
以上基于 实盘易 实现策略实盘。实盘易官网:http://www.iguuu.com/e?x=17867


关于面向对象策略更新代码失败的各种坑的总结:
大部分都是由序列化反序列化引起的。

  1. 不要把一个对象函数赋与另一个对象变量。如 obj1.func = obj2.func
  2. 更新代码前,一些废弃的类、函数请不要删除或改名。要删除或改名请在更新代码成功后。不然会反序列化失败。
  3. 新增一个类的成员变量,在使用前需要检测并赋初值,因为原策略里已创建的对象,可能没有被重新创建,然后并不存在这个新增的成员变量,后续再使用时就会报错,尤其是在把各个规则分拆放到研究里时,这个问题相当严重。在本策略中,用以下相互配合达到避免这个错误。
    a) 在update_params函数里进行成员变量初始化。
    b) Rule自带保存了传入参数的dict self._params,规则使用参数时,请直接用self._params.get(‘参数’,默认值)的方式使用参数,参数不再每个都保存为类成员,自然就不存在因为新增类成员导致策略错误的问题。
    c) 假如是在修改研究文件中的类,而该类在策略里有使用,新增成员变量时,在使用前,请Try,异常则初始化。
  4. 同一个Group_Rules规则组合下的规则,假如是同一个规则类使用了两次,则一定要设置对象名。即策略配置里的第二个字符串参数。否则会导致策略混乱出现乱七八糟的错误。本策略示例里没有这种情况。

以前我发布的面向对象,代码更新还是经常失败的。现在好多了,掌握了要点,基本没有再出现过更新失败的问题。


最后声明:
该策略只是作为我这个程序框架下的多因子选股票池,多因子权重排序的示例,希望起到抛砖引玉的作用,而对策略结果、收益、风险不负任何责任,也不作任何解释。。。因为我也没研究,随便写的几个因子玩玩的。

该策略框架为较通用的框架,我自己实盘策略也是基于这个写的,只是规则更多,所以有些基类里出现一些没使用过的代码,不要介意,可能我别的地方用了,无视了就好。

特别鸣谢 @北卡 ,@jqz1226, @在风中 对本程序框架和策略的帮助


2017-6-3更新
修改实盘易同步,增加实盘易官方API同步的规则 Shipane_Sync
为支持官方API的实现,修改了Rule和Strategy_Group,为规则增加运行级别的代码

分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2184文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2176文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1864文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2320文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 王启蒙现货黄金

    人气296文章3132粉丝8

    本人做分析师以来,并专注于贵金属投资市场,尤其是在现货黄金...

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2328文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4760文章8329粉丝119

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...

FX168财经

FX168财经学院

FX168财经

FX168北美