[Day8]训练集与验证集

今天开始处理训练集和验证集的问题

开始前先安装yahoo finance的package

pip install yfinance

以前有安装过的也可以先更新一下,我这边的用法参考最新的版本,我也不知道新旧版会有甚麽差别
https://ithelp.ithome.com.tw/upload/images/20210908/201412385ZK0Ho1nJO.png

在进入正题之前先讲讲要做这边要什麽,前一天用来做最佳化跟回测绩效的时间范围如下图所示,两者时间范围是重叠的,这样说这一套策略可以使用是欠缺说服力的,就像现在的我也拿不到未来的资料作最佳化一样的意思。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238Is4Eb0DwYR.png
在验证这套流程预测未来能力的阶段,使用的最佳化时间范围和回测绩效的时间范围应该如下图所示,前者时间在前,後者时间在後,而且不要重叠。所以这边会拿更长时间的资料减去之前抓到的资料来做最佳化,而回测绩效的部分用之前那个就行了。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238vvELPOGBQe.png

进入程序码的部分,先把途中的部分注解或移除掉,这边用不到,跑起来也满花时间的
https://ithelp.ithome.com.tw/upload/images/20210908/20141238G290u0UdFt.png

再来就是正题,一开始是使用今天新加入的yfinance抓取0050的部分,这个工具包他是可以爬全球股票的日K,所以0050後面要加个.tw。再来就是把这个新抓的0050股价时间和之前文章抓的0050股价时间重叠的部份去掉,避免作弊的问题。後面就是一些资料处理,因为yfinance的价格里面有一些是0,在最佳化的时候会出错。後面的部分都和之前做得差不多,不过我把最佳化的range从(x,y,1)改成(x,y,2),应该可以快一点。
https://ithelp.ithome.com.tw/upload/images/20210908/20141238tRGnI5HcWl.png

以下是跑出来的结果,其实不是很理想,再来看看报酬率曲线图看看发生了什麽事
https://ithelp.ithome.com.tw/upload/images/20210908/20141238kZtzHMUFKP.png

以下是报酬率曲线,可以看到不作弊使用2019~现在资料的情况下,在一开始的时候效果还是可以的,就只有吃到2019四月的下跌(看dayopen.index[80]的数值可以知道报酬率曲线开始动的时候是四月十九),2019後面的下跌看起来对报酬率曲线没甚麽影响。但是到2020就没甚麽用了。从这边看起来,这个均线交叉讯号再搭配最佳化的手法,虽然可以用,其实并不能一劳永逸的解决问题,他最佳化的参数是有个赏味期的,大概每隔三个月到一年就要再做一次最佳化比较好。
https://ithelp.ithome.com.tw/upload/images/20210908/201412382qMBpocjHx.png

有均线交叉搭配最佳化的范例,要改用RSI或MACD之类的也不是难事,所以这部份我可能想不到要做甚麽的时候再用来发文。接下来我会先试着做跨市交易,让手上的部位在0051和0050之间做切换之类的,一样使用均线。


<<:  LeetCode解题 Day08

>>:  [Day 8] Course 2_Ask Questions - 将利益相关者(Stakeholder)放在心上

【D18】尝试料理:取得所有股票清单

前言 有了这些功能後,想要知道能不能跑所有的股票,然後做这些事情,无论是行情订阅,还是历史资料。因此...

JavaScript学习日记 : Day29 - import & export

在开发中,为了避免单一档案太大,通常会使用模组管理,分拆每个档案视为独立的模组,透过import、e...

[Android Studio 30天自我挑战] ScrollView元件介绍

在很多时候页面的文字过多或是需要显示的功能过多,导致下半部分无法显示, 这时候就可以使用Scroll...

[DAY 30] Q&A 谘询系统 大结局

来到了第 30 篇!(๑´ㅂ`๑) 虽然还有很多页面没有讲,但其实有应用到的技术都讲得差不多了 来分...

[Day3] Flutter - 改变容器风格 ( Container )

前言 Hi, 我是鱼板伯爵今天要教大家 Container 这个元件,教学内容只会撷取片段程序码,建...