from os import environ SESSION_CONFIGS = [ # dict( # name='intergenerational', # app_sequence=['intergenerational'], # display_name="Intergenerational/evolutionary game, passing along donations to future players in a chain.", # num_demo_participants=6, # ), # dict( # name='scheduling', # display_name="Scheduling players to arrive at the same time", # num_demo_participants=12, # app_sequence=['scheduling_part0', 'scheduling_part1'], # ), # dict( # name='supergames_indefinite', # display_name="Supergames of an indefinitely repeated prisoner's dilemma", # num_demo_participants=2, # app_sequence=['supergames_indefinite'], # ), # dict( # name='wait_page_from_scratch', # display_name="Wait page implemented from scratch, using live pages.", # num_demo_participants=6, # app_sequence=['wait_page_from_scratch'], # ), # dict( # name='fast_consensus', # display_name="Fast consensus: Reach a consensus with your group before your payoffs shrink to 0.", # num_demo_participants=3, # app_sequence=['fast_consensus'], # ), # dict( # name='bots_vs_humans', # display_name="Bots playing against a human participant", # num_demo_participants=1, # app_sequence=['bots_vs_humans'], # ), # dict( # name='crazy_eights', # display_name="Card game (crazy eights)", # app_sequence=['crazy_eights'], # num_demo_participants=2, # ), # dict( # name='word_search', # display_name="Word search game (multiplayer)", # app_sequence=['word_search'], # num_demo_participants=2, # ), # dict( # name='punishment', # display_name="Public goods with punishemnt", # app_sequence=['punishment'], # num_demo_participants=4, # ), # dict( # name='continuous_time_slider', # display_name="Continuous-time public goods game with slider", # app_sequence=['continuous_time_slider'], # num_demo_participants=2, # ), # dict( # name='asynchronous', # app_sequence=['asynchronous'], # display_name="Asynchronous 2-player game (no waiting for another player)", # num_demo_participants=6, # ), # dict( # name='wisconsin', # display_name="Wisconsin Card Sorting Test", # app_sequence=['wisconsin'], # num_demo_participants=1, # ), # dict( # name='iowa_gambling', # display_name="Iowa Gambling Task", # app_sequence=['iowa_gambling'], # num_demo_participants=1, # ), # dict( # name='twitter', # app_sequence=['twitter'], # display_name="Mini-Twitter", # num_demo_participants=6, # ), # dict( # name='svo', # display_name="Social Value Orientation Measure (SVO)", # app_sequence=['svo'], # num_demo_participants=1, # ), # dict( # name='image_annotation', # display_name="Image annotation", # app_sequence=['image_annotation'], # num_demo_participants=1, # ), # dict( # name='image_rating', # display_name="Image rating", # app_sequence=['image_rating'], # num_demo_participants=1, # ), # dict( # name='live_coordination', # display_name="Live coordination (voting with chat/negotiation)", # app_sequence=['live_coordination'], # num_demo_participants=6, # ), # dict( # name='shop', # display_name="Shopping app (online grocery store)", # app_sequence=['shop'], # num_demo_participants=1, # ), # dict( # name='double_auction', # display_name="Double auction market", # app_sequence=['double_auction'], # num_demo_participants=4, # ), #------------------------------------------------------------------ { 'name' : 'double_auction_OLG', 'display_name' : "Double auction market in OLG framework", 'app_sequence' : ['double_auction_OLG'], # to select treatments 'OLG': True, 'info_acquisition':False, 'short_horizon': True, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 7, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost':2, # general parameters: 'initial_money':20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend':5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1':3, 'dividend_1_period':5, 'dividend_2':5, 'dividend_2_period':10, 'dividend_3': 7, 'dividend_3_period':15, 'minutes':2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------------------------------------- { 'name' : 'double_auction_OLG_costly', 'display_name' : "Double auction market in OLG framework w/costly info", 'app_sequence' : ['double_auction_OLG'], # to select treatments 'OLG': True, 'info_acquisition':True, 'short_horizon': True, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 7, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost':2, # general parameters: 'initial_money':20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend':5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1':3, 'dividend_1_period':5, 'dividend_2':5, 'dividend_2_period':10, 'dividend_3': 7, 'dividend_3_period':15, 'minutes':2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------------------------------------- { 'name': 'double_auction_short', 'display_name': "Double auction market short horizon", 'app_sequence': ['double_auction_OLG'], # to select treatments 'OLG': False, 'info_acquisition': False, 'short_horizon': True, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 4, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost': 2, # general parameters: 'initial_money': 20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend': 5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1': 3, 'dividend_1_period': 5, 'dividend_2': 5, 'dividend_2_period': 10, 'dividend_3': 7, 'dividend_3_period': 15, 'minutes': 2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------- { 'name': 'double_auction_short_costly', 'display_name': "Double auction market short horizon w/costly info", 'app_sequence': ['double_auction_OLG'], # to select treatments 'OLG': False, 'info_acquisition': True, 'short_horizon': True, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 4, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost': 2, # general parameters: 'initial_money': 20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend': 5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1': 3, 'dividend_1_period': 5, 'dividend_2': 5, 'dividend_2_period': 10, 'dividend_3': 7, 'dividend_3_period': 15, 'minutes': 2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------- { 'name': 'double_auction_long', 'display_name': "Double auction market long horizon", 'app_sequence': ['double_auction_OLG'], # to select treatments 'OLG': False, 'info_acquisition': False, 'short_horizon': False, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 4, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost': 2, # general parameters: 'initial_money': 20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend': 5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1': 3, 'dividend_1_period': 5, 'dividend_2': 5, 'dividend_2_period': 10, 'dividend_3': 7, 'dividend_3_period': 15, 'minutes': 2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------- { 'name': 'double_auction_long_costly', 'display_name': "Double auction market long horizon w/costly info", 'app_sequence': ['double_auction_OLG'], # to select treatments 'OLG': False, 'info_acquisition': True, 'short_horizon': False, # only for non-OLG treatment, 5 period horizon instead of 15 # parameters for OLG version 'num_demo_participants': 4, 'num_sellers': 2, 'num_buyers': 2, 'prediction_endowment': 10, # endowment for prediction payoff 'scale_prediction': 1 / 5, # scaling parameter for prediction payoff 'prediction_min': 0, 'prediction_max': 10, 'money': 20, # parameters for info acquisition 'info_cost': 2, # general parameters: 'initial_money': 20, 'num_rounds': 15, 'practice_num_rounds': 4, 'assets_per_seller': 3, 'dividend': 5, # this should be replaced by a random draw at the beginning??? or pre drawn? 'dividend_1': 3, 'dividend_1_period': 5, 'dividend_2': 5, 'dividend_2_period': 10, 'dividend_3': 7, 'dividend_3_period': 15, 'minutes': 2, 'us_exchange_rate': 1, }, # --------------------------------------------------------------- # dict(name='dollar_auction', app_sequence=['dollar_auction'], num_demo_participants=3), # dict( # name='ebay', # display_name="eBay style auction", # app_sequence=['ebay'], # num_demo_participants=3, # ), # dict(name='stroop', app_sequence=['stroop'], num_demo_participants=1), # dict( # name='go_no_go', # display_name='Attention test (Go/No-Go)', # app_sequence=['go_no_go'], # num_demo_participants=1, # ), # dict( # name='choice_list', # display_name='Choice list (Holt/Laury, equivalence test, etc)', # app_sequence=['choice_list'], # num_demo_participants=1, # ), # dict( # name='live_bargaining', # display_name="Live bargaining between 2 players", # app_sequence=['live_bargaining'], # num_demo_participants=2, # ), #--------------------------------------------------------------------------------------------------------------------- # { # 'name':'live_bargaining_nash_kalai_2_r0_r60', # 'display_name': "Live bargaining between 2 players Nash-Kalai r=0 and then r=60", # 'app_sequence': ['live_bargaining_nash_kalai_practice', 'live_bargaining_nash_kalai', 'live_bargaining_nash_kalai_questionnaire'], # 'num_demo_participants':2, # 'num_rounds': 28, # 'practice_num_rounds': 2, # # initial endowment defined as the max amount to borrow # 'endowment':32, # 'seller_endowment':5, # # # parameters for utility and cost functions # 'A': 74.1752/10, # 'a':0.6, # 'B':8.23249/10, # 'b':1.51678, # # interest rate # 'r_1':0.0, # 'r_2':0.6, # 'r_practice':0.1, # # activate chat # 'chat_on':False, # 'us_exchange_rate':1, # 'message_practice': 'yes', # 'message': 'yes', # 'open_question':'yes' # }, # { # 'name': 'live_bargaining_nash_kalai_4_r0_r60', # 'display_name': "Live bargaining between 4 players Nash-Kalai r=0 and then r=60", # 'app_sequence': ['live_bargaining_nash_kalai_practice', 'live_bargaining_nash_kalai', # 'live_bargaining_nash_kalai_questionnaire'], # 'num_demo_participants': 4, # 'num_rounds': 28, # 'practice_num_rounds': 2, # # initial endowment defined as the max amount to borrow # 'endowment': 32, # 'seller_endowment': 5, # parameters for utility and cost functions # 'A': 74.1752/10, # 'a': 0.6, # 'B': 8.23249/10, # 'b': 1.51678, # # interest rate # 'r_1': 0.0, # 'r_2': 0.6, # 'r_practice': 0.1, # # activate chat # 'chat_on': False, # 'us_exchange_rate': 1, # 'message_practice': 'yes', # 'message': 'yes', # 'open_question': 'yes' # }, # --------------------------------------------------------------------------------------------------------------------- # dict( # name='randomize_stimuli', # display_name='Demo of different stimulus randomizations', # app_sequence=['randomize_stimuli'], # num_demo_participants=5, # ), # dict( # name='bigfive', # display_name='Big 5 personality test', # app_sequence=['bigfive'], # num_demo_participants=1, # ), # dict( # name='panas', # display_name='PANAS (positive and negative affect schedule)', # app_sequence=['panas'], # num_demo_participants=1, # ), # dict( # name='nim', # display_name="Race game / Nim (take turns adding numbers to reach a target)", # app_sequence=['nim'], # num_demo_participants=2, # ), # dict( # name='read_mind_in_eyes', # display_name="Reading the Mind in the Eyes Test (Baron-Cohen et al. 2001)", # app_sequence=['read_mind_in_eyes'], # num_demo_participants=1, # ), # dict( # name='rockpaperscissors', # display_name="Rock/Paper/Scissors", # app_sequence=['rockpaperscissors'], # num_demo_participants=2, # ), # dict( # name='tictactoe', # display_name="Tic-Tac-Toe", # app_sequence=['tictactoe'], # num_demo_participants=2, # ), # dict( # name='strategy_method', # display_name="Strategy Method", # app_sequence=['strategy_method'], # num_demo_participants=2, # ), ] # if you set a property in SESSION_CONFIG_DEFAULTS, it will be inherited by all configs # in SESSION_CONFIGS, except those that explicitly override it. # the session config can be accessed from methods in your apps as self.session.config, # e.g. self.session.config['participation_fee'] SESSION_CONFIG_DEFAULTS = dict(real_world_currency_per_point=1.00, participation_fee=10.00, doc="") # ISO-639 code # for example: de, fr, ja, ko, zh-hans LANGUAGE_CODE = 'en' ROOMS = [ dict( name='ESSL_experiment_2022', display_name='ESSL_experiment_2022', participant_label_file='econ101.txt', ) ] # e.g. EUR, GBP, CNY, JPY REAL_WORLD_CURRENCY_CODE = 'USD' USE_POINTS = False ADMIN_USERNAME = 'admin' # for security, best to set admin password in an environment variable ADMIN_PASSWORD = environ.get('OTREE_ADMIN_PASSWORD') AUTH_LEVEL = environ.get('OTREE_AUTH_LEVEL') DEBUG = True # to get rid of debug! DEMO_PAGE_INTRO_HTML = """ """ DEMO_PAGE_TITLE = "" SECRET_KEY = '4387860144726' # if an app is included in SESSION_CONFIGS, you don't need to list it here INSTALLED_APPS = ['otree'] PARTICIPANT_FIELDS = [ 'booking_time', 'cards', 'order', 'reaction_times', 'read_mind_in_eyes_score', 'responses', 'stimuli', 'svo_angle', 'svo_category', ] SESSION_FIELDS = [ 'finished_p1_list', 'iowa_costs', 'wisconsin', 'intergenerational_history' ]