数据分析--单因子选股策略、多因子选股策略(选股)

一、单因子选股策略--小市值策略

二、多因子选股策略--市值+ROE(净资产收益率)选股策略


一、单因子选股策略--小市值策略

因子选股策略

因子:选择股票的某种标准

  增长率、市值、市盈率、ROE(净资产收益率)............

选股策略:

  对于某个因子,选取表现最好(因子最大或最小)的N支股票持仓

  每隔一段时间调仓一次,如果一段时间没有涨可以卖了换

小市值策略:选取股票池中市值最小的N只股票持仓

例如:选择20支市值最小的股票持有,一个月调一次仓:

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')g.security = get_index_stocks('000300.XSHG')# 选市值作为因子,要从表valuation中market_cap字段获取sqlachmy的query对象g.q = query(valuation).filter(valuation.code.in_(g.security))g.N = 20      #20支市值最小的股票# 假设因子选股策略是每30天执行一次#方式一:# g.days = -1# def handle_data(context,data):#     g.days += 1#     if g.days % 30 == 0:#         pass#方式二:# 定时执行函数,每个月第1个交易日执行handle函数run_monthly(handle, 1)
def handle(context):df = get_fundamentals(g.q)[['code','market_cap']]df = df.sort_values('market_cap').iloc[:g.N,:]  #选出20支print(df)to_hold = df['code'].valuesfor stock in context.portfolio.positions:if stock not in to_hold:order_target(stock, 0)to_buy = [stock for stock in to_hold if stock not in context.portfolio.positions]if len(to_buy) > 0:cash_per_stock = context.portfolio.available_cash / len(to_buy)for stock in to_buy:order_value(stock, cash_per_stock)

小市值策略代码

二、多因子选股策略--市值+ROE(净资产收益率)选股策略

多因子选股策略

如何同时综合多个因子来选股?

评分模型:

  每个股票针对每个因子进行评分,将评分相加

  选出总评分最大的N只股票持仓

  如何计算股票在某个因子下的评分:归一化(标准化),下面是两种标准化的方式

比如选择两个因子:市值和ROE(净资产收益率)作为选股评价标准

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')g.security = get_index_stocks('000300.XSHG')# 选市值作为因子,要从表valuation中market_cap字段获取sqlachmy的query对象g.q = query(valuation, indicator).filter(valuation.code.in_(g.security))g.N = 20      #20支股票
run_monthly(handle, 1)
def handle(context):df = get_fundamentals(g.q)[['code','market_cap','roe']]df['market_cap'] = (df['market_cap']-df['market_cap'].min())/(df['market_cap'].max()-df['market_cap'].min())df['roe'] = (df['roe']-df['roe'].min())/(df['roe'].max()-df['roe'].min())# 双因子评分:市盈率越大越好,市值越小越好df['score'] = df['roe'] - df['market_cap']# 对评分排序,选最大的20支股票df = df.sort_values('score').iloc[-g.N:,:]to_hold = df['code'].valuesfor stock in context.portfolio.positions:if stock not in to_hold:order_target(stock, 0)to_buy = [stock for stock in to_hold if stock not in context.portfolio.positions]if len(to_buy) > 0:cash_per_stock = context.portfolio.available_cash / len(to_buy)for stock in to_buy:order_value(stock, cash_per_stock)

市值+ROE选股策略

posted on 2019-05-31 17:22 要一直走下去 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/staff/p/10956443.html

