予算のリバランス広告ルール

ROIベースの予算リバランスルールを作成する場合、個々の構成要素について理解しておくことが重要です。ROIとは、Return On Investment (投資収益率)の略です。

このページでは、リバランスルールの各構成要素について、また各パラメーターがルールの実行方法にどう影響するかについて説明します。

スケジュールの設定

ルールをリバランスするには、アクションが頻繁に発生することがないよう、DAILYまたはCUSTOMのどちらかを使うことをおすすめします。

評価の設定

リバランスの影響を受けるオブジェクトのリストを決定するため、評価基準はrebalance_specと連携して機能します。

どのタイプのリバランスでも、評価に合格したオブジェクトのリストが予算供出元となります。配分先のリストは指定されたリバランスのタイプに応じて異なりますが、ほとんどの場合(例えばEVENの場合)、配分先となるのは評価に合格しなかったオブジェクトです。

例えば、タイプEVENのルール基準がcost_per_mobile_app_install > 2.50である場合、それは、モバイルアプリインストール1回あたりのコストが2.50を超える広告セットがすべて一時停止され、その予算が、モバイルアプリインストール1回あたりのコストが2.50以下のすべての広告セットに移されることになります。

実行の設定

rebalance_specは、配分先が予算を受け取る方法を正確に決定します。次の5つのパラメーターがあります。

フィールド 説明

type

必須。

予算の配分方法を決定します。値がEVENでない場合、ランキングを実行するにはtarget_fieldも必要です。


サポートされる値:EVENPROPORTIONALNO_PAUSE_PROPORTIONALMATCHED_ONLY_PROPORTIONAL

target_field

任意。

配分先のランキングに使うインサイト指標を指定します。typeEVENでない場合、または設定の中にtarget_countも存在している場合、これは必須です。


サポートされる値:cpaimpressionsなどのインサイトフィールド

target_count

任意。

配分先の数(K)を指定します。これとtypetarget_fieldの組み合わせにより、予算配分先となる上位K個の配分先が決まります。これは、可能なすべての配分先に予算を移したくない場合に便利です。Kが配分先の数より大きい場合、そのすべてリバランスルールが適用されます。これを指定した場合、target_fieldが必須になります。


サポートされる値: 正の整数(5など)

is_cross_campaign

任意。

複数広告キャンペーンを通じて予算を割り振ることを許可するかどうかを指定します。これを指定しない場合、または値がfalseの場合、広告キャンペーン内だけで予算を移動します。これがtrueの場合、全広告セットがまとめて評価し実行されるため、広告キャンペーンと広告キャンペーンの間で予算のシフトが発生する可能性があります。


サポートされる値: ブール値(trueまたはfalse)

is_inverse

任意。

配分先のランキングを、target_fieldの値の逆数が高いものが先、低いものが後の順に並べるかどうかを指定します。これは、実際の値が最低のものを最高と評価する場合に便利です。


サポートされる値: ブール値(trueまたはfalse)

具体的な動作に関する注意点

このアクションについては、次に示すような、具体的な動作についての注意点がいくつかあります。

1日の予算と通算予算

リバランスの対象となる広告セットに1日の予算と通算予算の両方が含まれている場合、広告セットは2つに分割されます。つまり、広告セットの1日の予算の移動先は、1日の予算が設定されている他の広告セットに限られるということです。通算予算についても同じことが言えます。

通算予算の設定されている広告セットの場合、割り振り可能な予算額を決定する際に、その通算予算残高(通算予算と通算消化金額の差)が使われることになります。これにより、広告キャンペーンレベルでの合計予算が変わらないことが保証されます。

rebalance_specのタイプ

EVENPROPORTIONALのタイプの場合、マッチするオブジェクト(予算供出元から配分先へ)が一時停止されます。これらのオブジェクトが一時停止されると、予算は全く調整されません。その理由は次のとおりです。

  • 一時停止中なので配分を考慮する必要がない
  • いずれかの広告セットの予算をなしにするのは意味がない

