聚宽策略一 价值选股股票池策略
价值选股股票池策略
基于价值选股股票池策略(第一个量化策略,基于聚宽平台,之后会改进)
代码如下:
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
聚宽策略一 价值选股股票池策略相关推荐
- 分享聚宽量化交易执行选股策略的执行过程
分享聚宽量化交易执行选股策略的执行过程: 首先就是需要用不同的函数处理不同的数据,比如上市数据,要用run_query()函数处理,财务与估值数据要用get_fundamentals()函数处理.以及 ...
- 聚宽数据JQData中的股票复权方法
进行股票量化回测,面临的第一个坑就是数据坑--首先你得有数据,才能进行下一步工作. 在股票数据坑中,有一个很大的坑叫做股票的复权价格. 如果一个股票公告说进行分红.配股或者送转,那么这只股票就被赋予了 ...
- python数据分析及可视化(十七)聚宽(双均线分析、因子选股策略、多因子选股策略、均值回归理论、布林带策略、PEG策略、权重收益策略)
聚宽 聚宽是一个做金融量化的网站,https://www.joinquant.com,登录注册,如果你写的文章.策略被别人采纳,增加积分,积分用于免费的回测时长.在我的策略,进入策略列表,里面有做好的 ...
- 【量化投资】策略九(聚宽)
简述 策略九,其实是策略八的一个不加购买指数股票来对冲beta的策略. 效果图 代码 # 导入函数库 import statsmodels.api as sm from statsmodels imp ...
- 【量化投资】策略八(聚宽)
简述 这个还是根据之前的策略七实现的.主要是换用了另外的alpha因子三而已. 效果图 代码 # 导入函数库 import statsmodels.api as sm from statsmodels ...
- 【量化投资】策略七(聚宽)
简述 这里通过加大了对冲beta的比例,使得整个策略算是更进一步了. 效果 代码 # 导入函数库 import statsmodels.api as sm from statsmodels impor ...
- 【量化投资】策略五(聚宽)
简述 这其实是在策略四的前一个版本. 这个是没有手动实现beta对冲的策略.风险会更大.收益会更低. 代码 # 导入函数库 import statsmodels.api as sm from stat ...
- 【量化投资】策略四(聚宽)
简述 首先,大体模板,是根据网上的一堆教程学来的. 然后很多函数不懂,都通过API来搞定了,之后,再自己写的,用了自己的版本. 这是一个alpha策略,然后用的是,一个大佬给的一个公式写的因子. 然后 ...
- 【量化投资】策略一(聚宽)
简述 在某位大佬的推荐下,发现聚宽这个好用.然后,我开始学着用聚宽来写下策略来玩一玩. 发出来是方便自己回去研究,有人愿意看也可以. 第一个策略,是我在看聚宽教程中的一个多股策略的demo时,有了点想 ...
最新文章
- [19/03/30-星期六] IO技术_四大抽象类_ 字节流( 字节输入流 InputStream 、字符输出流 OutputStream )_(含字节文件缓冲流)...
- 用protoc-gen-lua生成PB的lua代码
- 移动Web怎么做屏幕适配
- 题目1507:不用加减乘除做加法
- Luogu P1198 [JSOI2008]最大数 线段树
- 通过进程ID获取基地址
- ios无痕埋点_掌握数据生命周期:初识数据埋点
- 菜鸟学 VB 用API在PictureBox中I划线|平移|放大|缩小 详解and分享
- Android 签名时 v2 与 v1 的选择
- Netty 学习(二):服务端与客户端通信
- 【建站教程】网站引用三方图片遇到简单防盗链referer的处理办法
- html 网页地图集制作ECHARTS,在页面使用echarts的地图(解决地图不完整)
- 挑逗新兴科技创业圈兴奋中枢,保险极客“百万医疗”搞事情
- html pc端单位转换,pc是什么单位?
- MSRA院长周礼栋升任微软全球资深副总裁,20年前加入微软,毕业于复旦
- SpringBoot 中dependencies飘红
- 【kronecker积rao积,及其它矩阵运算的一些性质】
- sklearn专题六:聚类算法K-Means
- layui 搜索 重置 自动刷新
- 激动我心的感觉――我的○五年元月求职经历[ZT]