2016-09-01

生成实时指令。
果仁每早开市前,根据产生调仓指令。由于无法预测开市后的停牌和涨跌停的情况,调仓指令往往给出较多的备选股票。 但用户对于“请依次按照以下操作顺序调仓。。(备选)。。” 这种指令跟随操作比较费脑筋, 尤其是交易模型I和交易模型II调仓指令还稍有区别,新用户感到不能理解 。所以果仁增加了生成下单指令功能。 用户点击“生成实时指令”,果仁会根据最新的市场行情裁剪冗长的预备调仓指令,生成直接下单指令, 停牌涨停的股票无法买入,就不会出现在下单指令中。 下单指令还会根据用户指定的投资额度(默认10万),计算出具体能买多少股。这样跟随起来,就省力不少。 下图展示。


一键刷新10个策略(VIP功能)
个人主页策略列表中, 用户可以一键刷新10个策略。 一次点击,洗个澡回来, 策略结果自动刷新。告别苦逼地一个一个地刷新策略的生活。




调仓指令可执行比例 (PC端)

在交易统计里, 新增了“调仓指令可执行比例”字段。有些策略看起来收益很高, 但是调仓指令排在前面的股票都是都一些涨停股或停牌股票,较难执行。用户可以“调仓指令可执行比例”来判定策略调仓指令可执行的难易程度。 可执行比例越高越容易执行。





更多的大盘变量,可以作调仓指令。
#bench.open.指数代码 返回某个指数的当日开盘价。比如”#Bench.open.000001“ 是上证指数的当日开盘价, 而”#Bench. open.000300“ 是收盘指数的当日开盘价。
#bench.high.指数代码 返回某个指数的当日最高价。比如”#Bench.high.000001“ 是上证指数的当日最高价, 而”#Bench. high.000300“ 是收盘指数的当日最高价。
#bench.low.指数代码返回某个指数的当日最低价。比如”#Bench.low.000001“ 是上证指数的当日最低价, 而”#Bench. low.000300“ 是收盘指数的当日最低价。




------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-08-18 这次上线的内容比较重要。 

功能1 策略组合回测

用户可以将几个策略组合在一起(高级用户2个, VIP用户5个)进行量化回测。 策略组合的首要目的是减小单个策略带来的风险, 平滑收益曲线。 策略组合的最大回测率和收益波动率应小于任何单个策略。 

要做到这一点, 用户可以选择收益相关度较小的策略组合在一起。 在某些情况下, 策略组合的整体收益率和夏普比率也会高于单个策略。 如果策略组合即不能减小风险,也不能增加收益, 则说明组合构建不当, 用户需要重新构建更有意义的组合。 

策略组合可以同时使用股票策略和ETF.


策略组合可分成两类,一类是再平衡组合 另一类是轮动组合

再平衡组合是最常见的资产配置方法, 组合里每个策略可设定一个仓位相对权重, 在固定的周期(默认是60个交易日)里,根据定好的权重重新平衡策略仓位。 用户不需要设定任何的筛选或排名条件,直接回测就可以了。 定期再平衡的方法是最可靠的减小风险的投资法之一。 希望大家多多尝试, 比如把债券、大盘股、小盘股放在一起,作资产配置,看看结果如何。 

轮动组合使用筛选/排名挑选出未来一段时间最有可能获利的策略。 轮动组合的目的是追求更高的收益、更高的收益风险比。 



 




功能2 股票统计函数(横向统计函数) 横向统计函数是在某一天内对所有股票的某个指标进行统计。方便用户制作行业策略, 使用行业或全市场的整体信息进行选股。 股票统计函数和已有的时序函数(纵向统计函数)结合起来,给予了用户全方位分析数据的能力。

HMax(指标,范围) 范围 = 0时, 返回全部股票指标的最大值, 范围等于1时, 返回股票所在行业里的股票指标的最大值。 比如 "HMax(收盘价, 1) "返回股票所在行业里的股票最高收盘价。

HMin(指标,范围) 范围 = 0时, 返回全部股票指标的最小值, 范围等于1时, 返回股票所在行业里的股票指标的最小值。 比如 "HMin(收盘价, 0) "返回所有股票里的最低收盘价。

HAvg(指标,范围 ) 范围 = 0时, 返回全部股票指标的平均值, 范围等于1时, 返回股票所在行业里的股票指标的平均值。 比如 "HAvg(市净率, 1) "返回股票所在行业里的平均市净率。

HWAvg(指标,权重指标,范围 ) 范围 = 0时, 返回全部股票指标的加权平均值, 范围等于1时, 返回股票所在行业里的股票指标的加权平均值。 比如 "HWAvg(1日涨幅, 总市值, 1)" 返回股票所在行业里的当天按市值加权平均涨幅。

HMed(指标,范围) 范围 = 0时, 返回全部股票指标的中位数, 范围等于1时, 返回股票所在行业里的股票指标的中位数。 比如 "HMed(净资产增长, 1)" 返回股票所在行业里的净资产增长率的中值。

HSum(指标,范围) 范围 = 0时, 返回全部股票指标的和值, 范围等于1, 返回股票所在行业里的股票指标的和值。比如 "HSum(流通市值, 1)" 返回股票所在行业的总流通市值。

