from otree.api import * doc = """ Pre-experiment survey """ class Constants(BaseConstants): name_in_url = 'SVY_RT' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # Prolific ID sona = models.StringField( blank=False, label='') # Risk tolerance (GL-RTS; Grable & Lytton (1999) - RT1-13 & Elfenbein et al. (2017) - RT14) RT1 = models.IntegerField( blank=False, choices=[[1, 'A real gambler'], [2, 'Willing to take risks after completing adequate research'], [3, 'Cautious'], [4, 'A real risk avoider']], label='1. In general, how would your best friend describe you as a risk taker?', widget=widgets.RadioSelect, ) RT2 = models.IntegerField( blank=False, choices=[[1, '$1,000 in cash'], [2, 'A 50% chance at winning $5,000'], [3, 'A 25% chance at winning $10,000'], [4, 'A 5% chance at winning $100,000']], label='2. You are on a TV game show and can choose one of the following, which would you take?', widget=widgets.RadioSelect, ) RT3 = models.IntegerField( blank=False, choices=[[1, 'Cancel the vacation'], [2, 'Take a much more modest vacation'], [3, 'Go as scheduled, reasoning that you need the time to prepare for a job search'], [4, 'Extend your vacation, because this might be your last chance to go first-class']], label='3. You have just finished saving for a “once-in-a-lifetime” vacation. ' 'Three weeks before you plan to leave, you lose your job. You would:', widget=widgets.RadioSelect, ) RT4 = models.IntegerField( blank=False, choices=[[1, 'Deposit it in a bank account, money market account, or an insured CD'], [2, 'Invest it in safe high quality bonds or bond mutual funds'], [3, 'Invest it in stocks of stock mutual funds']], label='4. If you unexpectedly received $20,000 to invest, what would you do?', widget=widgets.RadioSelect, ) RT5 = models.IntegerField( blank=False, choices=[[1, 'Not at all comfortable'], [2, 'Somewhat comfortable'], [3, 'Very comfortable']], label='5. In terms of experience, how comfortable are you investing in stocks or stock mutual funds?', widget=widgets.RadioSelect, ) RT6 = models.IntegerField( blank=False, choices=[[1, 'Loss'], [2, 'Uncertainty'], [3, 'Opportunity'], [4, 'Thrill']], label='6. When you think of the word “risk”, which of the following words comes to mind first?', widget=widgets.RadioSelect, ) RT7 = models.IntegerField( blank=False, choices=[[1, 'Hold the bonds'], [2, 'Sell the bonds, put half the proceeds into money market accounts, and the other half into hard assets'], [3, 'Sell the bonds and put the total proceeds into hard assets'], [4, 'Sell the bonds, put all the money into hard assets, and borrow additional money to buy more']], label='7. Some experts are predicting prices of assets such as gold, jewels, collectibles, and real estate (hard assets) to increase in value; ' 'bond prices may fall, however, experts tend to agree that government bonds are relatively safe. ' 'Most of your investment assets are now in high interest government bonds. What would you do?', widget=widgets.RadioSelect, ) RT8 = models.IntegerField( blank=False, choices=[[1, '$200 gain best case; $0 gain/loss worst case'], [2, '$800 gain best case; $200 loss worst case'], [3, '$2,600 gain best case; $800 loss worst case'], [4, '$4,800 gain best case; $2,400 loss worst case']], label='8. Given the best and worst case returns of the four investment choices below, which would you prefer?', widget=widgets.RadioSelect, ) RT9 = models.IntegerField( blank=False, choices=[[1, 'A sure gain of $500'], [2, 'A 50% chance to gain $1,000 and a 50% chance to gain nothing']], label='9. In addition to whatever you own, you have been given $1,000. You are now asked to choose between:', widget=widgets.RadioSelect, ) RT10 = models.IntegerField( blank=False, choices=[[1, 'A sure loss of $500'], [2, 'A 50% chance to lose $1,000 and a 50% chance to lose nothing']], label='10. In addition to whatever you own, you have been given $2,000. You are now asked to choose between:', widget=widgets.RadioSelect, ) RT11 = models.IntegerField( blank=False, choices=[[1, 'A savings account or money market mutual fund'], [2, 'A mutual fund that owns stocks and bonds'], [3, 'A portfolio of 15 common stocks'], [4, 'Commodities like gold, silver, and oil']], label='11. Suppose a relative left you an inheritance of $100,000, ' 'stipulating in the will that you invest ALL the money in ONE of the following choices. Which one would you select?', widget=widgets.RadioSelect, ) RT12 = models.IntegerField( blank=False, choices=[[1, '60% in low-risk investments, 30% in medium-risk investments, 10% in high-risk investments'], [2, '30% in low-risk investments, 40% in medium risk investments, 30% in high-risk investments'], [3, '10% in low-risk investments, 40% in medium-risk investments, 50% in high-risk investments']], label='12. If you had to invest $20,000, which of the following investment choices would you find most appealing?', widget=widgets.RadioSelect, ) RT13 = models.IntegerField( blank=False, choices=[[1, 'Nothing'], [2, 'One month’s salary'], [3, 'Three month’s salary'], [4, 'Six month’s salary']], label='13. Your trusted friend and neighbor, an experienced geologist, is putting together a group of investments ' 'to fund an exploratory gold mining venture. The venture could pay back 50 to 100 times the investment if successful. ' 'If the mine is a bust, the entire investment is worthless. Your friend estimates the chance of success is only 20%. ' 'If you had the money, how much would you invest? ', widget=widgets.RadioSelect, ) RT14 = models.IntegerField( blank=False, choices=[[1, 'A sure gain of $1'], [2, 'A 50% chance to gain $0.80 or a 50% chance to gain $1.40'], [3, 'A 50% chance to gain $0.60 or a 50% chance to gain $1.80'], [4, 'A 50% chance to gain $0.40 or a 50% chance to gain $2.20'], [5, 'A 50% chance to gain $0.20 or a 50% chance to gain $2.60'], [6, 'A 50% chance to gain $0 or a 50% chance to gain $2.80']], label='14. Given the returns of the six choices below, which would you prefer?', widget=widgets.RadioSelect, ) # PAGES class Info(Page): form_model = 'player' form_fields = ['sona'] class Ri(Page): form_model = 'player' form_fields = ['RT1', 'RT2', 'RT3', 'RT4', 'RT5', 'RT6', 'RT7', 'RT8', 'RT9', 'RT10', 'RT11', 'RT12', 'RT13', 'RT14'] page_sequence = [Info, Ri]