#1 by tashb
Hello! I am trying to programme a 10-round experiment whereby the invested amount has a 50% chance of success. In round 1 subjects start with an endowment of £5. If successful, the invested amount is tripled. Otherwise, the investment is lost. The return is then carried over to the next round. So for example, if you invest £2 of the £5 and the investment is successful, you would start the next round with £9. I am having trouble carrying over the return from the previous round to the next. I am currently getting the TypeError: Boolean value of this clause is not defined after submitting an investment amount. from otree.api import * import random doc = "Risk Preferences" class C(BaseConstants): NAME_IN_URL = 'risk_preferences' PLAYERS_PER_GROUP = None NUM_ROUNDS = 10 ENDOWMENT = 5 class Subsession(BaseSubsession): round_number = models.IntegerField() class Group(BaseGroup): pass class Player(BasePlayer): cash = models.CurrencyField(initial=5) returns = models.CurrencyField(initial=0) # cash = models.CurrencyField(initial=5) investment = models.CurrencyField( min=0, max=cash, ) # def somefunction(self): # return self.in_round(-1).cash # PAGES class Introduction(Page): @staticmethod def is_displayed(player: Player): return round(1) # only shown to players in round 1 class Investment(Page): form_model = 'player' form_fields = ['investment'] class Results(Page): form_model = 'player' # FUNCTIONS def returns(player): # the return of the player's investment random_outcome = random.choice([0, 3]), player.returns = player.investment * random_outcome return player.returns def payoff(player): # the player's total payoff player.payoff = C.ENDOWMENT - player.investment + player.returns def cash(player): #otree doesn't like me using payoff for max value player.cash = player.payoff return player.cash def retrieve_cash(player): # trying to retrieve cash from previous round prev_player = player.in_round(player.round_number - 1) print(prev_player.cash) return prev_player.cash page_sequence = [Introduction, Investment, Results] I would really appreciate any help with this - there are not many people I can ask in my department.
#2 by Daniel_Frey
Participant variables should do the trick: https://otree.readthedocs.io/en/latest/rounds.html#participant-fields