🐈

Act 01. AIで外国為替を自動売買するまでの道のり

2024/10/19に公開

はじめに

「楽してお金を稼ぎたい」これは全人類共通認識だと思う。
家族と色々な思い出を作りたいから、早めに仕事を辞めて色々経験したいよね。

ということでAIを使って楽してお金を稼ぐ方法を探ることにした。
なぜAIを使って外国為替の自動売買しようと思ったのか。

  • AIは学んでおいて損はしないし、自動売買以外の使い道もあると思った
  • 投機で安定して稼げるようなAIを作ることが出来たら、複利の力で利益はウハウハ
  • 既存の企業でAIを用いた自動売買の実績があるため、かなり努力すれば実現は可能
  • シンプルに楽しそう

勉強は楽じゃないって考える人もいると思う。
そういう人は記事を見ないでYouTubeやTikTokを見ておいて。

備忘録や日記のようなイメージで記事を投稿するから、誤字脱字や言葉使いは気にしないで。
学んだことはしっかりアウトプットしていきたいけど、文章とか考える時間が無駄だからという理由。

それと、期間は2年間の予定。
2年後には月利5%くらいのものが作れていたら泣いちゃうよね。

学習内容

ChatGPTさんに質問したところ、以下の内容を順に学習することを勧められた。
必要に応じて追加で学習しようと思うが、いったん以下の通りに進めて行こうと思う。

以下、ChatGPTの回答をコピペ。
3. 機械学習の基礎以降は結構ざっくりな感じだから、もう少ししっかり学習した方がいいかも…?

1. Pythonに関する基礎知識の習得

Pythonを学ぶ。特に、NumPy、Pandas、Matplotlibなどのライブラリに慣れる。

これらの内容を学ぶことで、FX自動売買システムを構築する際に必要なプログラミングスキルを確実に身につけることができます。

1-1. 環境構築とバージョン管理

  • 内容: 仮想環境の作成(venvやconda)、Gitの基本。

  • 理由: プロジェクトを効率的に管理し、依存関係の問題を避けるために必要です。

1-2. 基本的な文法

  • 内容: 変数、データ型(整数、浮動小数点、文字列、リスト、辞書、セットなど)、制御構造(if文、forループ、whileループなど)。

  • 理由: プログラミングの基本を理解することは、効率的にコードを書くための第一歩です。

1-3. 関数とモジュール

  • 内容: 関数の定義と呼び出し、引数と戻り値、標準ライブラリの利用。

  • 理由: コードの再利用性を高め、複雑なプログラムを整理するために重要です。

1-4. ライブラリの利用

  • 内容: NumPy、Pandas、Matplotlib、Scikit-learnなどの主要ライブラリの使い方。

  • 理由: データ処理や可視化、機械学習アルゴリズムの実装に役立ち、効率的に作業を進めるために必要です。

1-5. データ処理

  • 内容: データの読み込み(CSV、JSONなど)、データの前処理(欠損値処理、標準化、エンコーディングなど)。

  • 理由: FX市場のデータを扱うためには、データの前処理が不可欠です。クリーンで整ったデータがモデルの精度に直結します。

1-6. クラスとオブジェクト指向プログラミング

  • 内容: クラスの定義、オブジェクトの生成、継承とポリモーフィズム。

  • 理由: 複雑なシステムを効率的に設計・管理するために、オブジェクト指向の理解が重要です。特に大規模なプロジェクトでは役立ちます。

1-7. エラーハンドリング

  • 内容: 例外処理(try-except文)やデバッグ手法。

  • 理由: プログラムの安定性を高め、エラーが発生した場合でも適切に対処できるようになります。

2. 数学に関する基礎知識の習得

これらの数学的基礎を学ぶことで、機械学習やディープラーニングの理論的背景や実装の理解が深まり、FX自動売買システムの構築に必要なスキルを身につけることができます。

2-1. 線形代数

  • 内容: ベクトル、行列、行列演算、固有値・固有ベクトルなど。

  • 理由: 多くの機械学習アルゴリズム(特に線形回帰やニューラルネットワーク)は、データを行列形式で扱います。ベクトル空間の理解は、データの変換やモデルの表現に不可欠です。

2-2. 微積分

  • 内容: 関数の微分、積分、偏微分など。

  • 理由: 最適化問題を解くために、損失関数の勾配を求めたり、最小値を見つける際に微積分が使われます。特に、勾配降下法は多くの機械学習手法の基盤です。

2-3. 確率論

  • 内容: 確率分布、期待値、分散、独立性、ベイズ定理など。

  • 理由: 機械学習モデルの多くは、不確実性や確率に基づいています。モデルの評価や予測の信頼性を理解するためには、確率論の知識が必要です。

2-4. 統計学

  • 内容: 母集団とサンプル、信頼区間、仮説検定、回帰分析など。

  • 理由: データの解析やモデルの検証に統計的手法が用いられます。特に、モデルの性能評価や過学習の防止に役立ちます。

2-5. 最適化

  • 内容: 最適化手法、制約付き最適化、ラグランジュの未定乗数法など。

  • 理由: 機械学習の多くは最適化問題として定式化されるため、効果的な最適化手法の理解が重要です。

3. 機械学習の基礎

  • 機械学習の概念: 教師あり学習、教師なし学習、強化学習の基本を学ぶ。

  • アルゴリズム: 線形回帰、ロジスティック回帰、決定木、サポートベクターマシン、k-近傍法などの基本的なアルゴリズムを理解する。

  • 評価指標: 精度、再現率、F1スコアなどの評価指標を学ぶ。

4. ディープラーニングの導入

  • 基礎知識: ニューラルネットワークの基本を学ぶ(層、活性化関数、オプティマイザーなど)。

  • ライブラリの使用: TensorFlowやKerasを使って簡単なモデルを構築する。

5. 時系列データの扱い

  • FXデータの特性: FX市場の基本、チャートパターン、テクニカル指標について学ぶ。

  • 時系列予測: ARIMA、LSTMなどの時系列データ解析手法を学ぶ。

6. プロジェクトの実施

  • データ収集: FXデータを取得する方法(API、データベースなど)を学ぶ。

  • モデル構築: 学んだ知識を使って実際にモデルを構築し、バックテストを行う。

  • 評価と改善: モデルのパフォーマンスを評価し、改善点を見つけて再実装。

さいごに

これから順に学習していって、学んだ内容を記事にしていこうと思う。
ではでは。

Discussion