2022年04月24日

新サーバ構築完了

今週は、若手に環境構築方法を細かく教えながら新サーバの構築を予定通り完了した。

Postgres12
PHP7.4
Python3.9
OpenJDK11/17
Tomcat9
Apache2.4
Maven3
Gitbucket

GitbucketはPostgreSQLを使うよう設定してもらった。
長らく社内のバージョン管理システムはSVNだったので時代遅れだったが、今後はこのGitbucketを使うことになる。
チーム開発グループを作って簡単なMavenのサンプルを入れた初期プロジェクトのリポジトリを作成し共有展開した。
※何故かMaven3がJDK17で動作せずJDK11をデフォルトJDKにした。

もう今年は新規案件を自分でやることはせず、教育の1年にしようと思う。
という訳で今週末は、教育用課題習作を作らせるための要件定義書をまとめることにする。

5月頭~5月半ばの課題
Java/JerSey/SpringFramework/PostgreSQL/MySQL/Javascript/HTMLを使ったMavenプロジェクト

5月半ば〜6月頭
PHP/Laravel/PostgreSQL/MySQL/Javascript/HTMLを使ったPHPプロジェクト

6月〜
Python/PostgreSQL/MySQLを使ったPythonプロジェクト

取り合えずこれだけ教えておけばある程度の案件はこなせるので良かろう。
UI側とサーバ側でそれぞれ課題を作る。サーバ側はAPIで実装しJSONを介してUI側に渡す感じ。

あとは競馬AI。

取り合えずは新サーバへのPostgreSQL/MongoDB移行。

既存の学習モデルは去年の8月1日に作成したもので対象データも2011年〜2019年末までのもので相当古いが、このままでもちゃんと成果が出ているし新しいモデルが今以上の回収率を出せるとも限らないので、
既存の自動購入システムは、このままで継続しておいて、新サーバでは新しい特徴量テーブルの設計と新しい学習モデルの生成と検証/シミュレーションをおこなっていこうと思う。

まだ色々と追加したい特徴量もあるし、今のモデルではダメな岩手金沢高知あたりのグループ再編成も試したい。
そもそもの学習データも2020年末か2021年末まで量を増やしてみたい。
これまでの経過からクロスバリデーションは全く不要という判断なのでわざわざ1年分ロスさせることもあるまい。


posted by ギャンブルエンジニア at 00:18| Comment(0) | 開発めも | このブログの読者になる | 更新情報をチェックする

2022年04月17日

新サーバセットアップ

誰も使わなくなったデスクトップPCが社内に転がっていたので、
主DBサーバにして現行の環境を移行することにした。

5-6年前のPCなのでスペックは古いが社内サーバ用途には充分であろう。

CPU
Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
GPU
GeForce GTX 1060 6GB
メモリ
32GB

1TBのHDDを買ってきて、Ubuntu 20.04.1 LTSをインストールした。
来週から教育も兼ねて環境整備を若いのに教えながらやらせてみることにする。

■新サーバへの導入予定
Postgres12か13
MongoDB5.05
PHP7.4
Python3.9
JDK(OpenJDK17あたり?)
Tomcat9
Apache2.4
Maven3
SVN
Gitbucket

■現在稼働中の予想システム
予想システム
 CentOS6/JDK1.8/Tomcat7/Apache2.2/PostgreSQL9.4
レースデータ更新バッチ+AI予測スクリプト+自動購入スクリプト+自動投稿スクリプト
 Jetson/Ubuntu18.04/PHP7.2/Python3.8
レースデータ取得アプリ+MongoDB5.05
 Windows10

PostgreSQLのバージョン移行がメインだが、
現在バラバラの仮運用体制なので、新サーバ1つにまとめたい。
※レースデータ取得アプリのみWindowsで稼働。

ついでにLightGBMをCUDA=1にしてビルドしてGTX1060で機械学習速度がどう変化するかも測定したい。
新サーバへの移行が完了したら、現行DBサーバのPostgresも更新してスレーブとして使うことにする。
Jetsonもバッチサーバとしてはバックアップリザーブとしておき、別途画像動画系AIのテスト用途に使うことにする。


