韭菜学python(2):年化65%!指数跌破-1%买入策略

发布于: 修改于:雪球转发:3回复:15喜欢:42

《所有程序和原始数据已经免费开放。关注公众号“韭菜说投资社区”(文末图示),从菜单栏中获取》


对不起我标题党了,年化65%只是一个简单结论,实现起来嘛。。。您先看完

第一节写了怎么安装python和测试一个小程序。

第二节准备小试牛刀写一个非常非常非常简单又比较有意思的策略。

有新闻报道,大盘已经连续XX个交易日跌幅不超过-1%,慢牛的很呢,数次盘中跌破-1%最终都还会被郭嘉队拉回来,那是不是说,以后每次跌幅超过-1%都可以买入,赌大概率成功拉回来呢?

先看我的程序运行结果!截止2017年4月20日,在过去100个交易日里

最后一次日终跌幅超过-1%发生在 2016-12-12

在过去 100 交易日里,有 17 天曾盘中跌破过-1%,其中有 14 次拉回高于-1%比例为 82.3529411765 %

跌破-1%时买入上证指数并持有至收盘,当日平均收益为 0.266288425128 %, 最大收益为 1.41329642702 %,最小收益为 -1.4867478403 %。总收益为 4.52690322718 %!

年化收益为 65.2406641564 %


这是由于最近半年国家队进场维稳,给刘主席上新股创造条件!如果把时间拉长,还有用吗?

先看最近250个交易日的结果(最近一年)

"在过去 250 交易日里,有 39 天曾盘中跌破过-1%,其中有 26 次拉回高于-1%,比例为 66.6666666667 %

跌破-1%时买入上证指数并持有至收盘,当日平均收益为 0.0501000936587 %, 最大收益为 2.61012682034 %,最小收益为 -2.23667799433 %。总收益为 1.95390365269 %!年化收益为 12.2745229464 %"

在看最近500个交易日的结果(最近2年),由于股灾次数太多,这么做基本会被搞死

"在过去 500 交易日里,有 176 天曾盘中跌破过-1%,其中有 92 次拉回高于-1%,比例为 52.2727272727 %

跌破-1%时买入上证指数并持有至收盘,当日平均收益为 -0.289292318826 %, 最大收益为 6.83184905026 %,最小收益为 -7.56656464017 %。总收益为 -50.9154481133 %!年化收益为 -70.8766181123 %"


最后贴出代码供审阅


全部讨论

2017-11-08 23:51

刚开始学习,入门还是很有帮助的,有点疑问:
1. 最后计算总收益和年化收益用平均收益乘以对应天数不大对吧。总收益=平均收益*符合条件的天数,这样算不大合适,比如第一天赚5%,第二天亏3%,第三天亏1%,总收益应该是1.05*0.97*0.99=1.008,但按平均收益则变成了(5%-3%-1%)*3=3%,也就是1.03,这个差异太大了。
年化收益就更有问题了,用的是245*平均日收益率,但一个是日平均收益这样相乘和上面一样的问题,另一个是其实你500天中只筛选出176天盘中跌破1%,那么最多也就能用176*245/500算天数。



另外
python3.6中最后的3句应该改成这样就可以了,python3和python2基本上可以算两个世界的语言
print ("最后一次日终跌幅超过-1%%发生在%s" % (lastday))
print ("在过去%d交易日里,有%d天曾盘中跌破过-1%%,其中有%d次拉回高于-1%%,比例为%d%%" %(total,count,k,freq))
print ("跌破-1%%时买入上证指数并持有至收盘,当日平均收益为%.2f%%,最大收益为%.2f%%,最小收益为%.2f%%,总收益为%.2f%%!年化收益为%.2f%%" %(df2['mean'][0],df2['max'][0],df2['min'][0],len(df2)*df2['mean'][0],245*df2['mean'][0]))

2017-04-26 13:13

最后三行代码的 print 后面忘了加括号啊

2017-04-24 14:57

今天以前:
最后一次日终跌幅超过-1%发生在 2016-12-12
在过去 100 交易日里,有 17 天曾盘中跌破过-1%,其中有 14 次拉回高于-1%,比例为 82.3529411765 %

2017-04-21 07:23

终于等到第二发,收藏先

2017-04-21 06:31

刚好在学Python,就跟着你啦

女超人,能请你用IB Python API 写一个算法交易程序吗