小さなデータグリッドの図形が、一本の直線でつながれ、右側に単独で立つ歯車の図形へと伸びている。

ベッティングボットとAPI:アカウントを止められない自動化のために

ボットは午前3時に動きます。あなたのアカウントは午前9時にもまだそこにあるべきです。Betfairはその二つの道のりの間に実際の線を引いていますが、それはフォームの多くのスレッドが説明する線とは違います。

ベッティングボットとは、マウスに指を置かずにベットを出したり管理したりするあらゆるスクリプトのことです。Betfair Exchangeでそれが許されるかどうかを決めるのは「ボット」という言葉ではなく「API」という言葉です。Betfairの規約は、アカウント保有者が一つずつ手動でベットを出す以外の自動化された手段によるベットを不審な行為として扱いますが、同じ条項はAPI経由のベットをそこからそのまま除外しており、APIを通じて出されたベットは明示的に対象外です。もう一つの規則がAPI利用者にも及びます。アカウントは個人用のままでなければならず、他人のために運営するサービスにしてはなりません。それより前の問題として、ロジックをDelayed keyの遅れたデータに対してテストし、リクエスト数、同時接続数、ログインについてのAPI自体の上限を踏まえて設計してください。キー自体の内容、それぞれの費用、そして四社のブローカーが自社のツールについて実際に述べていることは、以下にリンクするそれぞれ専用のページにまとめています。

この規則が実際に分けているもの

自動化は、本サイトが扱うプロのベッティング手法という、いくつかの手法が並ぶ中の一本の線にすぎませんが、ここでの規則は「シャープなベッターはソフトウェアを使う」よりもずっと具体的なので、専用のページを設けています。フォームの省略表現は「ボット」を一つのものとして扱います。ベットを出すソフトウェアです。Betfairの規約はもっと精密です。条項12.1.4は、不審な行為として扱う活動の一つに「アカウント保有者が一つずつベットを手動で出す以外の方法」によるベットを挙げており、これだけを読めば、これまでに書かれたすべてのスクリプトが引っかかってしまいます。しかしこれだけを読むものではありません。同じ条項には、疑いを残さないために、「Application Programming Interface(API)」経由で出されたベットは対象に含まれないという、条項自身の例外が設けられています。この二つの断片を組み合わせると、分け方は正確になります。通常のウェブサイトをクリックして進むスクリプトこそがこの条項の標的であり、APIに話しかけるスクリプトは、その条項自身が名指しする例外なのです。

余談ですが、この一文の中で「ボット」という言葉はかなりの仕事をしているものの、その条項自体にこの言葉は一度も出てきません。Betfairの弁護士が書いたのは代わりに「アカウント保有者が一つずつベットを手動で出す以外の方法」という表現で、同じことを言うにしても長い言い方ですが、誤って引用するのはずっと難しい一文です。ともあれ、あなたにとって何を意味するかの話に戻ります。

つまりこの規則は「ボットは禁止」でも「ボットは問題ない」でもありません。もっと狭いものです。公式のものではないスクリプトが、とても速い一組の手のようにウェブサイトを操作する場合は不審な行為についての条項の中に入り、同じロジックが公式のAPIにつながれている場合はその例外の中に入ります。手でラダーをトレードする人と、APIを通じて同じことをするスクリプトは、同じ文書によって異なる扱いを受けますが、その違いは背後にある戦略ではなく、通る扉の違いです。

個人利用の境界線と、ボットがそれを越えてしまう場所

もう一つの条項が同じくらい重要ですが、読まれる機会はずっと少ないものです。Betfairは「(合理的に行動した上で)お客様のアカウントの利用が『business usage』に当たると疑う場合」、その利用を禁止行為として扱うことができ、この「business usage」は意図的に広く定義されています。「business usageには、ベッティング事業者による利用、またベッティング事業者にデータやサービスを提供する個人や組織による利用が含まれる」(条項11.2.13)。これは上で説明したAPIの例外とは何の関係もありません。スクリプトが条項12.1.4の例外の中にきちんと収まっていても、実際には他人のためにベットを運用していたり、サブスクリプションサービスに情報を流していたり、他のベッターに販売される製品の裏側として動いていたりすれば、条項11.2.13には違反することになります。

この二つの条項は、それぞれ違う問いに答えていると考えるのがよいでしょう。条項12.1.4が問うのはベットがどう出されたかです。条項11.2.13が問うのは、それが本当に誰のお金で誰の判断だったかです。一人の本人のアカウントだけで動くボットは、二つ目の問いを当然のようにクリアします。複数人の賭け金を管理したり、自分の判断を販売したりするボットは、ベットを出すのにどの扉を使おうと、この問いをクリアしません。

