季節差とauto.arima

Aug 16 2020

私はRを使用して、さまざまな予測アルゴリズムの研究を開始しました。例として、(季節性がないため)最良のアルゴリズムではないかもしれませんが、Facebookの株を使用しています。

トレーニングセット:

SYMBOL <- getSymbols("FB", from = "2015-01-01", to = "2019-12-31")
Stocks_FB_day <- get(SYMBOL[1])
Stocks_FB_day_Cl <- Cl(Stocks_FB_day)

テストセット:

SYMBOL <- getSymbols("FB", from = "2020-01-01", to = "2020-01-21")
Stocks_FB_day <- get(SYMBOL[1])

ARIMAを含むさまざまなモデルを作成しました。これは毎日の株価データには最適ではないことはわかっていますが、試してみることにしました。年間約252の観測があることを考慮して、stl()関数を使用し、頻度を126(半年)と252(通年)に設定して、分解プロットを作成しました。両方のプロットは、季節信号が実際には必須ではないことを示しています。これがそれらの1つです:

また、ACFグラフとPACFグラフから結論付けることもできます(多分私は間違っていますか?):

これらは私のauto.arima関数の実験です:

「D = 1」(頻度が252か126か)を書くたびに、季節差を強制しましたが、より高いAIC値が得られましたが、より正確な予測が得られました。平らな/ほぼ平らな線を取得することが適切でないと言っているわけではありませんが、可能であれば、将来の予測の全体的な方向以上のものを知りたい場合があります。

私は多くの間違いを犯したと思いますが、アプローチ全体がまったく適切ではない可能性が高いです。

主な質問は次のとおりです。

「予測値がより良い場合(たとえば、MAPEを計算するなど、ホールドアウトセットと比較する場合)、季節差(D = 1)を強制することは、不要と思われる場合でも意味がありますか?季節性が弱いという事実?」

回答

3 ChrisHaug Aug 16 2020 at 21:41

一般的なアドバイスとして、信頼できる事前のドメイン知識があるかどうか、目の前にあるデータが伝えていることに反対することができます。この場合、それは、一般的な株式市場に関する知識、または特にFacebookのビジネスに関する知識であり、現在見ている株価シリーズとは関係なく以前に取得したものです。

しかし、ドメイン知識が季節的であるべきだと言っておらず、データが実際には季節的ではないように見え、ランダムに「ねえ、季節性を強制しようとしたらどうなるか」と言う場合。そして、サンプルの結果からより良くなるので、将来役立つ方法でモデルを本当に改善したかどうかについては間違いなく懐疑的である必要があります。もちろん、ドメイン知識に欠陥がある可能性があります。または、季節差を追加することで、モデルの実際の、しかし無関係な問題が修正され、直接修正することを正当化できる可能性があります。

ここには、最初のプロジェクトとして株価に引き寄せられるような予測を学んでいる人がたくさんいます。残念ながら、ドメインの性質上、ARIMAモデルのクラス内では、株価はほとんどの場合ランダムウォークとしてモデル化するのが最適であるため、学習の観点からはあまり興味深いものではありません。これはドメインの基本的な特性であり、将来の価格の総計の期待が投資家に影響を与え、資産を売買することによって価格の将来の経路を変更する方法によるものです。このフィードバックメカニズムは、簡単に予想される動きを減衰させる傾向があるため、簡単に観察できるのはノイズだけです。

このため、株価は通常、強い季節パターンを持っていません。ローシーズンに買い、ハイシーズンに売ることで確実な利益を上げることができれば、誰もがそうするでしょう。これにより、ローシーズンの価格が上昇し、ハイシーズンの価格が下落し、最終的にこの利点が失われます。この場合の以前のドメイン知識は、株価はおそらくこのように季節的ではないと言っています。

したがって、この場合、季節差を追加することに懐疑的であり、非季節予報のレベルがはるかに離れているように見える理由をさらに調査します(これまでに投稿した情報からはわかりません) )。