当前位置:首页>股票

总市值小于30亿的股票(三分钟入门量化(十):小市值策略(聚宽))

日期:2023-11-29

来源:玫瑰财经网

浏览:

    hello,我是毛豆。本系列用最精简的代码和案例带你快速入门量化,只讲最干的干货,想要学习量化又不知道该如何上手的小伙伴赶紧看过来!

    前期回顾:

    三分钟入门量化(一):三分钟入门量化(一):行情数据获取&绘制k线图

    三分钟入门量化(二):三分钟入门量化(二):Tushare Pro数据接口介绍

    三分钟入门量化(三):三分钟入门量化(三):计算收益率

    三分钟入门量化(四):三分钟入门量化(四):行情数据统计分析

    三分钟入门量化(五):三分钟入门量化(五):收益率的推断统计

    三分钟入门量化(六):三分钟入门量化(六):相关性分析

    三分钟入门量化(七):三分钟入门量化(七):回归分析

    三分钟入门量化(八):三分钟入门量化(八):资本资产定价模型

    三分钟入门量化(九):三分钟入门量化(九):小市值策略(本地)

    上一期我们使用python在本地实现了小市值策略,但没有考虑到实际仓位分配不均等、交易手续费、滑点等问题,因此测算结果不是很精准。今天继续分享如何使用第三方量化平台做策略回测。


    聚宽回测框架

    我们以聚宽为例,先看一下回测框架。

    首先登录到聚宽官网,选择策略研究-策略列表,点击新建策略,选择股票策略。

    三分钟入门量化(十):小市值策略(聚宽)

    点击后进入到聚宽的回测环境中,界面展示如下:

    三分钟入门量化(十):小市值策略(聚宽)

    由于我们选择的是股票策略,这里官方已经为我们搭建好了股票策略的基本回测框架,分为4个代码块,分别如下:

    1.初始化函数initialize()

    三分钟入门量化(十):小市值策略(聚宽)

    用于设置一些环境参数,比如:

    set_benchmark():设置参照基准,一般选用沪深300作为参考;

    log.set_level():设置输出日志级别;

    set_order_cost():设置印花税、交易佣金,手续费默认为万分之三,印花税为千分之一;

    run_daily():定时任务,用于设置策略什么时候运行、以及运行频率。

    除了run_daily()之外,也可以使用handle_data()指定策略的运行频率。handle_data()每个单位时间会调用一次, 如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次。需要注意的是,同一策略中不要同时使用run_daily和handle_data。

    2.开盘前运行函数

    三分钟入门量化(十):小市值策略(聚宽)


    开盘前我们往往需要预先设定好备选股池,因此这里主要实现选股逻辑。最简单的方式就是直接指定股票代码,示例中指定备选股为平安银行。在run_daily()中指定time='before open',代表运行时间为开盘前(9:00)。

    3.开盘中运行函数

    三分钟入门量化(十):小市值策略(聚宽)

    开盘中我们需要对备选股和持仓股进行监控,一旦备选股符合买入条件就开仓,持仓股符合卖出条件就清仓。其中order_value()、order_target()为下单函数,用于实现下单功能。在run_daily()中指定time='open',按天回测运行时间为09:30:00,按分钟回测运行时间为每分钟的第1秒。

    4.收盘后运行函数

    三分钟入门量化(十):小市值策略(聚宽)

    收盘后我们可以打印出当天的交易记录,或者同步当天的某些特定信息。在run_daily()中指定time='after close',代表运行时间为收盘后(15:00)半小时内。

    上面的几个函数中都带有默认参数context、g。这两个对象都是回测环境中官方已经为我们构建好的,其中context用于存放用户的账户信息、时间信息等,比如:

    context.portfolio: 存放账户信息,包括账户总资金、可用资金、持仓股、仓位等等;

    context.current_dt:存放当前时间;

    g用于存放用户自定义的各类全局变量。

    总体来说回测框架清晰简明,用户只需要在此基础上新增自己的功能模块即可,而我们需要实现的任何功能都可以通过各类数据接口来达成。聚宽提供了丰富的数据接口,每个数据接口在官方给出的API文档中都有详细的说明,即用即查,非常方便。

    比如编写小市值策略需要用到的市值数据,在股票数据-财务数据中可以查看到数据接口为get_fundamentals():

    三分钟入门量化(十):小市值策略(聚宽)

    筛选出市值在20-30亿的股票,实现方式如下:

    q = query(            valuation.code,            valuation.market_cap        ).filter(            valuation.market_cap.between(20,30)        )# 选出低市值的股票,构成buylistdf = get_fundamentals(q)

    下面我们在回测环境中实现完整的小市值策略。


    小市值策略聚宽实现

    首先定义初始化函数,在这里可以预先定义好用于市值筛选的query语句,其功能为筛选出市值在20-30亿之间的股票并排序;设置持仓股为10只,设置调仓频率为每月1次。

    # 导入函数库from jqdata import *# 初始化函数,设定基准等等def initialize(context):    set_benchmark('000300.XSHG')    set_option('use_real_price', True)    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')    #定义用于市值筛选的query对象    g.q = query(valuation.code,valuation.market_cap).filter(valuation.market_cap.between(20,30)).order_by(valuation.market_cap.asc())    # 定义持仓数量    g.N = 10     # 每月运行一次    run_monthly(trade, 1)

    接下来实现交易函数,其功能为卖出持仓股,买入备选股。

    def trade(context):    #筛选初市值在20-30亿之间的股票并按市值升序排序    df = get_fundamentals(g.q)    buylist =list(df['code'])    #过滤停牌股票    buylist = filter_paused_stock(buylist)    #选择其中市值最小的10只    buylist = buylist[:g.N]    #持仓股卖出,如果持仓股在备选股中则不用卖    for security in context.portfolio.positions:        if security not in buylist:            order_target_value(security, 0)    #备选股买入,如果备选股在持仓股中则不用买    buylist=[i for i in buylist if i not in context.portfolio.positions]    if len(buylist)>0:        #每只股资金        cash = context.portfolio.available_cash/len(buylist)        ## 买入股票        for security in buylist:            order_value(security, cash)

    单独写一个函数,用于过滤停牌股:

    # 过滤停牌股票def filter_paused_stock(stock_list):    current_data = get_current_data()    return [stock for stock in stock_list if not current_data[stock].paused]

    写好之后我们设置回测时间为2023-01-01至2023-07-01、回测金额为100000、回测频率为每天,点击运行回测:

    三分钟入门量化(十):小市值策略(聚宽)

    查看收益概述:

    三分钟入门量化(十):小市值策略(聚宽)

    年化收益38.74%,最大回撤8.06%,累计收益、夏普比率、胜率等指标也都计算好了。曲线中蓝线为策略收益,红线为基准收益。

    点击查看交易详情可以看到具体交易了哪些股、盈亏如何:

    三分钟入门量化(十):小市值策略(聚宽)

    当然,回测时间太短是无法评估策略是否长期有效的。我们可以修改回测时间为2013.01.01-2023.07.01,重新回测:

    三分钟入门量化(十):小市值策略(聚宽)

    10年16倍!长期收益不错,但最大回撤也上升到了33.99%。相比于32.29%年化收益来说,这个回撤有点大,而且回撤时间较长,如果无法接受长期回撤的话需慎用。

    毛豆实盘使用的超短线高频量化策略『旋风冲锋』,经历了数十个版本的回测调优,不仅有着超高的年化收益,而且严格控制回撤,实盘效果也非常好。​

    回测数据:旋风冲锋策略说明

    实盘数据:『旋风冲锋』策略半年实盘数据大公开!

    三分钟入门量化(十):小市值策略(聚宽)

    以上是今天的全部干货内容,本文主要目的是阐述如何通过聚宽平台做策略回测,小市值策略本身如何这里不过多评价,每个人的风险偏好与投资风格不同,适合自身的策略才是最好的策略。

    本文是『三分钟入门量化』系列的最后一篇文章,后续毛豆还会分享更多量化相关文章,也会在每个交易日继续和大家分享旋风冲锋策略的实盘情况,欢迎大家点赞关注。

相关文章阅读

Copyright (c) 2022 玫瑰财经网 版权所有

备案号:冀ICP备17019481号

玫瑰财经网发布此信息的目的在于传播更多信息,与本站立场无关。玫瑰财经网不保证该信息(包含但不限于文字、视频、音频、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。
相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。