この場合、後で広告セットを再度有効にすると、以前と同じ予算が維持されます。これは、一時停止中のオブジェクトとやり取りして予算データを取得する際に確認できます。

NO_PAUSE_PROPORTIONALタイプの場合、マッチしたオブジェクトは一時停止されません。すべてのオブジェクト(供出元と配分先)を一度に表示し、そのパフォーマンスをランキングすることにより、予算をどう調整するべきかを決定します。これにより、予算が供出元から配分先に対してのみ移動されることが保証されます。このように設定すれば、リバランスの結果、どれだけの予算があるかだけに基づいて、パフォーマンスが良好な広告セットから低パフォーマンスの広告セットに予算が移動してしまうという事態を避けることができます。詳しくは、以下の例をご覧ください。

タイプがMATCHED_ONLY_PROPORTIONALの場合、マッチしたオブジェクトだけが確認されます。この場合も、マッチしたオブジェクトは一時停止されません。マッチしたオブジェクト間だけでランク付けし、相互のパフォーマンス比較状況に基づいて予算を再分配します。この場合、全供出元からの総予算を、同じ供出元リストに掲載されている供出元に比例配分することになります。詳しくは、以下の例をご覧ください。

末尾がPROPORTIONALのタイプの場合は、target_fieldの定義に基づいて、パフォーマンスの高い広告セットほど配分予算が多くなるようにします。例えば、指標がreachで、reachがそれぞれ10と20の2つの配分先広告セットがある場合は、予算プールのうちそれぞれ33.3 %と66.6 %がそれらの広告セットに割り振られます。タイプがEVENの場合は、どちらも50 %になります。

is_inverseフラグ

cost_per_mobile_app_installのような指標では、is_inverseフラグが便利です。このフラグでは、指標の数値が低いほうが広告セットのパフォーマンスが高いことを意味します。以下の例ではこの点が改めて強調されており、該当する値が低い広告セットほど配分予算が高くなります。

この例では、次のようなリバランスルールが設定されています。

  • 広告アカウントのうち低パフォーマンスの広告セットをすべて一時停止する
  • その予算を残りの広告セットに移動する

ここでは、cost_per_mobile_app_installの値が一定して高いものが低パフォーマンスであると定義しています。すべての低パフォーマンスの広告セットから、広告アカウントの上位10件の広告セットに対して、比例配分によって予算を割り振ります。このルールは毎日午前8時に、通算データを確認しつつ実行されます。

