量化交易 实战第十三课 打分法选股

  • 经过筛选的因子
  • 打分法选股流程
    • 分析
    • 代码
    • 效果

经过筛选的因子

因子方向 因子说明
因子升序 因子值越小越好, 市值, 市盈率, 市净率
因子降序 因子值越大越好, ROIC, inc_revenue 营业总收入和 inc_profit_before_tax 利润增长率

打分法选股流程

分析

回测区间:
2016-01-01 ~ 2021-01-01

选股:

  • 选股因子: 6 个已知方向的因子
  • 选股权重:
    • 因子升序从小到大分 10 组, 第几组为所在组得分
    • 因子降序从大到小分 10 组, 第几组为所在组得分
  • 数据处理: 处理缺失值

调仓周期:

  • 调仓: 每月进行一次调仓
  • 交易规则: 卖出已持有的股票
  • 买入新的股票池当中的股票

代码

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import pandas as pd# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):# 选股数context.stocknum = 20# 升序因子context.up = ["market_cap", "pe_ratio", "pb_ratio"]# 运行按月定时函数scheduler.run_monthly(score_select, tradingday=1)def score_select(context, bat_dict):"""打分法选股逻辑"""# 选出银子数据, 进行缺失值处理q = query(fundamentals.eod_derivative_indicator.market_cap,fundamentals.eod_derivative_indicator.pe_ratio,fundamentals.eod_derivative_indicator.pb_ratio,fundamentals.financial_indicator.return_on_invested_capital,fundamentals.financial_indicator.inc_revenue,fundamentals.financial_indicator.inc_profit_before_tax)    fund = get_fundamentals(q)factors_data = fund.T  # 转置factors_data = factors_data.dropna()# 调试输出print(factors_data.head())# 定义打分函数, 确定股票池select_stocklist(context, factors_data)# 定义调仓函数reblance(context)# 定义打分函数, 确定股票池
def select_stocklist(context, factors_data):"""打分的具体步骤, 返回股票池"""# 循环每个因子去处理for name in factors_data.columns:# 因子升序的, 进行升序排序if name in context.up:factor = factors_data.sort_values(by=name)[name]else:factor = factors_data.sort_values(by=name, ascending=False)[name]# 对单个因子进行打分处理# 新建一个因子分数列factor = pd.DataFrame(factor)factor[name + "score"] = 0# 进行打分# 先求出每组数量, 然后根据数量一次给出分数stock_groupnum = len(factors_data) // 10for i in range(10):# 最后一组单独处理if i == 9:factor[name + "score"][(i + 1) * stock_groupnum:] = i + 1factor[name + "score"][i * stock_groupnum: (i + 1) * stock_groupnum] = i + 1# 拼接每个因子的分数到原始的 factors_data 数据中factors_data = pd.concat([factors_data, factor[name + "score"]], axis=1)# 调试输出print(factors_data.head())# 求出总分sum_score = factors_data[["market_capscore", "pe_ratioscore", "pb_ratioscore","return_on_invested_capitalscore", "inc_revenuescore","inc_profit_before_taxscore"]].sum(1).sort_values()# 调试输出print(sum_score.head())# 定义股票池context.stock_list = sum_score.index[:context.stocknum]# 调试输出print(context.stock_list)def reblance(context):# ----------------卖出----------------# 遍历股票池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

效果