HStdev(指标,范围) 范围 = 0时, 返回全部股票指标的标准方差, 范围等于1, 返回股票所在行业里的股票指标的标准方差。 "HStdev(20日涨幅,1)" 返回股票所在行业里的股票20日涨幅的标准方差, 代表了行业内股票近期涨幅的离散度。

HCorr(指标1,指标2,范围) 范围 = 0时, 返回全部股票的两个指标的相关度。范围等于1, 返回股票所在行业里的股票两个指标的相关度。  比如HCorr(20涨幅, 市净率, 0) 就是全部A股的20涨幅和市净率的相关度。

注意 1 当股票指标的值为空时, 这只股票不参与统计。 比如"HAvg(市盈率, 0)" 计算全市场股票平均市盈率, 市盈率为空值的股票不参与统计。 2 股票投资域或筛选条件的设定不影响横向统计函数的结果。


CountStock(条件, 范围) 计数符合条件的股票。范围 = 0, 在全部股中计数, 范围等于1, 在本行业内部计数。

"CountStock(1日涨幅 > 0.05, 0)"  全股票中当日涨幅大于5% 的股票个数

"CountStock(1日涨幅 > 0.05, 1)" 本行业中 当日涨幅大于5% 的股票个数

"CountStock(后复权收盘价>20日复权价, 0) /CountStock(收盘价>0, 0)" 站在20日均线之上的股票占全部股票的比例。


涨停跌停判定函数

Upstop(),如果股票当天涨停返回1 否则返回 0。

Upstop(1),如果股票当天一字板涨停返回1 否则返回 0。

DownStop(),如果股票当天跌停返回1, 否则返回 0。 

DownStop(1),如果股票当天一字板跌停返回1, 否则返回 0。


功能 3 微信服务号界面做了全方位的整合和提升。看下图
              





-----------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-07-27

策略商城正式上架!

1 动态股票池功能增强。 动态股票池增加了自定义指标和调仓周期功能。

2 在股票策略和基金策略的交易设置里增加了空仓资金配置选项, 包括现金、银华日利(货币基金)、富国天丰(债券基金)、国泰国债(债券基金)、华安黄金易(黄金ETF)。 这样策略可以把闲置资金放在ETF上,以增加收益。当策略回测起始日期早于ETF的起始日时,回测将ETF之前的资金按现金处理。 

3 选股指标里增加了后复权开盘价,后复权最高价,后复权最低价三个指标, 以便用户做更加精确的选股模型。

4 修复了基金策略模型II不能保存的Bug。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-07-20

1 用户自定义指数(股票池)择时。 根据用户"阿尔法贝塔"的自定义指数择时的建议,果仁增加了股票池择时的功能。 用户可以将自己定义的股票池(动态股票池或者静态股票池)作为择时指数。 股票池的价格曲线由股票池中的成分股票等权重平均算出。 比如用户可以自定义市值最小的100只股票池作为择时指数。

具体使用方法:在市场择时条件定义弹窗里,在选择指数的左边,勾选股票池选项。股票池一经勾选, 选择指数下拉菜单就会显示股票池以供选择。 

目前股票池择时只支持MA,MACD等技术指标, 不支持PE, PB基本面指标。 动态股票池调仓周期是1天。支持多日调仓的动态股票池会在下次上线推出。 

2 基金策略支持交易模型II。

3 自定义函数增加了加权平均函数 WMA(平均指标,权重指标, N天),例子 WMA(后复权收盘价, 换手率, 20) 算出20日换手率加权均线, 比单纯的20日均线能更准确代表股票20日的成本线。 

4 VIP用户可以导出“历史查询”的数据,便于查询个股或者指数的完整历史。 

5 对“S”股票的涨跌停判断从正负10%更正为正负5%。 

6 修复了模型II调仓指令有时会漏掉新股买入指令的bug(之前用户反馈调仓指令并没有给出买入某只股票,第二天却持有该股的问题)



---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-07-13 


1. 用户信箱功能

在线用户可以实时收到管理员通知。其他用户在论坛对您的帖子或评论回复时,您可以实时收到提示。

实时系统提示还包括有人关注了您, 关注了您的策略或打赏了您。 


2 解决了分级A基金和分级B基金在折算日复权因子和价格错位的问题。 

由于交易所数据的问题, 分级基金在折算日,复权因子和价格错位1到2天, 基金复权价格会出现异常波动, 可能造成策略回测收益出现异常波动,最大回撤率变大。 新版本上线后, 这种问题基本消失。 


3 尽可能延长指数价格日期区间。 比如中证1000在2014/10/17正式公布, 但其价格数据从2005年就开始, 在一般软件根据指数公布日期来决定指数价格数据起始日,所以中证1000在大多软件里从2014/10/17开始。 

果仁延长中证1000价格数据时间到2007.1.4, 使中证1000能更有效地成为收益基准和择时条件之一。 果仁对其它指数数据也做了类似的处理。


4 论坛里加入了精华和活动分类, 这样可以让用户更容易的找到相关的帖子。 


5 在策略结果页面增加了月度收益统计, 方便用户查看历史上每一月的策略收益分布。



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-07-05

1 果仁认证策略商城上线。 果仁第一批认证通过了大约10个策略, 放在策略商城中公示。 具体租用流程还在进一步明确化中。 