APIへのすべての経路は、本人確認済みのアカウントから始まります。Betfairの開発者向けヘルプははっきりと、Betfairアカウントがなければ「ライセンス手続きを進めることはまったくできない」と述べており、本人確認が実際に求めるものはどのキーよりも先に来ます。商業向けの自動化には、予算の大きい個人用キーではなく、Betfairの事業部門を通じた別の専用の経路があります。

APIは扉です。ウェブサイト上のスクリプトは扉ではありません。

Live keyに資金を入れる前にテストすべきこと

ボットを作る人は誰でも、ベットを出す段階まで一気に進みたがります。正直な順序はその逆です。有料のキーや本気のバンクロールを近づける前に、意図的にリアルタイムより遅れたデータに対してロジックを証明し、会場が許す最小の賭け金で試すことです。

Betfair Delayed key:価格データがどれだけ古くなりうるか

出典:Betfairの開発者向けドキュメント、FACTS-betfair.md第6節。

グラフのデータ
項目値
最速のスナップショット1
最も遅いスナップショット180

この幅、最良で1秒、最悪で3分というのは、無視していい誤差ではありません。スクリプトが最後に見て「妥当」と判断した価格は、実際に動くまでの間にそこから大きく離れてしまっている可能性があり、それを和らげるサンドボックスもありません。Betfair自身のドキュメントは、実際の資金を使わずに誰でも試せるテスト用の環境は存在しないと明言しています。Delayed keyが出すベットはすべて、本物の結果を伴う本物のベットであり、だからこそ、この段階を進める唯一の正しい方法は、会場が許す最小の賭け金で行うことです。

仮定の話であり、計算のためだけにすべての数字を作り話にしています。あるスクリプトが2.10倍で止まっている価格を見て、それをbackすると決めたところ、ちょうどその瞬間にAPIが180秒前のスナップショットを返してきたとします。ゴール、レッドカード、出走取消は3分あれば起こり得るため、スクリプトがbackしていると思っている価格と、注文が届いた時点で実際に提示されている価格は、別の数字になっている可能性があります。どれほど巧妙なロジックを上流に積んでも、古い情報の上に組み立てられた判断は直せません。その上に乗せた戦略よりも先に、この遅れそのものをテストする価値があります。

会場側は全体の半分にすぎません。もう半分はボットが実際に反応するフィードで、薄い履歴の上に組み立てられたスクリプトは、どのキーで動かしても誤作動します。スクリプト自身が出す数字を信用する前に、計算機で手計算を確かめてください。そしてエクスチェンジの手数料は勝ちベットから必ず引かれることも忘れないでください。それがボットの純利益にどう影響するかは、戦略が紙の上で成功と判定される前に読む価値があります。

ベットスリップの上に並ぶ小さな機械式アームの列で、1本を除くすべてが動きの途中で止まっている。
ボットの大半は待っている時間です。発動する部分こそが、規則が気にする部分です。

スクリプトが前提として設計すべき上限

ここまでの話は自動化が許されるかどうかとは関係ありません。これはAPI自体がスクリプトの振る舞いに課す上限についての話で、推測に任せるのではなく、明確な数字で示されています。スクリプトがまだ構想段階にあるときに最も重要なのはそのうちの四つで、上で説明したDelayed key自体の遅延の幅と同じく、Betfairが変更できる数字です。これらを前提に本番用のコードを設計する前に、現在の規約を確認してください。

  • マーケットデータのリクエストにかかる200ポイントの上限。コストはリクエストしたマーケットの数とデータの種類にわたって合計され、総額を超えるとデータではなくエラーが返ってきます。
  • 注文やポジションの呼び出しにかかる同時3リクエストの上限。現在の注文、損益、決済済みの注文を、前の呼び出しがまだ処理中のうちに4回目以上同時に確認しようとすると、キューに入れられるのではなく拒否されます。
  • 注文の発注、取消、更新、差し替えにかかる1秒あたり1,000命令の上限。これは単独のスクリプトではなく、開いているすべての接続をまたいだアカウント全体に適用されます。
  • ログイン失敗が重なった後の20分間のロックアウト。それ以前の失敗の原因が何であれ、その間はさらなるログインの試みがすべて自動的に拒否されます。

