CS 7646: Machine Learning for Trading

OMSCS 初回授業に関する記録

OMSCS の初回の授業は、Machine Learning for Trading を受講した。
機械学習の活用がメインの授業であり満足度の高い内容であった。

Overall

OMSCS の初回の授業は、Machine Learning for Trading (以降 ML4T) を受講した。

CS 7646: Machine Learning for Trading

OMSCetral によると、かなり満足度の高い授業であり、負荷も中間程度と見受けられたので、様子を伺う上でも適切かと思い選択した。なお、OMSCS の授業に関しては、Survey を基に毎年改善が行われている。 実際に中間、期末テストに関しては、Generative AI の登場を受けて、以前と比べて形式が変更になったと説明された。そのため、以降、授業の内容に取り上げる際にはあくまで私が受講した際の内容であり、今後変更になる可能性は十分にある。

授業の最終ゴールとしては、機械学習で株価予測をして、儲けられる投資アルゴリズムを実装してみようという内容である。そのため、機械学習の理論よりかは、どう実社会で活用していくかという点に焦点が当てられていた。
また、テーマが投資であるため、効率的市場仮説やオプションの話などの金融経済学に関しても時間が割かれていた。 中間、期末テストでは、ヘッジファンドの機械学習エンジニアだとしたら、機械学習を適用する際に注意すべき点を選択しなさい、というような形式で出題された。

Review:Machine Learning for Trading

効率的市場仮説

Content

私が受講した際には、過去の授業動画と参考資料を読んでいく流れで進み、合計で 8 つの課題が課された。加えて、持ち込み可能なテストが 2 回あった。 OMSCetral のレビューの中で、それぞれの課題の難易度は以下と紹介されてたが、大きく外れてはいないと思う。レポートのある課題はどうしても時間を要する傾向にある。 事前にどの課題が重いとかわかっていたので、見通しはつけやすく、早めに着手するなど、計画的に進めることができたと思う。 8 つの課題に関しては、それぞれ独立しているものというよりは、最終的なゴールである投資アルゴリズムの実装に必要なコンポーネントを徐々に作成していくという感じに近い。

Subjective Project Difficulty Ranking: 8 > 3 > 6 > 5 > 1 > 2 > 4

過去のシラバスに関しては、以下のサイトから確認することが可能である。

CS7646 FALL 2023

具体的な課題の内容に関しては、以下の通りである。

Project 1

初回の課題で、いきなり最大 7 ページのレポートが課された。内容としては、カジノの黒か赤に賭ける Even Bet を題材として、簡単なシミュレーションを実装した。また、その際の実験方法、結果、考察をレポートにまとめた。期待値の計算や数値実験の行い方など、内容としては基礎的なものであり、今後の導入となるものであった。 研究の経験がある場合には想像が着くと思うが、実験し、結果をまとめ、どう論理的に考察していくかが説明され、この授業を通して要求されるものを紹介するような側面もあった。

Project 2

Project 1 がそこそこ負荷が高かったが、Project 2 は非常にシンプルで、scipy の optimize で最適化を実施するものであった。

Optimization (scipy.optimize)

Project 3

事前に TA からも Project 3 は重いと言われていたが、確かにやることが多かった。Decision Tree, Random Tree, Random Forest をライブラリを用いず、理論に基づき自ら実装を行い、その結果を最大 7 ページのレポートにまとめるものであった。Overfitting の傾向を実験によって明らかにすることや、それぞれの手法の特徴の比較などを行った。

Project 4

重い課題の後には軽い課題が来るような構成だったので、良心的であった。線形回帰と Decision Tree を題材に、線形回帰が常に高精度になるテストデータの生成と、Decision Tree が常に高精度になるテストデータの生成を行った。それぞれの特性に対する理解が問われる課題であったと思う。

Project 5

ここからは、金融経済学に関連する内容が続いた。株式の取引に応じて、最終的にどれくらいのリターンが得られたのかのシミュレーションの構築であった。最終的に全ての Project の成果物に基づいて、機械学習による収益のシミュレーションを行うため、この課題も最終的には必要なコンポーネントとなった。

Project 6

Project 6 の課題に関しては、締め切りが 1 週間ほどしかない割りに求められることが多く、結構タフな課題であった。投資のテクニカル分析で利用される手法を 5 つ調査し、実装しつつ収益のシミュレーションを行うものであった。また、それぞれの手法の概要をまとめて簡単にレポートにする必要があった。

Project 7

強化学習の一種である Q learning と Dyna の実装を行った。今まで強化学習に触れてこなかったので、学びが多かった課題である。 Q learning はテーブルで Q 値の更新を行っていくというシンプルな実装ではあるものの、テストとして実装したものを利用して迷路を解かせてみた際に、実行結果で適切にルートが選択されていることを確認できた。

Project 8

集大成と言える Project であり、今まで学んできたことを総動員し、機械学習を用いた投資戦略のシミュレーションを行うものであった。その結果について、他のプロジェクトと同様に考察し、レポートにまとめるものであった。利用する手法としては、Random Forest か Q learning を選択でき、精度を上げるためハイパーパラメータチューニングを行うことが求められた。TA からも、今までの Project の積み重ねがあるため、あまり時間がかからないように思えるが、チューニングに時間を要するため、早めに着手するようにと何度もアナウンスされていた。そのため、早めに着手し、比較的自信のある Random Forest で実装しため、余裕を持って課題を提出することができた。

Reflection

合計 4 回課されたレポート課題に関しては、体裁が細かく決められ、最大 A4 7 ページほどであったため、なかなか負荷が高かった。実際の論文のように、実験手法を記載し、他者が再現できることを意識するようにも言われたため、論文を書いたことがない場合には、良い導入になるかもしれない。

講義内容に関しては、ライブラリを利用し、今までなんとなくで理解していた Random Forest など、実際に実装したことでその理論に関して理解が深まったと思う。強化学習に関しては未知の領域であったため、どのような理論で機能するか、実装を通して学べたのは良い機会であった。 最終的に、学んだ手法を組み合わせるとバックテストでどれくらい投資で儲けられたかを確認できたのは成果がわかりやすく、今まで大学で受けてきた授業を含めても非常に面白い内容であったと思う。

Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。