更新日期:2016-08-23 增加自定义股票统计函数  QQ讨论群: 点击加群

果仁选股策略--FAQ

1.果仁提供什么服务?

果仁网用户可以在几个鼠标点击内定制自己的量化选股策略。果仁策略可以帮助用户从数千只股票里挑出在未来更有可能赚钱几只或几十只股票。果仁策略的有效性在真实的历史数据得到测试。策略的历史收益将和沪深300等收益基准做对比, 帮助您判断股票策略是否成功。 策略一旦创建,策略的实盘收益将被自动计算出来。果仁策略会在每个调仓日自动产生股票调仓指令,以指导用户具体的股票买卖。

在共享策略里,您可以研究学习其他用户创建的策略,分享自己的策略,和社区的朋友们共同讨论提高。在策略商城里可以订阅跟随他人的精品策略,跟随交易。

2.这种选股方法真的能赚钱吗?

基于量化指标的回测统计方法在中国远没有得到广泛使用,大多数投资者采用跟风投资或K线图形的策略。也正因为很少有人用这种方法买卖股票,这种方法在中国更加高效。在欧美市场,量化统计已经被很多聪明人研究透彻,这造成一般量化策略有效性降低,击败大盘指数是件不容易的事情。而在中国,一个相对简单的量化选股模型就有可能轻松跑赢大盘。

3.量化投资就是高频交易吗?

不是。量化投资是基于量化统计模型的一种投资方法。其核心步骤是将量化模型放回真实的历史数据模拟跑盘,以验证量化模型的有效性。 量化投资可以做日内高频交易也可以做日间低频交易,只要是基于量化模型统计的投资方法都是量化投资。果仁支持日间股票买卖量化模型,门槛低,即便是一般的投资者也可以使用。有兴趣的朋友可以读读丁鹏的《量化投资—策略与技术》了解一些量化投资的基本概念。在量化交易理念方面,科蒂斯.费思的《海龟交易法则》提供非常有意义的指导

4.果仁的量化策略买卖模型是什么?

果仁策略默认的交易模型(模型I)是一种定期调仓的量化轮动策略。在每一个调仓日, 果仁策略卖出仓内的所有股票, 并依据调仓日前一天的数据,选出股票等权重买入。如果选出的股票已经在仓内, 这支股票的仓位也会被重新调整成和其它股票一样的仓位, 但如果这只股票因为停牌或涨停跌停无法调整仓位,则仓位保持不变。 这种买卖模型比较简单,适合轮动交易策略。 果仁交易模型II是一种按条件调仓的交易模型, 每只股票可以保持自己的仓位, 在规定范围内不作调整。这是一种更加接近直接操作的交易模型。

5.选股指标的数据从哪里来?何时更新?

选股指标(除了分析师预测指标外)是果仁根据原始市场数据和公司发布的财报自己计算出来的。具体的计算方法在选股指标里有解释。

数据日期范围:大多数指标从2007年1月4日开始, 用户可以使用历史查询功能来判定任一股票的指标日期范围。股票数据每晚10点完成更新, 基金数据到第二日早9点完成更新。

6.果仁股票行业分类标准是什么?

果仁依据申万2014版一类行业标准对股票进行分类。

7.果仁历史回测真实吗?

为了做到回测的真实性,果仁回测引擎作了如下处理:使用精准的(point-in-time)历史数据, 彻底回避了使用未来信息的隐患;对停牌和涨跌停股票的买卖限制做出真实处理;对交易成本进行合理估算。历史回测结果可以全部导出到Excel文件里,方便验算。 经过许多细心用户的验证, 果仁历史回测结果是真实可靠的。

8.筛选条件和排名条件各有什么用处?

果仁使用“先筛选后排名”的选股流程。 当选股策略既有筛选条件又有排名条件时,筛选条件将首先被使用,从几千只股票里选出一批股票做为候选股票,然后排名条件将被用来对这些候选股票做出排名,排名最靠前的N只股票将被买入(N是最大持仓股票数)。

有些用户喜欢使用复杂的筛选条件精选出少量股票,再使用一个简单的排名条件对这些股票排名;另一些用户喜欢使用简单的筛选条件粗选出大量股票, 再使用较复杂的排名条件对这些股票进行精准的排名。 从实际的效果来看,使用排名条件可以实现更加精细的选股策略,所以我们建议用户首先使用筛选条件对股票进行粗选,再使用排名条件对选出的股票进行细致排名,最后选出最靠前的N只股票进行投资。

11.策略收益的具体计算规则是什么?

策略收益根据回测日期区间和调仓周期来计算。每个周期的收益单独计算,最后策略的总收益是各个周期的收益累积而成, 即(1+周期1收益)×(1+周期2收益)×。。。 = 1 + 总收益。调仓日是在每个周期的第一天, 股票买卖价格按照调仓日的价格计算, 默认是收盘价。 每一个周期的选股日调仓日的前一天。比如一个调仓周期的第一天是T日,这个周期的调仓日就是T日,而选股日是T-1日。果仁收益计算包含股息,拆股和配股的收益。

在默认情况下, 策略会等权重全仓买入股票, 对每只股票的仓位不做限制。 比如策略只选出一只股票,则会用100%的资金持有这支股票, 如果选出2只股票, 则每只股票占用50%的现金,依次类推。 在每个调仓日, 回测程序都会自动调整仓位,把股票仓位重新设回到等权重的状态。

当有市场择时条件时, 用户可以限制熊市整体股票仓位,比如在50%。 这时,在每个熊市调仓日,回测程序都会把整体股票仓位设置为50%。

(如果用户认为用100%资金买入一只股票过于危险,可以在策略回测的高级设置里限制个股最大买入仓位。)

股票交易成本默认按双边千分之二计算,即买的时候要扣除千分之二的交易成本, 卖的时候再一次扣除千分之二的交易成本。 在调仓日,继续持有的股票仓位被调整时不扣除交易成本, 比如一只股票的仓位从50%调整为20%, 不会扣除交易成本。

