量化交易 实战第十三课 打分法选股
量化交易 实战第十三课 打分法选股
- 经过筛选的因子
- 打分法选股流程
- 分析
- 代码
- 效果
经过筛选的因子
因子方向 | 因子说明 |
---|---|
因子升序 | 因子值越小越好, 市值, 市盈率, 市净率 |
因子降序 | 因子值越大越好, 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
效果
量化交易 实战第十三课 打分法选股相关推荐
- 量化交易 实战第十一课 回归法选股 part 1
量化交易 实战第十一课 回归法选股 part 1 概述 回归法选股流程 步骤分析 代码 导包 1. 准备日期数据 2. 准备因子数据 3. 获取价格 4. 计算对应的收益率 5. 填充因子收益率 6. ...
- 量化交易 实战第七课 单因子 IC 分析
量化交易 实战第七课 单因子 IC 分析 概述 代码实现 导包 1. 准备因子数据 2. 准备价格数据 3. 生成通用 Alphalens 结构 4. 计算因子 因子 IC 结果分析 时间序列图和移动 ...
- 量化交易 实战第三课 金融时间序列分析 Part 2
量化交易 实战第三课 金融时间序列分析 Part 2 黄金交叉 时间序列重采样 需求 resample 函数 代码 时间窗口 需求 rolling 函数 代码 股票序列分析策略 需求 代码 回归分析 ...
- 量化交易 实战第一课 策略入门
量化交易 实战第一课 策略入门 概述 要求 指标 市净率 股票市值 代码实现 概述 不管是技术分析还是基本面分析, 我们在进行投资的时候会选择某些表现好的股票来作为一个股票池. 从中进行交易的判断 ( ...
- 量化交易 实战第二课 金融时间序列分析 Part 1
量化交易 实战第一课 金融时间序列分析 Part 1 概述 平台 获取股票数据 需求 函数 index_components - 获取指数成分股列表 get_price - 合约历史数据 代码 统计分 ...
- 量化交易 实战第九课 多因子相关性分析
量化交易 实战第九课 多因子相关性分析 概述 研报分析结果 代码实现 导包 总资产回报率 IC 资本回报率 IC 计算相关性 概述 相关性 (Correlation) 在统计中是与独立性 (Indep ...
- Python量化交易实战-41EasyTrader自动化模拟真实交易
B站配套视频教程观看 EasyTrader自动化模拟真实交易 来到官方文档的使用部分: https://easytrader.readthedocs.io/zh/master/usage/ 一.用法 ...
- Python量化交易实战-38使用开源项目回测双均线策略
B站配套视频教程观看 使用PyAlgoTrade回测双均线策略 双均线策略:长短周期均线,通过金叉,死叉的方式买入卖出股票,获取收益的策略. 回顾上节课代码的部分,上节课完成了可视化代码的部分, 主要 ...
- 送书 | 《商品期货量化交易实战》
今天是周三,又到了给大家送书的时刻啦!这次给大家带来的是<商品期货量化交易实战>! (文末查看送书规则) 简介 本书首先讲解量化交易基础和Python编程入门:再讲解量化交易A ...
最新文章
- vue-route+webpack部署单页路由项目,访问刷新出现404问题
- 软件维护费 一般按照多少比例_2021年国家电网招聘:笔试进面一般是多少比例?...
- 各种说明方法的例句_说明方法和例句
- Flink + Iceberg 在去哪儿的实时数仓实践
- 闭包的示例_用示例解释JavaScript中的闭包
- php5.4 升级,centos上PHP5.3升级到PHP5.4及更高版本方法
- 【C++】 29_类中的函数重载
- [转载] QT中的connect用法总结
- 小说题目和章节题目还没想好
- 博弈论Python仿真(二)
- ActivityManager 管理Activity
- 20155305《网络对抗》信息搜集与漏洞扫描
- xp计算机护眼模式,xp系统桌面上老是显示护眼模式!(图)
- 数据增强——mixup
- u盘linux反应好慢,识别U盘很缓慢怎么办的八种解决方法
- 彩色证件照片常用的红色、蓝色背景颜色值 1
- Java关键字,标识符,数据类型,运算符
- 关于Niche站运营,我有几句话要说
- 天地图引擎加载自定义WMTS图层
- esp8266 AMR转PCM