from otree.api import * import random import itertools import time from random import choice doc = """ """ class C(BaseConstants): NAME_IN_URL = 'trading' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass def creating_session(subsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Prolific_ID = models.StringField( label="Prolific ID", ) name1 = models.StringField(label='') name2 = models.StringField(label='') name3 = models.StringField(label='') name4 = models.StringField(label='') name5 = models.StringField(label='') name6 = models.StringField(label='') name7 = models.StringField(label='') name8 = models.StringField(label='') name9 = models.StringField(label='') name10 = models.StringField(label='') ticker1 = models.StringField(label='') ticker2 = models.StringField(label='') ticker3 = models.StringField(label='') ticker4 = models.StringField(label='') ticker5 = models.StringField(label='') ticker6 = models.StringField(label='') ticker7 = models.StringField(label='') ticker8 = models.StringField(label='') ticker9 = models.StringField(label='') ticker10 = models.StringField(label='') cprice1 = models.StringField(label='') cprice2 = models.StringField(label='') cprice3 = models.StringField(label='') cprice4 = models.StringField(label='') cprice5 = models.StringField(label='') cprice6 = models.StringField(label='') cprice7 = models.StringField(label='') cprice8 = models.StringField(label='') cprice9 = models.StringField(label='') cprice10 = models.StringField(label='') makesell1 = models.StringField(label='') makesell2 = models.StringField(label='') makesell3 = models.StringField(label='') makesell4 = models.StringField(label='') makesell5 = models.StringField(label='') makesell6 = models.StringField(label='') makesell7 = models.StringField(label='') makesell8 = models.StringField(label='') makesell9 = models.StringField(label='') makesell10 = models.StringField(label='') pe1 = models.StringField(label='') pe2 = models.StringField(label='') pe3 = models.StringField(label='') pe4 = models.StringField(label='') pe5 = models.StringField(label='') pe6 = models.StringField(label='') pe7 = models.StringField(label='') pe8 = models.StringField(label='') pe9 = models.StringField(label='') pe10 = models.StringField(label='') sector1 = models.StringField(label='') sector2 = models.StringField(label='') sector3 = models.StringField(label='') sector4 = models.StringField(label='') sector5 = models.StringField(label='') sector6 = models.StringField(label='') sector7 = models.StringField(label='') sector8 = models.StringField(label='') sector9 = models.StringField(label='') sector10 = models.StringField(label='') industry1 = models.StringField(label='') industry2 = models.StringField(label='') industry3 = models.StringField(label='') industry4 = models.StringField(label='') industry5 = models.StringField(label='') industry6 = models.StringField(label='') industry7 = models.StringField(label='') industry8 = models.StringField(label='') industry9 = models.StringField(label='') industry10 = models.StringField(label='') cap1 = models.StringField(label='') cap2 = models.StringField(label='') cap3 = models.StringField(label='') cap4 = models.StringField(label='') cap5 = models.StringField(label='') cap6 = models.StringField(label='') cap7 = models.StringField(label='') cap8 = models.StringField(label='') cap9 = models.StringField(label='') cap10 = models.StringField(label='') lastone1 = models.StringField(label='') lastone2 = models.StringField(label='') lastone3 = models.StringField(label='') lastone4 = models.StringField(label='') lastone5 = models.StringField(label='') lastone6 = models.StringField(label='') lastone7 = models.StringField(label='') lastone8 = models.StringField(label='') lastone9 = models.StringField(label='') lastone10 = models.StringField(label='') lastthree1 = models.StringField(label='') lastthree2 = models.StringField(label='') lastthree3 = models.StringField(label='') lastthree4 = models.StringField(label='') lastthree5 = models.StringField(label='') lastthree6 = models.StringField(label='') lastthree7 = models.StringField(label='') lastthree8 = models.StringField(label='') lastthree9 = models.StringField(label='') lastthree10 = models.StringField(label='') lastten1 = models.StringField(label='') lastten2 = models.StringField(label='') lastten3 = models.StringField(label='') lastten4 = models.StringField(label='') lastten5 = models.StringField(label='') lastten6 = models.StringField(label='') lastten7 = models.StringField(label='') lastten8 = models.StringField(label='') lastten9 = models.StringField(label='') lastten10 = models.StringField(label='') forecast1 = models.StringField(label='') forecast2 = models.StringField(label='') forecast3 = models.StringField(label='') forecast4 = models.StringField(label='') forecast5 = models.StringField(label='') forecast6 = models.StringField(label='') forecast7 = models.StringField(label='') forecast8 = models.StringField(label='') forecast9 = models.StringField(label='') forecast10 = models.StringField(label='') gross1 = models.StringField(label='') gross2 = models.StringField(label='') gross3 = models.StringField(label='') gross4 = models.StringField(label='') gross5 = models.StringField(label='') gross6 = models.StringField(label='') gross7 = models.StringField(label='') gross8 = models.StringField(label='') gross9 = models.StringField(label='') gross10 = models.StringField(label='') net1 = models.StringField(label='') net2 = models.StringField(label='') net3 = models.StringField(label='') net4 = models.StringField(label='') net5 = models.StringField(label='') net6 = models.StringField(label='') net7 = models.StringField(label='') net8 = models.StringField(label='') net9 = models.StringField(label='') net10 = models.StringField(label='') eps1 = models.StringField(label='') eps2 = models.StringField(label='') eps3 = models.StringField(label='') eps4 = models.StringField(label='') eps5 = models.StringField(label='') eps6 = models.StringField(label='') eps7 = models.StringField(label='') eps8 = models.StringField(label='') eps9 = models.StringField(label='') eps10 = models.StringField(label='') operate1 = models.StringField(label='') operate2 = models.StringField(label='') operate3 = models.StringField(label='') operate4 = models.StringField(label='') operate5 = models.StringField(label='') operate6 = models.StringField(label='') operate7 = models.StringField(label='') operate8 = models.StringField(label='') operate9 = models.StringField(label='') operate10 = models.StringField(label='') tse1 = models.StringField(label='') tse2 = models.StringField(label='') tse3 = models.StringField(label='') tse4 = models.StringField(label='') tse5 = models.StringField(label='') tse6 = models.StringField(label='') tse7 = models.StringField(label='') tse8 = models.StringField(label='') tse9 = models.StringField(label='') tse10 = models.StringField(label='') company1 = models.StringField(label='') company2 = models.StringField(label='') company3 = models.StringField(label='') company4 = models.StringField(label='') company5 = models.StringField(label='') reason1 = models.StringField(label='') reason2 = models.StringField(label='') reason3 = models.StringField(label='') reason4 = models.StringField(label='') reason5 = models.StringField(label='') finalticker1 = models.StringField(label='') finalticker2 = models.StringField(label='') finalticker3 = models.StringField(label='') finalticker4 = models.StringField(label='') finalticker5 = models.StringField(label='') finalcprice1 = models.StringField(label='') finalcprice2 = models.StringField(label='') finalcprice3 = models.StringField(label='') finalcprice4 = models.StringField(label='') finalcprice5 = models.StringField(label='') share1 = models.StringField(label='') share2 = models.StringField(label='') share3 = models.StringField(label='') share4 = models.StringField(label='') share5 = models.StringField(label='') broker1 = models.StringField(label='') broker2 = models.StringField(label='') broker3 = models.StringField(label='') broker4 = models.StringField(label='') broker5 = models.StringField(label='') totalcost1 = models.StringField(label='') totalcost2 = models.StringField(label='') totalcost3 = models.StringField(label='') totalcost4 = models.StringField(label='') totalcost5 = models.StringField(label='') totalmoney = models.StringField(label='') control_question = models.StringField( choices=[ ['1', 'I agree to take part. Take me to the study.'], ['2', 'I do not agree to take part in this study. Take me back to Prolific.'], ], label="Do you agree to participate in this study?", widget=widgets.RadioSelect ) gender = models.StringField( choices=[ ['1', 'Male'], ['2', 'Female'], ['3', 'Other'], ], label="1. What is your gender?", widget=widgets.RadioSelect ) age = models.IntegerField( label="2. What is your age?", min=0, max=120 ) language = models.StringField( choices=[ ['1', 'Yes'], ['2', 'No'], ], label="3. Is English your first language?", widget=widgets.RadioSelect ) max_income = models.StringField( choices=[ ['1', 'Very important'], ['2', 'Important'], ['3', 'Indifferent'], ['4', 'Not important'], ['5', 'Not important at all'], ], label="4. How important was it for you to maximise your own income during the experiment?", widget=widgets.RadioSelect ) trust = models.StringField( choices=[ ['1', 'Most people can be trusted'], ['2', 'You need to be very careful in dealing with people'], ], label="5. Generally speaking, would you say that most people can be trusted or that you need to be very " "careful in dealing with people?", widget=widgets.RadioSelect ) risk = models.StringField( choices=[ ['1', ''], ['2', ''], ['3', ''], ['4', ''], ['5', ''], ['6', ''], ['7', ''], ['8', ''], ['9', ''], ['10', ''], ], label="", widget=widgets.RadioSelectHorizontal ) instructions = models.StringField( choices=[ ['1', 'Very difficult'], ['2', 'Difficult'], ['3', 'Neutral'], ['4', 'Easy'], ['5', 'Very easy'], ], label="7. How did you find the instructions?", widget=widgets.RadioSelect ) econ_exp = models.IntegerField( label="8. How many economics experiments have you participated in before this one? ", ) feedback = models.StringField( blank=True, label="9. Do you have any other comments or feedback regarding this experiment?", ) def control_question_error_message(player,value): correct_answer = '1' if value != correct_answer: error_message = "If you do not agree to take part in this study, please close your browser tab." return error_message class Welcome(Page): form_model = 'player' form_fields = ['control_question'] class ProlificID(Page): form_model = 'player' form_fields = ['Prolific_ID'] class General_Instructions(Page): pass class Instructions(Page): pass class Task(Page): form_model = 'player' form_fields = ['name1','name2','name3','name4','name5', 'name6','name7','name8','name9','name10', 'ticker1','ticker2','ticker3','ticker4','ticker5', 'ticker6','ticker7','ticker8','ticker9','ticker10', 'cprice1','cprice2','cprice3','cprice4','cprice5', 'cprice6','cprice7','cprice8','cprice9','cprice10', 'makesell1','makesell2','makesell3','makesell4','makesell5', 'makesell6','makesell7','makesell8','makesell9','makesell10', 'pe1','pe2','pe3','pe4','pe5', 'pe6','pe7','pe8','pe9','pe10', 'sector1','sector2','sector3','sector4','sector5', 'sector6','sector7','sector8','sector9','sector10', 'industry1','industry2','industry3','industry4','industry5', 'industry6','industry7','industry8','industry9','industry10', 'cap1','cap2','cap3','cap4','cap5', 'cap6','cap7','cap8','cap9','cap10', 'lastone1','lastone2','lastone3','lastone4','lastone5', 'lastone6','lastone7','lastone8','lastone9','lastone10', 'lastthree1','lastthree2','lastthree3','lastthree4','lastthree5', 'lastthree6','lastthree7','lastthree8','lastthree9','lastthree10', 'lastten1', 'lastten2', 'lastten3', 'lastten4', 'lastten5', 'lastten6', 'lastten7', 'lastten8', 'lastten9', 'lastten10', 'forecast1', 'forecast2', 'forecast3', 'forecast4', 'forecast5', 'forecast6', 'forecast7', 'forecast8', 'forecast9', 'forecast10', 'gross1', 'gross2', 'gross3', 'gross4', 'gross5', 'gross6', 'gross7', 'gross8', 'gross9', 'gross10', 'net1', 'net2', 'net3', 'net4', 'net5', 'net6', 'net7', 'net8', 'net9', 'net10', 'eps1', 'eps2', 'eps3', 'eps4', 'eps5', 'eps6', 'eps7', 'eps8', 'eps9', 'eps10', 'operate1','operate2','operate3','operate4','operate5', 'operate6', 'operate7', 'operate8', 'operate9', 'operate10', 'tse1', 'tse2', 'tse3', 'tse4', 'tse5', 'tse6', 'tse7', 'tse8', 'tse9', 'tse10', 'company1', 'company2', 'company3', 'company4', 'company5', 'reason1', 'reason2', 'reason3', 'reason4', 'reason5', 'finalticker1', 'finalticker2', 'finalticker3', 'finalticker4', 'finalticker5', 'finalcprice1', 'finalcprice2', 'finalcprice3', 'finalcprice4', 'finalcprice5', 'share1', 'share2', 'share3', 'share4', 'share5', 'broker1', 'broker2', 'broker3', 'broker4', 'broker5', 'totalcost1', 'totalcost2', 'totalcost3', 'totalcost4', 'totalcost5', 'totalmoney' ] class Questionnaire(Page): form_model = 'player' form_fields = ['gender', 'age', 'language', 'max_income', 'trust', 'risk', 'instructions', 'econ_exp', 'feedback'] class Thanks(Page): pass page_sequence = [Welcome,ProlificID,General_Instructions,Instructions,Task, Questionnaire,Thanks]