数据分析--单因子选股策略、多因子选股策略(选股)相关推荐

  1. python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)

    聚宽 聚宽是一个做金融量化的网站,https://www.joinquant.com,登录注册,如果你写的文章.策略被别人采纳,增加积分,积分用于免费的回测时长.在我的策略,进入策略列表,里面有做好的 ...

  2. 量化选股——基于动量因子的行业风格轮动策略(第1部分—因子测算)

    文章目录 动量因子与行业轮动概述 动量因子的理解 投资视角下的行业轮动现象 投资者视角与奈特不确定性 动量因子在行业风格上的效果测算 动量因子效果测算流程概述 1. 行业选择:申万一级行业 2. 动量 ...

  3. 多因子选股模型python_量化交易——因子选股、多因子选股策略

    一.因子选股策略 1.因子 因子:选择股票的某种标准.因子是能够预测股票收益的变量. (1)基本面因子 基本面因子描述了一个公司的财务状况,最常见的基本面因子是由利润表,资产负债表以及现金流量表中的数 ...

  4. 量化交易——因子选股、多因子选股策略

    一.因子选股策略 1.因子 因子:选择股票的某种标准.因子是能够预测股票收益的变量. (1)基本面因子 基本面因子描述了一个公司的财务状况,最常见的基本面因子是由利润表,资产负债表以及现金流量表中的数 ...

  5. 初探多因子选股:多因子筛选与因子正交化

    多因子筛选与因子正交化 引言 在多因子研究框架中,如果已经检验出多个有效的因子,而在实际因子选股的过程中,各个有效的因子可能会相互影响,而高度相关的两个有效因子,即使都有不错的获取alpha的能力,但 ...

  6. 量化投资中的因子逻辑与多因子选股的概念

    如何理解多因子选股 量化交易:多因子选股之有效因子 这篇文章对我来说,还是不够透彻.我需要理解什么是因子. 量化投资中的因子逻辑是什么?该如何实现? 这篇文章将因子分为了估值因子,成长因子,财务质量因 ...

  7. 首板策略换手率因子研究

    在打首板策略中,由于标的数量有限,持仓时间短,而短期波动随机性较强,难以对其收益进行建模拟合,所以策略选股往往以多个因子做条件选股或权重打分排序选股,本文试图对打首板策略中的换手率因子展开研究. 打首 ...

  8. 华泰单因子测试之估值类因子(因子数据获取分析处理)

    华泰单因子测试之估值类因子 pe(price-to-earning ratio) 市盈率,PE = 流通市值/最近4个季度的净利润:最近 4 个季度的净利润按如下方法计算: 1-4 月,最近 4 个季 ...

  9. 量化选股策略搭建(四)(短期策略搭建)

    量化选股策略搭建(四)(短期策略搭建) 首先我们需要把选股这个问题转化为一个机器学习问题.那么如何转化成机器学习问题呢?机器学习也分两类问题:1.回归问题,2.分类问题.常规的一些方法是预测股价增长来 ...

最新文章

  1. 最新调查:等这一波COBOL程序员退休,很多关键岗位就后继无人了
  2. python地图热力图是什么意思_python实现输入的数据在地图上生成热力图效果
  3. mysql date_format 按不同时间单位进行分组统计
  4. Leetcode 150. 逆波兰表达式求值 解题思路及C++实现
  5. 转:VirtualBox Linux Guest host CPU占用高问题解决!
  6. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解
  7. 设计模式在项目中的应用案例_设计模式在项目中的应用(初学者版)
  8. linux操作系统学什么,Linux学习-第一天-什么是操作系统
  9. Joseph Problem(解约瑟夫问题)
  10. html5背景图片设置大小_web前端学习之HTML5前端开发的特点
  11. FusionInsight怎么帮「宇宙行」建一个好的「云数据平台」?
  12. 数据密集型应用系统设计--数据分区
  13. latex 版本控制:TexStudio/Texmaker/... + git(smartGit)
  14. sap系统搭建教程_手把手安装SAP ERP系统
  15. Java基础———第一弹
  16. 天外键盘映射工具(适合魔兽真三改键)
  17. 软件测试固态硬盘健康状态良好,HDTune太老鲁大师太傻 用专业软件洞悉固态硬盘健康状态...
  18. 曲率系列1:曲率、法曲率、平均曲率、主曲率和高斯曲率(概念推导解读)
  19. 无刷直流电动机矢量控制(五)——开环调速原理(方波形式)
  20. SpyNote5.0 Client_APK逆向分析

热门文章

  1. 伏达NU1680:单芯片解决TWS耳机仓无线充电方案
  2. MAC地址飘移查看及解决方法 一般是网络中存在环路
  3. 调用百度语音识别接口实现语音识别与语音合成
  4. 如何将Matlab2019b和M文件关联
  5. Loopring(路印协议)——去中心化交易协议真的有未来吗?
  6. Linux cma内存的使用
  7. [RK3399][Android7.1] 调试笔记 --- 闪电浏览器全屏播放视频时黑屏
  8. appemit支持谷歌chrome edge浏览器在线操作CATIA CAD
  9. 要嫁就嫁程序员:那些你不理解的真实的他们。
  10. 卡尔曼滤波(利用C++编写,ROS下实现)