股票如果停牌或者一字板涨停跌停,则不能买卖,即便是按照选股策略应该被买入或被卖出,买卖也不能进行。不能卖出的股票会被继续持有到下一个调仓日,并根据下一个调仓日的市场情况来决定是否可以买卖。

12.排名分析里收益率为什么和策略回测收益率不一样?

在排名分析里收益率挺好的策略,到策略回测里收益经常会低很多, 这是因为排名分析回测计算做了简化,没有考虑交易成本和股票停牌等问题。 比如排名分析算出的收益率可能是20%, 可到了策略回测里, 收益率变成了5% 甚至是-5% , 这往往是由交易成本造成的。 一个策略假设每天都买入卖出不同的股票, 双边的交易成本合计千分之四, 交易费一年就会吃掉100% 的收益增长。 第二点, 策略回测考虑到停牌股票不能买卖, 这一点也会造成和排名分析回测的收益不一样。

排名分析主要用于验证选股策略的相对有效性, 通过从高分段到低分段股票的收益分布趋势来判断选股策略有效性。 而使用策略回测可以得到更接近实际情况的收益曲线。

13.回测起始日变化,策略收益变化很大是什么问题?

有些策略起始日期往前或往后调整一天,策略的回测收益会变化很多。 大约有两个原因,

一是统计样本数量过少, 造成收益计算的随机性较大。 比如一个策略最大持仓股票数量是2只, 调仓周期是20天, 回测时长是5年, 按一年有240个交易日算, 回测统计数据点有 2 X 12 X 5 = 120 个。 这种策略的回测数据点少,随机性大, 收益计算的波动自然较大。 比如起始日变化一天, 回测收益就可能从80%变成30%。 建议用户增加策略回测统计的数据点至少到1000个。 增加回测数据点数量的方法有增加最大持仓股票数量,减少调仓周期的天数, 手工做起始日期的滚动回测再取平均值。

二是策略本身过度拟合, 造成结果不稳定。 这往往是策略过于复杂或者参数对于某个起始日过于调优造成的。

14.用户如何跟随自己感兴趣的策略?

在调仓日,策略结果页面会显示调仓指令。 如果策略是别人的策略,用户可以首先关注这个策略, 被关注的策略会在个人主页里出现。使用微信服务号是一种更方便的策略跟随方式,用户可以绑定果仁微信服务号, 在微信服务号里查看每个策略最新的更新情况和调仓指令。

我们建议用户根据自己的风险承受能力慎重跟随,果仁网不承担任何由于策略跟随做成的损失。

15.如果策略的选择条件产生很多只股票,策略如何选择股票买入?

使用“每日选股”,用户可以看到每一天具体有哪些股票通过筛选条件被选中。如果有排名条件,在“每日选股”的结果中还可以看到每只股票的排名得分。 一个选股策略往往能选出上百只或上千只股票,而实际上,一般用户最多能买入10到20只股票。比如用户限定一次最多买入10只股票,筛选条件产生100只股票,程序将挑出排名得分最高的10只股票买入, 如果没有指定排名条件,程序会选择成交额最大的股票买入

16.什么是市场择时?

用个股指标选个股, 用大盘指标择时,是行之有效的股票策略。 虽然我们无法准确预测未来总体市场的走势,但是根据一些常用的大盘指标, 我们可以规避一些由市场巨幅波动带来的风险。 具体使用方法,请查看市场择时

17.自定义指标是什么?

用户可以用已有的指标作为计算公式的输入定义出新的指标。 一旦创建成功, 自定义指标的使用方式和其它公共指标的使用方式一样。 具体用法,请查看自定义指标

18.策略评分规则是什么?

策略评分。 帮助用户快速的判定策略的质量。 70分以上的策略是相对较好的策略, 60分以下是相对较差的策略。 但是评分不能简单对待, 还应该仔细研究策略的成分分数。 策略评分由5个成分组成:

收益分。 根据策略的年化收益打分。 100分表明过去5年的策略年化收益大约是50%, 60分表明策略年化收益在10%-15%之间。

抗风险分。根据策略的最大回撤率和赢率计算得出。 80分以上的策略表明抗风险的能力强, 60分以下表明抗风险能力一般。

流动性分。 代表策略的容量。果仁根据保守的假设估算出策略的容量。 90分以上策略表示策略是大容量策略, 60分以下是小容量策略。

稳定性分。代表策略收益波动率的大小。 70分以上代表策略月收益波动率在5%以下。 40分以下代表策略月收益波动率在15%以上。

实盘分。策略实盘的时间越长,相对沪深300的收益越高,实盘得分就越高。用户如果修改自己的策略公式,实盘分将会清零。

为了公平起见, 评分程序不使用策略作者规定的起始日期进行回测, 还是选用几个时段对策略进行进行多次回测,各项得分从多次回测中取平均值成为为最后得分, 唯一的例外是抗风险分,使用表现最差的那次得分为最后得分。

19.果仁支持什么浏览器?

果仁建议用户使用Chrome, 其它支持的浏览器有Opera、360极速模式、Safari。还有高版本IE, 不支持IE9以下的版本。

20.为什么选股指标只有后复权价格没有前复权价格?

前复权价格包含未来信息, 为了防止用户错误使用未来信息做策略, 果仁只提供后复权收盘价作为选股指标。 但在策略结果页面,展现历史股票买入卖出价格时,果仁使用前复权价格, 这样便于用户做价格比较。

使用未来函数是量化分析最容易犯的错误之一, 为了防止这个错误的发生, 果仁网在数据准备和回测算法上做了大量工作,以确保未来函数不会被使用。

21.如何搞清楚筛选、排名、自定义指标、策略买卖的具体含义?

果仁已经提供了较为清晰的文档阐述以上功能。使用每日选股查看选股结果,是搞清这些功能的最好方法。 例如,在筛选条件里, 加入“换手率 最大 全部 10” 是得到当日全市场换手率最大的10只股票, 这个使用每日选股, 其中的含义便一目了然,如果有疑惑, 还可以更换条件为 “换手率 最小 全部 10” 或者 “换手率 最大 全部 20”, 再看结果。

