最近プログラミング言語・pythonとAI構築フレームワーク・Kerasを勉強しています。私は言語としてはC/C++/C#が得意なオールドタイプのエンジニアなんですけど、AIやるならpython一択の情勢なのでpythonもここ数年ちょこちょこ書いています。
Windows10。Kerasの特徴の一つとして、CPUしかない環境ではCPUで、GPUがある環境ではGPUで何も設定変更やソース変更なく動くというのがあります。これはKerasのとっつきやすい点です。私のゲーミングノートはGPU「NVIDIA GeForce GTX 1650 Ti」を内蔵しているのですが、CPUより遅かった(ひ、ひどい)ので、CUDA(GPUを使うためのライブラリ)+cuDNN(ニューラルネットワークを使うためのライブラリ)は一旦はずしてあります。
(もっとモンスター級のゲーミングノートが欲しいです)
pythonのimportはこのようなモジュールを使用しています。
import os
from model import create_model
from tensorflow.keras.layers import Activation, Dense, Dropout
from tensorflow.keras.optimizers import Adam
from tensorflow import keras
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import json
import time
import datetime
見よう見まねでpythonで仮想通貨の価額を予測するAIもどきを作りました。モジュールは4つに分かれています。
取引所から日付、終値のデータを取得し、CSVファイルに保存します。CSVファイルは以下のような構成です。
通貨ペアがALGO/USDTだとすると:
ファイル名:ALGO_USDT.csv
日付,終値
2022-01-20,1.2656
2022-01-21,1.16
2022-01-22,1.03
2022-01-23,0.9506
2022-01-24,0.9885
2022-01-25,0.9124
2022-01-26,0.921
2022-01-27,0.923
ニューラルネットワークのモデルを形作ります。階層は深くしておらず、メモリもあまり使わないサイズにしました。
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
==============================================
dense (Dense) (None, 16) 272
dense_1 (Dense) (None, 16) 272
dense_2 (Dense) (None, 1) 17
==============================================
Total params: 561
Trainable params: 561
Non-trainable params: 0
_________________________________________________________________
CSVファイルを使って学習を行います。各レイヤの重みデータをweights.hdf5というファイルに保存し、学習状況をあらわすグラフをtrainYYYYMMDD.pngという画像ファイル(YYYYMMDDは日付)に保存します。
重みファイルとCSVファイルから、仮想通貨の翌日の価額を予測します。いくら上がる/下がるか、上昇/下落率も表示します。
上の画像の予測は1月27日のデータを学習した上での予測です。12%なんて上がるとは思えない...。
AIが上がると宣うた場合、実際にALGOを買ってみました。実際に上がるなら、成り行きで買って指値で売れるはず。自動売買機能も組み込めますが、一旦人間システムが売買してみます。
1月25日、1%程度上がると予測したので、成り行きで買い、上がると予測した額で指値売りを出してみました。これは当たり、うまく売れました。
1月26日、6%程度上がり、1.005ALGOになると予測しました。かなり嘘くさいと思いましたが、成り行きで買い、上がると予測した額で指値売りを出してみました。
1月27日、日経平均暴落。ALGOも下がり、1.005ALGO、0.9962ALGOなど夢のまた夢...?でも待てよ、下のチャートの4:40頃は1.000にかなり近づいている。利益が出る範囲内で、予測値より少し安く売っていれば良かったのか...。
ALGO/USDTのデータは1月27日の時点で951レコード(KuCoinの場合)。BTCみたいにもっとデータが集まってくれば、精度は高まっていくと思われます。しかし、日経平均暴落のような外部要因までは認識できません。ファンダメンタルズに左右されないストラテジが欲しいです。
とりあえず「日給300万円のSS級トレーダーが明かすbotterのリアル」(幻冬舎)買ったので読みます。
以上