curl \
-F 'name=Test Rebalance Rule' \
-F 'schedule_spec={
     "schedule_type": "CUSTOM",
     "schedule": [
       {
          "start_minute": 480
       }
     ]
   }' \
-F 'evaluation_spec={
     "evaluation_type": "SCHEDULE",
     "filters": [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL"
       },
       {
         "field": "time_preset",
         "value": "LIFETIME",
         "operator": "EQUAL"
       },
       {
         "field": "mobile_app_install",
         "value": 100,
         "operator": "GREATER_THAN"
       },
       {
         "field": "cost_per_mobile_app_install",
         "value": 3.0,
         "operator": "GREATER_THAN"
       }
     ]
   }' \
-F 'execution_spec={
     "execution_type": "REBALANCE_BUDGET",
     "execution_options": [
       {
         "field": "rebalance_spec",
         "value": {
           "type": "INVERSE_PROPORTIONAL",
           "target_field": "cost_per_mobile_app_install",
           "target_count": 10,
           "is_cross_campaign": true
         },
         "operator": "EQUAL"
       },
     ]
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library

ルールは次のとおりです。

  • 毎日、オーディエンスサイズが高い割合に達したすべての広告セットを一時停止し、その予算を均等にリバランスする
  • しかし、広告キャンペーン全体で予算が変動することはないようにする
curl \
-F 'name=Test Rebalance Rule' \
-F 'schedule_spec={
     "schedule_type": "DAILY"
   }' \
-F 'evaluation_spec={
     "evaluation_type": "SCHEDULE",
     "filters": [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL"
       },
       {
         "field": "time_preset",
         "value": "LIFETIME",
         "operator": "EQUAL"
       },
       {
         "field": "impressions",
         "value": 8000,
         "operator": "GREATER_THAN"
       },
       {
         "field": "audience_reached_percentage",
         "value": 70,
         "operator": "GREATER_THAN"
       }
     ]
   }' \
-F 'execution_spec={
     "execution_type": "REBALANCE_BUDGET",
     "execution_options": [
       {
         "field": "rebalance_spec",
         "value": {
           "type": "EVEN"
         },
         "operator": "EQUAL"
       },
     ]
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library

以下に示すのは、NO_PAUSE_PROPORTIONALタイプを活用する例です。この場合、広告キャンペーン内の広告セットのうち動画再生回数が少ないものから予算が再割り振りされます。しかしこの場合、広告セットは一時停止されず、比例予算額のままになります。

数値としては、例えば次のようになります。

  • video_view1-5の広告セット1-5があり、それぞれの1日の予算は3000、ルールは下記のとおりであるとします。
  • まず、広告セット12の予算6000を移動対象とし、その配分方法を比例により決定します。この場合、各広告セットの割合は1/15から5/15までです。
  • その結果、広告セットの値は、それぞれ400800420046005000となります。これにより、配分先(広告セット123)の予算は常に増加することが保証されます。
curl \
-F 'name=Test Rebalance Rule' \
-F 'schedule_spec={
     "schedule_type": "DAILY"
   }' \
-F 'evaluation_spec={
     "evaluation_type": "SCHEDULE",
     "filters": [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL"
       },
       {
         "field": "time_preset",
         "value": "LIFETIME",
         "operator": "EQUAL"
       },
       {
         "field": "video_view",
         "value": 3,
         "operator": "LESS_THAN"
       },
     ]
   }' \
-F 'execution_spec={
     "execution_type": "REBALANCE_BUDGET",
     "execution_options": [
       {
         "field": "rebalance_spec",
         "value": {
           "type": "NO_PAUSE_PROPORTIONAL",
           "target_field": "video_view"
         },
         "operator": "EQUAL"
       },
     ]
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library

最後に、MATCHED_ONLY_PROPORTIONALの活用例を示します。この場合、マッチしないオブジェクトを考慮する必要はありません。対象となるのは、ルールのフィルターを満たす広告セットです。上記と同じ例を使うことができますが、今回は、広告セットのパフォーマンスの低さに基づいて2つのリストを決定する必要はありません。

上記と同じ数値の例を使用すると、プール内の全予算(15000)を使い、それを比例配分することになります。その結果、広告セット1-5の予算はそれぞれ1000-5000になります。

このtypeでの主なデメリットは、高パフォーマンス広告セットの予算が減額されないことが必ずしも保証されないという点です。予算値のバランスが悪い場合には特にその点が問題になります。他の条件がすべて同じなら、広告セット5の初期予算が18000だとすると、その予算は8000ほど減額されることになります。

curl \
-F 'name=Test Rebalance Rule' \
-F 'schedule_spec={
     "schedule_type": "DAILY"
   }' \
-F 'evaluation_spec={
     "evaluation_type": "SCHEDULE",
     "filters": [
       {
         "field": "entity_type",
         "value": "ADSET",
         "operator": "EQUAL"
       },
       {
         "field": "time_preset",
         "value": "LIFETIME",
         "operator": "EQUAL"
       },
     ]
   }' \
-F 'execution_spec={
     "execution_type": "REBALANCE_BUDGET",
     "execution_options": [
       {
         "field": "rebalance_spec",
         "value": {
           "type": "MATCHED_ONLY_PROPORTIONAL",
           "target_field": "video_view"
         },
         "operator": "EQUAL"
       },
     ]
   }' \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<VERSION>/<AD_ACCOUNT_ID>/adrules_library