通貨 (Currency)¶
多くの実験では、参加者は通貨を求めてプレイします。oTree では通貨として、実世界の通貨、もしくはポイントを設定することができます。設定で USE_POINTS = False
と設定することで、ポイントから実世界の通貨に切り替えることができます。
cu(42)
は "42 通貨単位" を表します。これは数字と同じように扱うことができます (例: cu(0.1) + cu(0.2) == cu(0.3)
)。この機能の利点は、ユーザーに表示されるときに REAL_WORLD_CURRENCY_CODE
や LANGUAGE_CODE
の設定に応じて、自動的に $0.30
や 0,30 €
などの形式に変換されることです。
注釈
cu()
は oTree 5 の新機能です。これまでは、通貨を表すために c()
を使用していました。すでに c()
を使用しているコードは引き続き使用できます。詳細は こちら をご覧ください。
データベースに通貨を格納するには CurrencyField
を使用します。例えば、以下のようになります:
class Player(BasePlayer):
random_bonus = models.CurrencyField()
通貨の金額のリストを作るには currency_range
を使用します:
currency_range(0, 0.10, 0.02)
# this gives:
# [$0.00, $0.02, $0.04, $0.06, $0.08, $0.10]
テンプレートでは cu()
関数を使う代わりに、 |cu
フィルターを使用します。例えば、 {{ 20|cu }}
は 20 ポイント
と表示されます。
利得 (payoff)¶
各プレイヤーは、 payoff
フィールドを持っています。プレイヤーがお金を稼いだ場合は、このフィールドに格納する必要があります。participant.payoff
には、すべてのサブセッションからの利得の合計が自動的に格納されます。最終的な利得を整数に丸めるなどしたい場合には、 participant.payoff
を直接変更することができます。
実験の最後に、ある参加者の利益の合計にアクセスするには、 participant.payoff_plus_participation_fee()
を使用します。この関数は、 participant.payoff
を実世界の通貨単位に変換し (USE_POINTS
が True
の場合)、session.config['participation_fee']
を加えた金額を計算します。
ポイント ("実験用通貨")¶
USE_POINTS = True
と設定すると、通貨の金額がドルやユーロなどではなく、ポイントになります。例えば、 cu(10)
は 10 ポイント
と表示されます。
real_world_currency_per_point
エントリをセッションコンフィグに追加することで、ポイントから実世界の通貨への変換率を決めることができます。
ポイントから実世界の通貨への変換¶
ポイントを実世界の通貨に変換するには、 .to_real_world_currency
メソッドを使用します。例えば、以下のようになります:
cu(10).to_real_world_currency(session)
(セッションが異なると変換率も異なるため、 session
が必要になります。)
小数点以下の表示¶
金額は小数点以下2桁で表示されます。
一方、ポイントは整数です。つまり、 10÷3
は 3
になるように、金額は整数に丸められます。そのため、丸め誤差が気にならない程度にポイントの規模を大きくすることをお勧めします。例えば、ゲームの資金を 100 ポイントではなく、1000 ポイントに設定します。