另外查看策略回测结果里的调仓详情也是理解策略功能的一个重要工具。 这样做可以知晓策略具体的运作情况。 点击策略详情右上方的导出图标,可以将策略在每个周期的持仓详情导出到一个Excel文件里。


果仁选股回测快速入门

1.每日选股。可查看历史上的任何一天符合条件的股票。

图片描述


2.策略回测。 将选股策略放回真实的历史数据中,模拟交易,计算出详细收益。

图片描述


3.回测结果。对比策略收益和收益基准。查看持仓详情.

图片描述


4.可保存策略到“我的策略”里。 或者清空当前的策略。

图片描述


5.入门视频1.创建策略。

点击观看


6.入门视频2.看策略。

点击观看


股票策略指标解释

选股指标

市场指标

基本面指标

增长率

情绪指标

策略指标解释


如何使用排名和筛选

排名和筛选的区别

股票筛选在各个股票网站和软件上都有提供,大家都很熟悉。使用筛选,用户可以迅速挑出满足筛选条件的股票剔除不满足筛选条件股票。 股票排名是一种更有效的更被专业投资者青睐的选股方法,也是果仁网推荐的选股方法。 大家在过去一直没有机会接触排名选股的方法,会感到比较陌生,其实它的原理非常简单。在学校里, 一个班的学生按各科成绩的综合起来进行排名,排在前面的学生会得奖学金。 类似的方法,用户可以对市场上的股票按几项指标进行综合排名,并买入排名靠前的股票。和筛选相比,排名可以实现更精细更稳定的选股策略,原因如下:

当用户同时定义筛选条件和排名条件时,果仁会首先按照筛选条件筛选股票,再按照排名条件对股票排名。 在实际选股中,大家可首先使用筛选来粗选出一大批股票,再用排名精选出少量的股票作为投资对象。

排名分计算规则

排名虽然一直是专业人士的投资方法,但原理非常简单,只要有初级算术的知识就能理解排名分的计算规则。

下面我们用一些实例来介绍果仁排名分的具体计算规则。 比如一共有5只股票A,B,C,D,E参加排名。它们的收盘价分别是10,12,20,30,40。 按收盘价从小到大排名, A,B,C,D,E的排名就是1, 2, 3, 4, 5。果仁根据排名先后算出排名分,排名分的公式是 (股票数– 股票排名 + 1)/股票数 * 100。按照这个公式, 排名第1得100, 排名第二得80,依次类推,排名第5得20。 详细情况如下表列出:

股票 收盘价 从小到大排名 从小到大排名分 从大到小排名 从大到小排名分
A 10 1 100 5 20
B 12 2 80 4 40
C 20 3 60 3 60
D 30 4 40 2 80
E 40 5 20 1 100

当某只股票的指标为空时,这只股票将一直排在最后,排名分最低。比如A,B,C,D,E的市盈率分别为10, 20, 30, 空,空(当一个公司亏钱时,市盈率无法算出,则市盈率为空。), 排名分的计算详细在下表列出:

股票 市盈率 从小到大排名 从小到大排名分 从大到小排名 从大到小排名分
A 10 1 100 3 60
B 20 2 80 2 80
C 30 3 60 1 100
D 4 40 4 40
E 4 40 4 40

当有两个以上的指标作为排名条件时, 用户可以给每个指标设定权重(默认值为1),综合排名分 = 排名分1 × 权重1 + 排名分2 × 权重2 + ...

为了方便展示, 我们对综合排名分再做一次排名,算出排名总分。

比如,我们用如下排名条件对股票A,B,C,D,E进行排名

收盘价,从小到大,权重 1

市盈率,从大到小,权重 1

股票 收盘价 收盘价排名分 市盈率 市盈率排名分 综合排名分 总排名分
A 10 100 10 60 160 100
B 12 80 20 80 160 100
C 20 60 30 100 160 100
D 30 40 40 80 40
E 40 20 40 60 20

空值处理

一个指标经常有空值,比如5年净资产收益率很多股票没有数值。无论是从大到小排,还是从小到大排,空值一直排在最后, 也就是指标为空的股票排名分最低, 值为空的股票都排在最后。


如何做排名分析

用户可使用排名分析判断排名策略是否有效。回测程序将所有股票按照排名总分分成5段,10段或更多段,计算每段里的股票总收益,输出一个年化收益柱状图和一个累计收益曲线,以便让用户检查是否排名越高的分段收益越好。

比如我们可将所有股票按排名条件分成5段,从低到高依次为0-20,20-40,40-60,60-80,80-100。 如果年化收益图(如下图所示)高低排列整齐,则表示此排名策略可能含有较强的投资意义,排名高的股票更有可能产生超额收益。专业对冲投资者也非常喜欢此类形状的图形,他们可以买入最高分段股票,卖空最低分段股票,以获得相对收益。 图中 0-20分段代表综合排名分在0-20之间的股票,0-20这个分段里的股票是排名分最低的股票,也就是排在最后的股票。80-100分段代表综合排名分在80-100之间的股票,80-100这个分段里的股票是排名分最高的股票,也就是排在最前面的股票。用户可以在每日选股里查看到每个股票的综合排名分。

整齐的高低排列代表较好的排名策略

图 1 整齐的高低排列代表较好的排名策略

与年化收益相应的累计收益曲线图展示各分段的股票收益在时间轴上的变化,用户可以获取更加详细收益变化的信息。

整齐的高低排列代表较好的排名策略

图 2 累计收益曲线展示更加详细的收益变化

反过来,如果在年化收益图中(如下图)各分段收益高低错落,则代表此排名策略的投资意义不强,即便排名策略在策略回测中收到较好的收益,也需要谨慎的使用这个排名策略。

整齐的高低排列代表较好的排名策略

图 3 高低不齐图形往往代表排名策略投资意义不强

如果排名指标里含有空值(NULL),那么无论从小到大排还是从大到小排空值一直排在最后。所以从大到小排名的80-100分段和从小到大排名的0-20分段收益不一定一样。 如果将指标中的空值筛掉, 从大到小的80-100分段和从小到大的0-20分段的收益将会一样或者非常近似。 数据空值代表数据库里就没有这样的数据, 比如有很多股票的预期盈利增长是空值,表明很多股票没有5年净资产收益率的数据。用户可以通过将指标放入到筛选条件来排除指标里的空值,只要指标在筛选条件使用, 指标的空值就会被筛掉。比如筛掉市盈率中的空值, 可用筛选条件市盈率 >0。


