当前位置: > 财经>正文

量化交易 实战第五课 市值因子策略

2023-07-14 06:33:53 互联网 未知 财经

量化交易 实战第五课 市值因子策略 概述要求代码实现总结

概述

市值因子是长期有效的, 这是经过 A 股, 百年美股的大量历史数据验证过的.

我们将用之前学到的知识, 拿市值因子 (Alpha 因子) 来实现一个最基本市值因子策略.

要求 选股: 获得市值最小的前 10 支股票调仓: 每周调仓,将所有资金平摊到这 10 个股票的购买策略. 一次性卖出所有不符合条件的 代码实现 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。def init(context): scheduler.run_weekly(get_stock, tradingday=1) # 每周运行 scheduler.run_weekly(trade_stock, tradingday=1) # 每周运行def get_stock(context, bar_dict): # 筛选条件 q = query( fundamentals.eod_derivative_indicator.market_cap ).order_by( fundamentals.eod_derivative_indicator.market_cap.asc() # 市值从小到大 ).limit(10) # 转置 fund = get_fundamentals(q) # 调试输出 logger.info(fund.T) # 加入股票池 context.stock_list = fund.T.indexdef trade_stock(context, bar_dict): # ----------------卖出----------------# 遍历股票池 for stock in context.portfolio.positions.keys(): # 判断是否还在股票池 if stock not in context.stock_list: # 如果不在, 卖出 order_target_percent(stock, 0) # ----------------买入-----------------# 买入的百分比 weight = 1.0 / len(context.stock_list) # 遍历股票池 for stock in context.stock_list: # 等比例买入 order_target_percent(stock, weight)# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次def before_trading(context): pass# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新def handle_bar(context, bar_dict): pass# after_trading函数会在每天交易结束后被调用,当天只会被调用一次def after_trading(context): pass

输出结果:

2023-01-06INFOmarket_cap300028.XSHE 2.64865e+08000018.XSHE 4.58526e+08600240.XSHG 4.98489e+08002260.XSHE 8.3538e+08002499.XSHE 8.9397e+08600462.XSHG 8.9675e+08600891.XSHG 9.63434e+08600634.XSHG 9.72987e+08002072.XSHE 1.0208e+09600306.XSHG 1.04568e+092023-01-06WARN订单创建失败: 300028.XSHE 在 2023-01-06 15:00:00 时停牌2023-01-06WARN订单创建失败: 002260.XSHE 在 2023-01-06 15:00:00 时停牌2023-01-06WARN订单被拒单: [600462.XSHG] 已涨停。2023-01-06WARN订单被拒单: [600634.XSHG] 已涨停。2023-01-13INFOmarket_cap300028.XSHE 2.64865e+08600240.XSHG 5.26974e+08002260.XSHE 8.3538e+08002499.XSHE 8.7507e+08600462.XSHG 9.02088e+08600634.XSHG 9.84502e+08002188.XSHE 1.02583e+09002072.XSHE 1.03488e+09600891.XSHG 1.05607e+09600306.XSHG 1.06705e+092023-01-13WARN订单创建失败: 300028.XSHE 在 2023-01-13 15:00:00 时停牌2023-01-13WARN订单创建失败: 002260.XSHE 在 2023-01-13 15:00:00 时停牌2023-01-20INFOmarket_cap300028.XSHE 2.64865e+08600240.XSHG 5.26974e+08002499.XSHE 8.2782e+08002260.XSHE 8.3538e+08600462.XSHG 8.64724e+08600634.XSHG 8.69355e+08002188.XSHE 9.43052e+08600891.XSHG 9.6961e+08600306.XSHG 9.97578e+08002072.XSHE 1.01024e+092023-01-20WARN订单创建失败: 300028.XSHE 在 2023-01-20 15:00:00 时停牌2023-01-20WARN订单创建失败: 002260.XSHE 在 2023-01-20 15:00:00 时停牌2023-01-20WARN订单创建失败: 下单量为0...

回测结果:

总结

市值因子策略非常简单, 但也存在很多问题. 比如最大回测值较高, 容易吃很多滑点. 所以在实盘中, 我们不会直接使用小市值策略. 而是在此基础上进行二次开发, 比如融合其他因子, 比如加上择时等等, 就能变成很好的策略.

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。