평균 효용 극대화 이론(Expected Utility Maximization Theory)은, 경제학(Economics)에서 자주 언급되는 썰 (Theory) 중에 하나입니다. 이론 응용의 핵심은, 불확실한 결과값 (random variable)이 주어졌을 때 그 결과값으로부터 얻는 정량적 효용(quantitative utility)의 기대값 을 계산하고, 위험 회피 성향 계수 (risk aversion)에 따라 그 효용의 기대값과 동일한 효용을 만들어 내는 확실한 결과값 (certainty equivalent)’을 산출하는 것입니다. 그래서 다음과 같은 내용을 구현해 보겠습니다.
- 효용함수 는 대표적인 형태 중 하나인 CRRA(Constant Relative Risk Aversion) 함수 사용
- 주어진 확률분포 와 결과값 에 대한 효용의 기댓값 계산
- Risk premium (위험 프리미엄) 계산: 확률적 상황과 확실한 상황의 차이
Definition
- is an observed random variable
- CRRA 효용함수:
- 기대효용( Expected Utility ):
- CE (Certainty Equivalent):
- 위험프리미엄 (Risk Premium):
python
import numpy as np
# 확률과 결과값
probabilities = [0.5, 0.5]
outcomes = [100, 200]
# 일반 효용함수 예시 (제곱근)
def utility_function(x):
return np.sqrt(x)
# CRRA(Constant Relative Risk Aversion) 효용함수
def crra(x, rho=2):
x = np.array(x, dtype=float)
if rho == 1:
return np.log(x)
else:
return (x**(1 - rho)) / (1 - rho)
# CRRA 역함수: 기대효용 → 확실한 가치(CE)
def ce_crra(x, rho=2):
eu = crra(x, rho).mean()
if rho == 1:
return np.exp(eu)
else:
return ((1 - rho) * eu) ** (1 / (1 - rho))
# 기대효용 계산
def expected_utility(outcomes, probabilities, utility_function):
return np.sum([
utility_function(outcome) * probability
for outcome, probability in zip(outcomes, probabilities)
])
# 위험 프리미엄 계산
def risk_premium(outcomes, probabilities, utility_function):
expected_value = np.sum([
outcome * probability
for outcome, probability in zip(outcomes, probabilities)
])
certainty_equivalent = utility_function(
expected_utility(outcomes, probabilities, utility_function)
)
return expected_value - certainty_equivalent
# 실행 예시
expected_util = expected_utility(outcomes, probabilities, utility_function)
risk_prem = risk_premium(outcomes, probabilities, utility_function)
print("Expected Utility:", expected_util)
print("Risk Premium:", risk_prem)