Sources: Wikipedia (CC BY-SA 4.0) ยท Kahneman & Tversky (1979), Prospect Theory
People are not rational maximizers. Prospect theory replaces expected utility with a value function that is concave for gains, convex for losses, and steeper on the loss side. Behavioral economics catalogs the systematic ways humans deviate from the rational-agent model.
The value function
Kahneman and Tversky's value function has three properties. Reference dependence: outcomes are evaluated as gains or losses relative to a reference point, not absolute levels. Diminishing sensitivity: the function is concave for gains and convex for losses. Loss aversion: losses hurt roughly twice as much as equivalent gains feel good (the coefficient lambda is typically around 2.25).
Scheme
; Prospect theory value function; v(x) = x^alpha if x >= 0 (gains); v(x) = -lambda * |x|^beta if x < 0 (losses); Typical: alpha=0.88, beta=0.88, lambda=2.25
(define alpha 0.88)
(define beta 0.88)
(define lambda-param 2.25)
(define (value x)
(if (>= x 0)
(expt x alpha)
(* (- lambda-param) (expt (abs x) beta))))
; Compare symmetric gains and losses
(define amounts (list 1050100500))
(display "Amount | Gain value | Loss value | Ratio") (newline)
(display "-------+------------+------------+------") (newline)
(for-each
(lambda (x)
(let ((g (value x))
(l (value (- x))))
(display x) (display " | ")
(display (/ (round (* g 100)) 100)) (display " | ")
(display (/ (round (* l 100)) 100)) (display " | ")
(display (/ (round (* (/ (abs l) g) 100)) 100))
(newline)))
amounts)
Python
# Prospect theory value function
alpha, beta, lam = 0.88, 0.88, 2.25def value(x):
if x >= 0:
return x ** alpha
return -lam * abs(x) ** beta
print(str('Amount') + " | " + str('Gain') + " | " + str('Loss') + " | " + str('Ratio'))
print("-" * 42)
for x in [10, 50, 100, 500]:
g, l = value(x), value(-x)
print(str(x) + " | " + str(round(g, 2)) + " | " + str(round(l, 2)) + " | " + str(round(abs(l)/g, 2)))
Loss aversion and framing
Loss aversion means people reject gambles that a rational agent would accept. A 50-50 bet to win $110 or lose $100 has positive expected value, but most people decline. Framing changes decisions by relabeling the same outcome: "90% survival rate" versus "10% mortality rate" triggers different choices despite identical information.
Scheme
; Loss aversion: reject positive-EV gambles
(define lambda-param 2.25)
(define alpha 0.88)
(define beta 0.88)
(define (value x)
(if (>= x 0) (expt x alpha)
(* (- lambda-param) (expt (abs x) beta))))
; 50-50 bet: win $110 or lose $100
(define ev-monetary (* 0.5 (+ 110 (- 100))))
(define ev-prospect (+ (* 0.5 (value 110)) (* 0.5 (value (- 100)))))
(display "Monetary EV: $") (display ev-monetary) (newline)
(display "Prospect value: ") (display (/ (round (* ev-prospect 100)) 100)) (newline)
(display "Accept under EU theory? yes") (newline)
(display "Accept under prospect theory? ")
(display (if (> ev-prospect 0) "yes""no")) (newline)
; Framing effect
(newline)
(display "--- Framing ---") (newline)
(display "Frame A: 200 of 600 people saved (certain)") (newline)
(display "Frame B: 1/3 chance all 600 saved, 2/3 chance none saved") (newline)
(display "Same expected outcome (200 saved).") (newline)
(display "Most choose A when framed as gains, B when framed as losses.")
Anchoring and nudges
Anchoring: initial exposure to a number biases subsequent estimates toward that number, even when it is irrelevant. Asking "Is the population of Chicago more or less than 10 million?" yields higher estimates than anchoring at 1 million. Nudges exploit these biases for good: changing default options (opt-out vs opt-in for retirement savings) dramatically changes behavior without restricting choice. This is libertarian paternalism.
Scheme
; Nudge: default effect on retirement savings; Opt-in: only ~40% of employees participate; Opt-out (auto-enrollment): ~90% participate; Same options, same freedom, different outcome
(define employees 1000)
(define opt-in-rate 0.40)
(define opt-out-rate 0.90)
(define annual-contribution 3000)
(define years 30)
(define rate 0.07)
(define (future-value pmt r n)
; Annuity FV = pmt * ((1+r)^n - 1) / r
(* pmt (/ (- (expt (+ 1 r) n) 1) r)))
(define per-person-fv (future-value annual-contribution rate years))
(display "Per-person retirement savings (30yr): $")
(display (round per-person-fv)) (newline) (newline)
(define total-optin (* employees opt-in-rate per-person-fv))
(define total-optout (* employees opt-out-rate per-person-fv))
(display "Opt-in system (40%): $")
(display (round total-optin)) (newline)
(display "Opt-out system (90%): $")
(display (round total-optout)) (newline)
(display "Difference from one default change: $")
(display (round (- total-optout total-optin)))
Neighbors
Cross-references
Cogsci Ch.6 โ decision making: the cognitive architecture behind biases