2 果仁策略结果页面作了重新排版, 内容和原来大致一样,主要增加了交易统计(和收益统计并列)。 交易统计里面有平均持仓股票数, 持有天数,换手率, 停牌股票比例, 盈率等指标,都和策略交易相关,对策略评估很有帮助。


3 更多的大盘指标,对指数板块,新添了大势强弱指标。 涨停家数比例, 跌停家数比例,上涨家数比例 和 下跌家数比列。 

有几种使用方法:

。 自定义指标里的大变量

  #bench.zt.指数代码,指数成分股的涨停比例,比如“#bench.zt.000001”是上证指数成分股涨停比例。

  #bench.dt.指数代码,指数成分股的跌停比例,比如“#bench.dt.000001“是上证指数成分股跌停比例。

  #bench.up.指数代码,指数成分股的上涨比例,比如“#bench.up.000001”是上证指数成分股上涨比例。

  #bench.down.指数代码,指数成分股的下跌比例,比如“#bench.down.000001”是上证指数成分股下跌比例。


。 在基金策略里,作指数回测时可以使用以上4个指标。

。 在历史查询里,指数加入了以上4个指标的查询。


4 新增自定义函数 power(指标,乘幂指数)。比如power(收盘价, 2) 就是收盘价的平方, power(收盘价, 0.5)就是收盘价的平方根。

5 现在用户在搜索框里可以搜论坛的帖子了!

----------------------------------------------------------------------------------------------------

2016-06-30

1 更多的市场择时指标和指数。 

MA_Bias: 均线择时附加根据乖离率的逃顶和抄底。 设计源于持有封基老师的乖离率择时。

MAVol:成交量均线择时。 感谢fengxiaoxue007的建议。 量在价先, 根据大盘成交量趋势来判定牛熊有可能比只用价格来判定取得更好的效果。 

PE2:调和市盈率择时。  用法类似于PE。

PB2:调和市净率择时。  用法类似于PB。

择时指数加入中证1000和国证2000(持有封基老师的建议)。 值得注意的是这两个指数的时间都不长, 中证1000从2014-10-27 开始有数据, 而国证2000从2014-03-31开始有数据。使用这两个指数择时, 回测起始时间不应早于2014年


2 回测对涨停跌停股票更精确的处理。 

根据过去很多用户反映过的问题, 回测引擎对涨跌停股票作出了更严格的限制:

当调仓价格为开盘价时, 开盘涨停的股票不能买入, 开盘跌停的股票无法卖出。

当调仓价格为收盘价时, 尾盘涨停的股票不能买入, 尾盘跌停的股票无法卖出。


3 VIP 的专有功能

实时策略评分:由于评分计算消耗资源, 果仁原来只对共享策略定期(每隔20天一次)进行评分。现在,VIP用户可以对自己的策略包括私有策略实时评分。VIP用户将自己的策略保存后, 在策略结果页面右上角的评分栏可以对策略实时评分。

更多的选股/排名/择时条件: VIP用户的策略可以使用超过10条筛选/排名/择时条件, 制作更复杂的策略模型。


4 微信登录/注册

用户现在可以直接使用微信扫二维码登录/注册。 如果用户已经绑定果仁微信服务号, 则可以直接使用微信登入自己的账号, 如果没有绑定果仁微信号, 微信登录后会进入一个新的账号。 



2016-06-16

新上线的数据

指数的PE和PB, 果仁为指数计算了两种市盈率和市净率。分别是:

加权市盈率: 指数成分股的总市值 / 指数成分股的总利润TTM。 

调和市盈率: 指数成分股PE倒数的均值的倒数,即 1 / Avg(成份股E/P)。这样算出来的PE近似于指数PE中值,且更加合理。  

加权市净率: 指数成分股的总市值 / 指数成分股的总净值

调和市净率: 指数成分股PB倒数的均值的倒数,即 1 / Avg(成份股B/P)。这样算出来的PB是比较合理的指数PB中值。 


几种指数PE和PB的用法:

1 自定义指标的大盘变量加入了大盘PE和PB。

#bench.PE.指数代码, 返回某个指数的加权市盈率。 比如 "#Bench.PE.000001"是上证指数成分股的加权平均市盈率, 而”#Bench.PE.000300“ 是沪深300成分股的加权平均市盈率。  

#bench.PE2.指数代码,返回某个指数的调和市盈率。 比如 "#Bench.PE2.000001"是上证指数成分股的调和平均市盈率, 而”#Bench.PE2.000300“ 是沪深300成分股的调和平均市盈率。  

#bench.PB.指数代码, 返回某个指数的加权市净率。 比如 "#Bench.PB.000001"是上证指数成分股的加权平均市净率, 而”#Bench.PB.000300“ 是沪深300成分股的加权平均市净率。  

#bench.PB2.指数代码,返回某个指数的调和市净率。 比如 "#Bench.PB2.000001"是上证指数成分股的调和平均市净率, 而”#Bench.PB2.000300“ 是沪深300成分股的调和平均市净率。 

相对沪深300市盈率差值 = “市盈率 - #Bench.PE.000300"

2 在市场择时的PE,PB选项里, 加入了主要指数的PE和PB,默认使用加权市盈率和加权市净率。 我们会随后加入调和市盈率和调和市净率择时。 

3 在基金策略里, 作指数回测, 可以使用指数市盈率和市净率指标。

