この夏、私を悩ませてきた問題についてオペレーションズ リサーチのスキルをテストしたいと思いました。なぜ私はオンラインの毎日のファンタジーベースボールが下手なのですか?
これを読んでいるなら、おそらく私が話していることを知っているでしょう。あなたはちょっとした調査をしたいと思っていて、チームを構築する方法に関するヒントを探してこのデータ サイエンスのブログ投稿にたどり着いたタイプだと思います。
ネタバレ注意: 悪い知らせがあります。
このブログでは、オンライン ファンタジー スポーツが難しい理由を説明します。これらのオンライン ゲーム プロバイダーによって作成された経済は効率的であり、システムを操作したい場合は多くの時間を費やす必要があることがわかります。
私が話していることに慣れていない場合は、この段落が役に立ちます。無名になるオンラインギャンブルのウェブサイトによると、オンラインファンタジースポーツ賭博は480億ドル規模の産業です.ファンタジー スポーツでは、その日にプレーしているプレーヤーを選び、そのプレーヤーが良い成績を収めてお金を稼げるかどうかを確認します。野球バージョンでは、野手 8 人と投手 2 人の名簿を選択します。彼らの給料はリーグのサラリーキャップを超えることはできません。その日のパフォーマンスによって、獲得するポイントが決まります。その日の最高の選手を選ぶだけで、何もする必要はありません。
シンプルですね。
私のファンタジー チーム、シカゴ レッド ライン ハスラーズに参加してください。はい、ごっこ遊びチームのロゴを作成しました。それはあなたにとって何ですか?
私たちはそれほど良くありません。私は 1 か月ほどプレイしていますが、私のチームはお金を失いました。多くはありません、私は一線を画していません。しかし、本業をやめることはできません。その理由を知りたいです。
なぜ私がこのゲームが苦手なのかを理解するために、私は自分の意思決定分析ツールキットに手を伸ばし、古くから実証済みの真のポートフォリオ分析ツールであるモンテカルロ シミュレーションを払いのけました。このシミュレーションは、人事決定のリスクを理解するのに役立ちます。具体的には、リーグのサラリー キャップを下回るという制約を考慮して、どの 10 人の選手を選ぶべきかを理解するのに役立ちます。
シミュレーションでは、2018 年からシミュレートしている試合の前日までのメジャー リーグ野球選手の実際の結果を使用します。私は、MLB.com の公開 API から、アクティブなすべてのメジャー リーガーの毎日の統計を取得することで、これを実現しています。 (注: データ エンジニアリングは、このブログの範囲外です。)
統計が収集されたら、シミュレートしたいファンタジー ゲームに参加する資格のあるプレイヤーを収集する必要があります。私は、デイリー ファンタジー スポーツに特化したオンライン スポーツ ギャンブルの運営者のパブリック API とやり取りすることで、それを実現しています。 (注: データ エンジニアリングは、このブログの範囲外です。)
データが収集され、適格なプレーヤーが特定されると、シミュレーションは、新しい制約の伝播によって変更された徹底的な検索を実行して、最高のパフォーマンスを発揮するラインナップを見つけることができます。または、ユーザーがラインナップを定義し、そのパフォーマンスを評価できます。
シミュレーションの目的は、投手 2 名と野手 8 名のラインナップによって行われる野球の試合の潜在的な結果をシミュレートすることです。これらの結果は、オンライン プロバイダーの毎日のファンタジー野球コンテストの古典的なルールを使用して採点されます。
利用可能なデータがあれば、実世界のデータから予想される結果を実験し、モデル化することができます。私たちの目標は、8 ポジションの選手 (野球の 8 つの守備ポジションすべてを表す) と 2 人のピッチャーのファンタジー スコアリングを特定することです。私たちのモデルは、野手と投手を個別に扱う必要があります。
ポジション プレーヤーの場合、得点はバッティングの結果に大きく偏ります。ポジション プレーヤーについては、打席のシミュレーションと、その打席の結果に対応する潜在的な結果に焦点を当てます。
私たちはオフェンスの結果をシミュレートすることでこれを達成し、プレーヤーがファンタジー ゲームに影響を与えることができる唯一のチャンスであるため、プレートの外観のみを気にします。シミュレーションのフローチャートは、プレートの外観とその潜在的な結果を特定するためにモデルがどのように進むかを示しています。
プレーヤーは各ゲームでさまざまなプレートの外観を持つことができ、それは主にラインナップに表示される順序に関連付けられています.ラインナップの後ろに位置するプレーヤーは、ラインナップのトップ (先頭) にいるプレーヤーよりも打席数が少ない傾向があります。私たちのモデルは、プレーヤーが歴史的に持っていた打席数にアクセスできますが、そのゲームに登場したラインナップの順序にはアクセスできません。これが、シミュレーションの精度に対する最初の制限です。次の試合の打順に基づく実際の予想ではなく、過去の結果に基づいて打席をモデル化します。
シミュレーションを実行するために、乱数発生器を使用して各ポジション プレーヤーの履歴打席の順序付けられたリストから打席を選択することにより、過去のゲームの打席を経験的にサンプリングします。
シミュレートされたゲームごとに、プレートの外観のこのランダムな選択が実行されます。この方法論は、各プレーヤーの期待される結果を一致させるために非常に正確です。
プレートの外観をシミュレートしたら、可能な結果を決定するためのモデルを特定し、ネストされた確率を活用して、プレーヤーが達成することが期待される結果を選択する必要があります。ネストされた、または連鎖された確率の最初のストップは、プレートの外観を攻撃的な結果に変えるプレーヤーの能力からサンプリングすることです。この比率をシミュレーションのプレートの外観に適用して、プレーヤーがそのゲームで達成した結果の数を特定できます。
結果の数が決定されると、プレイヤーが達成した過去の結果を使用して、そのプレイヤーができることをシミュレートできます。たとえば、ホームランをたくさん打ったことで知られるプレーヤーをシミュレートしている場合、彼の歴史的なパフォーマンスには多くのホームランが見られます。
シミュレーションは、プレイヤーが過去に達成した結果の分布から経験的にサンプリングします。次に、オンライン ファンタジー プロバイダーのスコア カードに従って結果を採点し、さらに処理して、その結果が発生したときのゲームの状態に基づいて追加の結果をシミュレートすることができます。
結果が発生したときのゲームの状態は、シミュレーションがモデル化しなければならない 3 つの最終結果にも影響します。これら 3 つの結果は、プレーヤーが結果を達成する前、最中、後に発生したイベントによって異なります。フローチャートの最後のレイヤーは、特定の結果が発生した場合にのみ可能になるラン、盗塁、打点を示しています。
さらに、これら 3 つのイベントの量も結果の影響を受けます。たとえば、プレーヤーがホームランを打った場合、少なくとも 1 打点と 1 ランが与えられます。その結果、盗塁を達成するチャンスもありません。入れ子になった確率の追加レイヤーでこれらすべてのルールをモデル化し、過去のプレーヤーのパフォーマンスに基づいて経験的にサンプリングして、プレーヤーが実行していたゲームの状態をシミュレートします。これらの結果の 1 つの例を以下に示します。モデリングの実行です。
すべての関数が定義されたので、十分なサンプル パフォーマンスを利用して、任意のプレーヤーに対して無制限のゲームをシミュレートできるようになりました。結果は非常にうまく機能します。これは、LA ドジャースのトレア ターナーをシミュレートした例です。
打者がシミュレーションで考慮されているため、モデルは投手の結果もシミュレートできなければなりません。ピッチャーのファンタジー スコアリングは、打席の結果と、彼らが直面する打者の結果のみを考慮します。
投手の場合、モデルは投球されたイニングをシミュレートすることから始まります。私自身の新しい調査によると、より多くのイニングを投球する投手はより良い成績を収める傾向があることが示唆されているため、これは重要です (ゲームが進むにつれて、ラン数、ヒット数が減り、勝率が向上するなど)。
この観察は直観的であり、マネージャーは別の投手を優先して、ゲームから良い外出をしている強い投手を引っ張る可能性が低いためです.
シミュレーションを実行するために、乱数発生器を使用して過去の試合から投球されたイニングを経験的にサンプリングし、各投手が投球した過去のイニングの順序付けられたリストから投球されたイニングを選択します。これを実現するコードは、バッターの打席機能のようなものです。シミュレートされたゲームごとに、このランダムな選択が実行されます。この方法論は、各ピッチャーの投球予想イニング数を一致させるのに非常に正確です。
投手の成績は投球回数で評価される。先ほども言いましたが、ピッチャーがどれだけゲームに深く入っているかによって、選手のパフォーマンスが異なるためです。
私たちが気にかけている結果は 3 つあります。それは、勝利数、失点数、安打数、四球数、三振数です。投球されたイニングに対応する投手データのサブセットを経験的にサンプリングすることで、これらの結果をシミュレートします。このプロセスにより、投球されたイニングの関数として投手のパフォーマンスを尊重することが保証されます。
最終結果は、各実行後のシミュレーション ステータスのチェックです。モデルは、シミュレートされた投手が 9 イニングを完投するたびに完投を記録します。シミュレートされた投手が 9 イニングを完投し、自責点がない場合はいつでも、ピッチャーに完封を認めます。最後に、モデルは、9 イニングすべてを完了し、安打を達成しなかったピッチャーがシミュレーションによって生成された場合、シミュレートされたピッチャーをノーヒットノーランと見なします。
すべての投球関数が定義されたので、十分なサンプル データを使用して、任意の投手の無制限のゲームをシミュレートできるようになりました。シミュレートされたデータは、モデル化した投手の実際の MLB パフォーマンスと非常によく似ています。
このプロジェクトの目標は、デイリー ファンタジー スポーツ ゲームのラインナップを選択する際のリスクを評価することでした。これを実現するために、ファンタジー ベースボール プロバイダーの古典的なルールで示されている最大 50,000 ドルのサラリー キャップを使用して、有効なラインナップをランダムに埋める関数を作成しました。これを 500 回実行して、シミュレートする 500 個のランダムで有効なラインナップを作成しました。有効なラインナップの各プレーヤーは、それぞれ 50 試合のパフォーマンスをシミュレートする独自のシミュレーションを受けました。結果は驚くべきものではありませんでした。
野球の結果には多くのランダム性があるようです。
これは、変動性に対するポイントの比率によって選択されたトップ 10 のランダムなラインナップのシミュレートされたパフォーマンスの要約です。たとえば、金融のシャープ レシオです。これらのラインナップは、リスクが最も低く、最も効果的な選択肢です。
これは同じビジュアルですが、最高得点の有効なラインナップを選択しています。
これらの画像は、強力なパフォーマンスを持つ有効なラインナップを示していますが、これらのラインナップはすべて、互いに非常に近い期待値を持っています。この広範な検索では、他のすべてのラインナップを大幅に上回るラインナップを見つけることができませんでした。私たちのシミュレーションは、プレーヤーの詳細な分析と評価を行わないファンタジー ベースボール ゲームは、単なる偶然のゲームであることを示すことに成功しました。
結論として、シミュレーションは意思決定に伴うリスクを理解するのに非常に役立つツールです。製品設計、パイロット トレーニング、キューイング研究、そして現在はファンタジー スポーツなど、幅広い用途に適用されています。
この特定のシミュレーションの結果は、短期間の野球が非常にランダムであることを示しています。どのプレイヤーも、その日の良い試合や悪い試合をする可能性があります。対戦が始まる可能性があり、ゲームの状況がプレーヤーの決定に影響を与える可能性があります。
非常に複雑なシステムをモデル化し、非常に現実的な結果を得る能力を達成しました。長期的には、シミュレーションによって、実際の選手と同様のパフォーマンスを発揮する選手が生成されると期待しています。
シミュレーションを改善できます。たとえば、パフォーマンスの結果に関するゲームの状態に関するデータはありません。過去の実績に基づいてシミュレーションを行っていますが、改良されたモデルではゲームの状態もシミュレートされます。これは、他のプレイヤーの決定とゲームの状態が結果を生成するプレイヤーの能力に影響を与えるため、重要な次のステップになります。さらに、このモデルは、ファンタジー スポーツの重要なトピックである対戦をシミュレートできません。打者は、相手のピッチャーやチームによってパフォーマンスが異なります。
最後に、マッチアップを考慮した新しい改善をインストールし、短期的なプレイヤーのパフォーマンスを評価する能力を徐々に改善したいと考えています.
ここにも掲載されています。