from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Prepare(Page): form_model = 'player' 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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.payoff_decision = round(0.0025 * self.player.total, 2) if self.player.payoff_decision < 0: self.player.payoff_decision = 0 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 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 = -10000 else: self.player.payoff = self.player.payoff_decision * 100 + self.player.payoff_bomb * 100 + self.player.payoff_questionnaire * 100 self.player.payoff1 = 1 + self.player.payoff_decision + self.player.payoff_bomb + self.player.payoff_questionnaire if self.player.payoff > 600: self.player.payoff = 600 self.player.payoff1 = 7 class Questionnaire(Page): form_model = 'player' form_fields = ['Age', 'Gender', 'Annual_household_income', 'E_mail', 'Education', 'Suggestion'] timeout_seconds = 90 class Final_Results(Page): form_model = 'player' timeout_seconds = 60 class Finished(Page): form_model = 'player' page_sequence = [Prepare, Round1, Round2, Round3, Round4, Round5, Round6, Round7, Round8, Round9, Round10, Round11, Round12, Round13, Round14, Round15, Round16, Round17, Round18, Round19, Round20, Resultpage, Risk_Attitude_Task, Bomb, Loss_aversion_task, Questionnaire, Final_Results, Finished]