from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Waiting_Page_after_quiz(WaitPage): group_by_arrival_time = True title_text = 'Waiting Page' body_text = 'Please wait for the other five group members up to 15 minutes. If you wait more than 15 minutes, you can close this page, and your completion code is: Quiz2019. If you submit the completion code too early, we are sorry that we will reject the hit.' class Prepare(Page): form_model = 'player' timeout_seconds = 30 class Round1(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Average_high = Constants.Average_high * 100, Standard_deviation_high = Constants.Standard_deviation_high * 100, rate = Constants.rate * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.total = Constants.Basic_wage self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * Constants.Basic_wage if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * Constants.Basic_wage - Constants.Basic_wage self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + Constants.Basic_wage self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + Constants.Basic_wage * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + Constants.Basic_wage self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.high1 = self.player.Results_high self.player.risk1 = self.player.Risk_copy self.player.total1 = self.player.total self.player.change1 = self.player.payoffs self.player.Risk = None class WaitPage1(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round2(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.high2 = self.player.Results_high self.player.risk2 = self.player.Risk_copy self.player.total2 = self.player.total self.player.change2 = self.player.payoffs self.player.Risk = None class WaitPage2(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round3(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.high3 = self.player.Results_high self.player.risk3 = self.player.Risk_copy self.player.total3 = self.player.total self.player.change3 = self.player.payoffs self.player.Risk = None class WaitPage3(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round4(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high4 = self.player.Results_high self.player.risk4 = self.player.Risk_copy self.player.total4 = self.player.total self.player.change4 = self.player.payoffs class WaitPage4(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round5(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high5 = self.player.Results_high self.player.risk5 = self.player.Risk_copy self.player.total5 = self.player.total self.player.change5 = self.player.payoffs class WaitPage5(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round6(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high6 = self.player.Results_high self.player.risk6 = self.player.Risk_copy self.player.total6 = self.player.total self.player.change6 = self.player.payoffs class WaitPage6(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round7(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high7 = self.player.Results_high self.player.risk7 = self.player.Risk_copy self.player.total7 = self.player.total self.player.change7 = self.player.payoffs class WaitPage7(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round8(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high8 = self.player.Results_high self.player.risk8 = self.player.Risk_copy self.player.total8 = self.player.total self.player.change8 = self.player.payoffs class WaitPage8(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round9(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high9 = self.player.Results_high self.player.risk9 = self.player.Risk_copy self.player.total9 = self.player.total self.player.change9 = self.player.payoffs class WaitPage9(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round10(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = float('%.3f'%self.player.Results_high) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high10 = self.player.Results_high self.player.risk10 = self.player.Risk_copy self.player.total10 = self.player.total self.player.change10 = self.player.payoffs class WaitPage10(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round11(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high11 = self.player.Results_high self.player.risk11 = self.player.Risk_copy self.player.total11 = self.player.total self.player.change11 = self.player.payoffs class WaitPage11(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round12(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high12 = self.player.Results_high self.player.risk12 = self.player.Risk_copy self.player.total12 = self.player.total self.player.change12 = self.player.payoffs class WaitPage12(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round13(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high13 = self.player.Results_high self.player.risk13 = self.player.Risk_copy self.player.total13 = self.player.total self.player.change13 = self.player.payoffs class WaitPage13(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round14(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high14 = self.player.Results_high self.player.risk14 = self.player.Risk_copy self.player.total14 = self.player.total self.player.change14 = self.player.payoffs class WaitPage14(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round15(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high15 = self.player.Results_high self.player.risk15 = self.player.Risk_copy self.player.total15 = self.player.total self.player.change15 = self.player.payoffs class WaitPage15(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round16(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high16 = self.player.Results_high self.player.risk16 = self.player.Risk_copy self.player.total16 = self.player.total self.player.change16 = self.player.payoffs class WaitPage16(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round17(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high17 = self.player.Results_high self.player.risk17 = self.player.Risk_copy self.player.total17 = self.player.total self.player.change17 = self.player.payoffs class WaitPage17(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round18(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high18 = self.player.Results_high self.player.risk18 = self.player.Risk_copy self.player.total18 = self.player.total self.player.change18 = self.player.payoffs class WaitPage18(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round19(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.Risk = None self.player.high19 = self.player.Results_high self.player.risk19 = self.player.Risk_copy self.player.total19 = self.player.total self.player.change19 = self.player.payoffs class WaitPage19(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Round20(Page): form_model = 'player' form_fields = ['Risk'] timeout_seconds = 90 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, ) def before_next_page(self): import numpy as np if self.timeout_happened: self.player.Risk = None self.player.blankcount = self.player.blankcount + 1 self.player.Results_high = np.random.normal(loc = 0.11, scale = 0.302) self.player.Results_high = round(self.player.Results_high,3) self.player.Results_low = 0.025 if self.player.Risk == None: self.player.Risk = 0 self.player.Risk_free_percent = 0 self.player.Risk_copy = 0 self.player.payoffs = 0 else: self.player.Risk = self.player.Risk/100 self.player.Risk_copy = self.player.Risk self.player.a = self.player.Risk * self.player.total if self.player.Risk > 1: self.player.Risk_free_percent = 0 self.player.Debt = self.player.Risk * self.player.total - self.player.total #计算需要偿还的债务一共有多少 self.player.payoffs = self.player.a * self.player.Results_high + 0 * Constants.rate - self.player.Debt * Constants.rate self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) else: self.player.Risk_free_percent = 1 - self.player.Risk_copy self.player.Debt = 0 self.player.payoffs = self.player.Results_high * self.player.a + self.player.total * self.player.Results_low - self.player.a * self.player.Results_low self.player.Results_high = round(self.player.Results_high,3) self.player.total = self.player.payoffs + self.player.total self.player.total = round(self.player.total,2) self.player.payoffs = round(self.player.payoffs,2) self.player.high20 = self.player.Results_high self.player.risk20 = self.player.Risk_copy self.player.total20 = self.player.total self.player.change20 = self.player.payoffs class WaitPage20(WaitPage): def after_all_players_arrive(self): self.group.get_ranking() class Resultpage(Page): form_model = 'player' timeout_seconds = 60 def vars_for_template(self): return dict( Results_high = round(self.player.Results_high * 100, 3), Risk_copy = self.player.Risk_copy * 100, Risk_free_percent = self.player.Risk_free_percent * 100, change = self.player.total - Constants.Basic_wage, ) class Risk_Attitude_Task(Page): form_model = 'player' class Bomb(Page): form_model = 'player' form_fields = ['delectedCount'] def before_next_page(self): import random self.player.Bomb_location = random.randint(1, 100); if self.player.delectedCount 2: self.player.payoff = -100 elif self.player.rank < 4: self.player.payoff_decision = round(0.0025 * self.player.total, 2) if self.player.payoff_decision < 0: self.player.payoff_decision = 0 self.player.payoff =100 * self.player.payoff_decision + 100 * self.player.payoff_bomb + 100 * self.player.payoff_questionnaire self.player.payoff1 = round(1 + self.player.payoff_decision + self.player.payoff_bomb + self.player.payoff_questionnaire,2) elif self.player.rank > 3: self.player.payoff_decision = round(0.0075 * self.player.total - 0.005 * self.group.median, 2) if self.player.payoff_decision < 0: self.player.payoff_decision = 0 self.player.payoff =100 * self.player.payoff_decision + 100 * self.player.payoff_bomb + 100 * self.player.payoff_questionnaire self.player.payoff1 = round(1 + self.player.payoff_decision + self.player.payoff_bomb + self.player.payoff_questionnaire,2) if self.player.payoff > 600: self.player.payoff = 600 self.player.payoff1 = 7 class Final_Results(Page): form_model = 'player' timeout_seconds = 60 class Finished(Page): form_model = 'player' page_sequence = [Waiting_Page_after_quiz, Prepare, Round1, WaitPage1, Round2, WaitPage2, Round3, WaitPage3, Round4, WaitPage4, Round5, WaitPage5, Round6, WaitPage6, Round7, WaitPage7, Round8, WaitPage8, Round9, WaitPage9, Round10, WaitPage10, Round11, WaitPage11, Round12, WaitPage12, Round13, WaitPage13, Round14, WaitPage14, Round15, WaitPage15, Round16, WaitPage16, Round17, WaitPage17, Round18, WaitPage18, Round19, WaitPage19, Round20, WaitPage20, Resultpage, Risk_Attitude_Task, Bomb, Loss_aversion_task, Questionnaire, Final_Results, Finished]