4 在历史查询里,指数加入了PE和PB查询选项。  


股票策略新增了两个技术选股指标

BBIC: 多空指标,等于BBI除以收盘价,BBIC越小股价越强势,BBIC < 1 为多头行情, BBIC>1 为空头行情。BBI等于(3日均价+6日均价+12日均价+24日均价)/4。计算使用后复权收盘价。

CCI :14日顺势指标,测量股价是否已超出常态分布范围。 +100以上为超买区,—100以下为超卖区,+100到—100之间为震荡区。


数据修正:
修正了fx8520 反映的股票相对涨幅计算不标准 , 阿尔法贝塔反应的新上市股票数据缺失的问题。 对于在论坛里指出我们的数据错误或功能错误的用户, 我们都会予以果仁币奖励表示我们的感谢。


新的窗口统计函数

Stdev(指标,天数)计算过去几天里的标准方差。比如股价在过去20日涨幅波动率 = ” Stdev(1日涨幅, 20)”

Corr(指标1,指标2,天数)计算在过去几天里两个指标的相关性。比如个股上证涨幅20日相关度 =  "corr(1日涨幅, #bench.change.000001, 20)"


可以跳过停牌日的日期移动函数 BarRef(指标, 天数), 和Ref()功能类似, 唯一的区别是Ref()包括停牌日, 而BarRef()跳过停牌日, 只包括K线图里的Bar。



------------------------------------------------------------------------

2016-06-08

VIP和高级会员的收费功能上线, 目前用户通过每日签到基本上可以继续免费使用“高级会员”。 VIP会员可以通过订阅自己的策略得到微信推送调仓指令 股票策略每早7点开始发送调仓指令, 基金策略每早9点半前发生调仓指令。 由于其他用户的策略不能保证一直存在,所以现在不支持订阅其他用户的策略。果仁将在下一阶段推出认证策略池, 便于会员订阅别人的策略。 VIP的私有策略实时评分的功能将在近期推出。 


新增3个基本面因子 :

EV_EBITDA比率, 被认为是比PE更完善的估值因子。 

产权比率, 长期偿债能力的衡量指标。
毛利润增长, 毛利润排除了经营外收益和投资收益,其增长率更能反映企业盈利增长趋势。


数据错误更正:

修正了用户WWWW反映的股息率计算错误问题, 用户clzhang反映的中证500成分股重复的问题, 和用户花螳螂反应的股票名不对问题。

对于能及时指出数据错误和功能错误的用户, 我们都会按照错误的重要程度给予不同数额果仁币奖励


个人主页修改策略次序:

创建策略或收藏策略较多的用户,可以点击策略列表右上端的“调整次序”键来调整策略次序。

