#####過去実績方式#####
まずは前レースからの予想とデータ収集(L41list_hs.pl)
と、言うことで2010年は過去実績から本命、穴レースの予想プログラムを作ってみました(perl)。
まずはJRAから過去のレースデータを持ってきて分析するのですがさっぱりパターンが見えてきませんでした。
で、しょうがないから、自分で考えられるロジックで、本命パターンと穴パターンをとりあえずプログラム化してみました。。
考えた処理フローは以下。データも解析できるように工夫した。
- まずはJRAのホームページから各レースの出馬表をダウンロードする(htmlでセーブ)
- これには各馬の前4レースの着順と、レース賞金が記載されているのでこのデータをキーワードを使って抜き出す。
- 過去の順位を今回のレース賞金に基づいた順位に正規化(正規化順位=過去の順位*今回レース賞金/過去のレース賞金)する。
- 過去レースの平均で順位を予想。(A:純粋平均予想)
- 過去4レースでデータが無い部分はその他の平均で補正して、その平均で順位を予想(AB:平均予想)
- 若い馬は成長することを考えて過去のレースで成績が上向き(過去レースの前半後半の順位で判断)な場合は最小自乗法で順位を予測。(UB:成長馬優先予想)
- 馬は生きものなので過去のレースに調子の悪い場合があるとして、過去のレースでもっとも順位の悪い順位を
他の順位の平均とし補正をして、その平均で順位を予想(AK:最低順位補正平均予想)。
過去のレースでまぐれもあり得るがほとんど無いと判断しそのパターンはださなかった。
- 同様に若い馬で上向きな場合は補正したデータで最小自乗法で順位を予測(UK:最低順位補正・成長馬優先予想)
- さらに補正したデータで条件無で最小自乗法で順位を予測(MK:最低順位補正最小自乗法予想)
- そしてUB,UK,MKでA,AB,AKに存在していない馬を削除して予想(exUB,exUK,exMK)
- 各予想順位パターンは前レースが1個しかない馬や、新馬の予想は外れるリスクが高いので各々、#とN 印を馬番の前に付加した。
- 計9個の予想パターンを作成。これを眺めて予想した。選択は感性でやってた(データ取りがメイン)。
- そして結果を調べて、どの方法が良いか決める予定であった。もしくはヒントがみつかればよいと思っていた。
過去レースの平均、最高、最低順位から算出(L51list_hs.pl)
このバージョンではデータをとるために、レース結果もプログラムで出てくるように変更して、
過去の4レース結果からの予想の方法を色々試し、予想と結果のデータ取りをして、グラフなんかに
落としてみるが、全く傾向がわからない〜。混沌とした時代なのだ。
とりあえず、最小自乗法とか最低順位補正とかの期待を考慮した方法を入れるからデータが利用できなくなると思い
各馬の実績である、平均と最高順位、最低順位での予想順位にした。ベットの基本は
穴狙いである各馬の最高順位パターンとし、順位パターンが賭け方にマッチした時にベットすることにした。
配当は大きいけれど当たらないのだ〜(@_@)
- JRAのホームページからダウンロードしてキーワードを抜き出し・正規化までは前バージョンと同じ。
- 過去4レースでデータが無い部分はその他の平均で補正して平均で順位を予想(ORG:平均予想)
- 過去4レースで最低順位での順位予想(MIN:最低順位予想)
- 過去4レースで最高順位での順位予想(MAX:最高順位予想)
- 最高順位予想で、ベットできそうなパターンになったら平均予想と最低順位予想を参考にしてベットした。
- ベットパターンは予想順位において、ある順位ブロックに馬が存在しない場合そこを切れ目として、
ベットパターンを決め、!!!マークを付加した。ブロックとは馬の予想順位が同じになった部分で、()部分のところである。
最初の「簡略オッズ方式」と同じ考え方です。
新馬(N)とセカンドランの馬(#)は変動が激しいのでこのパターン検出からは無視し、後で考慮すことにした。。
- ベットパターン
- (X,X)-().... :馬連
- (X,X,X)-().... :3連複
- (X)-(X)-().... :馬連/馬単
- (X,X)-(X)-().... :3連複/3連単2パターン(1着、2着入れ替え)
- (X)-(X,X)-().... :3連複/馬単2パターン(2着2通り)/3連単2パターン(2着、3着入れ替え)
- (X,X)-(X,X)-().... :3連複2パターン(3着2通り)
- (X)-(X)-(X)-().... :3連複/3連単
- (X)-(X)-(X,X)-().... :3連複2パターン(3着2通り)/3連単2パターン(3着2通り)
- (X)-(X)-(X)-(X)-().... :他の条件で賭けパターン決定
- (X,X)-(X)-(X)-().... :他の条件で賭けパターン決定
- (X)-(X,X)-(X)-().... :他の条件で賭けパターン決定
- (X,X,X)-(X)-().... :他の条件で賭けパターン決定
- (X)-(X,X,X)-().... :他の条件で賭けパターン決定
- (X,X,X,X)-().... :他の条件で賭けパターン決定
- 最高順位予想(MAX)で、ベットできそうなパターンになったら平均予想と最低順位予想を参考にしてベットした。
- レース終了後、JRAのホームページから払い戻し金一覧をダウンロードする(txtでセーブ)
- これには3着までの順位と各賞の払戻金が記載されているのでこのデータをキーワードを使って、順位と3連単の払戻金
を抜き出す。そして払戻金の額によって大穴(BIG)、穴(HOL)、小穴(TAGET)のタグを付加して本命と穴レースの分析をした。
いままでの要素を組み合わせ最適化(?)し、統合した過去実績統合予想方式(L56list_hs.pl)
で、こまかな改造を色々やったがいっこうに上手くいかないし、データに共通性が見えてこないのだ。
さらにプログラムは改造に改造を重ねたから、チョー読みづらくなってしまったのだ。(T_T) (T_T)
で、考えなおしてみた。でも、いままでの考えって証明はできないが間違ってはいないず。
現に人気順と大差ないし、時々は的中するし、入賞馬はたいてい候補にはいっている。間違ってはいないが、少しずれてるのかな?
「あっ!そうか!要因の組み合わせで結果がでてるんだ(^_^)」と言うことで、
いままでの考え(平均、最大値、最小値、最小二乗法、過去レースの空き補正、最低順位補正、最高順位補正)
から最適予想順序と穴狙い最適予想順位を出して、最適予想順位をベースに純粋平均予想と穴狙最適予想順位を考慮して
統合的に順位を予想した。
- JRAのホームページからダウンロード・すキーワード抜き出し・正規化までは前バージョンと同じ。
- 過去レースの平均で順位を予想。(ORG:純粋平均予想)
- 過去4レースで最低順位での順位予想(MIN:最低順位予想)
- 過去4レースで最高順位での順位予想(MAX:最高順位予想)
- 過去4レースでデータが無い部分はその他の平均で補正して、その平均で順位を予想(UPB-a:空き補正平均予想)
- 過去4レースでデータが無い部分はその他の平均で補正して最小二乗法で順位を予想(UPB-b:空き補正最小二乗法予想)
- 空きを補正した過去4レースでもっとも順位の悪い順位を他の順位の平均とし補正をして、その平均で順位を予想(UPK-a:最低順位補正平均予想)
- 空きを補正した過去4レースでもっとも順位の悪い順位を他の順位の平均とし補正をして最小二乗法で順位を予想(UPK-b:最低順位補正最小二乗法予想)
- 空きを補正した過去4レースでもっとも順位の良い順位を他の順位の平均とし補正をして、その平均で順位を予想(UPM-a:最高順位補正平均予想)
- 空きを補正した過去4レースでもっとも順位の良い順位を他の順位の平均とし補正をして最小二乗法で順位を予想(UPM-b:最高順位補正最小二乗法予想)
- 最適予想をする。(OPT)
- まずその馬のMIN−MAXで安定度合いをみる。
- 安定していたらORGを見て、安定して優秀な馬(MAX選択)、安定してダメな馬(MIN選択)、安定して普通な馬(ORG選択)とする。
- 不安定ならORGを見て、平均値がよければMAXを選択し、悪ければMINを選択する。
- 不安定で平均値が中間の値ならば、平均がMAXよりなら良い方向になるとしてUPK-bを選択し、MINよりならUPM-bを選択する。ただしMAX、MINの範囲内である(あまり大きな変動はさせない)。
- 安定でも不安定でもない普通の安定度であればUPB-bを選択する。ただしMAX、MINの範囲内である。
- 穴狙い最適予想をする(HOLL)。基本的に順位のふり幅を大きくする。
- まずその馬のMIN−MAXで安定度合いをみて、安定していたら基本はUPB-bを選択する。
ただし、その値がMAX、MINの間にありMAX側であればMAXを、MIN側であればMINを選択し、ふり幅を大きくする
- 不安定で、平均がMAX側なら良い方向になるとしてUPK-bを選択し、MIN側ならUPM-bを選択する。
- 安定でも不安定でもない普通の安定度であればUPB-bを選択する。
- OPTの予想において新馬(N)を除いて、4着の馬が属してるブロックの次のブロックまでの馬を候補にいれる。
- 候補が6頭以上いる場合はORG、又はHOLの予想において4着の馬が属してるブロックと次のブロック内までに存在しない馬は削除する
- それでも候補が5頭にならない場合はHOL→ORGの順で後ろのブロックにいる馬を削除する。
- 候補が3頭以下の場合はORG→HOLの順で前のブロックからブロックにいる馬でORGに存在しない馬を挿入する。
- ORG、OPT、HOLの予想で全て2着以内に居る馬は○を付加する。図の3つの参考データは上からORG,OPT,HOLです。
- ロジックとしてはいい感じだと思って作ったのだが、なかなか上手くいかないのだ〜やっぱ前レースからの予想では無理があるのか?(+_+)