posted by ギャンブルエンジニア at 02:03| Comment(0) | 開発めも | このブログの読者になる | 更新情報をチェックする

2022年04月10日

1Rあたりの投資金額の最適化

新しい投資配分方式を導入したのだが、
期待配当をバンクロール×N%で適当な決め打ちで算出しているのと、
回収率から算出する金額もベース金額を100円としているので
単利モードの1Rあたりの平均投資金額がバンクロールの0.5%~1%程度となっていて少ない気がする。

複利における最適な投資金額の割合はケリー基準から求めるのが良いと思われるので試算してみた。

ケリー基準公式
f = (回収率 - 1) ÷ (オッズ - 1)

1Rを一つの馬券と考えると、1Rのオッズは回収率÷勝率と考えられるので
f = (回収率 - 1) ÷ ((回収率÷勝率) - 1)

この式に複利モードの勝率と回収率を当てはめてみる。

中央競馬
(1.07 - 1.0) / ((1.07 / 0.3409) - 1.0) ≒ 0.0327 = 3.27%
地方@
(1.052 - 1.0) / ((1.052 / 0.2369) - 1.0) ≒ 0.0151 = 1.51%
兵庫A
(1.075 - 1.0) / ((1.075 / 0.3099) - 1.0) ≒ 0.0304 = 3.04%
南関B
(1.261 - 1.0) / ((1.261 / 0.2823) - 1.0) ≒ 0.0753 = 7.53%
岩手C
(1.177 - 1.0) / ((1.177 / 0.2206) - 1.0) ≒ 0.0408 = 4.08%
帯広D
(1.162 - 1.0) / ((1.162 / 0.3115) - 1.0) ≒ 0.0593 = 5.93%

モデルによってまちまちだが、やはり全体的に投資金額を増やすのが良さそうである。
増やす率はモデルによって切り替えることにする。

中央競馬の現在の勝率だとハマった時で軽く30Rくらいは連続負けもありうるので
バンクロールの3.27%だとちょっと危ない。
※実際の勝率はシミュほど良くないしもっと危ないだろう。
※負けるほど投資金額は減っていくので30連敗しても全部無くなるわけではない。
2%あたりで調整して色々シミュレーションをしてみよう。





posted by ギャンブルエンジニア at 12:03| Comment(0) | 開発めも | このブログの読者になる | 更新情報をチェックする

2022年04月07日

新投資配分方式の導入

某掲示板の情報に触発されて、新しい投資配分方式を2日間掛けて実装&シミュレーションしてみた。

これまでの自動購入では回収率による傾斜配分のみだったが、
バンクロール×N%を期待配当として均等配当配分の要素を取り入れてみた。
期待配当は候補馬のパターンによってもレート変動させるが基本は均等配当配分計算の流れ。
この新ルーチンの算出した投資金額と、これまでの傾斜配分の金額を按分して投資金額を決定するロジックだ。

2021年8月1日から2022年4月6日までのフォワードテスト結果で購入シミュレーションしてみる。
※現在使用している予測モデルの最終更新が2021年8月1日で、以降は予測モデル変更をおこなっていない。

三連単の配分をちゃんと見たかったのでスタート時のバンクロールは1000万円にしてシミュレーション。
※初期バンクロールが少ないと期待配当が少なくて三連単のオッズが高いところは100円しか賭けないのでバンクロール多めのシミュが良い。

■購入シミュレーション結果
モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
中央競馬均等配当改+傾斜単利2276122,070148,14226,07215,416,120▲ 247,70034.09%121.3%693.3%
複利22762,398,5902,567,827169,237180,950,000▲10,428,30034.09%107.0%3951.8%

モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
地方競馬@
門別/名古屋/金沢/高知/佐賀
均等配当改+傾斜単利296788,362105,56717,2059,650,550▲ 194,40023.66%119.4%610.4%
複利29671,197,6301,260,57062,94087,597,600▲ 7,270,70023.69%105.2%1967.4%

モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
兵庫競馬A
園田/姫路
均等配当改+傾斜単利118199,396115,44916,0536,000,820▲ 221,60031.07%116.1%289.5%
複利1181249,333268,21818,88513,251,950▲ 1,163,50030.99%107.5%323.0%

モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
南関競馬B
大井/浦和/船橋/川崎
均等配当改+傾斜単利2008119,808157,72537,91736,252,460▲ 353,70028.18%131.6%861.3%
複利2008353,993446,41892,42559,304,440▲ 4,489,94028.23%126.1%1955.9%

モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
岩手競馬C
盛岡/水沢
均等配当改+傾斜単利80259,99970,28610,2873,115,140▲ 179,50022.06%117.1%182.5%
複利80256,14966,1259,9763,903,560▲ 242,10022.06%117.7%180.0%

モデルタイプ配分方式運用モード対象レース1R平均投資1R平均回収1R平均損益1R最大利益1R最大損失1R勝率1R回収率全期間回収率
帯広ばんえいD均等配当改+傾斜単利1207104,179137,38333,20413,684,910▲ 282,10031.31%131.8%500.7%
複利1207393,541457,30063,75975,478,060▲ 2,539,30031.15%116.2%869.5%

■結果総括
中央競馬/地方競馬@/南関競馬B/帯広ばんえいDについては、うまく複利の発火点に到達している。
兵庫競馬Aと岩手競馬Cは未達。レース数が少ない上に成績も悪いのであまり買わないほうが良いのかもしれない。

地方@南関B帯広Dは複利発火しているが、地方競馬は売上が小さいので(特に帯広の売上が少ないし南関でも枠連枠単売上は少ない)、この金額だと天井コツンする気がする。実際はここまでの金額を賭けられることは無いと思う。まだ券種別票数による投資金額の上限制限は実装していないのでそろそろこの機能を実装してから再度シミュレーションするほうが良い。

馬券フィルターは過去結果で最適化しているので、未来の実戦ではここまでのパフォーマンスはない。当然ながら単利モードでの1Rあたりの平均回収率は実戦ではこれより下がる想定だが、仮に10%低下したとしてもまだ耐えられる。

地方@南関B岩手Cはレース勝率が少し悪い。できれば3割は勝ちたいところだが地方@は金沢高知門別あたりがあまり点数を買えないので勝率を上げにくいと思う。岩手は元から諦めている。
均等配分方式で算出した側の投資金額の按分率を増やすことで、勝率を上げることはできる。
※ただし回収率は落ちるのでバランスが重要。

上記結果を踏まえて
これまで均等配当方式の投資シミュレーションでは回収率が大幅に下がるので全く使えなかったが、今回の新方式でかなり改善されたので、4月7日から新投資配分方式での試験運用に入ることにする。
※試験運用での開始バンクロール金額は30万~50万くらいにして暫くの期間デバッグする。
※兵庫Aと岩手Cは、バンクロール金額1/3程度にして様子見する。多分負けると思う。



posted by ギャンブルエンジニア at 07:07| Comment(0) | 競馬AI開発資料 | このブログの読者になる | 更新情報をチェックする

2022年03月27日

中央競馬AI予測記事について

レース予測・投資運用結果の記事については

2022年3月26日から
『競馬AI育成ブログ』にて配信します。
www.ai-keibablog.com.jpg

配信対象レースは下記となります。
※正式サービスが始まるまでは当面の間、配信する予定です。

中央競馬 全レース
地方競馬 重賞および最終3レース

同時に出走10分前時点の購入対象馬の情報は下記Twitterアカウントから配信します。

広報担当HarukaのTwitter

Twitterフォローよろしくお願いいたします。

※注意事項
AI予測と配信タイミングは出走約10分前です。
馬柱は、単勝的中率の降順でソートしています。
AI予測に表示されている的中率(単勝/複勝)は馬券候補を絞り込むための穴馬バイアスが掛かっている数字なので実際に予想される着率とは異なります。
予想印は、単勝的中率の高いものから自動的に表示しているだけなので、印順通りに購入しているわけではありません。
実際の自動購入では出走5分前予測を使用していますので10分前予測とは対象馬が異なる場合があります。
馬券購入の判断は自己責任でお願いします。

posted by ギャンブルエンジニア at 10:43| Comment(0) | レース予想[中央競馬] | このブログの読者になる | 更新情報をチェックする