2020/02/05前回、機械学習で解いた学習モデルが勝率50.48%、プロフィットファクター1.15、平均年利5.91%、最大損失年利-37.23%という事が分かりました。今回は、現時点で考えている特徴量を追加して成績が改善するか確認してみます。株式投資の種類と手法をまとめました。私は利益は出てませんが、たまに株式投資を教える事があるため用です。ソースコード今回はテクニカル指標(ボリュームレシオ)、ストラテジー(3点チャージ法)を特徴量として追加してみます。「三点チャージ法」を指標として追加するテーブルデータのコンペにおいて特徴量の作成は非常に重要な要素で、良い特徴量が作れたかどうかで順位が決まることがほとんどです。複数の変数を組み合わせることで、変数同士の相互作用を表現する特徴量を作成できるからです。「物件の面積」と「部屋数」という変数を割り算して、「1部屋当たりの面積」という新特徴量を作成することで、精度が上がったりします。これって不思議なんだよね。このような特徴を自動的に見つけるのが機械学習なんじゃないのかな?局所解に陥らないようになるから良くなるの??まあ理由はさておき、それならば・・・・みんな大好き「三点チャージ法」!手法は次の通りです。RSI(14日)が25以下これを実装して、特徴量として追加します。先が思いやられる・・・な。VR(ボリュームレシオ)の計算方法Protraの公式マニュアルを見てみると、次のような計算になっていました。指標値は0以上で上限はない。500~1000近くまで上がるときもある。指標値は0~100の間に収まる。上下均衡しているときは50和光VR=(U-D-S)÷(U+D+S)×100指標値は-100~100の間に収まる。上下均衡していて株価の変わらずの日が無ければ0となる。「3点チャージ投資法」ではVR[A]を用いているそうです。ググってみると、Pythonのテクニカル指標ライブラリ「Ta-lib(タリブ)」以外にも、「pyti(パイタイ)」「ta」「stockstats」などが見つかりました。脱talibで自作しようとしている人もいました。一応、ボリュームレシオの実装らしいものが見つかりましたが、計算式が異なるので、やっぱり自作します。年頃から金融の現場で開発され始めたデータツールです。そのため、金融・経済データの実践的な分析ツールとして強力な機能をいくつも備えています。株価上昇率を求めるには、前日の終値との差分が必要です。差分にはpandasのdiff()を使います。6)]})print(df)print(df['a'].diff())デフォルトでは1行前の値との差分が算出されます。float64また、窓関数(ある有限区間以外で0となる関数)には、pandasのrolling()を使います。作成したボリュームレシオ関数は次のとおりです。vrProtraと同じ結果となったので、正しく動いているかと思います。Pythonによる3点チャージの実装方法こちらは簡単です。3日経過これを引数なしのLightGBMで解いてみます。!"デフォルトのパラメータで訓練データの精度(Accuracy)がほぼ100%で分類できてしまう状態になりました。過学習を起こしている状態で、検証データ・テストデータに対しては精度が57%となってしまいました。「feature_importances_」のデータ結果です。決定木が重要な特徴と判断したデータの上位にボリュームレシオが入っています。この特徴量は作ってよかった。因みに三点ジャージ法は、トヨタのような優良株ではそもそもシグナルが出ていないようなので役に立っていません。バックテスト結果Protraを使ったバックテスト結果は次のようになりました。1998/01/05~2020/01/24における成績です。トヨタ1998/01/05~2020/01/24における成績です。-7.58%利益曲線は次の通りです。すごい結果になりました!!!勝率8割近くでプロフィットファクターが7近くあります。年利は30%を超えています。「聖杯」が見つかりました!が、このストラテジーは今までの経験上、未来データを使った「呂布」なのか???が・・・・未来データが入る実装ミスはありませんでした。このストラテジーが何者なのか簡単に考察してみます。この学習モデルの構築には「2006/02/20~2020/01/24」までの結果を利用しています。このため2000年~2006年の株価は学習モデルが一切知らない相場となります。その部分だけ見てみます。-5.19%負ける年もあり勝率は高くありません。確かに利益曲線も寝ています。ようするに過学習(オーバフィッティング)が発生しています!これがオーバーフィッティングというヤツかぁ・・・・・。過去のデータから未来は予測できない・・・・という事なのか?厄介な問題にぶつかりました・・・。作成された「model.pickle」は150MB近くあります。今までは40MB程度でしたがサイズが大きいです・・・・。本気で機械学習で学習モデルを作ってシステムトレードするならハードディスクの増設が必要そうです。まとめ試そうと思っているストラテジーは大量にあります。その前にオーバーフィッティングをどうにかしないとリアルでは勝てなそうです。与える特徴量が多すぎるのか・・・。Protraの結果を見る限り期待通りにストラテジーが作られている事が分かったので、安心しました。「Protra+機械学習」の手法は、(オーバーフィッティングはしますが)思った以上に高い年利のストラテジーが作成できるようです。引数はskiprows=2000(2006/02/20~現在まで)、学習済データで予測させるときはskiprows=0に変更して出力しました。「nehori」という下に「tilib.py」というファイルを置きます。df['vr'])そして、上記ライブラリを読み込んで特徴量を作成します。なにやら一通のメールが届いてました。...新年の挨拶・昨年の振り返りと2020年の目標9年休なのに何も予定を立てず帰郷もぜず、いつの間にか新年を迎えてしまいました。...斉藤正章氏の手法の有効性検証(protraシストレ)Protraに慣れてないので、まだまだ巷のサンプルソースコードを入手したい。...機械学習を使った株価予測(pandas-profiling、create_tree_digraphで可視化する)株式投資は、予測するものではなくルールに沿って選ぶものです。...大学院生活は大変(授業と研究の両立&論文作成&後輩フォロー&輪講)ネタが無かったので、日記の更新をサボってました...。近況報告をお伝えします。...機械学習で株価予測(Backtraderでバックテスト調査)中国・武漢で発生した「新型コロナウイルス(新型肺炎)」が、世界に拡散中です。...機械学習を使った株価予測(pandas-profiling、create_tree_digraphで可視化する)株式投資は、予測するものではなくルールに沿って選ぶものです。...機械学習を使った株価予測(ファンダメンタルズ指標導入でAUC=0.70超え)株式投資は、予測するものではなくルールに沿って選ぶものです。...機械学習を使った株価予測(関連論文・サイトを調査してみる)株式投資は、予測するものではなくルールに沿って選ぶものです。