自定义指标

以公共指标为原材料,用户可以自己定义更多的指标。比如:

5日20日均价差值 = 5日平均复权价 – 20日平均复权价

1日5日量比 = 当日成交量 / 5日平均成交量

5日前收盘价 = ref(收盘价, 5)

目前自定义指标支持的计算表达式有:

用户创建一个自定义指标后, 可以和使用其它公共指标一样使用这个指标,可以用于筛选条件或排名条件中。

注意:

1. 自定义指标名里只能包含中文,英文,数字;不能包含空格,标点符号, 括号,计算符号等。 比如指标名 “5日MA(收盘价)”, “5日收盘价 - 10日收盘价”等都是不合法的指标名。当指标名不合法时,后台计算很容易出错。

2. 自定义指标表达式里使用到的公共指标名称必须和界面上的指标名字一样, 用户不能随便使用自己想到的指标名字。 比如5日均价在界面上是”5日复权均价“, 用户不能随便用其它名字表示5日均价, 例如 ”5日均价“ ”5天均线“ 都不可以。

3. 表达式里不能有负数, 比如“-1”。 用户可以用一个简单的表达式来表示负数。 比如用 "(0-1)"来表示-1。

4. 自定义指标表达式现在即支持函数嵌套功能,也支持自定义指标之间的嵌套。 比如‘1日前10天总成交额’可以用嵌套表达式“dateshift(sum(当日成交额,10), 1)”, 也可以定义两个指标, 并将第一个指标嵌入第二个指标:10天总成交额 = sum(当日成交额,10) ; 1日前10天总成交额 = dateshift(10天总成交额 ,1)。

以下两图展示自定义指标管理器的使用方法。

图1 点击自定义Tab 中的管理图标,进入自定义指标管理器

图2 用户可以在自定义指标管理器中添加、修改、删除指标


市场择时

选股策略使用市场择时可以有效减小由整体市场波动带来的风险, 减小策略收益的最大回撤率。市场择时可分为两类,一类是趋势择时,即根据大盘指数的均线金叉死叉来判断趋势的转换。趋势择时有一定的滞后性,即大盘趋势转换一定时间后,才会发出信号。 另一类是反转择时,即抄底逃顶择时,就是在大盘跌破某个下限时转为买入,在大盘涨破上限时卖出。反转择时有一定的提前性,即大盘趋势还没有发生转换就会发出信号。在实际使用中,趋势择时更为常用,而趋势择时和反转择时可以结合使用。

趋势择时

趋势择时有4个技术面指标,分别是MA(移动平均),MACD,DMA(平均线差指标),和TRIX(三重指数平滑移动平均指标)。当指标出现金叉时, 转为牛市,即买入; 当指标出现死叉时,转为熊市,即卖出。大盘指数默认为上证指数,用户可以在指标编辑界面选择其它主要大盘指数和行业指数。

MA金叉和死叉的判定条件

DMA = MA短线 – MA长线 (MA短线默认为上证5日均线, MA长线默认为上证60日均线。)

金叉条件: MA短线(t) > MA短线(t-1) and DMA (t) > 0 and DMA (t-1) < 0

死叉条件 MA短线(t)< MA短线(t-1) and DMA (t) < 0 and DMA (t-1) > 0

其中‘XX(t)’表示当日的指标, ‘XX(t-1)’表示前一日的指标。 以下公式皆同。

MACD金叉和死叉的判定条件

DIF(快线) = EMA短线 - EMA长线 (EMA短线默认为上证12日指数移动平均线,EMA长线默认为上证26日指数移动平均线。)

DEA(慢线)= EMA(DIF, M ) (DEA 默认为DIF的9日指数移动平均线。)

金叉条件:DIF(t) > 0 and DIF(t) >DIF(t-1) and DIF (t) > DEA(t) and DIF (t -1) < DEA(t-1)

死叉条件:DIF(t)<0 and DIF(t) < DIF(t-1) and DIF (t) < DEA(t) and DIF (t -1) > DEA(t-1)

DMA金叉和死叉的判定条件

DMA = MA短线 – MA长线 (MA短线默认为上证5日均线, MA长线默认为上证60日均线。)

AMA = MA(DMA, M) (AMA默认为20日DMA移动平均)

金叉条件: DMA(t) > DMA(t-1) and DMA (t) > AMA (t) and DMA (t -1) < AMA (t-1)

死叉条件:DMA(t) < DMA(t-1) and DMA (t) < AMA (t) and DMA (t -1) > AMA (t-1)

TRIX金叉和死叉的判定条件

TR = EMA(EMA(EMA(上证指数,N),N),N) (N默认值为120天)

TRIX = (TR(t) – TR(t-1))/TR(t-1)

MATRIX = MA(TRIX, M) (M默认为5天)

金叉条件: TRIX(t) > TRIX (t-1) and TRIX (t) > MATRIX (t) and TRIX (t -1) < MATRIX (t-1)

死叉条件: TRIX(t) < TRIX (t-1) and TRIX (t) < MATRIX (t) and TRIX (t -1) > MATRIX (t-1)

用户可以点击择时条件的编辑图标来修改条件参数。

成交量均线择时

成交量均线择时(MAVol金叉死叉)也是趋势择时的一种。 MAVol是指数成交量的多日均线。量在价先, 根据大盘成交量趋势来判定牛熊有可能比只用价格来判定取得更好的效果。

MAVol金叉死叉的判定条件

DMAVol = MAVol短线 – MAVol长线 (MAVol短线默认为上证5日成交量均线, MA长线默认为上证60日成交量均线。)

金叉条件: MAVol短线(t) > MAVol短线(t-1) and DMAVol (t) > 0 and DMAVol (t-1) < 0

死叉条件 MAVol短线(t)< MAVol短线(t-1) and DMAVol (t) < 0 and DMAVol (t-1) > 0