もう一つの仮定の話で、実際に人をひっかけているものです。ログイン処理にバグがあるスクリプトがセッションの更新に間に合わず、間隔を空けずに狭いループで再試行を続けてしまうとします。20分はサッカーの前半とだいたい同じ長さです。キックオフの時点でロックアウトを引き起こしてしまえば、スクリプトは拾えた分より多くの試合を見逃します。対処法はこの話よりずっと地味です。セッションを保持し、ログイン失敗はすぐに再試行する理由ではなく、止まる理由として扱うことです。

ブローカー自身の規約がもう一段加えるところ

ここまでの内容はすべてBetfair自身の規則集であり、本人名義で直接持つBetfairアカウントにしか適用されません。ブローカーのエクスチェンジ用ツールは別の製品で、Betfairではなくブローカーと契約して開くものなので、BetfairのこれらのAPI条項がそこへ自動的に及ぶわけではありません。代わりに重要なのは各ブローカー自身の規約で、スクリプトについて全社が同じことを言っているわけではありません。独自のAPIを公開しているところもあれば、自動化されたアクセスを完全に禁じているところもあります。ブローカーのスクレイピング禁止条項は、尊重すべき独自のハウスルールとして扱い、変わったときには報告するものであって、回避する対象として扱ってはいけません。各ブローカーがボットについて実際に述べていることがブローカーごとの詳細をキーの費用とともに扱っているので、このページでは繰り返しません。

スクリプトを作って保守することが実際にやりたい計画でないなら、ブローカー側がこの一部をすでにパッケージ化しています。代わりにブローカー組み込みの自動化が、コードを書かずに最初から用意されているものを扱っています。条項12.1.4のもとで不審な活動として旗を立てられたアカウントは、自動化されていようがいまいが、静かに見過ごされるわけでもありません。アカウント制限が実際にどう見えるかがその側面を扱っています。

フォームの要約ではなく、使う予定のブローカー自身の現在の規約を読む前には、何も作らないほうがよいでしょう。四社の規約を並べて比較したページが、自動化が歓迎される場所、何も触れられていない場所、完全に禁じられている場所を見る最も速い方法です。

よくある質問

Betfair Exchangeでベッティングボットを使うのは規約違反ですか。

自動的にそうなるわけではありません。Betfairの規約は、アカウント保有者が一つずつ手動でベットを出す以外の自動化された手段によるベットを不審な行為として扱いますが、同じ条項の中で、公式API経由で出されたベットは明示的に除外されています。APIを通じて動くスクリプトはその例外に収まりますが、通常のウェブサイトをとても速い手のように操作するスクリプトは収まりません。

ベッティングボットを他人のために、あるいは事業として走らせることはできますか。

それは別の境界線を越えてしまいます。Betfairは、その利用がbusiness usageに当たると合理的に疑う場合、アカウントを禁止行為として扱うことができ、business usageにはベッティング事業者による利用や、事業者にデータやサービスを提供する人による利用が含まれると定義されています。個人用アカウントは、自動化されていようがいまいが、保有者本人のベッティングのためのものです。

ベッティングボットとBetfair APIの実際の違いは何ですか。

「ボット」はソフトウェアを指す略称であり、APIはBetfairが自動化されたアクセスのために作った、特定の、認められた経路です。規約はソフトウェアに貼られたラベルで判断するのではなく、どの経路でベットが出されたかだけで判断します。

ベッティングボットは実際の資金を危険にさらさずにテストできますか。

無料の開発用オプションであるDelayed keyではできません。Betfairは、実際の資金を使わずに誰でも試せるテスト環境は存在しないと述べており、そこで出されるベットはすべて本物の結果を伴う本物のベットです。ロジックを証明している間は最小の賭け金に留めておくのが最善です。

ベッティングボットは、APIに制限をかけられるまでどれくらいの速さで注文を出せますか。

Betfairが定める上限は、1回のリクエストがリクエストできるマーケットデータの量に対する200ポイントの上限、注文とポジションの呼び出しに対する同時3リクエストの上限、そしてアカウント全体で1秒あたり1,000の注文命令の上限です。ログイン失敗が重なると、さらに20分間のロックアウトが加わります。本番用のコードでこれらに依拠する前に、現在のドキュメントを確認してください。

本サイトが扱うスポーツベッティングのブローカーは、ベッティングボットを認めていますか。

ブローカーによって異なり、このページでは詳細を繰り返しません。各ブローカーがAPIと自動化について自社の立場を述べているページが、Betfairのキーの費用と並べてブローカーごとの詳細を扱っています。