价值选股股票池策略

基于价值选股股票池策略(第一个量化策略,基于聚宽平台,之后会改进)

代码如下:

import jqdata
import pandas as pd
import numpy as np
import math
import talib as tl
from jqlib.technical_analysis import *
import statsmodels.api as sm
from pandas.stats.api import olsdef initialize(context):g.stocksnum = 100  # 持有最小市值股票数g.period = 10  # 轮动频率log.set_level('order', 'error')run_daily(daily, time='before_open')  # 周期循环dailyrun_daily(mktopen, time='every_bar')g.days = 1  # 记录策略进行到第几天,初始为1g.holdpct = 1g.buylist=[]def trade(context, buylist):# 对于每个当下持有的股票进行判断:现在是否已经不在buylist里,如果是则卖出for stock in context.portfolio.positions:if stock not in buylist:  # 如果stock不在buylistorder_target(stock, 0)  # 调整stock的持仓为0,即卖出# 将总资产(现金+股票)除以持股数g.stocksnumposition_per_stk = g.holdpct * context.portfolio.total_value / g.stocksnum# 调整buylist中的每个股票持仓价值为position_per_stkfor stock in buylist:order_target_value(stock, position_per_stk)# 止损
def stop(context):# 循环查看持仓的每个股票for stock in context.portfolio.positions:# 如果股票最新价格除以平均成本小于0.8,即亏损超过20%if context.portfolio.positions[stock].price / context.portfolio.positions[stock].avg_cost < 0.8:# 调整stock的持仓为0,即卖出order_target(stock, 0)# 输出日志:股票名 止损print ("\n%s 止损" % stock)def pick(context):# 获取股票池df = get_fundamentals(query(valuation.code, valuation.pb_ratio, indicator.roe))# 进行pb,roe大于0筛选df = df[(df['roe'] > 0) & (df['pb_ratio'] > 0)].sort('pb_ratio')# 以股票名词作为indexdf.index = df['code'].values# 取roe倒数df['1/roe'] = 1 / df['roe']# 获取综合得分df['point'] = df[['pb_ratio', '1/roe']].rank().T.apply(f_sum)# 按得分进行排序,取指定数量的股票df = df.sort('point')[:g.stocksnum]# 取出前g.stocksnum名的股票代码,并转成list类型,buylist为选中的股票g.buylist = list(df['code'][:g.stocksnum])return g.buylist
def f_sum(x):return sum(x)def mktopen(context):# 每分钟止损stop(context)def mkt_index(context):mktindex = history(count=1, field='close', security_list=['000300.XSHG'])mktindex = mktindex.ix[-1, '000300.XSHG']date =context.current_dt.strftime("%Y-%m-%d")ma20 = MA(['000300.XSHG'], check_date=date, timeperiod=20)ma20 = ma20['000300.XSHG']if mktindex > ma20:return 1return 0.5def daily(context):# 判断策略进行天数是否能被轮动频率整除余1if g.days % g.period == 1:buylist = pick(context)g.holdpct = mkt_index(context)trade(context, buylist)else:pass  # 什么也不做g.days = g.days + 1  # 策略经过天数增加1

聚宽策略一 价值选股股票池策略相关推荐

  1. 分享聚宽量化交易执行选股策略的执行过程

    分享聚宽量化交易执行选股策略的执行过程: 首先就是需要用不同的函数处理不同的数据,比如上市数据,要用run_query()函数处理,财务与估值数据要用get_fundamentals()函数处理.以及 ...

  2. 聚宽数据JQData中的股票复权方法

    进行股票量化回测,面临的第一个坑就是数据坑--首先你得有数据,才能进行下一步工作. 在股票数据坑中,有一个很大的坑叫做股票的复权价格. 如果一个股票公告说进行分红.配股或者送转,那么这只股票就被赋予了 ...

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

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

  4. 【量化投资】策略九(聚宽)

    简述 策略九,其实是策略八的一个不加购买指数股票来对冲beta的策略. 效果图 代码 # 导入函数库 import statsmodels.api as sm from statsmodels imp ...

  5. 【量化投资】策略八(聚宽)

    简述 这个还是根据之前的策略七实现的.主要是换用了另外的alpha因子三而已. 效果图 代码 # 导入函数库 import statsmodels.api as sm from statsmodels ...

  6. 【量化投资】策略七(聚宽)

    简述 这里通过加大了对冲beta的比例,使得整个策略算是更进一步了. 效果 代码 # 导入函数库 import statsmodels.api as sm from statsmodels impor ...

  7. 【量化投资】策略五(聚宽)

    简述 这其实是在策略四的前一个版本. 这个是没有手动实现beta对冲的策略.风险会更大.收益会更低. 代码 # 导入函数库 import statsmodels.api as sm from stat ...

  8. 【量化投资】策略四(聚宽)

    简述 首先,大体模板,是根据网上的一堆教程学来的. 然后很多函数不懂,都通过API来搞定了,之后,再自己写的,用了自己的版本. 这是一个alpha策略,然后用的是,一个大佬给的一个公式写的因子. 然后 ...

  9. 【量化投资】策略一(聚宽)

    简述 在某位大佬的推荐下,发现聚宽这个好用.然后,我开始学着用聚宽来写下策略来玩一玩. 发出来是方便自己回去研究,有人愿意看也可以. 第一个策略,是我在看聚宽教程中的一个多股策略的demo时,有了点想 ...

最新文章

  1. [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)...
  2. 用protoc-gen-lua生成PB的lua代码
  3. 移动Web怎么做屏幕适配
  4. 题目1507:不用加减乘除做加法
  5. Luogu P1198 [JSOI2008]最大数 线段树
  6. 通过进程ID获取基地址
  7. ios无痕埋点_掌握数据生命周期:初识数据埋点
  8. 菜鸟学 VB 用API在PictureBox中I划线|平移|放大|缩小 详解and分享
  9. Android 签名时 v2 与 v1 的选择
  10. Netty 学习(二):服务端与客户端通信
  11. 【建站教程】网站引用三方图片遇到简单防盗链referer的处理办法
  12. html 网页地图集制作ECHARTS,在页面使用echarts的地图(解决地图不完整)
  13. 挑逗新兴科技创业圈兴奋中枢,保险极客“百万医疗”搞事情
  14. html pc端单位转换,pc是什么单位?
  15. MSRA院长周礼栋升任微软全球资深副总裁,20年前加入微软,毕业于复旦
  16. SpringBoot 中dependencies飘红
  17. 【kronecker积rao积,及其它矩阵运算的一些性质】
  18. sklearn专题六:聚类算法K-Means
  19. layui 搜索 重置 自动刷新
  20. 激动我心的感觉――我的○五年元月求职经历[ZT]

热门文章

  1. 半年 - 足以改变一个人
  2. GIT国内下载,阿里镜像
  3. infinity迁移webTab插件
  4. 小公司卧薪尝胆三年,意外拿到美团offer
  5. 人间地狱服务器一直显示有人,人间地狱常见问题及解决方法_Hell Let Loose常见问题QA_游戏堡...
  6. Python3教程:copy模块详细用法
  7. 百度网盘登陆科创板,真能值400亿吗?很有可能
  8. docker-compose up和restart的区别
  9. 面试官再问你优先级队列,请把这篇文章丢给他
  10. AGC049 A - Erasing Vertices(概率期望)