反转择时

反转择时根据主要板块两个基本面指标PE(市盈率)和PB(市净率)来实现。当PE小于某个值时,市场过于悲观,可以抄底买入,发出牛市信号,即买入信号;当PE大于某个值时,市场过于疯狂,需要逃顶卖出,发出熊市信号,即卖出信号。PB择时的工作机制和PE相同。板块默认为全市场,用户可以自己选择主板,中小板和创业板作基本面择时。

趋势加反转择时

MA_Bias 均线择时附加根据乖离率的逃顶和抄底。 设计源于网络大V持有封基的乖离率择时。

这个择时需要设置4个参数, MA短线和MA长线是MA择时参数, 金叉就是牛市, 死叉就是熊市。

当MA短线高于MA长线超过上限(默认10%)时,转为熊市逃顶。 当MA短线低于MA长线超过下限时(默认-10%)时, 转为牛市抄底。

同时使用多个择时条件

一个策略可以同时使用多个技术面条件来判断大市的牛熊转换。 比如一个策略同时使用了3个择时条件, 在策略回测的高级设置中,用户可以分别指定牛市转换需要满足几个条件, 熊市转换需要满足几个条件,比如这三个条件同时满足牛市条件才能转牛,但只要其中2个满足熊市条件,就能转熊。

限制

市场择时条件只对策略回测有效,不影响每日选股或者排名分析的结果。

策略回测计算只在调仓日根据牛熊条件判定买或者不买股票,不会在调仓周期中间某一天买入或卖出股票。

市场择时条件


交易模型

果仁策略研究界面将策略定义分成三个主要部分:选股、择时、交易。 选股设置包括筛选条件和排名条件,择时设置就是市场择时,交易设置包含交易模型I--定期轮转重平衡仓位的交易模型 和交易模型II--根据是否满足卖出条件来作轮转。(目前基金策略只支持交易模型I。)

交易模型I是果仁原有的定期轮动模型, 在每个调仓日,卖出不满足选股条件的股票,买进满足选股条件的股票, 所有仓内股票在调仓日重新平衡为等权重(除了那些因停牌或涨跌停而无法操作的股票)。 这种模型尤其适合快速轮动短周期策略。

交易模型II是果仁新加入的交易模型, 其特点是必须有单独的卖出条件。现在用户可以定义4个卖出条件,排名名次大于某个阈值,持有天数大于某个阈值, 止盈和止损。仓内股票只要满足一个卖出条件,就会被卖出,也就是说卖出条件之间是或的关系。 在调仓日, 策略首先会卖出可以卖出的股票,然后使用仓内资金买入符合买入条件的股票。 当仓内资金过少时(少于理想仓位的10%),就无法买入新股票。 当股票不满足卖出条件时, 就会被继续持有。 所以如果卖出条件发生不频繁,即便是调仓周期只有1天, 交易模型II的买卖次数也会比较少。 相对于模型I,模型II的交易次数会比较少, 而且个股的仓位一般不做重新平衡。

在交易模型I里, 用户直接指定持仓股票个数, 而在交易模型II里, 用户使用个股理想仓位来间接指定持股股票个数。 比如理想仓位是10%, 则策略尽量用10% 的仓内资金买入新股票,策略大约持仓10只股票。 用户可以设定仓位偏离比例,只要在理想仓位的偏离比例内, 个股仓位不作调整。 比如理想仓位是10%, 仓位偏离比例是30%,则股票仓位的合理范围是 7% 到13%, 在这个范围内,仓位不作调整。 当股票仓位低于这个范围而且在买入清单前面,则补仓至(尽量)理想仓位; 当股票仓位高于这个范围, 则卖出部分仓位,仓位调回到理想仓位。

在交易模型II里, 用户还可设置新股票买入限制。进一步过滤来自于选股策略的买入清单。在买入清单的股票只要不满足一个限制, 就会被过滤掉。注意:用户必须设置至少一个卖出条件, 但不必设置买入限制。 不设置买入限制,从选股策略来的所有股票都会被尝试买入。

选择模型I或模型II?

模型I更简单且容易理解,我们建议新用户首先使用交易模型I来研究策略。 模型II不会在每个调仓日自动平衡仓位,交易频率较低,相对来说更容易操作。而且单独的卖出条件使模型II更加灵活。一些实盘的用户可以尝试使用模型II。

模型I策略如何变成摸型II策略?

比如下图1中模型I策略, 选股条件为成交量 > 0,按价格从小到大排序, 调仓周期为5天, 持仓股票为10只。这个策略买入价格最低的10只非停牌股票, 每5天调一次仓。 转换到模型II策略时, 选股条件不变,调仓周期可依然设为5天, 而理想仓位为10%, 即表示策略大约可以持有10只股票。 卖出条件为排名名次大于等于11, 即如果排名不在10名以内就卖出。这样设置的模型II可以和模型I有类似的结果.

模型I变成模型II

图1 模型I变成模型II。

模型I和模型II有些不兼容的设置。 股票备选买入数量在模型I里可以被修改为0到20之间的任何数字,在模型II里,股票备选只数固定为5只, 用户不可调。 在模型I里, 个股最大买入仓位默认为100%,意思是如果选股策略选出来的股票只能买入1只,那么100%的资金会投入到同一只股票里。 在模型II里,个股最大买入仓位就是理想仓位,无论选出1只股票还是10只股票, 都使用10%的仓位买入。模型I里不允许仓位偏离,在每个调仓日都要重新平衡所有股票的仓位, 在模型II,股票仓位在一定范围内不用调整。以上区别使同一个选股策略在模型I和模型II之间收益不同。

模型II可以实现更严格的买入限制:比如只买入排名在前5名的股票(不设这个限制,则和模型I类似,前10名股票+5只备选股票都可以被买入)。仓内同行业的股票不超过3只,以分散行业风险。 距离上次卖出间隔大于等于20天, 这样刚卖出的股票不会在下一个调仓或下几个调仓日被买入。 (模型II默认在调仓日卖出的股票不会再同一调仓日买入。) 这个限制可以防止止损股票被立即买回的情况。加入这些买入限制后, 一次能被买入的股票就会变少,这时缩短调仓周期,比如设置调仓周期为1天,可以实现逐步建仓的策略,这样不必在一天只内一定要买入10只股票。

