続・競馬であそぶ 2

 ブッシュも、ようやくイラク開戦の非を認めた。当然だ。




7. 発走時刻・コースの変更

昨日の中京競馬場は降雪のため、発走時刻を繰り下げ、コースを変更するなどで対応。
結局、9〜12Rは中止となりました。
kbsTk.pl や kb_out.pl ではこうした状況を(単にサボって)想定していなかったので、
これについて簡単にメモしておきます。

発走時刻の変更は速報開催情報のID → TC
コース変更は速報開催情報のID → CC
で提供されています。
kbsTk の場合、778行目近辺の以下の部分です。

        if( /^TC/ ) {   ; }
        if( /^CC/ ) {   ; }

以下の通り書き換えてください。
それぞれの変数には前の値が入っていますが、ここで置き換わるわけです。

        if( /^TC/ ) {       # 発走時刻変更 $hG $hF
            $hG = substr( $_, 35, 2 ) ;
            $hF = substr( $_, 37, 2 ) ; 
        }
        if( /^CC/ ) {       # コース変更
            $ky = substr( $_, 35, 4 ) ;
            $tr = substr( $_, 39, 2 ) ; 
        }

レースの中止情報は、各オッズ情報と速報レース情報で伝えられます。
ここでは、速報レース情報のレース詳細ID RA で処理します。
処理というより、ただ[中止」の表示をするだけですが。

上で直した場所から12、3行目辺りに以下があります。
青の行を追加してください。

        if( /^RA/ ) {
#           my $tenko = substr( $_, 887, 1 ) ;      # とりあえず使っていないが、
            $bbjt = $tr < 23 ? substr( $_, 888, 1 ) : substr( $_, 889, 1 ) ;
            $pays = "\t\t☆☆☆ このレースは中止となっています。☆☆☆ \n"
                if substr( $_, 2, 1 ) == 9 ;
        }

簡単なので、わざわざ項を設けることはなかったかもしれませんが、念のため。
この冬は思い切りの寒波なので、早めに手当てを、、



8. 馬場と血統

競馬場にはそれぞれ特徴があります。
ドコで走らせるかは「相手関係や適性、ローテーションを考えて」 調教師の
決めることです。

いちばん考えていないのは、馬券を買う人ではない でしょうか。

血統について調べようかと思い始めたのは、ちょっとしたキッカケで kbsTk
の出力に父、母、母の父を表示するようになってからです。前々回。

なぜか上の条件に行くほど同じような名前が増えるような気がして、それと
例えば、京都の1800と2000のように距離が近くても性格の異なるコースで、
どのくらい違ってくるのかな?という程度の興味が最初です。

いろいろデータを出してみると、サンデーサイレンス産駒 がドコにでも顔を
出していて、安定した成績を残しているので、これを基準にすれば面白いと
いうことが分かります。今がチャンス

複数の種牡馬を特定して、戦績で比較するのが多分いちばん簡単で正確。
戦績から逆に、各競馬場のコースを分類してみるのもアリかなと思っている。
無駄な作業である可能性は高いが、ヒマなときに。

それで少しでも血統での能書きを言えるようになれば、時間つぶしに相手を
煙に巻くことも出来るようになるし、あそびの種としてはマァマァ。

ただ能力なんてものは個体差があるので、馬券検討では補強データとしてし
か意味がない。
それに、3代4代遡ってどうこう言うのは気がすすまない。

ということで、TARGET で出力する検証用データのフォーマット(案)
ファイル名は 場コード、芝ダ( T or D )、距離の順にして
例えば、中山ダート1200m なら 6D1200.txt

◆種牡馬別集計
集計期間:011216 〜 051211
ソート:複勝率順
レース機会数 : 20 回以上
-------------------------------------------------------------------
順位種牡馬              着別度数            勝率 複勝率単回値複回値
-------------------------------------------------------------------
  1 Boston Harbor        5-  4-  2- 11/ 22  22.7% 50.0%    80    94
  2 フレンチデピュティ   6- 10-  4- 23/ 43  14.0% 46.5%    52   117
  3 ビコーペガサス       4-  2-  3- 12/ 21  19.0% 42.9%    69   246
  4 Cozzene              4-  4-  2- 14/ 24  16.7% 41.7%    42    62

このファイルを該当レースで読み込み、一致する種牡馬のデータとして
表示すれば、血統については少しは知識が増すだろうし、もしかすると
穴馬が見つかるかもしれない。

開催替わりごとに、レース場の各距離のデータを作る必要があるので
チョイト面倒だが、それほど時間はかからない。
長い種牡馬名の場合は標準の長さに手動で揃えること。

スクリプトは、血統表示の部分を書き換えることにして、とりあえず
競馬であそぶ 2 の 5. 血統の表示 を参照。

    if ( $rad == 2 ) {      # 血統情報
        my ( $titi, $haha, $jiji ) = @{ $ummast{ $ucd } } ;
        my $skline ;
        my ( $umna, $lnss ) = () ;
        my $tgtps = 'H:/DATA/TXT/BOX/' ;    # ファイルのある場所 ★
        my $dfile = "$tgtps$bbcd$tor_d$ky" . '.txt' ;
        my $ntiti = $titi ;
        $ntiti =~ s/ *$// ;
        $ntiti =~ s/ *$// ;
        my $jkj = 0 ;
        open BAS, $dfile if -e $dfile ;
        while ( <BAS> ) {
            chomp ;
            next if /^\-/ ;
            next unless /^\s*\d+/ ;
            my $lng = length ;
            my $khn = (split /\/|%/ )[1] ;
            my $lngr = length $khn ;
            my $lngs = $lng - ( 5 * $lngr ) - 4 ;
            my $umna = substr( $_, 4, $lngs ) ;
            $umna =~ s/(.*?)\s*$/$1/ ;
            $lngs += 4 ;
            $lnss = substr( $_, $lngs ) ;
            $lnss =~ s/^ +// ;
            substr( $lnss, -12 ) = '' ;
            if ( $ntiti eq $umna ) {
                $jkj++ ;
                last ;
            }
        }
        close BAS ;
        if ( $jkj ) {
            $skline = sprintf "%s(%2d)%-9s(父)%s: %32s\n",
                            $waku, $ub, $unami, $titi, $lnss ;
        } else {
            $skline ||= sprintf "%s(%2d)%-9s(父)%s (母)%s (母父)%s\n",
                            $waku, $ub, $unami, $titi, $haha, $jiji ;
        }
        push @skline, $skline ;
    }

マルチバイトの呪いに動揺しながら、、2005.12.30 再修正
多分コレでいいと思うのだが、まだ何処かにナニかがあるかもしれない。
表示例は以下の通り。12/18の中山8Rダート1200m。(6→14→8)


期間は36〜48ヶ月でいいと思う。レース機会数は 10(〜30)以上で適当に。
表示内容、その他は自分で決めれば良いことで、この方法を使えばいろいろ出来る。
ファイル名については日本語ではウマク行かなかったが、それ以上の追求はしなかった。

JV から提供されている種牡馬名では同一馬でも名前が(カナや英字で)統一されていない。
表示などを統一させるのは比較的簡単だが、たぶん TARGET のほうで何とかしてくれるん
じゃないかと期待しながら放置。どうしても必要ならここでもやるけど、、


同コース同距離について(記事追加 2005.12.29)

同コース同距離で内回り・外回りが実際に(過去4年)行われているのは
京都 1400、1600
新潟 2000
の3つだけです。

Index の 計算では以前には区別していたのですが、それほど大きな差もないだろう
ということで現在は区別していません。
種牡馬を抽出ということになるとその差異が気になるのでその部分だけ分けようと
思います。意味があるのかないのかは分かりません。

そこまでやるのなら、移動柵まで考慮すべきかも知れないけどサンプルが極端に少
なくなるのでソレはやめておきます。

具体的な方法は、
1. 芝ダートの部分を、S にしてファイルを作る。(例:京都外回り1600m 8S1600.txt)
2. スクリプト(血統情報取得部分)を一部書き換える。以下を参考にしてください。

        ##### 新潟・京都の外回り関連で
        my $cstd = $tor_d ;
        $bbcd == 4 and $ky == 2000 and $tr == 12 and $cstd = 'S' ;
        if ( $bbcd == 8 and $tr == 18 ) {
            $cstd = 'S' if $ky == 1400 ;
            $cstd = 'S' if $ky == 1600 ;
        }
        my $dfile = "$tgtps\/$bbcd$cstd$ky" . '.txt' ;

新年の京都金杯のコースを見るまで気がつきませんでした。

検索〜抽出ではボンヤリしていると正確なデータが出せません。
TARGET の場合、内外回りの分類で、内回りを出すときは当然、「他」を。


INDEXへ トップページへ 次へ