量化交易 实战第十三课 打分法选股相关推荐

  1. 量化交易 实战第十一课 回归法选股 part 1

    量化交易 实战第十一课 回归法选股 part 1 概述 回归法选股流程 步骤分析 代码 导包 1. 准备日期数据 2. 准备因子数据 3. 获取价格 4. 计算对应的收益率 5. 填充因子收益率 6. ...

  2. 量化交易 实战第七课 单因子 IC 分析

    量化交易 实战第七课 单因子 IC 分析 概述 代码实现 导包 1. 准备因子数据 2. 准备价格数据 3. 生成通用 Alphalens 结构 4. 计算因子 因子 IC 结果分析 时间序列图和移动 ...

  3. 量化交易 实战第三课 金融时间序列分析 Part 2

    量化交易 实战第三课 金融时间序列分析 Part 2 黄金交叉 时间序列重采样 需求 resample 函数 代码 时间窗口 需求 rolling 函数 代码 股票序列分析策略 需求 代码 回归分析 ...

  4. 量化交易 实战第一课 策略入门

    量化交易 实战第一课 策略入门 概述 要求 指标 市净率 股票市值 代码实现 概述 不管是技术分析还是基本面分析, 我们在进行投资的时候会选择某些表现好的股票来作为一个股票池. 从中进行交易的判断 ( ...

  5. 量化交易 实战第二课 金融时间序列分析 Part 1

    量化交易 实战第一课 金融时间序列分析 Part 1 概述 平台 获取股票数据 需求 函数 index_components - 获取指数成分股列表 get_price - 合约历史数据 代码 统计分 ...

  6. 量化交易 实战第九课 多因子相关性分析

    量化交易 实战第九课 多因子相关性分析 概述 研报分析结果 代码实现 导包 总资产回报率 IC 资本回报率 IC 计算相关性 概述 相关性 (Correlation) 在统计中是与独立性 (Indep ...

  7. Python量化交易实战-41EasyTrader自动化模拟真实交易

    B站配套视频教程观看 EasyTrader自动化模拟真实交易 来到官方文档的使用部分: https://easytrader.readthedocs.io/zh/master/usage/ 一.用法 ...

  8. Python量化交易实战-38使用开源项目回测双均线策略

    B站配套视频教程观看 使用PyAlgoTrade回测双均线策略 双均线策略:长短周期均线,通过金叉,死叉的方式买入卖出股票,获取收益的策略. 回顾上节课代码的部分,上节课完成了可视化代码的部分, 主要 ...

  9. 送书 | 《商品期货量化交易实战》

    今天是周三,又到了给大家送书的时刻啦!这次给大家带来的是<商品期货量化交易实战>!       (文末查看送书规则) 简介 本书首先讲解量化交易基础和Python编程入门:再讲解量化交易A ...

最新文章

  1. vue-route+webpack部署单页路由项目,访问刷新出现404问题
  2. 软件维护费 一般按照多少比例_2021年国家电网招聘:笔试进面一般是多少比例?...
  3. 各种说明方法的例句_说明方法和例句
  4. Flink + Iceberg 在去哪儿的实时数仓实践
  5. 闭包的示例_用示例解释JavaScript中的闭包
  6. php5.4 升级,centos上PHP5.3升级到PHP5.4及更高版本方法
  7. 【C++】 29_类中的函数重载
  8. [转载] QT中的connect用法总结
  9. 小说题目和章节题目还没想好
  10. 博弈论Python仿真(二)
  11. ActivityManager 管理Activity
  12. 20155305《网络对抗》信息搜集与漏洞扫描
  13. xp计算机护眼模式,xp系统桌面上老是显示护眼模式!(图)
  14. 数据增强——mixup
  15. u盘linux反应好慢,识别U盘很缓慢怎么办的八种解决方法
  16. 彩色证件照片常用的红色、蓝色背景颜色值 1
  17. Java关键字,标识符,数据类型,运算符
  18. 关于Niche站运营,我有几句话要说
  19. 天地图引擎加载自定义WMTS图层
  20. esp8266 AMR转PCM

热门文章

  1. apktool反编译及后续打包
  2. 七进制转十进制java_java基础——Java进制转换
  3. 联通沃享小颗粒真正好用的(虚拟专用网络)正式上线
  4. python变量与声明
  5. 1]解决java.util.concurrent.RejectedExecutionException
  6. J2EE基础之map集合框架
  7. Android--单元测试
  8. Nessus Host Discovery
  9. 搭建内网ntp时间同步服务器
  10. 数据库触发器实例讲解