時系列予測にニュース情報を取り込み精度を上げる論文の紹介
はじめに
こんにちは、ymdです、絶滅危惧種のCEX, MLbotterです!
アドベントカレンダーに参加するのは4年目(2021, 2022, 2023)です。
機械学習のトップ会議であるNeurIPS2024にニュースを使い時系列予測をの精度を上げる方法が提案されていたので紹介します。 バブル相場で忙しいのに、誰もアドベントカレンダーをすっぽかしていないところにbotterの勤勉さを感じます。自分は、本業の研究で読んだ論文でお茶を濁します
論文紹介に興味ある人少なそうですがご容赦を😅
バブルで忙しいbotterニキ向けのまとめ
- ニュースの厳選をうまくやれば、チャート情報をだけを使うよりは、急なイベントに対しての予測力が向上するよ
- 価格の上下予測を劇的に改善する銀の弾丸ではなく、実運用では予測対象や執行の工夫が引き続き必要だけど、チャートとニュースを自然に統合できるのでML botの戦略の幅が広がるよ
- 学習にはA100 GPU 1枚、24hくらいの計算リソースと、open ai apiが結構必要なのでお金がかかるよ
論文の概要
内容:時系列予測に、テキストによるイベント情報を選択的に取り込むことで予測力を強化する、反復イベント推論フレームワークを提案。長期と短期で予測に効くイベントを選択するところも学習で賢くなり、人間が行っているような状況を総合的に判断するみたいなbotへの可能性を示した。
以下は、オーストラリアの電力需要の予測の例で、ニュースによるトレンドの変化を赤線のように追従できる。
手法
- チャート情報とニュース情報を入力し、未来のチャートを出力するLLMをFine-tuningする。
- ニュース情報はLLMを使い予測に効くように厳選する
fine-tuning
BTCの場合以下のような入力形式にして価格予測LLMをfine-tuningする。
[
{
"instruction": "The historical bitcoin price is: 3744,3865,3874,3821,3861,3925,4052",
"input": "Based on the week-ahead historical data, please predict the bitcoin price in the next day. The start date of historical data was on 2019-1-1 that is Weekday. The data frequency is 1 day per point. Historical data covers 7 days. In the last week, Bitcoin network mining difficulty values over 7 days are: 5618595790848, 5618595790848, 5618595790848, 5618595790848, 5618595790848, 5618595790848, 5618595790848; Number of Bitcoin addresses sending Bitcoin values over 7 days are: 244461, 329358, 355235, 358511, 308909, 306803, 350146; Bitcoin sent amount in USD values over 7 days are: 1424526080, 2515216384, 2752308224, 2811737600, 2048008192, 2072755712, 2995832832; Market capitalization of Bitcoin values over 7 days are: 65348534272, 67471069184, 67636613120, 66716274688, 67429023744, 68542726144, 70771712000; Average time required for Bitcoin transaction confirmation values over 7 days are: 9.66, 9.54, 9.29, 9.66, 8.83, 10.21, 10.21; Number of transactions in the Bitcoin network values over 7 days are: 234576, 271545, 290861, 281623, 265029, 258381, 284641; Median size of Bitcoin transactions values over 7 days are: 0.0254, 0.0429, 0.0592, 0.0517, 0.0290, 0.0408, 0.0822; Profitability of mining values over 7 days are: 0.1730, 0.1690, 0.1830, 0.1660, 0.1700, 0.1720, 0.1790; Rewards from Bitcoin transaction fees values over 7 days are: 0.6000, 0.9470, 0.9800, 1.04, 0.5990, 0.9330, 1.34; Proportion of top 100% users holding Bitcoin values over 7 days are: 15.71, 15.69, 15.65, 15.64, 15.68, 15.68, 15.68; Median value of Bitcoin transactions values over 7 days are: 99.57, 131, 147, 150, 92.38, 96.65, 154; Average value of Bitcoin transactions values over 7 days are: 8744, 14003, 12499, 13168, 11078, 10471, 13992; Size of Bitcoin blocks values over 7 days are: 653046, 732811, 735546, 734502, 638306, 640725, 749891; Total hashing power of the Bitcoin network values over 7 days are: 40548102070425616384, 43497770710353313792, 41470755053850591232, 43397943850644283392, 46462449883023409152, 40627939808741687296, 40325833595847442432; Number of active Bitcoin addresses values over 7 days are: 362558, 505957, 516491, 517169, 459113, 433832, 507835; Google search trends data related to Bitcoin values over 7 days are: 31.32, 35.64, 36.12, 35.51, 29.15, 31.65, 37.17; Number of tweets about Bitcoin values over 7 days are: 17069, 18830, 26754, 21139, 20096, 18883, 20476. The date of prediction is on 2019-1-8 that is Weekday. On 2019-01-03 19:12:00, the news may change the future time series, since Cybersecurity threats and data breaches tend to create a direct, real-time impact on Bitcoin prices by inducing fear, uncertainty, and doubt among investors about the safety and reliability of digital assets. On 2019-01-04 16:30:07, the news may change the future time series, since Analytical articles reflecting on Bitcoin's past performance and speculating on its future can incite immediate market reactions as investors and stakeholders reassess their positions based on the insights and arguments presented. On 2019-01-04 02:10:00, the news may change the future time series, since This news highlights significant trading activity in the cryptocurrency market, which could positively influence investor sentiment and affect Bitcoin prices in the short-term. On 2019-01-06 14:59:04, the news may change the future time series, since This news discussing the potential downward spiral of Bitcoin could spark immediate fear and selling among investors, affecting the price negatively in the short term.",
"output": "4031,4036,3825,3662,3648,3600,3604"
}
]
ニュースの厳選
ニュースの厳選には、以下の2つのLLMを使う
- ニュース情報抽出LLM:ニュースのreasoningとニュースのフィルタリングを行う
- 評価LLM:ニュース情報抽出LLMを改善するために、価格予測LLMを評価する
具体的なプロンプトは以下の図の通り
反復ニュース スクリーニング: この研究ではニュース情報抽出LLMと評価LLMを組み合わせて、ニュース データの品質を向上させる。最初の反復では、LLMは時系列タスクに基づいてニュース フィルタリング ロジックを確立し、関連するニュースをフィルタリングして時系列データと位置合わせし、価格予測LLMへ入力する。次に、検証セットの予測結果に基づいて、欠落しているニュースがチェックされ、この情報がLLMにフィードバックされて、ニュース スクリーニング ルールが最適化される。このプロセスは、トレーニング用の最終ニュース フィルタリング ロジックが生成されるまで繰り返される。様々なタスクで共通のプロンプトのテンプレートを利用する。
まとめると、以下の3つのLLMが登場する
- 価格予測LLM (fine-tuningで学習)
- ニュース情報抽出LLM
- 評価LLM
実験設定
- 時系列データ:電力需要、外国為替、交通、BTC
- 特にBTCでは、日足のclose価格を予測 (2019.01-2021.06)。入力長:7、予測長:7
- ニュースデータ:GDELT データセット、Yahoo Finance、News AU など420,000 件
- その他の補助テキストデータ:予測モデルの背景情報を充実させ、予測の精度を向上させるため、気象データ(毎日の気温、気圧、風速、湿度)、カレンダー情報(平日・週末・祝日)、経済指標(GDP、インフレ率、雇用統計など)を利用
- Model: Llama2(7B)
- Metrics: MSE, RMSE
実験結果
フィルタリングされたニュースは情報はすべてのデータセットで有効
ニュースデータ統合の必要性と有効性を検証するために、以下の4つのシナリオで比較。
1. 純粋な数値入力: 数値の時系列データのみ
2. プレーンテキストの説明: 数値の時系列データ + その他のテキスト補足情報(ニュースデータは含まない)
3. フィルタリングされていないニュースとテキストの説明: 数値の時系列データ + その他のテキスト補足情報 + ニュースデータ(フィルタリングされていない最初のニュース情報)
4. ニュースとテキスト説明のフィルタリング: 数値の時系列データ + その他のテキスト補足情報 + ニュースデータ(エージェントによってフィルタリングされたニュース情報)
LLMを使った既存の時系列予測と比較しても性能が高い
再現実装
以下の設定で再現
- githubにオーストラリアの電力予測のコードのみ公開されていたので、BTCのデータで学習(生データ自体はgithubに含まれていました)
- 評価がMSE → 損益曲線とシャープレシオ
学習は安定
損益曲線
Anual Sharpe Ratio: 2.42
Anual Sharpe Ratio (HODL): 10.04
日足で、BTC/USDのTest期間の結果です。
Train Dataset Size: 622
Validation Set Size: 200
Test set: 274
期間(total):2018/1~2022/1
上昇相場のHODLには勝ててないですが、BTC価格自体を直接予測したにしては悪くない感じがします。
細かいことが気になる人向け
初期プロンプト
ニュースがビットコインの価格にどのような影響を与えるかを予測するには、価格変動を引き起こす可能性のあるニュースや出来事の種類を考慮することが不可欠です。ビットコインの価格は、短期および長期のさまざまな出来事、投資家の心理、より広範な経済指標によっても変動します。ビットコインの価格に影響を与える可能性のある主なニュースや出来事を以下にまとめます。
ビットコイン価格にポジティブな影響を与える要因:
企業や国の採用:大手企業や国がビットコインを採用したり、投資したりするニュースは価格上昇につながる可能性があります。
規制当局の承認:規制当局による肯定的なニュース、例えばビットコインETFの承認や暗号通貨に関する有利な立法などは、投資家の信頼を高め、価格を押し上げる可能性があります。
技術的進歩:ブロックチェーン技術の改善、セキュリティ強化、ビットコインの有用性を高める革新も価格上昇に貢献する可能性があります。
ビットコイン価格にマイナスの影響を与える要因:
- 規制強化:政府による取り締まりや、ビットコインや暗号通貨全般に影響するネガティブな規制の発表は、価格の下落につながる可能性があります。
- セキュリティ問題:ビットコイン取引所やウォレットに関するハッキング、セキュリティ侵害、盗難に関するニュースは、信頼を低下させ、価格に悪影響を及ぼす可能性があります。
- 市場操作の告発:暗号通貨市場における価格操作の報告や噂は、大幅な価格変動と不確実性を招く可能性があります。
ビットコインに影響を与えるその他の要因:
- マクロ経済指標:従来の通貨と同様に、世界的な経済動向はビットコインに影響を与える可能性があります。経済不安、インフレ率、主要経済圏の金融政策の変更、株式市場の大幅な変動は、ビットコインの市場に影響を与える可能性があります。
- 世論とメディア報道:メディア報道によって生み出される世論は、ビットコインの価格に大きな影響を与える可能性があります。ポジティブなニュースは価格上昇につながり、ネガティブなニュースは価格下落の原因となります。
- その他の暗号通貨の市場動向:多くの場合、ビットコインのパフォーマンスは他の主要な暗号通貨のパフォーマンスと連動しています。他の暗号通貨の急騰や急落は、同様にビットコインの価格に影響を与える可能性があります。
予測に関する考察:ニュースに基づいてビットコインの価格変動を予測するには、ニュース自体を理解するだけでなく、これらの出来事がより広範な経済、技術、規制の状況にどのように当てはまるかを理解する必要があります。アナリストは通常、幅広いソースを監視し、定量的および定性的なデータを使用して市場のセンチメントと潜在的な価格変動を評価します。異なる地域における文化的な認識と普及レベルも重要な役割を果たします。
BTCを分析するときの観点 (AIによる生成)
ニュースがビットコインの価格にどのような影響を与えるかを予測するには、変動を引き起こす可能性のあるニュースの種類を特定し、その潜在的な影響を理解することが重要です。 主な要素を統合した見解は以下の通りです。
ポジティブな影響:
- 企業や国による採用: 主要企業や国がビットコインを採用するという発表は、市場の信頼を高め、価格を押し上げる可能性があります。
- 規制当局の承認: ビットコインETFの承認や前向きな立法措置など、好ましい規制は投資家の信頼を高め、価格を押し上げる可能性があります。
-
技術的進歩: ブロックチェーン技術、セキュリティ、ビットコインの有用性の向上などの革新は、価格に好影響を与える可能性があります。
ネガティブな影響: - 規制当局の取り締まり: 政府による取り締まりや好ましくない規制に関するニュースは、不確実性を生じさせ、価格の下落につながる可能性があります。
- セキュリティ問題: ハッキングや情報漏洩などの事件は信頼性を低下させ、ビットコインの評価に悪影響を及ぼす可能性があります。
-
市場操作の疑惑: 市場操作の疑惑や証拠は、価格の大幅な変動と不確実性を招く可能性があります。
その他の影響要因: - マクロ経済指標: 世界経済の動向、例えば経済不安定、インフレ、金融政策の変更などは、従来の通貨と同様にビットコインに影響を及ぼす可能性があります。
- 世論とメディア報道: メディア報道は世論に大きな影響を与え、肯定的な報道は価格上昇につながり、否定的な報道は価格下落の原因となる。
-
他の暗号通貨の市場動向: ビットコインの価格は、他の主要な暗号通貨のパフォーマンスと相関関係にあることが多い。
予測の考慮事項:
ビットコインの価格変動を予測するには、ニュースの背景や、より広範な経済、技術、規制要因との相互作用を理解することを含む包括的な分析が必要である。アナリストは、市場心理を評価するために定量的および定性的なデータの両方を利用する。さらに、文化的な認識や地域ごとの普及レベルは、価格変動を予測する上で極めて重要である。
入力に使われる時系列情報
- ビットコイン価格:
price
- ビットコインネットワークの採掘難易度(過去7日間の値):
difficulty
- ビットコインを送金したアドレス数(過去7日間の値):
sent_addresses
- ビットコインの送金額(USD換算、過去7日間の値):
send_usd
- ビットコインの市場資本総額(過去7日間の値):
market_cap
- ビットコインの取引確認に要する平均時間(過去7日間の値):
confirmation_time
- ビットコインネットワークの取引数(過去7日間の値):
transactions
- ビットコイン取引の中央値サイズ(過去7日間の値):
median_transaction_size
- 採掘の収益性(過去7日間の値):
mining_profitability
- ビットコイン取引手数料からの報酬(過去7日間の値):
fee_reward
- ビットコイン保有上位100%ユーザーの保有割合(過去7日間の値):
top_100_percent
- ビットコイン取引の中央値(過去7日間の値):
median_transaction_value
- ビットコイン取引の平均値(過去7日間の値):
av_transaction_value
- ビットコインブロックのサイズ(過去7日間の値):
block_size
- ビットコインネットワーク全体のハッシュレート(過去7日間の値):
hashrate
- アクティブなビットコインアドレス数(過去7日間の値):
active_addresses
- ビットコイン関連のGoogle検索トレンドデータ(過去7日間の値):
google_trends
- ビットコインに関するツイート数(過去7日間の値):
tweets
チューニングが適当なところ
- epochが浅すぎて収束していない
- ニュースの選定を1stepしかフィルタリングしていない。表3によると2回はやるべし。
- もっと良いLLMを使う(llama7Bは7Bくらいのファミリの中でもそんなに性能が良い方ではない)
- LLMなんでもっとデータを使う
感想
- ML Botでは1ステップ先の予測精度が高いことが重要なので、1ステップ先の予測にニュース情報がどれくらい影響を与えるかは謎。ないよりはあったほうが良さそうなので運用botに組み込むのもありかなぁ。
- 論文ではリターンではなく価格を直接予測しているのはよくわからなかった。切りの良い数字が障壁になったりするのでそういうのを加味したかった??統計的には単位根を含むものを予測するの???って気持ち。
- LlamaをLoRAチューニングしているが、時系列予測のfundation modelではないため、LLMを(リーズニングとフィルタリングされた)ニュースのembedingのみに使い、普通に教師あり学習した場合との比較して提案法が有効化は謎 。
- botを運用するとき、精神的にも説明力は必要なので、予測と合わせて判断根拠を出力させることができるのは良い。出力だけでなく、フィルタリングとリーズニングされた入力を人間は解釈可能なところも良い。
- 一度作っちゃえば、自分が頑張らなくてもLLMが強くなることで自分のbotが勝手に強くなる可能性がある
Discussion