反身函数
ticker(), 在股票策略里返回股票自身的股票代码。 ticker()需要和if表达式结合使用, 可以对某只或某几只股票作特殊处理。 例子:
“if(ticker() = ‘000002', 1, 0)” 对于万科A返回1,对于其它股票返回0.
调整乖离率 = “if(ticker() = ‘000002', 后复权收盘价/MA(后复权收盘价,30)- 1, 后复权收盘价/MA(后复权收盘价,40)- 1)”, 对万科使用30日乖离率, 对其它股票使用40日乖离率。
在基金策略中, ticker()返回基金自身的基金代码, 用法和在股票策略中一样。
industry(), 返回股票自身的行业代码,仅在股票策略中有效。行业代码在下表中列出。 industry() 需要和if表达式结合使用, 可以对某个行业的股票或某几个行业的股票做出特殊处理。
例子: 股票估值低= "if(industry() = 25, 市盈率 < 10, 市盈率 < 30)", 如果当前股票属于银行业,市盈率小于10就返回真(1), 如果当前股票不属于银行业,市盈率小于30就返回真(1)。
行业代码列表:
行业代码 行业
0 交通运输
1 休闲服务
2 传媒
3 公用事业
4 农林牧渔
5 化工
6 医药生物
7 商业贸易
8 国防军工
9 家用电器
10 建筑材料
11 建筑装饰
12 房地产
13 有色金属
14 机械设备
15 汽车
16 电子
17 电气设备
18 纺织服装
19 综合
20 计算机
21 轻工制造
22 通信
23 采掘
24 钢铁
25 银行
26 非银金融
27 食品饮料

----------------------------------------------------------------------------------------------------

2016-05-24

策略集市升级
1、界面优化,新页面版本一目了然,清新简洁
2、新增季度实盘排行榜(赚钱策略、稳健策略、大盘策略、基金策略)
3、分类筛选优化,为大家提供更便捷的浏览及查找方式

基金数据
境外ETF数据补全,如华宝油气、国泰商品等境外ETF。A股指数的数据得到了修正, 下线了外国指数(由于交易日期不同,现在无法回测)。 增加B分级基金数据。B基金以知的数据问题是在上折、下折日的价格和净值变化不同步, 在回测结果的最大回撤率会不准确。

----------------------------------------------------------------------------


2016-05-17

1 大盘指标和日期统计函数使得自定义指标的功能提高了一个层次。 

大盘指标变量
#Bench.Close.指数代码 返回某个指数的收盘价。 比如”#Bench.Close.000001“ 是上证指数的收盘价, 而”#Bench.Close.000300“ 是沪深300的收盘价。
#Bench.Change.指数代码 返回某个指数的日涨幅。 比如”#Bench.Change.000001“ 是上证指数的日涨幅, 而”#Bench.Change.399006“ 是创业板的日涨幅。
#Bench.Vol.指数代码 返回某个指数的成交量。比如”#Bench.Vol.000001“ 是上证指数的成交量, 而”#Bench.Vol.399006“ 是创业板的成交量。
#Bench.Amt.指数代码 返回某个指数的成交额。比如”#Bench.Amt.000001“ 是上证指数的成交额, 而”#Bench.Amt.399006“ 是创业板的成交额。
大盘指标变量可以用于个股指标和大盘之间的比较。 几个自定义指标使用大盘指标的例子:
个股相对沪深300涨幅 = ”1日涨幅 - #Bench.Change.000300“
上证指数20天移动平均 = “MA2(#Bench.Close.000001,20)” 注意: 对大盘指数做移动平均,需要使用MA2。
上证指数20天Bias = “#Bench.Close.000001 / MA2(#Bench.Close.000001,20) - 1”

日期统计函数
以下两个函数对于做技术分析非常有用。
CountDays(条件,N), 统计在过去N个交易日里, 条件值为真( > 0) 的天数。 例子:
过去10天里涨停的天数 = “CountDays(1日涨幅 > 0.0995, 10)”
过于30天里停牌的天数 = “CountDays(成交量 = 0,30)”
过于30天里出现金叉的天数 = “CountDays(Crossover(5日复权均价, 20日复权均价), 30)”
DaysLast(条件), 统计上次条件为真(>0)到当天间隔的天数。 例子
连续上涨天数 = “DaysLast (1日涨幅<= 0) ” 就是现在到上次不上涨的那一天的天数。
连续交易的天数= “DaysLast (当日成交量 = 0)” 也就是上一次停牌到现在的天数。
连续涨停的天数 = “DaysLast (1日涨幅 < 0.0995)” 也就是距离上次没有涨停的天数。


逻辑函数

And(条件1, 条件2) 。 两个输入都是非0数值,返回1, 否则返回0。输入条件是关系表达式或者是数值指标。
And(1, 1)返回1, And(0.1, -0.1)返回1, And(1,0) 返回0 , And(1, 空)返回空
例子:
有成交量低价格 = “ And(当日成交量> 0, 收盘价 < 5)” 也可以直接使用指标定义为 “And(当日成交量,收盘价 < 5)”
在筛选条件里, 可以直接使用 “大于 0” 或者 “小于 1”来判定逻辑指标的真假。 比如 “有成交量低价格 大于 0” 可以选出“有成交量低价格”指标为真的所有股票,而“有成交量低价格 小于 1”可以选出“有成交量低价格”指标为假的所有股票。
Or(条件1, 条件2) 。 两个输入有一个非0数值,返回1, 否则返回0。输入条件是关系表达式或者是数值指标。
Or(0, 1)返回1, Or(0.1, -0.1)返回1, Or(0,0) 返回0 , Or(1, 空)返回 1
例子:
有成交量或者低价格 = “ Or(当日成交量> 0, 收盘价 < 5)” 也可以直接使用指标定义为 “Or(当日成交量,收盘价 < 5)”
Not(条件)。输入是一个非0数值,返回1, 否则返回0。输入条件是关系表达式或者是数值指标。
Not(1) = 0 , Not (0) = 1, Not (空) = 空
例子
没有成交量 = “Not(成交量)” 或者 “Not(成交量 > 0)”

2 界面及首页升级
果仁界面优化,新版首页部分功能上线
1、界面优化了头部与底部
2、首页新增收益排行榜(周收益、月收益、季收益)
3、首页新增今日最热股票排行榜(今日大家最关注的股票)
4、首页新增新手入门指导流程图
5、优化注册、登录窗口

3  修复了交易模型II中加仓指令总是先于买入指令被执行的BUG。部分使用模型II的策略的收益曲线及持仓情况会受到影响

---------------------------------------------------------------------------------------------------------------------------------------

2016-05-12

合并函数
Greater(指标1, 指标2) 返回指标1和指标2之间较大的那个值。 等价于“if(指标1 >指标2, 指标1 ,指标2)” 。 比如"Greater(2, 1)" = 2, "Greater(收盘价, 开盘价)“返回收盘价和开盘价较大的那个值。
Less(指标1, 指标2) 返回指标1和指标2之间较小的那个值。 等价于“if(指标1 <指标2, 指标1 ,指标2)” 。 比如”Less(2, 1)“ = 1, ”Less(收盘价, 开盘价)“返回收盘价和开盘价较小的那个值。

数学函数 
Round(指标) 将指标四舍五入取整数。"Round(1.6)" =2, "Round(收盘价)" 将收盘价的值四舍五入取整数。
Mod(指标1, 指标2或者常数) 用指标1整除整除指标2,再取余数。 "Mod(12, 10)" = 2, "Mod(收盘价, 10)"将收盘价整除10再取余数。
Floor(指标) 将指标往下取整数。 比如"Floor(1.6)" = 1, "Floor(收盘价)"将收盘价往下取整。

2016-04-25

后台股票行情数据、行业数据、板块数据做了补全和矫正。 有些策略的收益会受到这个变化的影响,会出现变化。 目前, 我们大约在晚上10点10分完成股票数据更新, 在早上8点半左右完成基金数据的更新。

策略结果页面的策略持股详单和调仓指令的格式做了调整, 更加易读。

在策略保存时,用户可以指定4个共享级别, 共享定义(也就是共享全部定义和结果)、共享调仓(共享全部结果)、共享收益(只共享收益统计和最近卖出的10只股票)和私有。 


2016-04-12

交易模型
新的策略研究界面将策略定义分成三个主要部分:选股、择时、交易。 选股设置包括筛选条件和排名条件,择时设置就是市场择时,交易设置包含交易模型I(果仁原有的定期轮转的交易模型)和交易模型II(果仁新的交易模型, 根据单独的卖出条件来作轮转)。 原来策略回测里的参数大多搬移到交易设置和择时设置里, 剩下的三个参数回测时间段、收益基准、交易费用都是回测设置, 而不是果仁策略定义的核心部分。

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

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

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

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

比如在上图中, 调仓周期为1天, 这样市场择时牛熊转换可以立即执行。理想仓位为25%, 大约可以持有4只股票。 因为仓位偏离比例是30%, 个股仓位范围就是17.5%到32.5%。 理论最大持仓股票数 = 100%/最小合理仓位 = 100%/17.5% = 6。

买入的股票必须排名在前4名(可以在每日选股里看到)才能买入。 比如排名降到20名以外才会被卖出。  


总的来说, 模型II比模型I更接近于真实的股票交易流程。

指数回测
基金策略研究平台上,大约有30多个主要指数被添加进来。 用户可以首先设定基金类型为指数, 用每日选股可以选出所有可以作回测的指数。 指数回测主要的功能是弥补基金历史过短的缺陷。 比如用户可以用沪深300指数和创业板指数作一个指数轮动策略,如果结果满意, 可以使用相应的ETF的执行这个策略。 用户可以使用静态基金池来指定指数。 为了和股票/基金代码做区别, 每一个A股指数代码后面都加一个I(大写的i), 比如上证指数“000001”,在果仁里使用“000001I”表示。境外指数如SP500,由于交易日期与中国交易日期不匹配, 还不能支持准确的回测, 这个问题将在下一个版本里解决。 

黑名单
用户可以首先创建一个静态股票池, 里面列出需要被排除的股票, 然后创建一个股合成池, 排除掉上面的静态池, 最后在策略研究界面里选择这个合成池作为投资范围就可以了。

使用股票合成池排除股票黑名单。


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-03-09

果仁网在2016-03-07下午作了一次升级, 主要的新功能是增加了ETF回测页面, 因为后端数据变化较大, 导致03/07和03/08的数据上载出现不同程度的延迟, 望谅解。 希望今天起系统可以稳定下来。


现在点击创建策略,用户会看到两个选项, 创建股票策略和创建基金策略, 如果选择创建股票策略,就到了原来的股票策略页面;选择创建基金策略, 就到了新上线的ETF回测页面。 基金回测包含ETF, LOF,和A基金数据。分级B基金数据还有些问题, 所以推迟上线。为了叙述方便,这几个类型基金在下面被统称为ETF。 创建基金策略的方式和创建股票策略一样。 一种常用轮转策略创建方法是首先创建一个静态基金池(在“我的主页”里), 用户可以把自己感兴趣的基金代码放到这基金池了,然后基于这个基金池创建在这几个基金之间轮转的策略,比如可以把沪深300ETF,创业板ETF,黄金ETF,A基金放到一个基金池了,买入最近最强的ETF。第二种方法是使用基金池固定选一个基金,比如沪深300基金,利用市场择时,来提高收益。 第三种方法是使用投资域选择某一个类型的基金,然后在这一类型的基金里面做轮转,比如选择3只溢价率较低的A基金买入,定期轮转。 还有更多方法有待大家来挖掘。

需要注意的几个问题, 1. 大多数ETF时间较短,也就是两三年, 回测时间不能无脑设为从2007年1月4日开始, 要根据ETF的实际上市时间来设置回测时长。 2.很多ETF的成交量较小,价格波动也大, 有意义的ETF策略需要选择成交量较大的ETF。 3. 有些ETF在停牌日,价格除权发生较大变化, 净值和价格有错位变化一天或两天的情况, 这时ETF的溢价率和复权收盘价都会出现脉冲,这种情况是由于交易所数据不同步造成的。一般这种情况发生在停牌日,所以在理论上对于最终策略结果不会造成错误的影响。

希望大家多试试ETF回测, 发现问题,及时汇报。

另一个变化是选择ST股票, 默认是“包含ST”, 用户可以选择“排除ST”和“仅选ST”。“仅选ST”是为了让ST股票爱好者专门创建ST策略。 一个重要的变化是ST选项原来是在筛选和排序以后才起效的,现在更正成ST选择在选股条件之前生效。 比如选择收盘价最低的10只股票并排除ST,老版本首先选出10只最低价的股票,然后排除掉其中的ST的股票, 最后的结果可能是8只或9只股票, 新版本的做法是首先排除所有的ST股票, 再选择价格最低的10只股票,最后的结果肯定是10只股票。 由于这个变化, 有些策略的回测结果可能会受到影响。


在”我的主页“里, 用户可以对策略列表按日期,收益等任何一列作排序。 


最后我们推荐大家多使用果仁微信服务号, 看自己的策略调仓或者论坛帖子都很方便。 还没有绑定果仁服务号的用户,可以到“我个主页”里点击“绑定微信”(在用户名的下方)再扫二维码就可以了。注意,果仁首页的微信二维码是微信订阅号, 要升级高级用户或和管理员私信,可以使用这个号。果仁微信服务号和果仁订阅号不一样, 微信服务号主要是提供自动服务,在服务号里私信,有可能不会被管理员看到,需要私信的用户请使用订阅号。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2016-02-03

果仁网在2月3日完成一次系统升级, 这是2016元旦以来最重要的一次软件升级。

在后台, 我们新开发了因子计算引擎, 对全部基本面因子进行了重算和补全,数据的精确性和完整性得到了进一步的提高。 大多数基本面因子,如市盈率、市净率这些因子从2007年1月4日开始就有数据了。用户一直要求的股息率这新版本中也可以使用了。在行情因子里, 我们对RSI和历史贝塔进行了重算并补全至2007年1月4日。行情因子里的20日均线、MACD等这些因子在2007年1月2月还有空洞,这些我们会陆续补全。每日新数据上载完成时间也由凌晨1点提前到当晚11点完成。由于后台数据有变化,有些策略的结果会出现变化, 请知晓。 


另一个重要的新功能是果仁有了“果仁策略”微信服务号 用户可以去“我的主页”,点击“绑定微信”并扫描二维码来绑定服务号


”果仁策略“服务号的一个新微信号,和”果仁网“微信公众订阅号不同,果仁策略服务号可以使手机用户更快速地获取策略的最新调仓信息,策略结果页面在微信服务号里也更加简洁和快速。 已有的果仁网订阅号主要用于发布信息和用户私信反馈管理员。所以两个微信号都是有用的,都要哟。 注意,如果您的微信名里包含一些古怪的字符,比如笑脸一类的,可能不能绑定,如果遇到这种情况,请删掉这些古怪字符。 

用户绑定微信服务号, 可以获得100个果仁币,果仁币将来可以购买高级果仁功能。 现在用户可以用果仁币打赏自己喜欢的策略和帖子, 策略和帖子的主人将获得您打赏的果仁币。

另一种获得果仁币的方法是点击右上角的用户头像,再点击“每日签到”,用户还可以获得5个果仁币。


另外,用户如果在论坛里提出有价值的建议或者汇报Bug都可以获得管理员的打赏。 随着果仁的功能越来越强大, 果仁币也会越来越有价值, 现在就要收集起来!


这是春节前的最后一次更新。 春节期间, 果仁的管理员放假, 如有问题不能及时的回复, 请耐心等几天,我们肯定会逐一答复的。


节日愉快!



-----------------------------------------------------------------------------------------------------------------

2016-01-22

这次升级,用户能看到两个主要变化,
1. 调仓指令里的股票买卖信号更加明确化,操作信号包括买入,持有,卖出,买入(备选), 持有(备选)这5个可能的选项。
2. 用户可以设定备选股票的个数, 默认为5只, 如果不想用备选股票, 可以设为0只,如果想要更多的备选,最大可设为20只。在这之前,如果策略选出的排在前面的股票如果无法买入, 策略会一直找下去,直到找到可以买入的股票为止,哪怕这只股票排在第1000名,这在实际中不好操作。在大多数情况下5只备选股票就足够了。由于这个变化, 有些策略的收益会产生变化。 用户如果想排除无法交易股票, 最好加入 “成交量 > 0” 作为筛选条件, 这样可以排除大多数调仓日无法交易的股票。




在市场择时, 我们修复PB择时不支持 “2.1< PB < 2.6” 这样的参数设定问题, 还有在MA市场择时里,加入“金叉必须短线上行, 死叉必须短线下行”的选择项。 


为了能让果仁因子数据每日更新更加稳定及时,历史数据更加精确, 我们正在努力开发自己的基本面因子计算引擎, 计划春节前上线。同时微信服务号功能也正在开发中, 测试版也计划春节前上。

-------------------------------------------------------------------------------------------------------

2015-01-06日:

修复策略中股票池不能保存的问题。 

--------------------------------------------------------------------------------------------------------

2015-12-30日:
这次上线的主要新功能是股票池功能。一个股票池可被看作一个自定义投资域,可以让用户为策略设定一个更灵活的投资域。 用户可以到我的主页里创建股票池,包括静态股票池和动态股票池。 静态股票池就是一个手工键入的股票代码集合(或者拷贝粘贴一个股票代码表)。使用静态股票池,用户可以实现几只股票之间的轮转策略,比如几个银行股票之间的轮转策略。 动态股票池是根据选股条件和排名条件产生的动态股票集合,股票清单可以每日动态变化。 使用动态股票池,用户可以实现分层量化策略,比如用户可以首先创建一个动态股票池:总市值和股价综合排名最小的100只股票,然后再在这个股票池上面选择市盈率最小的10只股票。动态股票池创建界面和策略创建界面及其相似,只是更简单些,没有策略回测那些设置。

股票池创建以后,一个策略就可以用股票池作为自己的投资域。 在策略创建界面里的“选择范围”的左面选择股票池,就可以使用股票池作为策略的投资域。 股票池是一个刚上线的新功能,还有一些问题,比如策略里的股票池不能保存等,这些问题以后会解决。

另外和投资域相关的变动是用户现在可以多选指数和板块, 比如用户可以设定更加灵活的投资域,比如沪深300里的主板和中小板股票。

对于用户反映的一些策略在2015-07-10日以后,持仓股票少一只的问题我们做了修复。
https://www.guorn.com/forum/post/p.3528.36349976181332%20
-------------------------------------------------------------------------------------------------------

2015-12-25日:

新版本一个主要的功能就是个股最大买入仓位控制的功能,在回测高级设置里, 有“个股仓位不超过 %”的选项, 默认为100%, 也就是策略一直满仓买入股票,即便只选一只股票,也要100%全仓买入,如果用户认为这样操作风险过大,可以根据自己的需要设置为比如10%,也就是一只股票的最大买入仓位是10%。 在持股详单里, 新添了“本期起始仓位”字段,这样用户可以更加清晰地看到这个周期持有的个股仓位,便于演算收益。

这个版本还修复了几个用户反映的Bug, 包括使用中小板PB择时会出错和收益计算不准确这些问题。

--------------------------------------------------------------------------------------------------------

2015-12-19日:

这次主要的变化是回测引擎本身。 用户能看到的最大的变化就是在调仓日不能买卖的股票仓位会维持不变。 在老的版本里,即便是停牌的股票也会参见调仓日重新平衡或熊市可以被卖出, 这个Bug现在修复了, 用户策略的年化收益都可能由于这个修复出现不同程度的下调。 由于停牌股票的存在,策略的定时调仓无法有效执行, 所以策略收益下降也是在预期当中。 个股仓位的控制将在下次上线时推出。

另一个大家关心的问题就是用户帐号安全问题。 在老版本里,为了适应方便, 果仁自动保留用户的登录信息30天,这样不用每次使用都要输入密码。这种方便也操成了安全隐患,比如在公用电脑上如果忘记登出, 帐号就可能被其他人使用。 在新版本里,如果用户使用的私人电脑, 可以选择在30天免登录, 否则系统会在用户不活跃时或关闭浏览器时自动登出。 怀疑自己帐号泄漏的用户,现在可以重置密码。

在市场择时方面, PE/PB择时策略不能保存和不支持小数点的问题得到了修复。 另一个新功能是当有多个市场择时条件时, 用户可以在回测高级设置里, 分别选择熊变牛的条件数,和牛变熊的条件数。 比如策略有两个市场择时条件,可以选择同时满足2个条件才能熊变牛,只要满足1个条件才能牛转熊。

在历史查询里, 用户可以同时查询大盘指标和多个股票指标

在我的主页下方,增添了主贴标签,可以看到个人在论坛里发的主贴最新的状态。

--------------------------------------------------------------------------------------------------------

2015-12-05日:

1. 基本面市场择时。用户可以使用大盘的市盈率(PE)和市净率(PB)的平均值做市场择时, 比如当PE 低于15时转入买入模式,PE>30 时转入卖出模式。 大盘种类有全市场、主板、中小板、创业板。 基本面择时可以和技术面择时结合使用,形成更加丰富择时选择。

2. 个股历史查询。 在顶部工具栏上,出现了一个新的选项 “历史查询”, 用户点入后可以对任一股票的指标历史数据进行查询。 基本面指标数据按照公司财报的实际公布日期计算,比如第一季报的数据往往会在4月末才被使用。 果仁网是首家可以对基本面指标做精准时序(point-in-time)查询的网站。

我们目前正在重构回测引擎, 用户经常反映的回测功能问题,包括个股仓位控制、停牌股票的仓位不变、熊市出现立即卖出等,有希望在下一次上线的时候得到解决。 还有更高阶的回测功能,比如买入卖出条件分开、止损、牛熊转换条件分开等功能都会逐步加入。 还有用户提到的选股条件的分层、自定义投资域、更多的自定义函数等都在近期实现计划内。

数据上载的准时性依然是一个挑战, 经过过去几天的测试,我们将数据上载的时间从每晚11:30 推迟到每天凌晨12:30,以减少数据商的数据延迟造成的问题的次数。对于数据不稳定的问题, 我们接下来也会投入资源来逐步解决。 希望用户们能对数据延迟问题有更多的耐心和谅解。

--------------------------------------------------------------------------------------------------------

2015-11-28日:

在回测设置里, 用户可以将调仓周期天数设置为任何天数, 不必再受1,2,5,10…的限制了。 在收益价格里,新增了日均成交价的选项。对开盘价和收盘价都不放心的用户, 可以选择日均成交价作为回测买卖价格。

在回测结果的收益统计部分,首先增加的策略每个周期的收益分布图, 一个是绝对收益分布,一个是相对收益分布,两个图都有战胜率的统计。 在收益曲线里,两个绿点显示收益区间内的最大回测发生的位置和最大回测百分比。 在收益曲线右下方, 增加一个控制收益区间跨度的方便按钮工具栏,用户可以方便将收益区间设定在1个月,3个月, 6个月, 1年。。。

在论坛部分, 增加了主贴可以修改, 翻页后筛选标签依然有效等功能。

在选股清单, 代码旁边加入雪球、新浪链接。