今天开始处理训练集和验证集的问题
开始前先安装yahoo finance的package
pip install yfinance
以前有安装过的也可以先更新一下,我这边的用法参考最新的版本,我也不知道新旧版会有甚麽差别
在进入正题之前先讲讲要做这边要什麽,前一天用来做最佳化跟回测绩效的时间范围如下图所示,两者时间范围是重叠的,这样说这一套策略可以使用是欠缺说服力的,就像现在的我也拿不到未来的资料作最佳化一样的意思。
在验证这套流程预测未来能力的阶段,使用的最佳化时间范围和回测绩效的时间范围应该如下图所示,前者时间在前,後者时间在後,而且不要重叠。所以这边会拿更长时间的资料减去之前抓到的资料来做最佳化,而回测绩效的部分用之前那个就行了。
进入程序码的部分,先把途中的部分注解或移除掉,这边用不到,跑起来也满花时间的
再来就是正题,一开始是使用今天新加入的yfinance抓取0050的部分,这个工具包他是可以爬全球股票的日K,所以0050後面要加个.tw。再来就是把这个新抓的0050股价时间和之前文章抓的0050股价时间重叠的部份去掉,避免作弊的问题。後面就是一些资料处理,因为yfinance的价格里面有一些是0,在最佳化的时候会出错。後面的部分都和之前做得差不多,不过我把最佳化的range从(x,y,1)改成(x,y,2),应该可以快一点。
以下是跑出来的结果,其实不是很理想,再来看看报酬率曲线图看看发生了什麽事
以下是报酬率曲线,可以看到不作弊使用2019~现在资料的情况下,在一开始的时候效果还是可以的,就只有吃到2019四月的下跌(看dayopen.index[80]的数值可以知道报酬率曲线开始动的时候是四月十九),2019後面的下跌看起来对报酬率曲线没甚麽影响。但是到2020就没甚麽用了。从这边看起来,这个均线交叉讯号再搭配最佳化的手法,虽然可以用,其实并不能一劳永逸的解决问题,他最佳化的参数是有个赏味期的,大概每隔三个月到一年就要再做一次最佳化比较好。
有均线交叉搭配最佳化的范例,要改用RSI或MACD之类的也不是难事,所以这部份我可能想不到要做甚麽的时候再用来发文。接下来我会先试着做跨市交易,让手上的部位在0051和0050之间做切换之类的,一样使用均线。
>>: [Day 8] Course 2_Ask Questions - 将利益相关者(Stakeholder)放在心上
前言 有了这些功能後,想要知道能不能跑所有的股票,然後做这些事情,无论是行情订阅,还是历史资料。因此...
在开发中,为了避免单一档案太大,通常会使用模组管理,分拆每个档案视为独立的模组,透过import、e...
在很多时候页面的文字过多或是需要显示的功能过多,导致下半部分无法显示, 这时候就可以使用Scroll...
来到了第 30 篇!(๑´ㅂ`๑) 虽然还有很多页面没有讲,但其实有应用到的技术都讲得差不多了 来分...
前言 Hi, 我是鱼板伯爵今天要教大家 Container 这个元件,教学内容只会撷取片段程序码,建...