在卖出条件里,可以适当放宽按排名卖出的条件,比如到排名20名以后才卖出, 这样可以减少交易频度。用户还可以按照持有天数卖出, 一只股票在仓内最长可以持有100个交易日,过了这个时期,无论排名再高,也要卖出。 止赢止损也分别可以设置条件。

模型I变成模型II

图2 模型II的参数设置。

图2显示了比图1 更复杂的模型II交易策略。所有的买入限制和卖出条件都被设置,调仓周期缩短为一天。 通过这些交易条件的设置, 我们可以看到模型II可以实现较为复杂的交易策略。

回测效果对比

将同样选股策略做过去4年回测, 图1模型I和图2模型II得到的结果在图3和图4中展示。

模型I变成模型II

图3 模型I的回测结果

模型I变成模型II

图4 模型2的回测结果。

我们可以看到模型II交易策略可以减小最大回测率,增加夏普比率。注意在这里作者只是为了讲解目的,并没有对模型II交易策略作任何调优。模型II有可能得到比模型I更好的结果。

牛熊转换的仓位控制

牛转熊时, 比如熊市仓位是30%, 在模型I里, 尽量将总仓位压到30%, 如果有的股票停牌无法减仓,其它股票的仓位会减小更多; 在模型II里, 30%一方面代表总仓位的30%, 另一方面是指个股理想仓位的30%, 比如牛市里个股理想仓位是20%, 则在熊市里个股理想仓位为6%, 每只股票的仓位都会尽量向理想仓位靠, 从而达到减仓至30%的目的。 特殊情况是碰到停牌或涨跌停导致股票无法减仓, 此时会继续以理想仓位(6%)持有不符合卖出条件的个股; 而对于达到卖出条件的个股, 将其卖出后如果仓位大于熊市仓位即30%, 则不会买入新的股票。 如果卖出后小于熊市仓位, 则会根据排名条件依次以理想仓位(6%)买入新的股票, 直到达到熊市仓位。

熊转牛时, 模型I会将总仓位升到100%, 满仓平权买入股票; 模型II会将个股理想仓位复原, 仓内的股票和新买入的股票仓位都会尽量向理想仓位靠拢。

排名分析是否受到交易模型的影响?

交易设置只影响策略回测的结果, 对每日选股和排名分析都没有影响。 排名分析使用类似于模型I的交易模型, 但不会考虑停牌涨跌停的影响。它只受到选股设置的影响, 完全忽略市场择时设置和交易设置。

调仓指令

果仁有两个交易模型, 模型I和模型II, 它们的调仓指令有不同的含义。

模型I调仓

模型I是一个定期调仓并且重新平衡仓位的交易模型。模型I对持仓股票的最大数量做出了规定, 比如最多持有5只股票, 意思就是在每个调仓日策略都试图买入或持有5只股票, 每只股票的仓位是20%, 当可以买入的股票数小于5只时,比如只有3只,策略会按照33%的个股仓位买入3只股票。 (用户可以改变个股最大买入仓位100%的设置,设为比如20%, 在这种情况下,即便只能买入3只股票,策略依然会按照20%的个股仓位买入3只股票,空出40%的仓位为现金。)

调仓指令有5个信号, 卖出, 持有,买入,持有(备选),买入(备选)。 仓内的股票如果不符合选股条件, 就要被卖出, 如果依然符合选股条件,则继续持有。 卖出股票空出来的资金就可以买入新的符合条件的股票。两个备选信号的目的是为了应对由于停牌或涨跌停而引起的股票不能买卖的情况。信号是买入的股票有可能停牌或一字涨停而无法买入, 这时策略将会试图买入排在前列的备选股票,标记为买入(备选)。 如果被持仓的股票也在备选名单里,这只股票的信号就是持有(备选), 意思是如果排在它前面的股票可以被买入, 则卖出这只股票, 如果排在前面的股票不能被买入,则可以继续持有这只股票。

备选股票的数量默认是5只, 用户可以在0只(也就是不要备选)和20只之间做调整。

模型I调仓指令首先列出需要卖出的股票, 然后按排名顺序列出需要买入或持有的股票, 排在最大持有只数以外的股票会标记为备选。 举个例子, 一个模型I策略最多持有2只股票, 备选股票数为5只。当前持仓的股票为 股票A(60%)和股票B(40%)。调仓日的调仓指令是:

1. 股票A 卖出 
2. 股票C 买入 
3. 股票D 买入 
4. 股票B 持有(备选) 
5. 股票E 买入(备选) 
6. 股票F 买入(备选) 
7. 股票H 买入(备选) 
8. 股票G 买入(备选) 

以上调仓指令,如果没有停盘和涨跌停这些复杂的因素,调仓结果就是卖出A和B, 买入C和D, C和D的仓位各是50%。

以下例子列出一些停牌情况的调仓结果:

停牌情况      调仓后持有股票 
C停牌        B(50%)和D(50%) --卖出A, 无法买入C,顺位买入D和继续持有B。B和D的仓位重平衡。 
B和C停牌     B(40%)和D(60%) --卖出A, 无法买入C,顺位买入D和继续持有B。B的仓位不变。 
C和D停牌     B(50%)和E(50%) --卖出A,无法买入C 和D, 顺位继续持有B和买入E。 B和E的仓位重平衡。 
A停牌        A(60%)和C(40%) --无法卖出A,只有一个空位,卖出B, 买入C。 A的仓位不变。 
B停牌        B(40%)和C (60%) --无法卖出B, 只有一个空位,卖出A买入C。 B的仓位不变。 

以上策略,在调仓后,仓内两只股票的仓位将尽量调整为50%,即便是A和B一直持有下去它们的仓位也会每次重平衡为50%。 当A和B有停牌的情况时, 停牌股票的仓位不变。 模型I仓位总的原则是:当仓内股票停牌时,这只股票的仓位保持不变, 余下的资金平均买入或持有股票。

