更新日期:2017-07-23 QQ讨论群: 点击加群
果仁网是国内最活跃的非编程量化平台, 为用户提供策略开发,策略分享,策略组合交易管理一站式服务。有选股软件(比如通达信、大智慧、同花顺)使用经验的用户学习使用果仁功能0门槛。门槛低、效率高是果仁网的最大特点。
果仁网的主要功能有:
1. 快速策略开发。非编程、菜单界面、海量因子、自动参数调优、分钟线回测、大盘择时、股指对冲、准确历史回测、自动策略评估。
2. 策略商城。策略达人制作的高质量策略以供使用。
3. 策略组合。多策略间实现最优配置,降低风险提高收益。
4. 实盘管家。 产生实时调仓指令,一键交易,非全职投资的用户也能做自己的量化基金。
5. 交易社区。 共享实盘心得、策略、量化知识。
果仁网目前的投资品种有国内上市的A股和ETF。其后会陆续开放期货、港股策略平台。在果仁网,量化投资不再神秘,寻常百姓触手可及。
基于量化指标的回测统计方法在中国远没有得到广泛使用,大多数投资者采用跟风投资或K线图形的策略。也正因为很少有人用这种方法买卖股票,这种方法在中国更加高效。在欧美市场,量化统计已经被很多聪明人研究透彻,这造成一般量化策略有效性降低,击败大盘指数是件不容易的事情。而在中国,一个相对简单的量化选股模型就有可能轻松跑赢大盘。
技术选股+K线分析 | 量化投资 | |
使用人群 | 散户(多) | 机构用户为主(少) |
选股指标 | 以量价指标为主。 | 除了量价指标,还需要使用财务指标、公司事件等。 |
交易模型 | 没有完整的交易模型。重视股票买入条件,不重视个股仓位和卖出条件。 | 有完整的交易模型。模型对股票的买入条件、卖出条件、个股仓位、调仓时点和风险控制都有明确的规定。 |
策略验证 | 使用基于经验和书本总结出来的规则。没有在历史数据里测试过有效性。 | 选股策略基于个人研究, 在历史数据里测试其有效性。可以根据回测结果对策略进行调优。 重视风险收益量化指标。 |
分析方法 | 有很多主观成分,不同人对同一图表有不同结论。 “大师”辈出。 | 依赖客观数据统计。 |
收益来源 | 着重于单个股的波段操作。 | 多股票之间的轮动。重视多种投资标的之间的配置和轮动。讲究风险对冲。 |
分析工具 | 通达信、同花顺金融终端 | 数据库、编程平台。 或者果仁网云平台。 |
类比 | 中医 | 西医 |
不是。量化投资是基于量化统计模型的一种投资方法。其核心步骤是将量化模型放回真实的历史数据模拟跑盘,以验证量化模型的有效性。 量化投资可以做日内高频交易也可以做日间低频交易,只要是基于量化模型统计的投资方法都是量化投资。果仁支持日间股票买卖量化模型,门槛低,即便是一般的投资者也可以使用。需要学习量化入门的朋友,推荐阅读金伟民(持有封基)老师的 《十年十倍》 。 想进一步掌握完整量化体系的用户可以阅读2017年张然写的《基本面量化投资》 。
果仁策略默认的交易模型(模型I)是一种定期调仓的量化轮动模型。在每一个调仓日, 果仁策略卖出仓内的所有股票, 并依据调仓日前一交易日的数据,选出股票等权重买入。如果选出的股票已经在仓内, 这支股票的仓位也会被重新调整成和其它股票一样的仓位, 但如果这只股票因为停牌或涨停跌停无法调整仓位,则仓位保持不变。 这种买卖模型比较简单,适合轮动交易策略。
果仁交易模型II是一种按卖出条件调仓的的量化轮动模型。在每一个调仓日,卖出满足卖出条件的股票,把余下的资金等权重买入符合买入条件的新股票。不满足卖出条件的股票可以保持自己的仓位, 在规定的仓位范围内不作调整。模型II分离买入和卖出条件, 是一种更加灵活的交易模型。
选股指标(除了分析师预测指标外)是果仁根据原始市场数据和公司发布的财报自己计算出来的。具体的计算方法在选股指标里有解释。
数据日期范围:大多数指标从2007年1月4日开始, 用户可以使用历史查询功能来判定任一股票的指标日期范围。股票数据每晚10点完成更新, 基金数据到第二日早9点完成更新。
果仁依据申万2014版一类行业标准对股票进行分类。
为了做到回测的真实性,果仁回测引擎作了如下处理:使用精准的(point-in-time)历史数据, 彻底回避了使用未来信息的隐患;对停牌和涨跌停股票的买卖限制做出真实处理;对交易成本进行合理估算。历史回测结果可以全部导出到Excel文件里,方便验算。 经过许多细心用户的验证, 果仁历史回测结果是真实可靠的。
果仁使用“先筛选后排名”的选股流程。 当选股策略既有筛选条件又有排名条件时,筛选条件将首先被使用,从几千只股票里选出一批股票做为候选股票,然后排名条件将被用来对这些候选股票做出排名,排名最靠前的N只股票将被买入(N是最大持仓股票数)。
有些用户喜欢使用复杂的筛选条件精选出少量股票,再使用一个简单的排名条件对这些股票排名;另一些用户喜欢使用简单的筛选条件粗选出大量股票, 再使用较复杂的排名条件对这些股票进行精准的排名。 从实际的效果来看,使用排名条件可以实现更加精细的选股策略,所以我们建议用户首先使用筛选条件对股票进行粗选,再使用排名条件对选出的股票进行细致排名,最后选出最靠前的N只股票进行投资。
策略收益根据回测日期区间和调仓周期来计算。每个周期的收益单独计算,最后策略的总收益是各个周期的收益累积而成, 即(1+周期1收益)×(1+周期2收益)×。。。 = 1 + 总收益。调仓日是在每个周期的第一天, 股票买卖价格按照调仓日的价格计算, 默认是收盘价。 每一个周期的选股日调仓日的前一天。比如一个调仓周期的第一天是T日,这个周期的调仓日就是T日,而选股日是T-1日。果仁收益计算包含股息,拆股和配股的收益。
在默认情况下, 策略会等权重全仓买入股票, 对每只股票的仓位不做限制。 比如策略只选出一只股票,则会用100%的资金持有这支股票, 如果选出2只股票, 则每只股票占用50%的现金,依次类推。 在每个调仓日, 回测程序都会自动调整仓位,把股票仓位重新设回到等权重的状态。
当有市场择时条件时, 用户可以限制熊市整体股票仓位,比如在50%。 这时,在每个熊市调仓日,回测程序都会把整体股票仓位设置为50%。
(如果用户认为用100%资金买入一只股票过于危险,可以在策略回测的高级设置里限制个股最大买入仓位。)
股票交易成本默认按双边千分之二计算,即买的时候要扣除千分之二的交易成本, 卖的时候再一次扣除千分之二的交易成本。 在调仓日,继续持有的股票仓位被调整时不扣除交易成本, 比如一只股票的仓位从50%调整为20%, 不会扣除交易成本。
股票如果停牌或者一字板涨停跌停,则不能买卖,即便是按照选股策略应该被买入或被卖出,买卖也不能进行。不能卖出的股票会被继续持有到下一个调仓日,并根据下一个调仓日的市场情况来决定是否可以买卖。
在排名分析里收益率挺好的策略,到策略回测里收益经常会低很多, 这是因为排名分析回测计算做了简化,没有考虑交易成本和股票停牌等问题。 比如排名分析算出的收益率可能是20%, 可到了策略回测里, 收益率变成了5% 甚至是-5% , 这往往是由交易成本造成的。 一个策略假设每天都买入卖出不同的股票, 双边的交易成本合计千分之四, 交易费一年就会吃掉100% 的收益增长。 第二点, 策略回测考虑到停牌股票不能买卖, 这一点也会造成和排名分析回测的收益不一样。
排名分析主要用于验证选股策略的相对有效性, 通过从高分段到低分段股票的收益分布趋势来判断选股策略有效性。 而使用策略回测可以得到更接近实际情况的收益曲线。
有些策略起始日期往前或往后调整一天,策略的回测收益会变化很多。 大约有两个原因,
一是统计样本数量过少, 造成收益计算的随机性较大。 比如一个策略最大持仓股票数量是2只, 调仓周期是20天, 回测时长是5年, 按一年有240个交易日算, 回测统计数据点有 2 X 12 X 5 = 120 个。 这种策略的回测数据点少,随机性大, 收益计算的波动自然较大。 比如起始日变化一天, 回测收益就可能从80%变成30%。 建议用户增加策略回测统计的数据点至少到1000个。 增加回测数据点数量的方法有增加最大持仓股票数量,减少调仓周期的天数, 手工做起始日期的滚动回测再取平均值。
二是策略本身过度拟合, 造成结果不稳定。 这往往是策略过于复杂或者参数对于某个起始日过于调优造成的。
在调仓日,策略结果页面会显示调仓指令。 如果策略是别人的策略,用户可以首先关注这个策略, 被关注的策略会在个人主页里出现。使用微信服务号是一种更方便的策略跟随方式,用户可以绑定果仁微信服务号, 在微信服务号里查看每个策略最新的更新情况和调仓指令。
我们建议用户根据自己的风险承受能力慎重跟随,果仁网不承担任何由于策略跟随做成的损失。
使用“每日选股”,用户可以看到每一天具体有哪些股票通过筛选条件被选中。如果有排名条件,在“每日选股”的结果中还可以看到每只股票的排名得分。 一个选股策略往往能选出上百只或上千只股票,而实际上,一般用户最多能买入10到20只股票。比如用户限定一次最多买入10只股票,筛选条件产生100只股票,程序将挑出排名得分最高的10只股票买入, 如果没有指定排名条件,程序会选择成交额最大的股票买入
用个股指标选个股, 用大盘指标择时,是行之有效的股票策略。 虽然我们无法准确预测未来总体市场的走势,但是根据一些常用的大盘指标, 我们可以规避一些由市场巨幅波动带来的风险。 具体使用方法,请查看市场择时。
用户可以用已有的指标作为计算公式的输入定义出新的指标。 一旦创建成功, 自定义指标的使用方式和其它公共指标的使用方式一样。 具体用法,请查看自定义指标
策略评分。 帮助用户快速的判定策略的质量。 70分以上的策略是相对较好的策略, 60分以下是相对较差的策略。 但是评分不能简单对待, 还应该仔细研究策略的成分分数。 策略评分由5个成分组成:
收益分。 根据策略的年化收益打分。 100分表明过去5年的策略年化收益大约是50%, 60分表明策略年化收益在10%-15%之间。
抗风险分。根据策略的最大回撤率和赢率计算得出。 80分以上的策略表明抗风险的能力强, 60分以下表明抗风险能力一般。
流动性分。 代表策略的容量。果仁根据保守的假设估算出策略的容量。 90分以上策略表示策略是大容量策略, 60分以下是小容量策略。
稳定性分。代表策略收益波动率的大小。 70分以上代表策略月收益波动率在5%以下。 40分以下代表策略月收益波动率在15%以上。
实盘分。策略实盘的时间越长,相对沪深300的收益越高,实盘得分就越高。用户如果修改自己的策略公式,实盘分将会清零。
为了公平起见, 评分程序不使用策略作者规定的起始日期进行回测, 还是选用几个时段对策略进行进行多次回测,各项得分从多次回测中取平均值成为为最后得分, 唯一的例外是抗风险分,使用表现最差的那次得分为最后得分。
果仁建议用户使用Chrome, 其它支持的浏览器有Opera、360极速模式、Safari。还有高版本IE, 不支持IE9以下的版本。
前复权价格包含未来信息, 为了防止用户错误使用未来信息做策略, 果仁只提供后复权收盘价作为选股指标。 但在策略结果页面,展现历史股票买入卖出价格时,果仁使用前复权价格, 这样便于用户做价格比较。
使用未来函数是量化分析最容易犯的错误之一, 为了防止这个错误的发生, 果仁网在数据准备和回测算法上做了大量工作,以确保未来函数不会被使用。
果仁已经提供了较为清晰的文档阐述以上功能。使用每日选股查看选股结果,是搞清这些功能的最好方法。 例如,在筛选条件里, 加入“换手率 最大 全部 10” 是得到当日全市场换手率最大的10只股票, 这个使用每日选股, 其中的含义便一目了然,如果有疑惑, 还可以更换条件为 “换手率 最小 全部 10” 或者 “换手率 最大 全部 20”, 再看结果。
另外查看策略回测结果里的调仓详情也是理解策略功能的一个重要工具。 这样做可以知晓策略具体的运作情况。 点击策略详情右上方的导出图标,可以将策略在每个周期的持仓详情导出到一个Excel文件里。
开盘价/收盘价/最高价/最低价/前日收盘价 :股票在用户指定日期的价格。
日均成交价:当日股票平均成交价格,等于当日成交额除以当日成交量。
后复权收盘价 :股票当日收盘价的向后复权价格。算进股票分红、拆股的因素, 方便比较股票的价格历史和计算股票在历史上的真实收益。
后复权均价 :股票5日/20日/60日/120日/250日的后复权收盘价平均值。股票的停牌日不计算在内。 当股票非停牌交易日数少于N时,N日后复权平均价为空值。
成交金额 :股票当日成交额。5日/20日/60日/120日/250日平均成交额。N日平均成交额,股票的停牌日不计算在内。股票非停牌交易日数少于N时,N日平均成交额为空值。
成交量 :股票当日成交量。5日/20日/60日/120日/250日平均成交量。N日平均成交量,股票的停牌日不计算在内。股票非停牌交易日数少于N时,N日平均成交量为空值。
股价涨幅 :股票1日/5日/20日/60日/120日/250日的累计涨跌幅。N日累计涨跌幅,股票的停牌日计算在内。 股票交易日数少于N时,N日涨幅为空值。
股价相对涨幅 :股票1日/5日/20日/60日/120日/250日的相对于上证指数的累计涨跌幅。 N日股价相对涨幅,股票的停牌日计算在内。 股票交易日数少于N时,N日相对涨幅为空值。
累计换手率 :股票当日/5日/20日/60日/120日/250日的累计换手率。 等于成交股数除以总股本。 N日累计换手率,股票的停牌日计算在内。 股票交易日数少于N时,N日累计换手率为空值。
涨跌停标记 :股票当日涨停,跌停,一字涨停,一字跌停标记。事件发生为1,未发生为0。
总股本/流通股本 :A股当日总股数或总流通股数
总市值/流通市值 :A股当日总市值或总流通市值
股东数 :最近公告中持有A股的股东户总数
户均持股数 :等于总股本除以股东数
股东数60日变化率 :股东总数当日和60个交易日前相比的变化率。
户均持股数60日变化率 :户均持股当日和60个交易日前相比的变化率。
机构持股比例 :机构最近一季度的持股比例。
机构持股环比增长 :机构持股比例最近一季度比上一季度的增长率。
10大股东持股比例 :股票前十大股东最近一季度的持股比例。
10大股东持股环比增长 :股票前十大股东持股比例最近一季度比上一季度的增长率。
股价振幅 :股票当日最高价最低价之差除以前日收盘价。
上市天数 :股票当日的总上市天数。上市天数按照自然日计算。
交易天数 :股票当日的总上市交易日数。
乖离率 :股票当日的收盘价与5日/20日/60日/120日/250日均线之间的差距。 等于后复权收盘价除以N日复权均价 -1。
波动率 :股票20日/60日/120日/250日收益波动率。停牌日不算入交易日内。 等于于stdev(1日涨幅,N日) * sqrt(N日) 。
MACD :根据个股的后复权收盘价计算出来的MACD(12, 26,9)。 MACD_DIFF = ema(后复权收盘价,12)-ema(后复权收盘价,26)。MACD_DEA = ema(MACD_DIF,9)。MACD柱状值 = 2 *(MACD_DIFF - MACD_DEA)。
RSI :代表股票在过去14个交易日的相对强弱情况。股票的停牌日不计算在内。值域在0到100之间。 值越大表示股票最近表现越强势。 RSI=SMA(greater(1日涨幅,0)*后复权因子,14,1)/SMA(ABS(1日涨幅)*后复权因子,14,1)*100。
BBIC :多空指标,等于BBI除以收盘价,BBIC越小股价越强势,BBIC < 1 为多头行情, BBIC>1 为空头行情。BBI等于(3日均价+6日均价+12日均价+24日均价)/4。计算使用后复权收盘价。
CCI :14日顺势指标,测量股价是否已超出常态分布范围。 +100以上为超买区,—100以下为超卖区,+100到—100之间为震荡区。
历史贝塔 :代表过去250个交易日的股价波动和沪深300波动相关程度。 历史贝塔 >1 表明个股价格波动幅度大于大盘的波动幅度,股价波动受到大盘的影响大; 历史贝塔 < 1 表明个股的价格波动受到大盘波动的影响较小。股票上市交易少于250日时,历史贝塔是空值。
多头排列标记 :标记为1,表示5日均线、20日均线、60日均线、120日均线依次排列,短线在长线的上方, 股价呈上升趋势。
1日5日量比 : 当日成交量与5日平均成交量比值。
布林线 :布林线上线等于20日复权均价+2*stdev(后复权收盘价,20), 布林线下线等于20日复权均价-2*stdev(后复权收盘价,20)。
ATR :平均真实波动范围 (Average True Range)。真实波幅等于当日股价振幅、最高与昨收差价、最低与昨收差价中的最大值。ATR = 真实波幅的14日移动平均。
2015年12月, 著名量化对冲基金WorldQuant公布了101个Alpha因子, 其目的是给策略设计者更多的灵感和思路,能做更多样化的量化策略。 果仁对这些因子公式做了去重和修正,并按照因子的公式组成部分, 将其中的100个因子分成3类, 在果仁平台上对外开放,供所有用户所使用。
价格类因子,公式只用到股票价格指标。 大多数因子的设计思路是反转。
例子:WQ_Alpha4,“PercentRank(hrank(最低价, 1, 0),9) ”, 思路是股票价格在所有股票中占的位置,跟过去9天相比,是越低越好。 这里, hrank(最低价, 1, 0)返回股票在当日最低价格在所有股票中的排名, 价格越低,返回的排名值越大。 PercentRank(指标, 9)返回过去9天里, 指标值占的百分位,从0到1, 指标值越大, 返回的值越大。
量价类因子, 公式里用到成交量和价格指标。大多数因子的设计思路是看价格变化和成交量变化之间的关系。
例子: WQ_Alpha13,“hRank(covar(hrank(收盘价), hrank(当日成交量),5), 1, 0) ”, 思路是过去5天价格变化和成交量变化的相关性越小越好, 也就是量价背离。 covar(hrank(收盘价), hrank(当日成交量),5)返回的值越小, hRank(covar(hrank(收盘价), hrank(当日成交量),5)返回的值, 1, 0)越大。
二分类因子, 公式成分和量价类因子一样, 只是最后的输出或者是0或者是1, 也就是将整个股票分成了两个大类。
例子: WQ_Alpha75,“if(hrank(barcorr(日均成交价,当日成交量,4))<hrank(barcorr(hrank(最低价),hrank(N日均成交金额(50)), 12)), 1,0) ”, 意思是如果过去4天的量价相关度小于过去12天的50日平均成交额和最低价的相关度, 返回1,否则返回0。
完整的Alpha因子公式列表在附录里列出。 公式里用到函数, 在自定义函数列表有解释。
--------------------------------------------------------------------------------------------------
100个果仁短周期交易因子公式附录:
因子 | 公式 | |
价格类因子 | WQ_Alpha1 | argmax(power(if(1日涨幅< 0, stdev(1日涨幅,20), 1日涨幅),2),5) |
WQ_Alpha4 | PercentRank(hrank(最低价, 1, 0),9) | |
WQ_Alpha5 | hrankscore(开盘价-MA(日均成交价,10),
0, 0)*hrankscore((收盘价-日均成交价), 0, 0) |
|
WQ_Alpha8 | hrankscore((sum(开盘价,5)*sum(1日涨幅,5)-barref(sum(开盘价,5)*sum(1日涨幅,5), 10)), 0, 0) | |
WQ_Alpha9 | if( or(min(1日涨幅,5)>0, max(1日涨幅,5)<0), delta(后复权收盘价,1), (0-delta(后复权收盘价,1)))/后复权因子 | |
WQ_Alpha18 | hrank(stdev(abs(后复权收盘价-后复权开盘价),5)+(收盘价-开盘价)+barcorr(后复权收盘价,
后复权开盘价, 10), 1, 0) |
|
WQ_Alpha19 | sign(0-N日涨幅(7))*hrank(sum(1日涨幅,
250)) |
|
WQ_Alpha20 | hrankscore((后复权开盘价-barref(后复权开盘价,1))/后复权因子, 0, 0)*hrankscore((后复权开盘价-barref(后复权收盘价,1))/后复权因子, 0, 0)*hrankscore((后复权开盘价-barref(后复权最低价,1))/后复权因子, 0, 0) |
|
WQ_Alpha23 | if(MA(后复权最高价,20)<后复权最高价, (0-delta(后复权最高价,2)/后复权因子),0) | |
WQ_Alpha24 | if((delta(MA(后复权收盘价,100),100)/barref(后复权收盘价,100))>0.05, (0-delta(后复权收盘价,3)/后复权因子), (min(后复权收盘价, 100)-后复权收盘价)/后复权因子) | |
WQ_Alpha29 | min(hpercentrank(min(hpercentrank(delta(后复权收盘价, 5)/后复权因子, 0,0),2)),5) + percentrank(barref(0-1日涨幅,6),5) | |
WQ_Alpha32 | hscale((ma(后复权收盘价,7)-后复权收盘价)/后复权因子,0)+ 20*hscale(barcorr(后复权日均成交价,barref(后复权收盘价,5), 230),0) | |
WQ_Alpha33 | 开盘价/收盘价 | |
WQ_Alpha34 | hrankscore(stdev(1日涨幅,2)/stdev(1日涨幅,5), 0, 0)+ hrankscore(delta(后复权收盘价,1)/后复权因子,0,0) - Countbars(or(当日涨停标记 = 1, 当日跌停标记 =1),5) | |
WQ_Alpha37 | hrankscore(barcorr(barref(后复权开盘价-后复权收盘价,1),后复权收盘价,200))+
hrankscore((开盘价-收盘价)) |
|
WQ_Alpha38 | hrankscore(percentRank(后复权收盘价,10), 0, 0)*hrankscore(收盘价/开盘价, 0, 0) | |
WQ_Alpha41 | sqrt(最高价*最低价)-日均成交价 | |
WQ_Alpha42 | (日均成交价-收盘价)/(日均成交价+收盘价) | |
WQ_Alpha46 | if(
(delta(后复权收盘价,10) - barref(delta(后复权收盘价,10), 10))/后复权因子 > 2.5, 0-1,
if(delta(后复权收盘价,10) - barref(delta(后复权收盘价,10), 10) <0,
1,(0-delta(后复权收盘价,1)/后复权因子))) |
|
WQ_Alpha48 | hDemean(barcorr(delta(后复权收盘价,1),delta(barref(后复权收盘价,1),1),250)* 1日涨幅/(1+1日涨幅), 2)/sum(power(1日涨幅,2),250) | |
WQ_Alpha49 | if( (delta(后复权收盘价,10) - delta(barref(后复权收盘价,10),10))/后复权因子 +1 < 0,1,0-delta(后复权收盘价,1)/后复权因子) | |
WQ_Alpha51 | if ((delta(barref(后复权收盘价,10),10) -delta(后复权收盘价,10))/后复权因子 > 0.5 , 1, 0-delta(后复权收盘价,1)/后复权因子) | |
WQ_Alpha53 | 0-delta((2*收盘价-最低价-最高价)/(收盘价-最低价),9) | |
WQ_Alpha54 | (收盘价-最低价)*power(开盘价,5)/((最低价-最高价)*power(收盘价,5)) | |
WQ_Alpha56 | hrankscore(sum(1日涨幅,10)/sum(sum(1日涨幅,2),3), 0, 0)* hrankscore(1日涨幅*总市值, 0, 0) | |
WQ_Alpha57 | (日均成交价-收盘价)/decayMA(hrankscore(argmax(后复权收盘价,30), 1, 0),2) |
|
WQ_Alpha60 | hscale(hrankscore(argmax(后复权收盘价,10), 1, 0), 0)-2*hscale(hrankscore((2*后复权收盘价-后复权最低价-后复权最高价)/(后复权最高价-后复权最低价)*当日成交量, 1, 0),0) | |
WQ_Alpha66 | hpercentrank(decayMA(delta(后复权日均成交价,4),7)/后复权因子,
0, 0)+ percentRank(decayMA((日均成交价-最低价)/(开盘价-(最高价+最低价)/2),11),7) |
|
WQ_Alpha73 | 0-Greater(hpercentrank(decayMA(delta(后复权日均成交价,5)/后复权因子,3)),percentRank(decayMA((0-delta(后复权开盘价*0.147155+
后复权最低价*0.852845,2)/(后复权开盘价*0.147155+后复权最低价*0.852845)),3),17)) |
|
WQ_Alpha84 | Power(percentRank(后复权日均成交价-max(后复权日均成交价,15),21), delta(后复权收盘价,5)/后复权因子) | |
WQ_Alpha101 | (开盘价-收盘价)/(最高价-最低价+ 0.001) | |
量价类因子 | WQ_Alpha2 | 0-barcorr(hrank(delta(log(当日成交量),2)),hrank(收盘价/开盘价 - 1),6) |
WQ_Alpha3 | 0-barcorr(hrank(开盘价, 0, 0),hrank(当日换手率, 0, 0),10) | |
WQ_Alpha6 | 0-barcorr(后复权开盘价,中性N日换手率(1),10) | |
WQ_Alpha7 | if(20日平均成交额<当日成交额,(0-PercentRank(abs(delta(后复权收盘价,7)),60))*sign(delta(后复权收盘价,7)), -1 ) | |
WQ_Alpha11 | (hrankscore(max(日均成交价-收盘价,3))+hrankscore(min(日均成交价-收盘价,3)))*
hrankscore(delta(当日换手率,3),0,0) |
|
WQ_Alpha12 | sign(delta(当日换手率,1))*(0-delta(收盘价,1)) | |
WQ_Alpha13 | hrank(covar(hrank(收盘价), hrank(当日成交量),5), 1, 0) | |
WQ_Alpha14 | 0-hrankscore(delta(1日涨幅,3))*barcorr(后复权开盘价,当日换手率,10)
|
|
WQ_Alpha15 | sum(hpercentrank(barcorr(hrank(最高价), hrank(当日成交量),3), 0, 0),3) | |
WQ_Alpha16 | hrank(covar(hrank(最高价), hrank(当日成交量),5), 1, 0) | |
WQ_Alpha17 | hrankscore(percentrank(后复权收盘价,10),
0, 0)*hrankscore(delta(delta(后复权收盘价,1),1)/后复权因子, 0, 0) *
hrankscore(percentrank(当日换手率/20日换手率,5), 0, 0) |
|
WQ_Alpha22 | 0-delta(barcorr(后复权最高价,当日成交量,5),5)*hrankscore(stdev(后复权收盘价,20)/后复权收盘价) | |
WQ_Alpha25 | hrank((0-1日涨幅)*20日平均成交额*日均成交价*(最高价-收盘价)) | |
WQ_Alpha26 | 0-max(barcorr(percentrank(当日成交量,5),percentrank(后复权最高价,5),5),3) | |
WQ_Alpha27 | if(HPercentRank(MA(barcorr(hrank(当日成交量),hrank(日均成交价),6),2)) > 0.5, 0,1) | |
WQ_Alpha28 | 0-barcorr(20日平均成交额,后复权最低价,5)+(最高价+最低价)/2-收盘价 | |
WQ_Alpha30 | (1-hpercentrank((sign(1日涨幅)+sign(barref(1日涨幅,1))+ sign(barref(1日涨幅,2)))) )*ma(当日成交量,5)/ma(当日成交量,20)* (20- Countbars(or(当日涨停标记 = 1, 当日跌停标记 =1),20)) | |
WQ_Alpha31 | hpercentrank(decayMA(hpercentrank(delta(后复权收盘价,10)/后复权因子, 0, 0),10))+hpercentrank(delta(后复权收盘价,3)/后复权因子, 0, 0)+sign(barcorr(20日平均成交额,后复权最低价,12)) |
|
WQ_Alpha35 | PercentRank(当日成交量,32)*(1-PercentRank((后复权收盘价+后复权最高价-后复权最低价),16))*(1-PercentRank(1日涨幅,32)) | |
WQ_Alpha36 | 2.21*hrankscore(barcorr(收盘价-开盘价,barref(当日成交量,1),15))
+ 0.7*hrankscore(开盘价-收盘价)+ 0.73*hrankscore(percentRank(barref(0-1日涨幅,6),5)) +
hrankscore(abs(barcorr(后复权日均成交价, 20日平均成交额,6))) +
0.6*hrankscore((MA(后复权收盘价,200)-后复权开盘价)/后复权因子*(收盘价-开盘价)) |
|
WQ_Alpha39 | hpercentrank(delta(后复权收盘价,7)/后复权因子* (1-HPercentRank(decayMA(当日成交量/20日平均成交额,9))),0,0)*(1+hpercentrank(sum(1日涨幅,250),0,0)) | |
WQ_Alpha40 | (0-hpercentrank(stdev(后复权最高价,10)))*barcorr(最高价,当日成交量,10) | |
WQ_Alpha43 | percentRank(当日成交量/20日平均成交额,20)*percentRank((0-delta(后复权收盘价,7)/后复权因子),8) | |
WQ_Alpha44 | 0-barcorr(后复权最高价,hrank(当日成交量),5) |
|
WQ_Alpha45 | 0-hrank(MA(barref(后复权收盘价,5),20)/后复权因子)*barcorr(收盘价,当日成交量,2)* hrank(barcorr(sum(后复权收盘价,5),sum(后复权收盘价,20),2)) | |
WQ_Alpha47 | hpercentrank(收盘价,0, 0)*当日成交量/20日平均成交额*最高价*hpercentrank(最高价-收盘价)/MA(最高价,5)-hpercentrank(delta(后复权日均成交价,5)/后复权因子) | |
WQ_Alpha50 | 0-max(hrank(barcorr(hrank(当日成交量),hrank(日均成交价),5)),5) | |
WQ_Alpha52 | (barref(min(后复权最低价,5),5)-min(后复权最低价,5))/后复权因子*hpercentrank((sum(1日涨幅,240)-sum(1日涨幅,20))/220)*percentRank(当日换手率,5) | |
WQ_Alpha55 | 0-barcorr(hrank((后复权收盘价-min(后复权最低价,12))/(max(后复权最高价,12)-min(后复权最低价, 12))), hrank(当日换手率),6) | |
WQ_Alpha58 | 1-percentrank(decayMa(barcorr(hDemean(日均成交价, 1),当日成交量, 4), 8),6) | |
WQ_Alpha59 | 1-percentrank(decayMA(barcorr(hDemean(日均成交价,1),当日成交量,4),16),8) | |
WQ_Alpha63 | hrankscore(decayMA(barcorr((日均成交价*0.318+开盘价*0.682),sum(N日均成交金额(180), 37),14),12)) - hrankscore(decayMA(delta(hDemean(收盘价,1),2),8)) | |
WQ_Alpha67 | 0- power(hpercentrank((后复权最高价-min(后复权最高价,2))/后复权因子),hpercentrank(barcorr(hDemean(日均成交价, 1),hDemean(20日平均成交额,2),6))) | |
WQ_Alpha69 | 0-power(hpercentrank(max(delta(hDemean(日均成交价,1),3), 5)),percentRank(barcorr(后复权收盘价*0.490655+后复权日均成交价*0.509345,20日平均成交额,5), 9)) | |
WQ_Alpha70 | 0-power(hpercentrank(delta(后复权日均成交价,1)/后复权因子),percentrank(barcorr(hDemean(收盘价,
1),N日均成交金额(50),18),18)) |
|
WQ_Alpha71 | greater(percentRank(decayMA(barcorr(percentRank(后复权收盘价,3),percentRank(N日均成交金额(180),12),18),4),16), percentRank(decayMA(power(hpercentrank(最低价 + 开盘价-日均成交价*2),2),16),4)) | |
WQ_Alpha72 | hrank(decayMA(barcorr((后复权最高价+后复权最低价)/2, N日均成交金额(40), 9),10))/ hrank(decayMA(barcorr(percentRank(后复权日均成交价,4), percentRank(当日成交量,19),7), 3)) | |
WQ_Alpha76 | 0-Greater(hpercentrank(decayMA(delta(后复权日均成交价,1)/后复权因子,12)), percentRank(decayMA(percentRank(barcorr(hDemean(最低价,1),N日均成交金额(81), 8),20),17),19)) | |
WQ_Alpha77 | Less(hrank(decayMA((后复权最高价+后复权最低价)/2-后复权日均成交价,20)/后复权因子), hrank(decayMA(barcorr((后复权最高价+后复权最低价)/2,N日均成交金额(40),3),6))) | |
WQ_Alpha78 | power(hpercentRank(barcorr(MA(后复权最低价*0.352233+后复权日均成交价*(1-0.352233),20),MA(N日均成交金额(40),20),7)), hPercentRank(barcorr(hrank(日均成交价),hrank(当日成交量),6))) | |
WQ_Alpha80 | 0-power(hpercentrank(Sign(delta(hDemean(开盘价*0.868128+最高价*(1-0.868128), 1),4))), percentRank(barcorr(后复权最高价,N日均成交金额(10),5),6)) | |
WQ_Alpha82 | 0-less(hpercentrank(decayMa(delta(开盘价,1),15)),percentRank(decayma(barcorr(hDemean(当日成交量,1),开盘价,17), 7),13)) | |
WQ_Alpha83 | hpercentrank(barref((后复权最高价-后复权最低价)/5日复权均价,2))*hPercentRank(当日成交量)/((后复权最高价-后复权最低价)/5日复权均价/(日均成交价-收盘价)) | |
WQ_Alpha85 | power(hpercentrank(barcorr(后复权最高价*0.876703+后复权收盘价*(1-0.876703),N日均成交金额(30), 10)), hpercentrank(barcorr(percentRank((后复权最高价+后复权最低价)/2, 4),percentrank(当日成交量,10), 7))) | |
WQ_Alpha87 | 0-greater(hpercentrank(decayma(delta(后复权收盘价*0.369701+后复权日均成交价*(1-0.369701),2)/后复权因子,3)),percentRank(decayma(abs(barcorr(hdemean(N日均成交金额(81),
1), 后复权收盘价,13)),5),14)) |
|
WQ_Alpha88 | less(hPercentRank(decayma((hPercentRank(开盘价)+hPercentRank(最低价)-hPercentRank(最高价)-hPercentRank(收盘价)), 8)),percentRank(decayma(barcorr(percentRank(后复权收盘价,8), percentRank(N日均成交金额(60),21),8),7),3)) | |
WQ_Alpha89 | percentRank(decayMA(barcorr(后复权最低价, N日均成交金额(10), 7), 6),4)- percentRank(decayMA(delta(hdemean(日均成交价,1),3),10),15) | |
WQ_Alpha90 | 0-power(hpercentrank((后复权收盘价-max(后复权收盘价,5)) / 后复权因子), percentRank(barcorr(hdemean(N日均成交金额(40), 1),后复权最低价,5),3)) |
|
WQ_Alpha91 | hpercentrank(decayma(barcorr(后复权日均成交价,N日均成交金额(30),4),3))
- percentRank(decayma(decayma(barcorr(hdemean(收盘价, 1),当日成交量,10),16),4),5)
|
|
WQ_Alpha92 | less(percentRank(decayMa(if((最高价+最低价)/2+收盘价<最低价+开盘价, 1, 0),15), 19), percentRank(decayMA(barcorr(hpercentrank(最低价),hpercentrank(N日均成交金额(30)),8), 7), 7)) | |
WQ_Alpha93 | percentRank(decayma(barcorr(hdemean(日均成交价,1),N日均成交金额(81), 17),19),8)/hpercentrank(decayma(delta(后复权收盘价*0.524434+后复权日均成交价*10.524434, 3),16)/后复权因子) | |
WQ_Alpha94 | 0-power(hPercentRank((后复权日均成交价-min(后复权日均成交价,16))/后复权因子), percentRank(barcorr(percentRank(后复权日均成交价,20), percentRank(N日均成交金额(60),4),18), 3)) | |
WQ_Alpha96 | 0-greater(percentRank(decayma(barcorr(hpercentrank(日均成交价),hpercentrank(当日成交量), 4), 4), 8), percentRank(decayMA(ArgMax(barcorr(percentRank(后复权收盘价,7), percentRank(N日均成交金额(60),4), 4),13),14),13)) | |
WQ_Alpha97 | percentRank(decayMA(percentRank(barcorr(percentRank(后复权最低价,
8), percentRank(N日均成交金额(60),17), 5),19),16), 7) -
hpercentrank(decayMA(delta(hdemean((最低价*0.721001+日均成交价*(1-0.721001)),
1),3),20)) |
|
WQ_Alpha98 | hpercentrank( decayMA(percentRank(ArgMin(barcorr(hrank(开盘价),hrank(N日均成交金额(15)),21),9), 7),8)) - hpercentrank(decayma(barcorr(后复权日均成交价,sum(5日平均成交额,26),5),7)) | |
WQ_Alpha99 | if (hpercentrank(barcorr(ma((后复权最高价+后复权最低价)/2,20),ma(N日均成交金额(60),20),9))< hpercentrank(barcorr(最低价,当日成交量,6)), 0, 1) | |
WQ_Alpha100 | (hscale(hdemean(barcorr(后复权收盘价, hPercentRank(N日均成交金额(20)),5)-hpercentrank(argmin(后复权收盘价,30)),2), 0) - 1.5*hscale(hdemean(hdemean(hpercentrank((收盘价*2 -最低价-最高价)/(最高价-最低价)*当日成交量),2), 2), 0))*(当日成交量/N日均成交金额(20)) |
|
二分类因子 | WQ_Alpha21 | if ((MA(后复权收盘价,8) + stdev(后复权收盘价,8))< MA(后复权收盘价,2),(0-1), if(MA(后复权收盘价, 2)<(MA(后复权收盘价,8)-stdev(后复权收盘价,8)), 1, if((当日成交量/ 20日平均成交量)< 1), 0, 1)) |
WQ_Alpha61 | if (hrank((后复权日均成交价/min(后复权日均成交价,16))) < hrank(barcorr(日均成交价, N日均成交金额(180),18)) , 1, 0) | |
WQ_Alpha62 | if(hrank(barcorr(后复权日均成交价,sum(20日平均成交额,22),10)) < hrank(if (hrank(开盘价)* 2<(hrank((最高价+最低价)/2)+hrank(最高价)), 1, 0), 0,0), 0, 1) | |
WQ_Alpha64 | if(hrank(barcorr(sum(开盘价*0.178404+最低价*0.821596,13),ma(N日均成交金额(120),13),17)) < hrank(delta((后复权最高价+后复权最低价)/2*0.17840+后复权日均成交价*10.178404,4)/后复权因子),0, 1) | |
WQ_Alpha65 | if(hrank(barcorr((开盘价*0.00817205+日均成交价*0.99182795),ma(N日均成交金额(60),9),6)) < hrank(后复权开盘价/min(后复权开盘价,14)), 0, 1) | |
WQ_Alpha68 | if(percentRank(barcorr(hrank(最高价, 0,0),hrank(N日均成交金额(15), 0, 0),9),14) < hpercentrank(delta(后复权收盘价*0.518371+后复权最低价*0.481629,1)/后复权因子), 0, 1) | |
WQ_Alpha74 | if(hrank(barcorr(后复权收盘价,MA(N日均成交金额(30),37),15))<
hrank(barcorr(hrank(最高价*0.0261661+日均成交价*0.9738339),hrank(当日成交量),11)), 0,
1) |
|
WQ_Alpha75 | if(hrank(barcorr(日均成交价,当日成交量,4))<hrank(barcorr(hrank(最低价),hrank(N日均成交金额(50)), 12)), 1,0) | |
WQ_Alpha79 | if(hrank(delta(hDemean(收盘价*0.60733+开盘价*(1-0.60733),
1),1),1,0) <
hrank(barcorr(percentRank(后复权日均成交价,4),percentRank(N日均成交金额(150),
9),15),1,0),0,1) |
|
WQ_Alpha86 | if(percentRank(barcorr(后复权收盘价,ma(N日均成交金额(20),15),6),20) < hpercentrank(收盘价-日均成交价),0,1) | |
WQ_Alpha81 | if(hrank(Log(product(hpercentrank(barcorr(后复权日均成交价,ma(N日均成交金额(10), 50), 8)),15))) < hrank(barcorr(hrank(日均成交价),hrank(当日成交量),5)), 0, 1) | |
WQ_Alpha95 | if (hPercentRank((后复权开盘价-min(后复权开盘价,12))/后复权因子) < percentRank(hPercentRank(barcorr(ma((后复权最高价+后复权最低价)/2,19),ma(N日均成交金额(40),19),13)),12), 1,0) |
利润表 | |
项目名称 | 备注 |
A 营业收入 | |
营业总收入 | 等于 营业收入+利息收入+已赚保费+手续费及佣金收入 |
营业收入 | |
利息净收入 | |
利息收入 | |
利息支出 | |
手续费及佣金净收入 | |
手续费及佣金收入 | |
手续费及佣金支出 | |
代理买卖证券业务净收入 | |
证券承销业务净收入 | |
受托客户资产管理业务净收入 | |
已赚保费 | |
保险业务收入 | |
分保费收入 | |
分出保费 | |
提取未到期责任准备金 | |
其他营业收入 | |
B 营业支出 | |
营业总成本 | 对非金融类公司: 营业总成本= 营业成本+营业税金及附加+销售费用+管理费用(+财务费用+资产减值损失+金融类特殊成本项目(包括利息支出)。 对金融类公司: 营业总成本 = 营业成本(B2) |
营业成本 | |
营业支出 | |
销售费用 | |
管理费用 | |
财务费用 | |
资产减值损失 | |
退保金 | |
赔付支出 | |
减:摊回赔付支出 | |
提取保险责任准备金 | |
摊回保险责任准备金 | |
保单红利支出 | |
分保费用 | |
业务及管理费 | |
减:摊回分保费用 | |
保险手续费及佣金支出 | |
其他营业成本 | |
营业税金及附加 | |
C 收益利润 | |
营业利润 | 营业利润 = 营业总收入- 营业总成本 + 非经营性净收益 |
利润总额 | 利润总额 = 营业利润 +营业外收入 - 营业外支出+其它调整项目(多数情况为0) |
净利润 | 净利润 = 利润总额- 所得税费用 +未确认的投资损失+其它调整项目(多数情况为0) |
归属于母公司所有者的净利润 | 归属于母公司所有者的净利润 = 净利润 - 少数股东损益 - 影响母公司净利润的调整项目 |
非经营性净收益 | 仅针对非金融类公司。 非经营性净收益 = 公允价值变动净收益+投资净收益+汇兑收益+非经营性净收益特殊项目+调整项目 |
公允价值变动净收益 | |
投资净收益 | 包含 对联营合营企业的投资收益 |
对联营合营企业的投资收益 | |
汇兑收益 | |
营业外收入 | |
营业外支出 | 包含非流动资产处置净损失 |
非流动资产处置净损失 | |
所得税费用 | |
未确认的投资损失 | |
少数股东损益 | |
其他综合收益 | |
归属于母公司所有者的其他综合收益总额 | |
归属于少数股东的其他综合收益总额 | |
综合收益总额 | |
归属于母公司所有者的综合收益总额 | |
归属于少数股东的综合收益总额 | |
基本每股收益 | 季报公布的基本每股收益 |
稀释每股收益 | 季报公布的稀释每股收益 |
负债资产表 | |
项目名称 | 备注 |
D 资产 | |
资产总计 | 对非金融类公司: 资产总计 = 流动资产合计(E1) + 非流动资产合计(E2)。 |
流动资产合计 | 金融类公司此项为空值。 |
非流动资产合计 | 金融类公司此项为空值。 |
货币资金 | 货币资金属于流动资产。 |
客户资金存款 | 客户资金存款包含在货币资金中。 |
交易性金融资产 | 交易性金融资产属于流动资产。 |
应收票据 | 应收票据属于流动资产。 |
应收股利 | 应收股利属于流动资产。 |
应收利息 | 应收利息属于流动资产。 |
应收账款 | 应收账款属于流动资产。 |
其他应收款 | 其他应收款属于流动资产。 |
预付款项 | 预付款项属于流动资产。金融类公司此项为空值。 |
存货 | 存货属于流动资产。金融类公司此项为空值。 |
消耗性生物资产 | 消耗性生物资产属于存货。 |
待摊费用 | 待摊费用属于流动资产。金融类公司此项为空值。 |
划分为持有待售的资产 | 划分为持有待售的资产属于流动资产。 |
一年内到期的非流动资产 | 一年内到期的非流动资产属于流动资产。金融类公司此项为空值。 |
其他流动资产 | 其他流动资产属于流动资产。 |
可供出售金融资产 | 可供出售金融资产属于非流动资产 |
持有至到期投资 | 持有至到期投资属于非流动资产 |
投资性房地产 | 投资性房地产属于非流动资产 |
长期股权投资 | 长期股权投资属于非流动资产 |
长期应收款 | 长期应收款属于非流动资产 |
固定资产 | 固定资产属于非流动资产 |
工程物资 | 工程物资属于非流动资产 |
在建工程 | 在建工程属于非流动资产 |
固定资产清理 | 固定资产清理属于非流动资产 |
生产性生物资产 | 生产性生物资产属于非流动资产 |
油气资产 | 油气资产属于非流动资产 |
无形资产 | 无形资产属于非流动资产 |
交易席位费 | 交易席位费包含在无形资产中。 |
开发支出 | 开发支出属于非流动资产 |
商誉 | 商誉属于非流动资产 |
长期待摊费用 | 长期待摊费用属于非流动资产 |
递延所得税资产 | 递延所得税资产属于非流动资产 |
其他非流动资产 | 其他非流动资产属于非流动资产 |
E 金融类资产 | |
投资-贷款及应收款项(应收款项类投资) | |
结算备付金 | |
客户备付金 | 客户备付金包含在结算备付金中 |
存放同业款项 | |
贵金属 | |
拆出资金 | |
衍生金融资产 | |
买入返售金融资产 | |
发放贷款和垫款 | |
应收保费 | |
应收代位追偿款 | |
应收分保账款 | |
应收分保未到期责任准备金 | |
应收分保未决赔款准备金 | |
应收分保寿险责任准备金 | |
应收分保长期健康险责任准备金 | |
保户质押贷款 | |
定期存款 | |
存出保证金 | |
存出资本保证金 | |
独立账户资产 | |
其他资产 | |
F 负债 | |
负债合计 | |
流动负债合计 | |
非流动负债合计 | |
短期借款 | 短期借款属于流动负债。 |
质押借款 | 质押借款包含在短期借款中。 |
交易性金融负债 | 交易性金融负债属于流动负债 |
应付票据 | 应付票据属于流动负债。金融类公司此项为空值。 |
应付账款 | 应付账款属于流动负债。 |
应付短期债券 | 应付短期债券属于流动负债 |
预收款项 | 预收款项属于流动负债 |
应付职工薪酬 | 应付职工薪酬属于流动负债 |
应付股利 | 应付股利属于流动负债 |
应交税费 | 应交税费属于流动负债 |
应付利息 | 应付利息属于流动负债 |
其他应付款 | 其他应付款属于流动负债 |
预提费用 | 预提费用属于流动负债 |
递延收益 | 递延收益属于流动负债 |
划分为持有待售的负债 | 划分为持有待售的负债属于流动负债 |
一年内到期的非流动负债 | 一年内到期的非流动负债属于非流动负债。金融类公司此项为空值。 |
其他流动负债 | 其他流动负债属于流动负债 |
长期借款 | 长期借款属于非流动负债 |
应付债券 | 应付债券属于非流动负债 |
长期应付款 | 长期应付款属于非流动负债 |
长期应付职工薪酬 | 长期应付职工薪酬属于非流动负债 |
专项应付款 | 专项应付款属于非流动负债 |
预计负债 | 预计负债属于非流动负债 |
递延所得税负债 | 递延所得税负债属于非流动负债 |
长期递延收益 | 长期递延收益属于非流动负债 |
其他非流动负债 | 其他非流动负债属于非流动负债 |
G 金融类负债 | |
向中央银行借款 | |
同业及其他金融机构存放款项 | |
拆入资金 | |
衍生金融负债 | |
卖出回购金融资产款 | |
吸收存款 | |
代理买卖证券款 | |
代理承销证券款 | |
存入保证金 | |
预收保费 | |
应付手续费及佣金 | |
应付分保账款 | |
应付赔付款 | |
应付保单红利 | |
保户储金及投资款 | |
未到期责任准备金 | |
未决赔款准备金 | |
寿险责任准备金 | |
长期健康险责任准备金 | |
独立账户负债 | |
其他负债 | |
H 权益 | |
归属母公司股东权益合计 | |
所有者权益合计 | 所有者权益合计 = 归属母公司股东权益合计 + 少数股东权益 + 所有者权益调整项目(多数为0) |
负债和所有者权益总计 | |
资本公积 | |
盈余公积 | |
未分配利润 | |
库存股 | |
其他综合收益 | |
一般风险准备 | |
外币报表折算差额 | |
未确认投资损失 | |
其他储备(公允价值变动储备) | |
专项储备 | |
少数股东权益 |
现金流表 | |
项目名称 | 备注 |
I 经营现金流 | |
经营现金流量净额 | |
销售商品、提供劳务收到的现金 | |
收到的税费返还 | |
客户存款和同业存放款项净增加额 | |
向中央银行借款净增加额 | |
向其他金融机构拆入资金净增加额 | |
收回已核销贷款 | |
收取利息、手续费及佣金的现金 | |
处置交易性金融资产净增加额 | |
回购业务资金净增加额 | |
收到原保险合同保费取得的现金 | |
收到再保业务现金净额 | |
保户储金及投资款净增加额 | |
收到其他与经营活动有关的现金 | |
经营活动现金流入小计 | |
购买商品、接受劳务支付的现金 | |
支付给职工以及为职工支付的现金 | |
支付的各项税费 | |
客户贷款及垫款净增加额 | |
存放中央银行和同业款项净增加额 | |
拆出资金净增加额 | |
支付手续费及佣金的现金 | |
支付原保险合同赔付款项的现金 | |
支付再保业务现金净额 | |
支付保单红利的现金 | |
支付其他与经营活动有关的现金 | |
J 投资现金流 | |
投资现金流量净额 | |
收回投资收到的现金 | |
取得投资收益收到的现金 | |
处置固定资产、无形资产和其他长期资产收回的现金净额 | |
处置子公司及其他营业单位收到的现金净额 | |
收到其他与投资活动有关的现金 | |
投资活动现金流入小计 | |
购建固定资产、无形资产和其他长期资产支付的现金 | |
投资支付的现金 | |
取得子公司及其他营业单位支付的现金净额 | |
质押贷款净增加额 | |
支付其他与投资活动有关的现金 | |
K 筹资现金流量 | |
筹资现金流量净额 | |
吸收投资收到的现金 | |
其中:子公司吸收少数股东投资收到的现金 | |
发行债券收到的现金 | |
取得借款收到的现金 | |
收到其他与筹资活动有关的现金 | |
筹资活动现金流入小计 | |
偿还债务支付的现金 | |
分配股利、利润或偿付利息支付的现金 | |
其中:子公司支付给少数股东的股利、利润或偿付的利息 | |
支付其他与筹资活动有关的现金 | |
L 现金流总结 | |
现金及现金等价物净增加额 | |
期末现金及现金等价物余额 | |
期初现金及现金等价物余额 | |
汇率变动对现金及现金等价物的影响 | |
资产减值准备 | |
固定资产折旧 | |
无形资产摊销 | |
长期待摊费用摊销 | |
待摊费用减少 | |
预提费用增加 | |
处置固定资产、无形资产和其他长期资产的损失 | |
固定资产报废损失 | |
公允价值变动损失 | |
投资损失 | |
递延所得税资产减少 | |
递延所得税负债增加 | |
存货的减少 | |
经营性应收项目的减少 | |
经营性应付项目的增加 | |
其他 | |
债务转为资本 | |
一年内到期的可转换公司债券 | |
融资租入固定资产 | |
现金的期末余额 | |
现金的期初余额 | |
现金等价物的期末余额 | |
现金等价物的期初余额 |
分类 | 名称 | 果仁计算公式 | 备注 |
估值 | 市盈率 | 总市值/TTM(归属于母公司所有者的净利润,0) | 即PE_TTM,等于总市值除以过去12个月的归属于母公司所有者的净利润 |
市净率 | 总市值/归属母公司股东权益合计 | 即PB,等于总市值除以归属母公司股东权益合计。 | |
市销率 | 总市值/TTM(营业总收入,0) | 即PS_TTM,等于总市值除以过去12个月的营业总收入。 | |
市现率 | 总市值/ TTM(经营现金流量净额,0) | 即PCF_TTM,等于总市值除以过去12个月的经营现金流量净额。 | |
EV_EBITDA | (总市值+负债合计-货币资金) /(TTM(利润总额,0)+TTM(财务费用,0)+TTM(固定资产折旧,0)+TTM(无形资产摊销,0)) | 等于(总市值+负债合计-货币资金)除以过去12个月的(利润总额+财务费用+固定资产折旧+无形资产摊销) | |
股息率 | 上一年总现金分红/总市值 | 等于最近一年每股现金分红除以股票价格。 | |
扣非市盈率 | 总市值/TTM(扣非净利润,0) | 等于等于总市值除以过去12个月的扣非净利润 | |
PEG | 市盈率/归属于母公司所有者的净利润增长 | 市盈率/归属于母公司所有者的净利润增长 | |
静态市盈率 | 总市值/annual(归属于母公司所有者的净利润, 0) | 等于总市值/最近年报的归属于母公司所有者的净利润 | |
动态市盈率 | 总市值/ if (Mod(当前季度ID,4)= 0, annual(归属于母公司所有者的净利润, 0),accruQ(归属于母公司所有者的净利润,0)/Mod(当前季度ID,4) * 4) | 等于总市值/归属于母公司所有者的净利润,净利润根据每期财报动态扩展到年报数据。 | |
EP | TTM(归属于母公司所有者的净利润,0)/总市值 | 市盈率TTM的倒数, 等于过去12个月的归属于母公司所有者的净利润/总市值 | |
BP | 归属母公司股东权益合计/总市值 | 市净率的倒数,等于归属母公司股东权益合计/总市值 | |
偿债能力 | 流动比率 | 流动资产合计 / 流动负债合计 | 等于最近一季的流动资产合计除以流动负债合计。金融类公司此项为空值。 |
负债资产率 | 负债合计/ 资产总计 | 等于最近一季的负债合计除以资产总计。 | |
产权比率 | 负债合计 / 归属母公司股东权益合计 | 等于最近一季的负债合计除以归属母公司股东权益合计。 | |
账面杠杆 | 非流动负债合计/归属母公司股东权益合计 | 账面杠杆(Book leverage)。等于最近一季度的非流动负债合计/归属母公司股东权益合计。金融类公司此项为空值 | |
市场杠杆 | 非流动负债合计/(非流动负债合计+总市值) | 市场杠杆(Market leverage)。等于最近一季度的非流动负债合计/(最近一季度的非流动负债合计+当日总市值)。 金融类公司此项为空值 | |
速动比率 | (流动资产合计-存货)/ 流动负债合计 | 速动比率(Quick ratio)。等于最近一季的(流动资产合计-存货)/流动负债合计。金融类公司此项为空值。 | |
超速动比率 | (货币资金+交易性金融资产+应收票据+应收帐款+其他应收款)/流动负债合计 | 超速动比率,等于最近一季度的(货币资金+交易性金融资产+应收票据+应收帐款+其他应收款)/流动负债合计。 金融类公司此项为空值。 | |
利息保障倍数 | (利润总额+财务费用)/财务费用 | 最近一季度的(利润总额+财务费用)/财务费用 | |
现金比率 | TTM(期末现金及现金等价物余额,0)/流动负债合计 | 等于最近12个月的期末现金及现金等价物余额/流动负债合计 | |
现金流动负债比 | TTM(经营现金流量净额,0)/流动负债合计 | 等于最近12个月的经营现金流量净额/流动负债合计 | |
资本结构 | 股东权益比率 | 归属母公司股东权益合计/资产总计 | 等于最近一季度的归属母公司股东权益合计/资产总计 |
固定资产比率 | (固定资产+工程物资+在建工程)/资产总计 | 等于最近一季度的(固定资产+工程物资+在建工程)/资产总计 | |
无形资产比率 | (无形资产+开发支出+商誉)/资产总计 | 等于最近一季度的(无形资产+开发支出+商誉)/资产总计 | |
非流动资产比率 | 非流动资产合计/总资产 | 等于最近一季度的非流动资产合计/总资产 | |
股东权益与固定资产比率 | 归属母公司股东权益合计/(固定资产+工程物资+在建工程) | 等于最近一季度的归属母公司股东权益合计/(固定资产+工程物资+在建工程) | |
盈利能力 | 营业利润率 | TTM(营业利润,0) / TTM(营业收入,0) | 过去12个月的营业利润除以过去12个月的营业收入 |
销售净利率 | TTM(净利润,0) / TTM(营业收入,0) | 过去12个月的净利润 除以过去12个月的营业收入 | |
销售毛利率 | (TTM(营业收入,0) - TTM(营业成本,0)) / TTM(营业收入,0) | 过去12个月的(营业收入-营业成本)/营业收入 | |
资产回报率 | TTM(净利润,0)/AvgQ(资产总计,4,1) | 过去12个月的净利润除以一季度前过去12个月的平均资产总计 | |
5年资产回报率 | (Annual(净利润,0)+Annual(净利润,1)+Annual(净利润,2)+Annual(净利润,3)+Annual(净利润,4))/(Annual(资产总计,1)+Annual(资产总计,2)+Annual(资产总计,3)+Annual(资产总计,4)+Annual(资产总计,5)) | 过去5年的净利润之和除以一年前的过去5年的资产总计之和 | |
净资产收益率 | TTM(净利润,0)/AvgQ(所有者权益合计,4,1) | 过去12个月的净利润除以一季度前过去12个月的平均所有者权益合计 | |
5年净资产收益率 | (Annual(净利润,0)+Annual(净利润,1)+Annual(净利润,2)+Annual(净利润,3)+Annual(净利润,4))/(Annual(所有者权益合计,1)+Annual(所有者权益合计,2)+Annual(所有者权益合计,3)+Annual(所有者权益合计,4)+Annual(所有者权益合计,5)) | 过去5年的净利润之和除以一年前的过去5年的所有者权益合计之和 | |
扣非净资产收益率 | TTM(扣非净利润,0)/AvgQ(所有者权益合计,4,1) | 过去12个月的扣非净利润除以一季度前过去12个月的平均所有者权益合计 | |
投入资本回报率 | TTM(净利润,0)+ TTM(财务费用,0)/((AvgQ(资产总计,4,1)-AvgQ(流动负债,4,1)+AvgQ(应付票据,4,1) + AvgQ(短期借款,4,1) + AvgQ(一年内到期的长期负债,4,1)) | 过去12个月的(净利润+财务费用)/一季度前过去12个月的平均(资产总计-流动负债+应付票据+短期借款+一年内到期的长期负债)。万得公式。 | |
营运效率 | 总资产周转率 | TTM(营业收入,0)/AvgQ(资产总计,4,0) | 过去12个月的营业收入除以过去12个月的平均资产总计 |
存货周转率 | TTM(营业成本,0)/AvgQ(存货,4,0) | 过去12个月的营业成本除以过去12个月的平均存货。金融类公司此项为空值。 | |
流动资产周转率 | TTM(营业收入,0)/AvgQ(流动资产合计,4,0) | 过去12个月的营业收入/过去12个月的平均流动资产合计。金融类公司此项为空值。 | |
固定资产周转率 | TTM(营业收入,0)/(AvgQ(流动资产合计,4,0) + AvgQ(工程物资,4,0) + AvgQ(在建工程,4,0) ) | 等于过去12个月的营业收入/过去12个月的平均(固定资产+工程物资+在建工程)。 | |
应付账款周转率 | TTM(营业成本,0)/(AvgQ(应付账款,4,0) + AvgQ(应付票据,4,0) - AvgQ(预付款项,4,0) ) | 等于过去12个月的营业成本/过去12个月的平均(应付账款+应付票据-预付款项)。 | |
应收账款周转率 | TTM(营业收入,0)/(AvgQ(应收账款,4,0) + AvgQ(应收票据,4,0) - AvgQ(预收账款,4,0) ) | 等于过去12个月的营业收入/过去12个月的平均(应收账款+应收票据-预收账款)。 | |
股东权益周转率 | TTM(营业收入,0)/归属母公司股东权益合计 | 等于过去12个月的营业收入/最近一季度的归属母公司股东权益合计 | |
存货周转天数 | 360/存货周转率 | 等于360/存货周转率。 | |
应收账款周转天数 | 360/应收账款周转率 | 等于360/应收账款周转率。 | |
应付账款周转天数 | 360/应付账款周转率 | 等于360/应付账款周转率。 | |
营业周期 | 应收账款周转天数+存货周转天数 | 等于应收账款周转天数+存货周转天数。 | |
应付账款付款期 | AvgQ(应付账款,4,0)/TTM(营业成本,0)/360 | 等于过去12个月平均应付账款/营业成本/360 | |
现金转换周期 | 营业周期-应付账款付款期 | 营业周期-应付账款付款期 | |
成长能力 | 营业利润增长 | (TTM(营业利润,0)-TTM(营业利润,4))/abs(TTM(营业利润,4)) | 过去12个月的营业利润相对4季度前的12个月的营业利润的增长率。 |
净利润增长 | (TTM(净利润,0)-TTM(净利润,4)) / abs (TTM(净利润,4)) | 过去12个月的净利润相对4季度前的12个月的净利润的增长率。 | |
利润总额增长 | (TTM(利润总额,0)-TTM(利润总额,4)) / abs (TTM(利润总额,4)) | 过去12个月的利润总额相对4季度前的12个月的利润总额的增长率。 | |
毛利润增长 | ((TTM(营业收入,0) - TTM(营业成本,0))-(TTM(营业收入,4) - TTM(营业成本,4))) / abs(TTM(营业收入,4) - TTM(营业成本,4)) | 过去12个月的毛利润相对4季度前的12个月的毛利润的增长率。 | |
营业收入增长 | (TTM(营业收入,0)-TTM(营业收入,4))/abs(TTM(营业收入,4)) | 过去12个月的营业收入相对4季度前的12个月的营业收入的增长率。 | |
净资产增长 | (REFQ(所有者权益合计,0) - REFQ(所有者权益合计,4))/abs( REFQ(所有者权益合计,4)) | 最近一季的所有者权益合计相对于4季度前的所有者权益合计的增长率。 | |
总资产增长 | (REFQ(资产总计,0) - REFQ(资产总计,4))/abs( REFQ(资产总计,4)) |
最近一季的资产总计相对于4季度前的资产总计的增长率。 | |
归属于母公司所有者的净利润增长 | (TTM(归属于母公司所有者的净利润,0)-TTM(归属于母公司所有者的净利润,4))/abs(TTM(归属于母公司所有者的净利润,4) ) | 过去12个月的归属于母公司所有者的净利润相对4季度前的12个月的归属于母公司所有者的净利润的增长率。 | |
净现金流量增长率 | (TTM(现金及现金等价物净增加额,0) - TTM(现金及现金等价物净增加额,4))/abs(TTM(现金及现金等价物净增加额,4)) | 过去12个月的现金及现金等价物净增加额相对4季度前的12个月的现金及现金等价物净增加额的增长率。 | |
净利润3年复合增长 | power((TTM(净利润,0)-TTM(净利润,12)) / abs (TTM(净利润,12)) + 1, 1/3) -1 | 过去12个月的净利润相对12季度前的12个月的净利润的年化增长率。 | |
净利润5年复合增长 | power((TTM(净利润,0)-TTM(净利润,20)) / abs (TTM(净利润,20)) + 1, 1/5) -1 | 过去12个月的净利润相对20季度前的12个月的净利润的年化增长率。 | |
营业收入3年复合增长 | power((TTM(营业收入,0)-TTM(营业收入,12)) / abs (TTM(营业收入,12)) + 1, 1/3) -1 | 过去12个月的营业收入相对12季度前的12个月的营业收入的年化增长率。 | |
营业收入5年复合增长 | power((TTM(营业收入,0)-TTM(营业收入,20)) / abs (TTM(营业收入,20)) + 1, 1/5) -1 | 过去12个月的营业收入相对20季度前的12个月的营业收入的年化增长率。 | |
八季度净利润变化趋势 | if( 净利润-refq(净利润, 4) > 0, 1, -1) + if( refq(净利润,1) -refq(净利润, 5) > 0, 1, -1) +if( refq(净利润,2) -refq(净利润, 6) > 0, 1, -1) +if( refq(净利润,3) -refq(净利润, 7) > 0, 1, -1) +if( refq(净利润,4) -refq(净利润, 8) > 0, 1, -1) +if( refq(净利润,5) -refq(净利润, 9) > 0, 1, -1) +if( refq(净利润, 6) -refq(净利润, 10) > 0, 1, -1) +if( refq(净利润,7) -refq(净利润, 11) > 0, 1, -1) | 前8个季度的净利润,如果同比(去年同期)增长记为+1,同比下滑记为-1,再将8 个值相加。 | |
经营现金流量净额增长 | (TTM(经营现金流量净额,0) - TTM(经营现金流量净额,4))/abs(TTM(经营现金流量净额,4)) | 过去12个月的经营现金流量净额相对4季度前的12个月的经营现金流量净额的增长率。 | |
投资现金流量净额增长 | (TTM(投资现金流量净额,0) - TTM(投资现金流量净额,4))/abs(TTM(投资现金流量净额,4)) | 过去12个月的投资现金流量净额相对4季度前的12个月的投资现金流量净额的增长率。 | |
筹资现金流量净额增长 | (TTM(筹资现金流量净额,0) - TTM(筹资现金流量净额,4))/abs(TTM(筹资现金流量净额,4)) | 过去12个月的筹资现金流量净额相对4季度前的12个月的筹资现金流量净额的增长率。 | |
每股指标 | 每股收益 | TTM(归属于母公司所有者的净利润,0)/总股本 | 过去12个月归属母公司所有者的净利润除以总股本 |
每股扣非收益 | TTM(扣非净利润,0)/总股本 | 过去12个月扣非净利润除以总股本 | |
每股净资产 | 归属母公司股东权益合计/总股本 | 最近一季的归属母公司股东权益合计除以总股本 | |
每股营业利润 | TTM(营业利润,0)/总股本 | 过去12个月营业利润除以总股本 | |
每股营业收入 | TTM(营业收入,0)/总股本 | 过去12个月营业收入除以总股本 | |
每股经营性现金流 | TTM(经营现金流量净额)/总股本 | 过去12个月经营现金流量净额/总股本 | |
每股现金流量净额 | TTM(现金及现金等价物净增加额)/总股本 | 过去12个月现金及现金等价物净增加额除以总股本 | |
每股资本公积金 | 资本公积/总股本 | 最近一季的资本公积除以总股本 | |
每股未分配利润 | 未分配利润/总股本 | 最近一季的未分配利润除以总股本 | |
每股股息 | 上一年总现金分红/总股本 | 上一年总现金分红除以总股本 | |
每股营业总收入 | TTM(营业总收入, 0)/总股本 | 过去12个月总营业收入除以总股本 | |
每股现金及现金等价物余额 | 期末现金及现金等价物余额/总股本 | 最近一季度期末现金及现金等价物余额/总股本 | |
每股企业自由现金流量 | (TTM(现金及现金等价物净增加额, 0) - TTM(筹资活动产生的现金流量净额, 0))/总股本 | 过去12个月的企业自由现金流量/总股本 | |
每股股东自由现金流量 | (TTM(现金及现金等价物净增加额, 0)- TTM(吸收权益性投资收到的现金, 0) - TTM(分配股利、利润或偿付利息支付的现金, 0))/总股本 | 过去12个月的股东自由现金流量/总股本 | |
每股有形资产 | (资产总计-无形资产-商誉)/总股本 | 最近一季度的 (资产总计-无形资产-商誉)/总股本 | |
每股负债 | 负债合计/总股本 | 最近一季度的 负债合计/总股本 | |
每股盈余公积 | 盈余公积/总股本 | 最近一季度的盈余公积/总股本 | |
每股留存收益 | (盈余公积+未分配利润)/总股本 | 最近一季度的(盈余公积+未分配利润)/总股本 | |
每股投资现金流量净额 | TTM(投资现金流量净额, 0)/总股本 | 过去12个月的投资现金流量净额/总股本 | |
每股筹资现金流量净额 | TTM(筹资现金流量净额, 0)/总股本 | 过去12个月的筹资现金流量净额/总股本 | |
每股折旧和摊销 | (TTM(固定资产折旧,0)+ TTM(无形资产摊销,0)+ TTM(长期待摊费用摊销,0))/总股本 | 过去12个月的(固定资产折旧+无形资产摊销+长期待摊费用摊销)/总股本 | |
最近一年合计TTM | 营业总收入TTM | TTM(营业总收入, 0) | 过去12个月的营业总收入 |
营业总成本TTM | TTM(营业总成本, 0) | 过去12个月的营业总成本 | |
营业收入TTM | TTM(营业收入, 0) | 过去12个月的营业收入 | |
营业成本TTM | TTM(营业成本, 0) | 过去12个月的营业成本 | |
毛利TTM | TTM(营业收入,0) - TTM(营业成本,0) | 过去12个月的毛利TTM | |
销售费用TTM | TTM(销售费用, 0) | 过去12个月的销售费用 | |
管理费用TTM | TTM(管理费用, 0) | 过去12个月的管理费用 | |
财务费用TTM | TTM(财务费用, 0) | 过去12个月的财务费用 | |
资产减值损失TTM | TTM(资产减值损失, 0) | 过去12个月的资产减值损失 | |
营业利润TTM | TTM(营业利润, 0) | 过去12个月的营业利润 | |
营业外收支净额TTM | TTM(营业外收入, 0)- TTM(营业外支出,0) | 过去12个月的营业外收支净额 | |
利润总额TTM | TTM(利润总额, 0) | 过去12个月的利润总额 | |
净利润TTM | TTM(净利润, 0) | 过去12个月的净利润 | |
归属于母公司股东的净利润TTM | TTM(归属于母公司股东的净利润, 0) | 过去12个月的归属于母公司股东的净利润 | |
销售商品提供劳务收到的现金TTM | TTM(销售商品、提供劳务收到的现金, 0) | 过去12个月的销售商品、提供劳务收到的现金 | |
经营现金流量净额TTM | TTM(经营现金流量净额, 0) | 过去12个月的经营现金流量净额 | |
投资现金流量净额TTM | TTM(投资现金流量净额, 0) | 过去12个月的投资现金流量净额 | |
筹资现金流量净额TTM | TTM(筹资现金流量净额, 0) | 过去12个月的筹资现金流量净额 | |
现金及现金等价物净增加额TTM | TTM(现金及现金等价物净增加额, 0) | 过去12个月的现金及现金等价物净增加额 |
高管增持股数 :公司高管在过去1日/5日/20日通过二级市场或大宗交易净增持股数。 股数大于0时为净增持, 股数小于0时为净减持。晚于实际增减持日两天公布。
高管增持金额 :公司高管在过去1日/5日/20日通过二级市场或大宗交易净增持金额。 金额大于0时为净增持, 金额小于0时为净减持。晚于实际增减持日两天公布。
高管增持次数 :公司高管在过去1日/5日/20日通过二级市场或大宗交易净增持交易次数。 次数大于0时为净增持次数, 次数小于0时为净减持次数。晚于实际增减持日两天公布。
高管增持股本比例 :公司高管在过去1日/5日/20日通过二级市场或大宗交易净增持股本占流通股本的比例。 比例大于0时为净增持, 比例小于0是为净减持。晚于实际增减持日两天公布。
新增流通股数 :当日/未来20日/未来60日新增流通股数。
新增流通股占比 :当日/未来20日/未来60日新增流通占比。 等于新增流通股数除以流通股本。
新增流通股数 :当日/未来20日/未来60日新增流通股数。
业绩预告累计利润涨幅下限和上限 :公司业绩预告中公布的累计利润涨幅下限和上限。预告对应的季度由预告季度ID标出。上限下限或是公告披露原值,或根据公告数据计算得出。 下限值为空时,没有下限, 上限值为空时,没有上限。
预期净利润增幅 :分析师对同一时期的净利润增幅一致预期。用于可公司预告数字的对比。 值为空时,表示没有预期值。
分析师情绪指数 :值在0到1 之间, 值越大,代表分析师对这支股票的评价越高。
重仓基金数 :重仓持有这支股票的基金个数。根据基金每季度公布的头10名持仓股票算出。
重仓基金持有比例 :重仓基金持有这支股票的总市值除以股票流通市值。根据基金每季度公布的头10名持仓股票算出。
夏普比率 :表示每承受一单位总风险,会产生多少的超额回报。 计算公式 ( 年化收益率 - 无风险收益) / 年化收益波动率, 其中 年化收益率 = (总收益 + 1)^(365.25 / 天数) - 1, 无风险收益 =4%, 年化收益波动率 =stdev(日收益) *sqrt(250) 。
最大回撤率 :策略历史收益的最大跌幅。具体计算方法为 max(1 - 策略当日价值 / 当日之前虚拟账户最高价值)。
收益波动率 :用来测量策略的风险性,波动越大代表策略风险越高。具体计算方法为: 日收益的标准差 × SQRT(250),其中250意思是一年250个交易日。
信息比率 :衡量策略是否能稳定跑赢基准。 计算公式:(策略年化收益 - 基准年化收益)/年化相对收益波动率,其中 年化相对收益波动率 = stdev(策略每日收益 - 基准每日收益) * sqrt(250)。当基准为无风险资产时, 信息比率等同夏普比率。
Beta :贝塔值愈大,策略收益相对于收益基准的波动越大。具体计算方法为策略每日收益与收益基准每日收益的协方差(covariance) / 收益基准每日收益的方差 (variance)。 Beta =1时,策略收益的波动和收益基准基本一样。 Beta > 1,收益基准的波动会引起策略收益的较大变化。
Alpha :Alpha是投资者获得与市场波动无关的回报,具体计算方式为 (策略年化收益 - 无风险年化收益) - beta× (收益基准年化收益 - 无风险年化收益),这里的无风险年化收益按4%计算。Alpha > 0, 策略相对于风险,获得了超额收益; Alpha < 0, 策略相对于风险,获得了较少收益。
股票筛选在各个股票网站和软件上都有提供,大家都很熟悉。使用筛选,用户可以迅速挑出满足筛选条件的股票剔除不满足筛选条件股票。 股票排名是一种更有效的更被专业投资者青睐的选股方法,也是果仁网推荐的选股方法。 大家在过去一直没有机会接触排名选股的方法,会感到比较陌生,其实它的原理非常简单。在学校里, 一个班的学生按各科成绩的综合起来进行排名,排在前面的学生会得奖学金。 类似的方法,用户可以对市场上的股票按几项指标进行综合排名,并买入排名靠前的股票。和筛选相比,排名可以实现更精细更稳定的选股策略,原因如下:
筛选条件的阈值往往难以设定。条件过松时,筛出的股票可能过多,条件过严时,筛出的股票可能过少甚至为空。 而使用排名,股票之间总是能排出先后,用户可以较精确地控制选股数量,如前10前100等。
在筛选股票时,股票只要有一个筛选条件不满足就会被剔除,即使其它指标表现再好都没用。而排名可以多个条件综合考量,即便是有一个条件排名得分低,只要其它条件排名得分高,股票依然可能入选。
在筛选中,所有条件的重要性等同,而在排名中,不同条件可以有不同的权重,重要性可以不同。
当用户同时定义筛选条件和排名条件时,果仁会首先按照筛选条件筛选股票,再按照排名条件对股票排名。 在实际选股中,大家可首先使用筛选来粗选出一大批股票,再用排名精选出少量的股票作为投资对象。
排名虽然一直是专业人士的投资方法,但原理非常简单,只要有初级算术的知识就能理解排名分的计算规则。
下面我们用一些实例来介绍果仁排名分的具体计算规则。 比如一共有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)
Ref(指标, 天数), 取得指标几个交易日前的值。当天数为0时,
返回数据起始第一天的指标数据。 例子“Ref(收盘价,5)” 就是5个交易日前收盘价。“Ref(收盘价,0)”返回上市第一天收盘价, 2007年以前上市的股票返回2007-01-04的收盘价。该函数支持变量天数的计算,例子:“Ref(收盘价,countbars(收盘价>0,9999)-5)”返回股票上市后第5天的收盘价。
BarRef(指标, 天数) , 取得指标几根日K线前的值. 和Ref()功能类似, 很多情况返回同样的值. 区别是Ref()包括停牌日, BarRef()跳过停牌日, 只数几根K线。 比如“barRef(收盘价,5)” 就是5根K线前的收盘价。该函数支持变量天数的计算,例子:“BarRef(收盘价,countbars(收盘价>0,9999)-5)”返回股票上市后第5根K线的收盘价。
Delta(指标,天数), 指标当天的值和N天前的值的差值。 等于指标-Ref(指标, 天数)。 例子:“Delta(收盘价,5)” 就是当天收盘价与5个交易日(包括停牌日)前收盘价的差值。
EMA(指标,天数) 计算指标在过去几个交易日(不包含停牌日)的指数平均值; 比如 “EMA(收盘价,5)”就是过去5日指数平均收盘价。该函数的天数参数必须是常数,不可以是变量。
SMA(指标,天数,权重) 计算指标在过去几个交易日(不包含停牌日)的平滑移动平均值。EMA(指标,天数)相当于SMA(指标,天数,2); 比如 “SMA(收盘价,5, 1.5)”就是以1.5为权重的过去5日平滑移动平均收盘价。该函数的天数参数必须是常数,不可以是变量。
WMA(指标,权重指标, 天数) 计算指标在过去几个交易日(不包含停牌日)的加权平均值; 天数为0时,从数据起始日开始计算加权移动平均。 比如 “WMA(收盘价,当日成交量, 5)”就是过去5日成交量加权平均收盘价, 它比过去5日简单均线更能反映股票的成本线。“WMA(收盘价,当日成交量, 0)”从上市第一天算起的加权平均收盘价 (2007年以前上市的股票从2007-01-04算起的加权平均收盘价)。该函数支持变量天数的计算,例子:“WMA(收盘价,当日成交量,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的成交量加权平均收盘价。
Med(指标,天数)计算指标在过去几个交易日(不包含停牌日)的中值;比如“Med(市净率,30)”返回过去30个交易日的市净率中值。该函数的天数参数必须是常数,不可以是变量。
Sum(指标, 天数) 计算指标在过去几个交易日(不包含停牌日)的聚合值;天数为0时,从数据起始日开始计算聚合值。例子: “Sum(当日成交量,10)”就是过去10日总成交量。该函数支持变量天数的计算,例子:“Sum(当日成交量,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的成交量之和。
Product(指标,天数),计算指标在过去几个交易日(不包含停牌日)的累乘值;天数为0时,从数据起始日开始计算累乘值。例子: “Product(1+1日涨幅,10)-1”就是过去10日涨幅;“Product(1+1日涨幅,0)-1”从上市第一天算起的总涨幅(2007年以前上市的股票从2007-01-04算起的总涨幅)。该函数不支持变量天数的计算
Max(指标,天数) 计算指标在过去几个交易日(不包含停牌日)的最大值; 天数为0时,从数据起始日开始计算。最大值。“Max(收盘价, 10)”就是过去10日最高收盘价。该函数支持变量天数的计算,例子:“Max(收盘价,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的最高收盘价。
Min(指标, 天数) 计算指标过去几个交易日(不包含停牌日)的最小值; 天数为0时,从数据起始日开始计算最小值。“Min(收盘价, 10)”就是过去10日最低收盘价;“Min(收盘价, 0)”上市以来最低收盘价(2007年以前上市的股票从2007-01-04算起的最低收盘价)。该函数支持变量天数的计算,例子:“Min(收盘价,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的最低收盘价。
Stdev(指标,天数)* 计算过去几个交易日(不包含停牌日)的标准方差;
天数为0时,整个数据历史上的标准方差。 比如股价在过去20日涨幅波动率 = ” Stdev(1日涨幅, 20)”; 全部历史的涨幅波动率 = ” Stdev(1日涨幅, 0)”。该函数支持变量天数的计算,例子:“Stdev(1日涨幅,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的1日涨幅波动率。
Var(指标, 天数)* 计算指标在过去N个交易日(不包含停牌日)的方差; 天数为0时,整个数据历史上的方差。例子:var(收盘价,250)返回收盘价在过去250天的方差;var(收盘价,0)返回收盘价在过去全部历史的方差。该函数支持变量天数的计算,例子:“Var(1日涨幅,barslast(Crossover(5日复权均价, 20日复权均价)))”返回股票自上次均线金叉以来的1日涨幅方差。
Percentile(指标,百分点, N天数) , 计算在过去N个交易日排名百分点对应的值,指标数值从大到小排序。
percentile(收盘价, 0.95, 21)过去21天里的第二高收盘价 (95%分位点的价格) 。
percentile(收盘价, 0.12, 10)过去10天里的第二低的收盘价(12%分位点的价格)。
PercentRank(指标, N天数) , 计算当天指标数值在过去N个交易日中的排名百分位,指标数值从大到小排序。 如果返回0,表示当天指标数值最小, 返回1,表示当天指标数值最大, 返回0.5 表示当天数值刚好在时间序列中间。 计算规则类似于Excel : PercentRank(2, [1,2,5,4]) = 0.33 。 例子: “19-PercentRank(收盘价,20)*19” ,计算过去20天收盘价大于今天收盘价的天数。
四、时序回归函数(纵向回归函数)。最小二乘法线性回归函数。以下函数是对每一只股票的指标在连续的一段日期里进行聚合运算:
Forcast(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的线性回归预测值; 天数为0时,计算指标在整个数据历史上的线性回归预测值。
例子: Forcast(收盘价,20)用当天和过去19天一共20天的收盘价作线性回归,返回收盘价的预测值;Forcast(收盘价,0)用过去全部历史收盘价作线性回归,返回收盘价的预测值。 该函数的天数参数必须是常数,不可以是变量。
Slope(指标,天数), 计算指标在过去N个交易日(不包含停牌日)的线性回归斜率; 天数为0时,计算指标在整个数据历史上的线性回归斜率。例子: Slope(收盘价, 20) 用当天和过去19天一共20天的收盘价作线性回归, 返回过去20日的收盘价线性斜率; Slope(收盘价, 0) 返回过去全部历史的收盘价线性回归斜率 。该函数的天数参数必须是常数,不可以是变量。
Neutralize(指标Y,指标X,天数), 返回指标Y剔除指标X因素后的值。根据过去N个交易日(不包含停牌日)指标Y和指标X的线性回归模型, 将指标X的成分从指标Y中剔除, 中性化指标Y。天数为0时,根据过去整个数据历史的线性回归模型,清洗指标Y。
例子: Neutralize(当日成交额,总市值,20) 根据过去20日的线性回归模型,清洗当日成交额指标,返回剔出总市值成分后的当日成交额;
Neutralize(当日成交额,总市值,0)根据过去全部历史的线性回归模型,清洗当日成交额指标,返回剔出总市值成分后的当日成交额。该函数的天数参数必须是常数,不可以是变量。
SlopeXY(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归斜率; 天数为0时,返回过去整个数据历史上的线性回归斜率。例子: Slopexy(当日成交额,总市值,20)返回过去20日成交额与总市值的线性回归斜率 ; Slopexy(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的线性回归斜率 ”。该函数的天数参数必须是常数,不可以是变量。
InterceptXY(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的Y轴截距; 天数为0时,返回过去整个数据历史上的线性回归Y轴截距。例子: InterceptXY(当日成交额,总市值,20) 过去20日成交额与总市值的线性回归Y轴截距; InterceptXY(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的线性回归Y轴截距。 该函数的天数参数必须是常数,不可以是变量。
SSresid(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的残差平方和。该函数的天数参数必须是常数,不可以是变量。
RSquare(指标Y,指标X,天数), 返回指标Y和指标X过去N个交易日(不包含停牌日)的线性回归的R平方; 天数为0时,计算指标在过去整个数据历史上的线性回归的R平方。 例子: RSquare(当日成交额,总市值,0) 返回过去全部历史成交额与总市值的的线性回归的R平方。该函数的天数参数必须是常数,不可以是变量。
hNeutralize2(指标Y,指标X1,指标X2,指标X3,指标X4,范围)
多因子回归函数求残差函数, 最多支持4个X指标。 用法和hNeutralize()类似, 只是可以支持最多4个X指标。 比如 “hNeutralize2(当日成交额, 总市值, 20日涨幅,0 ) ” 对全部A股的股票作线性回归, 返回排除总市值和20日涨幅影响的当日成交额残差值。
hNeutralizeMI(指标), 返回市值和行业中性化的指标。 比如hNeutralizeMI(EP)返回 EP的市值和行业中性化后的值 。
hScale(指标,范围) , 将指标的值标准化,使所有股票指标的绝对值的和为1。 例子:“HScale(EP, 0)“ 返回在全部A股里标准化后的EP值。范围可以是0,1,2; 含义同上。
hDemean(指标,范围), 返回指标减去范围内全部股票的指标在当天的平均值,等同于 “指标 -HAvg(指标, 范围)” 。 围可以是0,1,2; 含义同上。 例子:“HDemean(BP, 1)“返回BP减去股票同一级行业内的股票平均BP。
hDemedian(指标,范围), 返回指标减去范围内全部股票的指标在当天的中值,等同于 “指标 -HPercentile(指标, 0.5, 范围)” 。 围可以是0,1,2; 含义同上。 例子:“HDemedian(BP, 1)“返回BP减去股票同一级行业内的股票BP中值。
SPercentile(指标,分位数, 股票池, 范围)
范围等于0(默认值)时, 返回股票池内指标的当天分位值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天分位值。例子:“SPercentile(收盘价,0.9, 低价股, 0)” 返回股票池“低价股”中的股票在当天的收盘价的90%分位值, 也就是收盘价最高10%的值。
SWinsorize(指标,上限分位,下限分位, 股票池, 范围)
在股票池内使用简单分位数去极值。范围等于0(默认值)时, 返回股票池内指标的当天去极值化的值, 范围等于1或2时, 返回股票池一级行业或二级行业内的股票指标的当天去极值化的值。例子:“SWinsorize(收盘价, 0.01, 0.05, 低价股, 0)“在股票池”低价股”中, 将收盘价最高的1%的股票的收盘价设为99%分位的收盘价,将收盘价最低的5%的股票的收盘价设为5%分位的收盘价。
SStandarize(指标,股票池,范围)
范围等于0(默认值)时, 返回股票池内指标的标准化值。范围等于1或2时, 返回股票池一级行业或二级行业内的指标的标准化值。例子:“SStandarize(市盈率,低价股, 0)“ 返回股票池“低价股”中的市盈率的标准化值。 对于熟悉统计学的用户, 标准化值就是Z分数。
SNeutralize(指标Y, 指标X, 股票池,范围)
范围等于0(默认值)时, 返回股票池内的指标Y剔除指标X因素后的值。范围等于1或2时, 返回股票池一级行业或二级行业内的指标Y剔除指标X因素后的值。根据指标Y和指标X的线性回归模型, 将指标X的成分从指标Y中剔除,指标Y相对指标X中性化。 比如 “SNeutralize(当日成交额, 总市值, 低价股,1 )” , 对股票池“低价股”同一行业内的股票作线性回归, 返回市值中性的当日成交额。
SNeutralize2(指标Y,指标X1,指标X2,指标X3,指标X4,股票池,范围)
多因子回归函数求残差函数, 最多支持4个X指标。 用法和SNeutralize()类似, 只是可以支持最多4个X指标。 比如 “SNeutralize(当日成交额, 总市值, 20日涨幅,低价股,0 ) ” 对股票池“低价股”内的股票作线性回归, 返回排除总市值和20日涨幅影响的当日成交额残差值。
Svalue(起始日期,股票池) 返回股票池从起始日期开始计算的净值, 起始日期和起始日期之前的净值设置为1。净值计算假设股票池中的股票等权重。
例子: Svalue(2010/01/04,低价股),
返回股票池“低价股”以2010/01/04为起始日的净值。
SScale(指标,股票池,范围)
将指标的值标准化,使股票池内所有股票指标的绝对值的和为1。 例子:“SScale(EP,中证800, 0)“ 返回在中证800股票池里标准化后的EP值。范围可以是0,1,2; 含义同上。
SBelong(股票池), 判定当前股票是否属于股票池, 如果当前股票属于股票池返回1, 否则返回0。 例子: sbelong(次新股票 ), 如果股票属于“次新股票”池, 返回1, 否则返回0。
Square(指标) 计算指标的平方。例子: “Square(收盘价)“ 得到收盘价的平方。
过去10天里涨停的天数 = “CountDays(当日涨停标记
= 1, 10)”
过去30天里停牌的天数 = “CountDays(当日成交量 = 0,30)”
过去30天里出现金叉的天数 = “CountDays(Crossover(5日复权均价, 20日复权均价), 30)”
该函数支持变量天数的计算,例子:
上次发生金叉后股价上涨天数 = “CountDays(1日涨幅>0, barslast(Crossover(5日复权均价, 20日复权均价)))”
CountBars(条件,天数N),统计在过去N个交易日里(不包含股票停牌日),
条件值为真 的天数。例子:
过去10天里涨停的天数 = “CountBars(当日涨停标记
= 1, 10)”。
该函数支持变量天数的计算,例子:
上次发生金叉后股价上涨天数 = “CountBars(1日涨幅>0,
barslast(Crossover(5日复权均价, 20日复权均价)))”
CountBars与CountDays区别是CountDays()包括停牌日, CountBars()跳过停牌日, 只数几根K线。
BarsLast(条件),统计条件为真最后一天到现在的交易日数量(不包股票含停牌日)。 例子:
连续涨停的天数 = “BarsLast (当日涨停标记 = 0)” , 也就是距离上次没有涨停的天数。
BarsLast()与DaysLast区别是DaysLast()包括停牌日, BarsLast()跳过停牌日, 只数几根K线。
IfNULL(指标1, 指标2) , 如果指标1为空值, 返回指标2, 否则返回指标1。 指标2可以是常数或表达式。 例子:"ifNULL(市盈率,0)" , 如果股票的市盈率是空值, 返回0, 否则返回市盈率。
Null(), 返回NULL值。 用于构造返回NULL值的表达式。 比如 PEG = if(or(EP< 0,新预期盈利增长 < 0), null(), 1/EP/新预期盈利增长) , 如果EP小于0或者预期盈利增长为负数, 返回空值, 否则返回计算的值。
一级行业ID | 一级行业 | 二级行业ID | 二级行业 |
0 | 交通运输 | 1 | 高速公路 |
2 | 公交 | ||
3 | 航空运输 | ||
4 | 港口 | ||
5 | 物流 | ||
6 | 机场 | ||
7 | 航运 | ||
8 | 铁路运输 | ||
1 | 休闲服务 | 101 | 餐饮 |
102 | 酒店 | ||
103 | 旅游综合 | ||
104 | 景点 | ||
105 | 其他休闲服务 | ||
2 | 传媒 | 201 | 营销传播 |
202 | 互联网传媒 | ||
203 | 文化传媒 | ||
3 | 公用事业 | 301 | 环保工程及服务 |
302 | 燃气 | ||
303 | 水务 | ||
304 | 电力 | ||
4 | 农林牧渔 | 401 | 种植业 |
402 | 动物保健 | ||
403 | 饲料 | ||
404 | 农产品加工 | ||
405 | 农业综合 | ||
406 | 渔业 | ||
407 | 林业 | ||
408 | 畜禽养殖 | ||
5 | 化工 | 501 | 化学原料 |
502 | 橡胶 | ||
503 | 化学制品 | ||
504 | 石油化工 | ||
505 | 塑料 | ||
506 | 化学纤维 | ||
6 | 医药生物 | 601 | 生物制品 |
602 | 医疗器械 | ||
603 | 医疗服务 | ||
604 | 中药 | ||
605 | 医药商业 | ||
606 | 化学制药 | ||
7 | 商业贸易 | 701 | 专业零售 |
702 | 贸易 | ||
703 | 一般零售 | ||
704 | 商业物业经营 | ||
8 | 国防军工 | 801 | 船舶制造 |
802 | 航天装备 | ||
803 | 地面兵装 | ||
804 | 航空装备 | ||
9 | 家用电器 | 901 | 白色家电 |
902 | 视听器材 | ||
10 | 建筑材料 | 1001 | 其他建材 |
1002 | 水泥制造 | ||
1003 | 玻璃制造 | ||
1004 | 房屋建设 | ||
11 | 建筑装饰 | 1101 | 专业工程 |
1102 | 装修装饰 | ||
1103 | 园林工程 | ||
1104 | 基础建设 | ||
12 | 房地产 | 1201 | 园区开发 |
1202 | 房地产开发 | ||
13 | 有色金属 | 1301 | 金属非金属新材 |
1302 | 工业金属 | ||
1303 | 稀有金属 | ||
1304 | 黄金 | ||
14 | 机械设备 | 1401 | 金属制品 |
1402 | 运输设备 | ||
1403 | 专用设备 | ||
1404 | 仪器仪表 | ||
1405 | 通用机械 | ||
15 | 汽车 | 1501 | 汽车零部件 |
1502 | 汽车整车 | ||
1503 | 其他交运设备 | ||
1504 | 汽车服务 | ||
16 | 电子 | 1601 | 其他电子 |
1602 | 元件 | ||
1603 | 光学光电子 | ||
1604 | 半导体 | ||
1605 | 电子制造 | ||
17 | 电气设备 | 1701 | 电气自动化设备 |
1702 | 电源设备 | ||
1703 | 高低压设备 | ||
1704 | 电机 | ||
18 | 纺织服装 | 1801 | 纺织制造 |
1802 | 服装家纺 | ||
19 | 综合 | 1901 | 综合 |
20 | 计算机 | 2001 | 计算机应用 |
2002 | 计算机设备 | ||
21 | 轻工制造 | 2101 | 其他轻工制造 |
2102 | 家用轻工 | ||
2103 | 造纸 | ||
2104 | 包装印刷 | ||
22 | 通信 | 2201 | 通信运营 |
2202 | 通信设备 | ||
23 | 采掘 | 2301 | 石油开采 |
2302 | 其他采掘 | ||
2303 | 采掘服务 | ||
2304 | 煤炭开采 | ||
24 | 钢铁 | 2401 | 钢铁 |
25 | 银行 | 2501 | 银行 |
26 | 非银金融 | 2601 | 多元金融 |
2602 | 保险 | ||
2603 | 证券 | ||
27 | 食品饮料 | 2701 | 饮料制造 |
2702 | 食品加工 |
DayW(顺序标记), 返回今天是周内第几交易日, 如果顺序标记 = 0, 返回周内正数第几个交易日, 如果顺序标记 = 1, 返回周内倒数第几个交易日 。比如今天是2017/04/06, DayW(0)返回 2, 表示今天是周内第2个交易日, DayW(1)返回2, 表示今天是周内倒数第2个交易日。
DayM(顺序标记), 返回今天是月内第几交易日, 如果顺序标记 = 0, 返回月内正数第几个交易日, 如果顺序标记 = 1, 返回月内倒数第几个交易日 。比如今天是2017/04/06, DayM(0)返回 2,表示今天是月内第2个交易日, DayM(1)返回 17, 表示今天是月内倒数第17个交易日。
DayY(顺序标记), 返回今天是年内第几交易日, 如果顺序标记 = 0, 返回年内正数第几个交易日, 如果顺序标记 = 1, 返回年内倒数第几个交易日 。比如今天是2017/04/06, DayY(0)返回 61,表示今天是年内第61个交易日, DayY(1)返回184, 表示今天是年内倒数第184个交易日。
Level(15min, 当日成交量)返回当天14:45到15:00的成交量。
Level(15min, ref(当日成交量,1) )返回当天14:30到14:45的成交量。
Level(15min, ref(当日成交量,16) )返回当天集合竞价的成交量。
Level(15min, ma(当日成交量,4) )返回从14:00到15:00四个15分钟线的平均成交量。
Level(15min, sum(当日成交量,2) )返回收盘前半小时的成交量。
Level(15min,sum(if(barofday()>8,当日成交量,0),85)) 返回最近5天下午成交量总和。
如果策略为实时策略, 计算以当日交易时刻为基准。比如策略是10:00交易的实时策略, Level(15min, 当日成交量)返回当天9:45到10:00的成交量, Level(15min, ref(当日成交量,1) )返回当天9:30到9:45的成交量。
Level里面能支持函数有 : 时序函数包括 Ref(), MA(), EMA(), SMA() , WMA(), Med(), Sum(), Max(), Min(), Stdev(), Var()。 横向统计函数包括 HMax(), HMin(), HAvg( ) , HWAvg( ),HMed() , HSum() , HStdev() 。
AccuQ(季报指标, 前移年数 = 0)返回季报指标的年内季度累计数据, 前移年数 = 0时, 返回最近季度年内累计数据。例子:假设现在最新的季报是2016Q3, AccuQ(营业收入,0)就是2016年1-9月的累计营业收入,而AccuQ(营业收入,1)就是2015年1-9月的累计营业收入。
持仓股票变量:
后复权买入价: $beginPrice
持有天数 :$Days
买入后涨幅: $change。 买入时点的价格到选股时点的价格的变化。
买入后最高点跌幅: $withdraw 。 买入后从最高收盘价到选股时点的价格的跌幅。 比如跌幅是10%, $withdraw 是0.1 .
买入时排名: $beginRank
买入时排名分: $beginScore
最新排名:$rank
最新排名分: $score
持仓统计函数:
$max(指标,股票池代码)
$min(指标, 股票池代码)
$sum(指标, 股票池代码)
$avg(指标, 股票池代码)
股票池代码可以是: 1 代表持仓股票池, 2 代表经过筛选条件的股票池, 3 代表经过筛选条件而且不在持仓股票池中的股票, 即候选买入股票池。 默认值是1。
$max(指标) ,返回持仓股票里的指标最大值。 比如$Max(市盈率) 返回现有持仓股票的最高市盈率。
$min(指标),返回持仓股票里的指标最小值。 比如$Min(市盈率) 返回现有持仓股票的最小市盈率。
$sum(指标), 返回持仓股票里的指标之和。比如$Sum(成交额) 返回现有持仓股票在选股日的成交额之和。
$avg(指标), 返回持仓股票里的指标平均值。比如 $avg(市盈率) 返回现有持仓股票的平均市盈率。
使用例子:
卖出排名下跌10名以上的股票 , 可定义卖出条件$rank- $beginRank >= 10
卖出在持仓股票中排名下降最多的股票,可定义卖出条件 $rank-$beginRank = $max($rank-$beginRank)
如果买入后跌幅超过2个ATR,止损卖出, 可定义卖出条件 后复权收盘价 - $beginPrice < 0 -2 * ATR(14)
候选买入股票统计函数 (候选股票是经过筛选而且不在仓内的股票)
$max(指标, 3) ,返回候选股票里的指标最大值。 比如$Max(市盈率,3) 返回候选股票的最高市盈率。
$min(指标, 3),返回候选股票里的指标最小值。 比如$Min(市盈率,3) 返回候选股票的最小市盈率。
$sum(指标, 3), 返回候选股票里的指标之和。比如$Sum(成交额, 3) 返回候选股票在选股日的成交额之和。
$avg(指标, 3), 返回候选股票里的指标平均值。比如 $avg(市盈率,3) 返回候选股票的平均市盈率。
函数中的“3”是候选股票池的代码。
使用例子:
卖出比候选股票排名靠后10名以上的持仓股票,卖出条件: $rank>=$min($rank,3)+10
卖出市盈率超过候选股票1.1倍的持仓股票, 卖出条件: 市盈率>=$min(市盈率,3)*1.1。
二十、K线聚合函数
将日线级别指标调整到周线或月线级别。目前有效的高K线级别有:y-年线, m-月线, w-周线。
KFirst(指标, 高K线级别), 返回高K线的第一个值。 KFirst(开盘价, m), 返回月线开盘价。
KLast(指标, 高K线级别), 返回高K线的最后一个值。 KLast(收盘价, m), 返回月线收盘价。
KMax(指标, 高K线级别), 返回高K线的最高值。 KMax(最高价, m), 返回月线最高价。
KMin(指标, 高K线级别), 返回高K线的最低值。 KMin(最低价, m), 返回月线最低价。
KSum(指标, 高K线级别), 返回高K线的和值。 KSum(成交量, m), 返回月线总成交量。
以下两图展示自定义指标管理器的使用方法。
图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有类似的结果.
图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个交易日,过了这个时期,无论排名再高,也要卖出。 止赢止损也分别可以设置条件。
图2 模型II的参数设置。
图2显示了比图1 更复杂的模型II交易策略。所有的买入限制和卖出条件都被设置,调仓周期缩短为一天。 通过这些交易条件的设置, 我们可以看到模型II可以实现较为复杂的交易策略。
回测效果对比
将同样选股策略做过去4年回测, 图1模型I和图2模型II得到的结果在图3和图4中展示。
图3 模型I的回测结果
图4 模型2的回测结果。
我们可以看到模型II交易策略可以减小最大回测率,增加夏普比率。注意在这里作者只是为了讲解目的,并没有对模型II交易策略作任何调优。模型II有可能得到比模型I更好的结果。
牛熊转换的仓位控制
牛转熊时, 比如熊市仓位是30%, 在模型I里, 尽量将总仓位压到30%, 如果有的股票停牌无法减仓,其它股票的仓位会减小更多; 在模型II里, 30%一方面代表总仓位的30%, 另一方面是指个股理想仓位的30%, 比如牛市里个股理想仓位是20%, 则在熊市里个股理想仓位为6%, 每只股票的仓位都会尽量向理想仓位靠, 从而达到减仓至30%的目的。 特殊情况是碰到停牌或涨跌停导致股票无法减仓, 此时会继续以理想仓位(6%)持有不符合卖出条件的个股; 而对于达到卖出条件的个股, 将其卖出后如果仓位大于熊市仓位即30%, 则不会买入新的股票。 如果卖出后小于熊市仓位, 则会根据排名条件依次以理想仓位(6%)买入新的股票, 直到达到熊市仓位。
熊转牛时, 模型I会将总仓位升到100%, 满仓平权买入股票; 模型II会将个股理想仓位复原, 仓内的股票和新买入的股票仓位都会尽量向理想仓位靠拢。
排名分析是否受到交易模型的影响?
交易设置只影响策略回测的结果, 对每日选股和排名分析都没有影响。 排名分析使用类似于模型I的交易模型, 但不会考虑停牌涨跌停的影响。它只受到选股设置的影响, 完全忽略市场择时设置和交易设置。
使用股指对冲设置, 可以回测策略对冲股指期货以后的收益情况。
股指对冲设置
在策略回测设置中, 点击股指对冲标签页, 可以看到如下设置:
选择对冲股指。目前市面上有上证50,沪深300,中证500三种股指期货。
“保证金比例”(deposit-ratio)指的是做空股指期货需要提供的保证金占股指期货金额的比例。现在(2017年2月以后), 上证50和沪深300的保证金比例是20%, 中证500的保证金比例是30%。
“月贴水率”(discount-ratio)指的是以月(20个交易日)为单位,股指期货的贴水率。月贴水率为1%时,表示一个月后到期的股指期货的价格比股指现价低1%,如果今天卖出1个月后到期的股指期货,到时假设股指一直没变化,会遭受1%的损失。
“对冲比例”(hedge-ratio)指的是卖出的期货金额相对策略金额比例。例如,对冲比例=100%,股票策略购买了200万元股票,则对冲会卖出金额为200万的股指期货。对冲比例可以参考策略的Beta值来设置,比如策略Beta为1 ,对冲比例可以设置为100%; Beta为0.5时, 对冲比例设置为50%。
“对冲比例校正周期” 指的是每隔多少个交易日,将策略仓位与股指期货保证金仓位重平衡,以回到设定的对冲比例。由于策略净值每天变化,实际的对冲比例可能偏离设置值,需要定期对资金分配做出调整,以回到策略设定的对冲比例。
由于受到政策影响,历史上保证金比例和贴水率变化很大,且不可重复,使用历史期货数据作回测对未来的指导意义较小。果仁对冲计算让用户自己根据未来的预期设置保证金比例和月贴水率,这样算出来的对冲收益对未来指导意义更大。
注意:对冲比例以及对冲收益计算不考虑手数约束。
仓位分配算法
每个资金调整周期开始时,果仁将总仓位按对冲比例分配成两个部分,一部分是策略仓位,另一部分是股指期货保证金仓位。以下为关系式:
总仓位 = 策略仓位 + 股指期货保证金仓位
= 策略仓位 + 股指期货仓位 * 保证金比例
= 策略仓位 + 策略仓位 * 对冲比例 * 保证金比例
= 策略仓位 (1 + 对冲比例 * 保证金比例)
将上式中的(1 + 对冲比例 * 保证金比例)移到等号左边, 得到下式:
策略仓位 = 总仓位 / (1 + 对冲比例 * 保证金比例)
总仓位是100%, 表达式可以简化成 策略仓位 = 1 / (1 + 对冲比例 * 保证金比例)
如果对冲比例为100%, 则表达式可进一步简化成: 策略仓位 = 1 /(1+保证金比例)
例子“ 对冲比例100%, 保证金比例30%, 则策略仓位 = 1/1.3 =76.9%, 期货保证金仓位 =1 - 策略仓位 = 23.1% 。
注意: 策略仓位是股票策略的整体仓位, 策略内部如果有空仓的闲置资金, 都算入策略仓位。
收益计算
果仁每天根据前一天的策略资金以及股指期货资金计算当天的收益。 对冲后日收益的组成部分有:策略本身的日收益,做空股指期货的日收益(包含股指期货的日贴水损失), 如下式:
T日对冲后收益 = T-1日策略资金 * 策略T日涨幅 - T-1日股指期货资金 * (股指T日涨幅 + 日贴水率)
其中:日贴水率 = 月贴水率/20 。
再分别算出:
T日总资金 = T-1日总资金 + T日对冲后收益
T日策略资金 = T-1日策略资金 * (1 + 策略T日涨幅)
T日股指期货资金 = T-1日股指期货资金 * (1 + 股指T日涨幅 - 日贴水率)
其中T日策略资金和T日股指期货资金为T+1日对冲后收益计算输入。
这样重复计算可以得到每日总资金额, 然后将其换算成对冲后收益净值曲线。
例子,对冲比例= 100%, 策略T日涨幅 = 2%, 股指T日涨幅 = 1%, 日贴水率 = 2%/20 = 0.1%,保证金比例 = 30%
假设T-1日的总资金为100万,并刚好进行了资金重平衡,那么按照上一节的算式,T-1日策略资金为76.9万,T-1日保证金为23.1万,T-1日股指期货资金为76.9万。(这里的计算不考虑手的约束。)
T日对冲后日收益 = 76.9 * 2% - 76.9 * (1% + 0.1%) = 0.692万
T日总资金 = 100 + 0.692 = 100.692万
T日策略资金 = 76.9 * (1 + 2%)= 78.438万
T日股指期货资金 = 76.9 * (1 + 1% - 0.1%)=77.592万
这样依此类推,可以计算出每个非资金调整日的总资金变化,当碰到资金调整日时则按上一节公式重新分配策略资金及股指期货资金。
果仁有两个交易模型, 模型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只股票。下图显示这个动态股票池的定义。
2 基于这个股票池创建一个市值最小的5只股票策略。如下图设置
3 最近4年的回测结果如下:
股民选股有不少办法,听朋友推荐,看新闻热点,跟随大神,使用几个常用的技术指标。但是这些选股方法都缺乏科学的评估方法。比如一个股票在过去一个月涨势喜人,在未来一定的时间段上涨的机率到底是多大?回答这种问题,光凭直觉和信心是不够的,因为直觉和信心可以随着市场波动瞬间消失;光凭书本上的死规则也是不够的,因为在股市上没有一成不变的赚钱规则。
专业投资者和一般股民最大的差别是专业投资者有能力将选股策略放回到真实的历史数据中回测,做出客观的评估。
专业投资者的投资流程大致分为3步:
发现和制定选股策略。
使用历史数据评估策略是否有效,结果不满意就回到第一步,结果满意就到第三步。
按照策略购买股票和定期调仓。
在果仁网上,股民可以使用鼠标点击在几秒之内创建选股策略,并在真实的历史数据中评估策略的有效性。有了这个能力,业余人士和专业人士的差距就大大缩小了。
果仁网的选股策略和回测流程是基于以下投资理念而设计的:
使用多类指标选股比只使用一类指标选股更安全。无论是短期技术流还是长期价值流,都应使用多类指标选股。比如,技术投资者除了使用市场技术类指标外,还应该使用基本面指标,选出基本面支撑更强的强势股;价值投资者除了使用基本面指标外,还应使用技术类指标选出更被市场所接受的价值股。因为股票市场的价格是由多类投资者所共同决定的,使用多类指标更有可能选出被市场所认可的股票。
投资一个股票组合的风险要小于投资一两只股票的风险。每一只股票都可能出现较大波动,给投资者带来风险,但是多只股票组合在一起,可以分散波动风险,使组合总体风险小于组合中个股的风险。对于个人投资来说,同时购买10到15只股票,便可以大大减低股价波动风险。
用户首先选择几类指标制定选股策略, 然后查看每日选股结果, 如果符合预期,可在历史的日期区间进行回测。下图展示使用流程,非常简单。
历史回测一直是专业投资人的利器,但要做到真实还原历史(point-in-time), 专业分析员需要花费几个星期的编程时间。那么真实还原历史有哪些复杂点?以下举几个例子:
计算股票收益要算入历史上的分股和分红情况。比如一只股票在2015年6月1日的价格是每股10元,6月2日进行了1对2的分股,6月3日的股价是每股5.5元,和6月1日相比,6月3日的股价上涨了10%,而不是下跌了45%。
一个股票的财务指标要使用当时所知道的最新财报来计算,不能使用未来才知道的数据。比如万科的2015年第一季度财报在2015年4月27日公布,那么对于2015年4月27日之前日期,回测程序就不应使用万科2015年一季度财报的数据;比如在真实历史中,在2015年3月31日这一天,万科投资者并不知道2015年第一季的财报的指标。
一只股票的行业随时间不同会产生变化。比如零七股份(000007)在2014年1月份的行业是“有色金属”,在2014年7月份行业变成“休闲服务”。
指数的成分股会随时间变化。比如在2015年5月21日,沪深300指数成分股做出调整,中国北车(601299)和东方明珠(600832)退出指数,中航动控(000738)和乐普医疗(300003)加入指数。
现在退市的股票,在历史回测中需要考虑进去, 因为在真实的历史中,投资者并不知道哪些股票将来会退市, 所以选股时也需要考虑进去。
以上只是真实还原历史的一部分复杂点。即便是专业投资者也需要花费很多资源来解决真实还原历史的问题,对于严肃的业余投资者来说,想在真实的历史数据作回测,到目前为止,基本是不可能的。果仁网为一般用户提供了真实的历史回测平台,为理性评估选股策略是否会赚钱提供了可能。
关注公众号
加入QQ群
更新日期:2017-07-23