MATLABで競艇の解析を始めよう(とりあえずデータの取得まで)


競艇の解析をやってみよう。

競艇って6艇しかいないし、データは無料で大量にあるし、夏は涼しそうだし、うまくいけば儲かるし(失敗したら損するし・・・)、競馬とか競輪よりも解析にちょうどいい題材な気がする。
あとは MATLAB を使えばデータの統計解析とか可視化とか、いろんな学習まで全部できちゃいそうな気がするので、勉強ついでにやってみよう。

おっと、競艇って古い呼び方ですね。今はボートレースですね。

まずはダウンロード

まずはデータを取得しないと始まらないので、ボートレースのサイトから力技で取ってこよう。

2019年8月1日だとすると、出走表がここにあって、
http://www1.mbrace.or.jp/od2/B/201908/b190801.lzh

結果がここにあるみたい。
http://www1.mbrace.or.jp/od2/K/201908/k190801.lzh

MATLABで取る場合、こんな感じでブラウザー頼りの web コマンドを実行すればいいですね。


url = "http://www1.mbrace.or.jp/od2/K/201908/k190801.lzh";
web(url,'-browser')

あとは、ルールは /B/YYYYmm/bYYmmDD.lzh なので、既に同じファイルがあったら if exist --- で飛ばしたりしてループさせてしまおう。とりあえず3日分くらい。

since = "20190801";
to = "20190803";
for ix = datenum(since,'yyyymmdd'):datenum(to,'yyyymmdd')
    if exist(['K',datestr(ix,'yymmdd'),'.TXT']) ~= 2
        url = "http://www1.mbrace.or.jp/od2/K/"+datestr(ix,'yyyymm')+"/k"+datestr(ix,'yymmdd')+".lzh";
        web(url,'-browser')
    end
    if exist(['B',datestr(ix,'yymmdd'),'.TXT']) ~= 2
        url = "http://www1.mbrace.or.jp/od2/B/"+datestr(ix,'yyyymm')+"/b"+datestr(ix,'yymmdd')+".lzh";
        web(url,'-browser')
    end
end

ブラウザーがピカピカするけど大丈夫そう!

LZH を展開しよう

次の悩みは lzh っていう拡張子ですが、MATLABだとデフォルトで展開できない圧縮形式なので、Lhaplus とかインストールしておきましょう。デフォルトだと C:\Program Files (x86)\Lhaplus\Lhaplus.exe にインストールされるので、dos コマンドで実行しよう。

ウィンドウズの downloads フォルダーに入ってれば以下のコマンドで解凍して、適当な作業フォルダーにコピー。(例えば C:\work\boat )

%% ダウンロードしたもの(lzh)を C:\work\boat に展開
dl = [getenv('USERPROFILE'),'\Downloads\'];
for ix = datenum(since,'yyyymmdd'):datenum(to,'yyyymmdd')
    if exist(['K',datestr(ix,'yymmdd'),'.TXT']) ~= 2
        zipname = ['k',datestr(ix,'yymmdd'),'.lzh'];
        dos(['"C:\Program Files (x86)\Lhaplus\Lhaplus.exe" /o:C:\work\boat ',dl,zipname,' &']);
    end
    if exist(['B',datestr(ix,'yymmdd'),'.TXT']) ~= 2
        zipname = ['b',datestr(ix,'yymmdd'),'.lzh'];
        dos(['"C:\Program Files (x86)\Lhaplus\Lhaplus.exe" /o:C:\work\boat ',dl,zipname,' &']);
    end
end

LZH の展開のたびに確認ウィンドウとか音とかが出る場合、出ないように Lhaplus の設定をしておくといいですね。うまくいったら数ヶ月分くらいダウンロードしてみよう。

とりあえずデータの取得までできました。

続きに興味のある人がいたら「いいね」で教えてね。(いいね中毒)

→ 2番目の記事
→ 3番目の記事
→ 4番目の記事

を書いたよ。