一字涨跌停会使一只股票不能买或不能卖,处理方式和停牌一样。 比如,当A一字跌停时,无法卖出,按照A停牌处理。 当C和D一字涨停时,无法买入, 按照C和D停牌处理。当B一字跌停时, 无法卖出, 按照B停牌处理, B一字涨停时,无法买入补平仓位。

模型II调仓

模型II定期卖出符合卖出条件的股票,再用空下的资金按顺序买入在清单里的股票。和模型I不同, 模型II不规定最多持仓股票数,而是规定个股理想仓位。 比如想持有两只股票的策略可以设定理想仓位为50%。当策略买入新股票时,将尽量按照50%的总仓位买入新股票,如果仓内资金不足50%, 则能买多少是多少。 当仓内资金小于理想仓位的十分之一时,则不再买入新股票,以避免造成碎片化持股。比如理想仓位是50%时, 仓内资金小于5%, 则不再买入新股票。 和模型I的一个重要区别是模型II有仓位偏离比例概念, 也就是说只要股票仓位在理想仓位的偏离范围之内,在调仓日就可以保持现有仓位,不作重新平衡。 如果股票仓位在偏离范围之外, 在调仓日就需要减仓或补仓。 比如理想仓位是50%,仓位偏离范围是30%, 则这只股票的最低合理仓位是 50% * (1 - 30%) = 35%, 最高合理仓位 50% * (1 + 30%) = 65%。 当股票仓位高于65%时, 策略会减仓这只股票到理想仓位;当股票仓位低于35%时, 而且被策略选中时,会尽量加仓至理想仓位。

模型II的调仓信号有5个, 卖出,减仓至目标仓位, 持有, 买入,加仓至目标仓位。 (目标仓位也就是理想仓位。)当仓内股票符合一个卖出条件时, 就被卖出; 当仓内股票不符合卖出条件时, 有三种情况, 第一种情况是仓位在偏离范围之内, 维持原有仓位不变, 标记为持有;第二种情况是仓位高于最高合理仓位, 减仓至理想仓位,标记为减仓至目标仓位; 第三种情况是仓位低于最低合理仓位而且被策略选中,加仓至理想仓位, 标记为加仓至目标仓位。一只新股票被策略选中时,将按理想仓位买入, 标记为买入

模型II也有备选股票的概念, 备选只数固定5只。 比如调仓日需要买入1只股票,模型II会推荐 1+5 = 6只买入(或加仓)的股票。 意思是如果排在前面的股票能买入, 就买入, 如果不能买入, 就试图买入排在后一名的股票,直到可以买入股票为止或者扫描完买入清单为止。 当策略有较严格的买入条件时, 比如在新股买入限制里设定排名名次小于等于3, 备选股票可能小于5只股票。

使用一个和模型I类似的例子,一个模型II策略的理想仓位是50%,仓位偏离范围是30%。 备选股票数为5只。当前持仓的股票为 股票A(60%)和股票B(40%)。调仓日的调仓指令是:

1. 股票A 卖出 
2. 股票B 持有 
3. 股票C 买入 
4. 股票D 买入 
5. 股票E 买入 
6. 股票F 买入 
7. 股票H 买入 
8. 股票G 买入 
 

模型II调仓指令首先列出需要卖出和减仓的股票, 然后列出继续持有的股票, 最后列出需要买入和加仓的股票。

上例中股票A满足卖出条件, 需要卖出。 股票B的仓位是40%, 在合理的仓位范围(35%到65%)之内,所以仓位不变,继续持有。 接下会有6股票按先后顺序在买入清单里。 如果所有的股票都可以买卖,调仓的结果是 B(40%),C(50%), D(10%)。也就是卖掉股票A后,将得到60%资金, 用50%买入C,用剩下的10%买入D。 (这里需要注意的是个股的仓位权重是按照调仓日前一天的收盘价算出, 在调仓日, 由于股票价格波动,股票的仓位会变化, 所以股票A被卖出后,得到的资金有可能比60%多,也有可能比60%少, 所以C和D 的仓位,尤其的是D的仓位,会根据调仓日的实际情况作出决定。 这里只是为了说明方便, 忽略价格波动引起的仓位变化。)

以下列出一些停牌情况和调仓结果的例子:

停牌情况      调仓后持有股票 
C停牌        B(40%),D(50%), E(10%)  --卖出A, 无法买入C,顺位买入D和E。 
A 停牌       A(60%), B(40%) 			--无法卖出A, 无法调仓。 
C和D停牌     B(40%),E(50%),F(10%)   --卖出A,无法买入C 和D, 顺位买入E和F。

以上例子表明, 模型II会尽量按理想仓位买入新的股票, 当资金不足时, 也会买入部分仓位的股票,而不是让资金闲置。比如用50%的仓位买入C, 用10%的仓位买入D,这时D的仓位小于最小合理仓位35%,所以到下一个调仓日, 如果有足够资金而且D排在股票清单前列,将被加仓。

模型II另一特点是不会频繁自动平衡仓位,只要个股仓位在合理范围之内,仓位就保持不变,这和模型I在每个调仓日重平衡仓位很不一样。

以上所介绍的都是果仁量化引擎如何去执行调仓指令,果仁的调仓历史和实盘收益是按照这一套规则计算出来的。 用户在实际执行调仓指令时,在仓位和买卖价格方面必然会有一些差别, 最后的结果可能比果仁的结果好也有可能比果仁的结果差。

股票池示例

用户有很多时候需要在指定的几只股票或几只基金里制作轮动策略, 比如在4只银行股票里轮动或者在两个基金里做二八轮动。 这时候, 就需要使用股票池(或者基金池)。

