from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'survey' players_per_group = 2 num_rounds = 1 US = 100000 ETH = 200 pricesDay1_10 = (194.39, 197.78, 196.78, 196.86, 215.55, 206.27, 211.98, 214.15, 210.06, 206.94) def creating_session(subsession): session = subsession.session subsession.group_randomly() class Subsession(BaseSubsession): time1 = models.FloatField() class Group(BaseGroup): pass class Player(BasePlayer): US = models.FloatField(initial=100000) ETH = models.FloatField(initial=200) ROI = models.FloatField() ROI2 = models.FloatField() ROI3 = models.FloatField() US2 = models.FloatField(initial=100000) ETH2 = models.FloatField(initial=200) Asset_day1 = models.FloatField() Asset_day10 = models.FloatField() value_total_asset = models.FloatField(initial=0) Name = models.StringField(label='Your name') Sig = models.StringField(label='Your Signature') Email = models.StringField(label='Your Email Address') Date = models.StringField(label='Date') one = models.StringField(choices=[['5', 'T'], ['0', 'F']], label='1) I usually get what I want in life. ', widget=widgets.RadioSelect) two = models.StringField(choices=[['0', 'T'], ['5', 'F']], label='2) I need to be kept informed about news events.', widget=widgets.RadioSelect) three = models.StringField(choices=[['0', 'T'], ['5', 'F']], label='3) I never know where I stand with other people.', widget=widgets.RadioSelect) four = models.StringField(choices=[['5', 'T'], ['0', 'F']], label='4) I do not really believe in luck or chance.', widget=widgets.RadioSelect) five = models.StringField(blank=True, choices=[['5', 'T'], ['0', 'F']], label='5) I think that I could easily win a lottery.', widget=widgets.RadioSelect) six = models.StringField(choices=[['0', 'T'], ['5', 'F']], label='6) If I do not succeed in a task, I tend to give up.', widget=widgets.RadioSelect) seven = models.StringField(choices=[['5', 'T'], ['0', 'F']], label='7) I usually convince others to do things my way.', widget=widgets.RadioSelect) eight = models.StringField(choices=[['5', 'T'], ['0', 'F']], label='8) People make a difference in controlling crime. ', widget=widgets.RadioSelect) nine = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='9) The success I have is largely a matter of chance.', widget=widgets.RadioSelect) ten = models.StringField(choices=[['0', 'T'], ['5', 'F']], label='10) Marriage is largely a gamble for most people.', widget=widgets.RadioSelect) eleven = models.StringField(blank=True, choices=[['5', 'T'], ['0', 'F']], label='11) People must be the master of their own fate. ', widget=widgets.RadioSelect) twelve = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='12) It is not important for me to vote.', widget=widgets.RadioSelect) thirteen = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='13) My life seems like a series of random events. ', widget=widgets.RadioSelect) fourteen = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='14) I never try anything that I am not sure of.', widget=widgets.RadioSelect) fifteen = models.StringField(choices=[['5', 'T'], ['0', 'F']], label='15) I earn the respect and honors I receive. ', widget=widgets.RadioSelect) sixteen = models.StringField(choices=[['0', 'T'], ['5', 'F']], label='16) A person can get rich by taking risks.', widget=widgets.RadioSelect) seventeen = models.StringField(blank=True, choices=[['5', 'T'], ['0', 'F']], label='17) Leaders are successful when they work hard. ', widget=widgets.RadioSelect) eighteen = models.StringField(blank=True, choices=[['5', 'T'], ['0', 'F']], label='18) Persistence and hard work usually lead to success.', widget=widgets.RadioSelect) nineteen = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='19) It is difficult to know who my real friends are.', widget=widgets.RadioSelect) twenty = models.StringField(blank=True, choices=[['0', 'T'], ['5', 'F']], label='20) Other people usually control my life.', widget=widgets.RadioSelect) Choice_2 = models.StringField(choices=[['1', 'Buy 10 ETH each day'], ['2', 'Sell 10 ETH each day'], ['3', 'Hold ETH']], label='Choose the AI strategy', widget=widgets.RadioSelect) Choice_3 = models.StringField(choices=[['1', 'AI Strategy'], ['2', 'Believe yourself']], label='Choose the session 3 decision', widget=widgets.RadioSelect) time_choice1 = models.FloatField() time_choice2 = models.FloatField() time_choice3 = models.FloatField() time_choice4 = models.FloatField() time_choice5 = models.FloatField() time_choice6 = models.FloatField() time_choice7 = models.FloatField() time_choice8 = models.FloatField() time_choice9 = models.FloatField() time_choice10 = models.FloatField() Choice1 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell): ') Choice2 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell): ') Choice3 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell): ') Choice4 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice5 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice6 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice7 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice8 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice9 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') Choice10 = models.FloatField(label='Enter the amount of ETH you want to buy/sell (- for sell):') time1 = models.FloatField() time2 = models.FloatField() time3 = models.FloatField() time4 = models.FloatField() time5 = models.FloatField() time6 = models.FloatField() time7 = models.FloatField() time8 = models.FloatField() time9 = models.FloatField() time10 = models.FloatField() time11 = models.FloatField() Pyschology_score = models.IntegerField() psy_final_result = models.StringField() Question1 = models.StringField(label='What’s the principle of your discretional strategy?') Question2 = models.StringField(label='What’s the principle of your choice among AI strategies?') Question3 = models.StringField(label='What’s your rationale for strategy selection in Round #3') class Consent(Page): form_model = 'player' class PleaseRead(Page): form_model = 'player' form_fields = ['Name', 'Sig', 'Email', 'Date'] class Psycho(Page): form_model = 'player' form_fields = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty'] class Session2_Opening(Page): form_model = 'player' form_fields = ['Choice_2'] @staticmethod def is_displayed(player): group = player.group return int(player.id_in_group) == 1 class Day1(Page): form_model = 'player' form_fields = ['Choice1'] @staticmethod def vars_for_template(player): import time current_price = Constants.pricesDay1_10[0] player.value_total_asset = player.US + player.ETH * float(current_price) player.Asset_day1 = player.value_total_asset player.time1 = float(time.time()) return dict(current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH,) class Day2(Page): form_model = 'player' form_fields = ['Choice2'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[0]) player.US = player.US - player.Choice1 * formal_price player.ETH = player.ETH + player.Choice1 player.time2 = float(time.time()) player.time_choice1 = player.time2 - player.time1 current_price = Constants.pricesDay1_10[1] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day3(Page): form_model = 'player' form_fields = ['Choice3'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[1]) player.US = player.US - player.Choice2 * formal_price player.ETH = player.ETH + player.Choice2 player.time3 = float(time.time()) player.time_choice2 = player.time3 - player.time2 current_price = Constants.pricesDay1_10[2] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day4(Page): form_model = 'player' form_fields = ['Choice4'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[2]) player.US = player.US - player.Choice3 * formal_price player.ETH = player.ETH + player.Choice3 player.time4 = float(time.time()) player.time_choice3 = player.time4 - player.time3 current_price = Constants.pricesDay1_10[3] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day5(Page): form_model = 'player' form_fields = ['Choice5'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[3]) player.US = player.US - player.Choice4 * formal_price player.ETH = player.ETH + player.Choice4 player.time5 = float(time.time()) player.time_choice4 = player.time5 - player.time4 current_price = Constants.pricesDay1_10[4] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day6(Page): form_model = 'player' form_fields = ['Choice6'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[4]) player.US = player.US - player.Choice5 * formal_price player.ETH = player.ETH + player.Choice5 player.time6 = float(time.time()) player.time_choice5 = player.time6 - player.time5 current_price = Constants.pricesDay1_10[5] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day7(Page): form_model = 'player' form_fields = ['Choice7'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[5]) player.US = player.US - player.Choice6 * formal_price player.ETH = player.ETH + player.Choice6 player.time7 = float(time.time()) player.time_choice6 = player.time7 - player.time6 current_price = Constants.pricesDay1_10[6] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day8(Page): form_model = 'player' form_fields = ['Choice8'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[6]) player.US = player.US - player.Choice7 * formal_price player.ETH = player.ETH + player.Choice7 player.time8 = float(time.time()) player.time_choice7 = player.time8 - player.time7 current_price = Constants.pricesDay1_10[7] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day9(Page): form_model = 'player' form_fields = ['Choice9'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[7]) player.US = player.US - player.Choice8 * formal_price player.ETH = player.ETH + player.Choice8 player.time9 = float(time.time()) player.time_choice8 = player.time9 - player.time8 current_price = Constants.pricesDay1_10[8] player.value_total_asset = player.US + player.ETH * float(current_price) return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Day10(Page): form_model = 'player' form_fields = ['Choice10'] @staticmethod def vars_for_template(player): import time formal_price = float(Constants.pricesDay1_10[8]) player.US = player.US - player.Choice9 * formal_price player.ETH = player.ETH + player.Choice9 player.time10 = float(time.time()) player.time_choice9 = player.time10 - player.time9 current_price = Constants.pricesDay1_10[9] player.value_total_asset = player.US + player.ETH * float(current_price) player.Asset_day10 = player.value_total_asset return dict( current_price = current_price, value_total_asset = player.value_total_asset, US = player.US, ETH = player.ETH, ) class Discretionary_Investment(Page): form_model = 'player' @staticmethod def vars_for_template(player): import time player.time11 = float(time.time()) player.time_choice10 = player.time11 - player.time10 player.Pyschology_score = int(player.one) + int(player.two) + int(player.three)+int(player.four)+int(player.five)+int(player.six)+int(player.seven)+int(player.eight)+int(player.nine)+int(player.ten)+int(player.eleven)+int(player.twelve)+int(player.thirteen)+int(player.fourteen)+int(player.fifteen)+int(player.sixteen)+int(player.seventeen)+int(player.eighteen)+int(player.nineteen)+int(player.twenty) if player.Pyschology_score >= 0 and player.Pyschology_score <= 15: player.psy_final_result = "Very strong external locus of control" elif player.Pyschology_score >= 20 and player.Pyschology_score <= 35: player.psy_final_result = "External locus of control" elif player.Pyschology_score >= 40 and player.Pyschology_score <= 60: player.psy_final_result = "Both external and internal locus of control" elif player.Pyschology_score >= 65 and player.Pyschology_score <= 80: player.psy_final_result = "Internal locus of control" elif player.Pyschology_score >= 85 and player.Pyschology_score <= 100: player.psy_final_result = "Very strong internal locus of control" return class Session2_Opening_2(Page): form_model = 'player' form_fields = ['Choice_2'] @staticmethod def is_displayed(player): group = player.group return int(player.id_in_group) == 2 class Session3_Opening(Page): form_model = 'player' form_fields = ['Choice_3'] @staticmethod def vars_for_template(player): player.US = player.US - player.Choice10 player.ETH = player.ETH + player.Choice10 ROI = (player.Asset_day10 - player.Asset_day1) / player.Asset_day1 player.ROI = ROI choice_2 = player.Choice_2 ai_choice = choice_2 if ai_choice == '1': player.ROI2 = 1 elif ai_choice == '2': player.ROI2 =2 elif ai_choice == '3': player.ROI2 =3 return dict( US=player.US, ETH=player.ETH, value_total_asset=player.Asset_day10, ROI=ROI, ) class Session4(Page): form_model = 'player' form_fields = ['Question1', 'Question2', 'Question3'] class Endings(Page): form_model = 'player' @staticmethod def vars_for_template(player): choice_3 = player.Choice_3 ai_choice = choice_3 if ai_choice == '1': player.ROI3 = player.ROI2 elif ai_choice =='2': player.ROI3 = player.ROI return page_sequence = [Consent, PleaseRead, Psycho, Session2_Opening, Day1, Day2, Day3, Day4, Day5, Day6, Day7, Day8, Day9, Day10, Discretionary_Investment, Session2_Opening_2, Session3_Opening, Session4, Endings]