通貨 (Currency)

多くの実験では、参加者は通貨を求めてプレイします。oTree では通貨として、実世界の通貨、もしくはポイントを設定することができます。設定で USE_POINTS = False と設定することで、ポイントから実世界の通貨に切り替えることができます。

cu(42) は "42 通貨単位" を表します。これは数字と同じように扱うことができます (例: cu(0.1) + cu(0.2) == cu(0.3))。この機能の利点は、ユーザーに表示されるときに REAL_WORLD_CURRENCY_CODELANGUAGE_CODE の設定に応じて、自動的に $0.300,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_POINTSTrue の場合)、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÷33 になるように、金額は整数に丸められます。そのため、丸め誤差が気にならない程度にポイントの規模を大きくすることをお勧めします。例えば、ゲームの資金を 100 ポイントではなく、1000 ポイントに設定します。