一个股票池可被看作一个自定义投资域,股票池功能可以让用户为策略设定一个更灵活的投资域。 用户可以到我的主页里创建股票池. 股票池分为三种:静态股票池,动态股票池和合成股票池静态股票池是一个手工键入的股票代码集合(或者拷贝粘贴一个股票代码表)。静态股票池是最常用的一个股票池,使用静态股票池用户可以实现几只股票之间的轮转策略,比如几个银行股票之间的轮转策略。 动态股票池是根据选股条件和排名条件产生的动态股票集合,股票清单可以每日动态变化。 使用动态股票池,用户可以实现分层量化策略,也就是将筛选排名条件分在两步里完成,这样策略的表达能力更强。比如用户可以首先创建一个动态股票池: 总市值和股价综合排名最小的100只股票,然后再在这个股票池里面选择市盈率最小的10只股票。动态股票池创建界面和策略创建界面及其相似,只是更简单些,没有策略回测那些设置。合成股票池可以实现两个股票池之间的集合操作, 目前合成股票池的功能还很简单,只实现了黑名单的功能。 也就是股票全集减去黑名单股票池。

创建股票池在个人主页的股票池页进行。一经创建,就可以在创建股票策略->选股设置页面里的选择范围使用股票池。 选择范围默认是全部股票, 用户可以通过下拉菜单看到可以使用的股票池。

基金池和股票池基本一样,区别是基金池里的代码都是基金代码,而股票池里的代码是股票代码。基金池目前不支持动态基金池, 只有静态基金池和合成基金池。 除了基金以外,静态基金池还可以放入指数代码, 支持指数回测。 比如对上证指数进行回测,可以创建一个静态基金池,键入上证指数代码“000001I”, 在果仁网里,所有的A股指数代码都有一个”I”(大写的i)后缀,以区别于股票/基金代码。

股票池使用示例

示例1 四大银行轮动策略

1 在个人主页—>股票池, 点击’+’图标,首先选择股票池类型, 如下图:

选择股票池类型

2创建一个4大银行的静态股票池, 我们可以将四大银行(即工商银行 601398,建设银行 601939,农业银行 601288,中国银行601988)的股票代码直接输入到股票列表里,然后点击保存。如下图:

四大银行

3 创建股票池完毕后,去创建股票策略->选股设置页面,“四大银行”股票池出现在选择范围的下拉菜单里,如下图。

创建股票策略

4选择四大银行股票池, 就可以制作在四大银行之间轮动的量化策略。使用每日选股可以确认股票池里的股票确实是四大银行。 如下图。

量化策略

5然后可以创建一个量化策略, 持有市盈率最低的一只四大银行股票, 每20个交易日轮动一次。 最近4年的总收益是58.9%,在同一时间段沪深300的总收益只有-1.21%。 这么一个简单的量化轮动策略可以轻易战胜沪深300。如下图

策略结果


示例2 排除四大银行的银行股轮动策略

有用户认为四大银行没有增长潜力, 需要制作非四大行的银行量化轮动策略。 这时候,可以将四大银行股票池作为黑名单,从股票中排除。

1 在个人主页->股票池页面, 创建一个合成股票池“排除四大行“, 定义是”全部股票 排除 四大银行“。

排除四大行

2 在创建股票策略->选股设置页面,选择范围设定为“排除四大行“,行业为 “银行”, 通过每日选股, 可以看到银行股票列表里已经排除四大行。 如下图。

排除四大行

3 现在可以制作出一个非四大行的银行个量化策略。 比如按照示例1的公式做出一个最小市盈率非四大行银行股策略, 最近四年的总收益是181%。如下图。

排除四大行


示例3 指数轮动回测

ETF轮动策略可以使用静态基金池来完成,流程类似于上面两个例子。ETF策略的一个缺点就是历史不够长, 用户可以使用指数来做出更长时间的轮动策略。

1 比如创建一个沪深300 和中小板指数的轮动策略。首先可以创建一个指数池,叫做“沪深中小指数轮动”如下图:

指数的轮动

这里需要注意指数代码后面需要加一个后缀”I”(大写的i), 以便和股票基金代码区别。

2 比如创建一个沪深300 和中小板指数的轮动策略。首先可以创建一个指数池,叫做“沪深中小指数轮动”如下图:

指数池

3设置选股排名条件进行回测, 步骤类似上例, 省略。


示例4 动态股票池示例

使用动态股票池可以做出更加复杂或更加灵活的选股策略。比如从市盈率最小的100只股票里选出市值最小的5只股票持有策略。

1 创建一个叫做“小PE100”的动态股票池,定义是市盈率最小的100只股票。下图显示这个动态股票池的定义。

小PE100

2 基于这个股票池创建一个市值最小的5只股票策略。如下图设置

5只股票

5只股票

3 最近4年的回测结果如下:

回测结果



果仁网要解决的问题

股民选股有不少办法,听朋友推荐,看新闻热点,跟随大神,使用几个常用的技术指标。但是这些选股方法都缺乏科学的评估方法。比如一个股票在过去一个月涨势喜人,在未来一定的时间段上涨的机率到底是多大?回答这种问题,光凭直觉和信心是不够的,因为直觉和信心可以随着市场波动瞬间消失;光凭书本上的死规则也是不够的,因为在股市上没有一成不变的赚钱规则。

专业投资者和一般股民最大的差别是专业投资者有能力将选股策略放回到真实的历史数据中回测,做出客观的评估。

专业投资者的投资流程大致分为3步:

在果仁网上,股民可以使用鼠标点击在几秒之内创建选股策略,并在真实的历史数据中评估策略的有效性。有了这个能力,业余人士和专业人士的差距就大大缩小了。

果仁网的选股策略和回测流程是基于以下投资理念而设计的:

用户首先选择几类指标制定选股策略, 然后查看每日选股结果, 如果符合预期,可在历史的日期区间进行回测。下图展示使用流程,非常简单。

图片描述

图片描述

历史回测的复杂性

历史回测一直是专业投资人的利器,但要做到真实还原历史(point-in-time), 专业分析员需要花费几个星期的编程时间。那么真实还原历史有哪些复杂点?以下举几个例子:

以上只是真实还原历史的一部分复杂点。即便是专业投资者也需要花费很多资源来解决真实还原历史的问题,对于严肃的业余投资者来说,想在真实的历史数据作回测,到目前为止,基本是不可能的。果仁网为一般用户提供了真实的历史回测平台,为理性评估选股策略是否会赚钱提供了可能。

联系我们

关注公众号

加入QQ群

更新日期:2016-07-28