Anushka-stack-queues/FinBench
0
1"""2Pre-defined client scenarios for reproducible evaluation.3Each scenario is designed to stress-test specific advisor capabilities.4"""5 6from ..models import ClientProfile, MarketConditions7 8 9# ── Market Conditions (shared baseline) ───────────────────────────────────────10BASELINE_MARKET = MarketConditions(11 equity_expected_return=0.08,12 bond_expected_return=0.04,13 inflation_rate=0.03,14 interest_rate=0.05,15 market_volatility="medium",16)17 18BEAR_MARKET = MarketConditions(19 equity_expected_return=0.04,20 bond_expected_return=0.035,21 inflation_rate=0.05,22 interest_rate=0.065,23 market_volatility="high",24)25 26# ── Task 1 Scenarios: Portfolio Allocation ────────────────────────────────────27 28TASK1_SCENARIOS = [29 ClientProfile(30 client_id="T1-C01",31 age=62,32 annual_income=85_000,33 net_worth=450_000,34 monthly_expenses=3_500,35 dependents=0,36 risk_tolerance="conservative",37 investment_horizon_years=10,38 existing_portfolio={"equities": 70, "bonds": 20, "cash": 10},39 goals=["preserve capital", "steady retirement income"],40 tax_bracket=0.22,41 has_emergency_fund=True,42 has_insurance=True,43 debt_to_income_ratio=0.10,44 ),45 ClientProfile(46 client_id="T1-C02",47 age=38,48 annual_income=120_000,49 net_worth=200_000,50 monthly_expenses=5_500,51 dependents=2,52 risk_tolerance="moderate",53 investment_horizon_years=25,54 existing_portfolio={"equities": 80, "bonds": 15, "cash": 5},55 goals=["buy second home", "college fund", "retirement"],56 tax_bracket=0.28,57 has_emergency_fund=False,58 has_insurance=True,59 debt_to_income_ratio=0.30,60 ),61 ClientProfile(62 client_id="T1-C03",63 age=27,64 annual_income=75_000,65 net_worth=30_000,66 monthly_expenses=3_800,67 dependents=0,68 risk_tolerance="aggressive",69 investment_horizon_years=35,70 existing_portfolio={},71 goals=["early retirement", "startup investment"],72 tax_bracket=0.22,73 has_emergency_fund=False,74 has_insurance=False,75 debt_to_income_ratio=0.45,76 ),77 ClientProfile(78 client_id="T1-C04",79 age=70,80 annual_income=45_000,81 net_worth=620_000,82 monthly_expenses=4_200,83 dependents=0,84 risk_tolerance="conservative",85 investment_horizon_years=5,86 existing_portfolio={"equities": 85, "bonds": 10, "cash": 5},87 goals=["capital preservation", "income generation"],88 tax_bracket=0.12,89 has_emergency_fund=True,90 has_insurance=True,91 debt_to_income_ratio=0.05,92 ),93 ClientProfile(94 client_id="T1-C05",95 age=50,96 annual_income=200_000,97 net_worth=750_000,98 monthly_expenses=9_000,99 dependents=2,100 risk_tolerance="moderate",101 investment_horizon_years=15,102 existing_portfolio={"equities": 60, "bonds": 25, "real_estate": 15},103 goals=["retirement at 65", "kids college"],104 tax_bracket=0.35,105 has_emergency_fund=False,106 has_insurance=True,107 debt_to_income_ratio=0.22,108 ),109 ClientProfile(110 client_id="T1-C06",111 age=31,112 annual_income=160_000,113 net_worth=90_000,114 monthly_expenses=6_000,115 dependents=0,116 risk_tolerance="aggressive",117 investment_horizon_years=30,118 existing_portfolio={"equities": 100},119 goals=["financial independence", "real estate portfolio"],120 tax_bracket=0.32,121 has_emergency_fund=True,122 has_insurance=False,123 debt_to_income_ratio=0.20,124 ),125]126 127# ── Task 2 Scenarios: Risk Assessment ─────────────────────────────────────────128 129TASK2_SCENARIOS = [130 ClientProfile(131 client_id="T2-C01",132 age=45,133 annual_income=180_000,134 net_worth=800_000,135 monthly_expenses=7_000,136 dependents=2,137 risk_tolerance="moderate",138 investment_horizon_years=20,139 existing_portfolio={"equities": 55, "bonds": 30, "cash": 10, "real_estate": 5},140 goals=["retirement", "education fund"],141 tax_bracket=0.32,142 has_emergency_fund=True,143 has_insurance=True,144 debt_to_income_ratio=0.20,145 ),146 ClientProfile(147 client_id="T2-C02",148 age=55,149 annual_income=95_000,150 net_worth=120_000,151 monthly_expenses=6_800,152 dependents=3,153 risk_tolerance="aggressive",154 investment_horizon_years=10,155 existing_portfolio={"equities": 90, "bonds": 5, "cash": 5},156 goals=["retirement in 10 years"],157 tax_bracket=0.24,158 has_emergency_fund=False,159 has_insurance=False,160 debt_to_income_ratio=0.50,161 ),162 ClientProfile(163 client_id="T2-C03",164 age=32,165 annual_income=52_000,166 net_worth=-15_000,167 monthly_expenses=4_600,168 dependents=1,169 risk_tolerance="aggressive",170 investment_horizon_years=30,171 existing_portfolio={"equities": 100},172 goals=["buy home", "pay off debt"],173 tax_bracket=0.22,174 has_emergency_fund=False,175 has_insurance=False,176 debt_to_income_ratio=0.65,177 ),178 ClientProfile(179 client_id="T2-C04",180 age=29,181 annual_income=82_000,182 net_worth=18_000,183 monthly_expenses=5_900,184 dependents=0,185 risk_tolerance="moderate",186 investment_horizon_years=35,187 existing_portfolio={"equities": 70, "cash": 30},188 goals=["buy first home", "retirement"],189 tax_bracket=0.22,190 has_emergency_fund=False,191 has_insurance=False,192 debt_to_income_ratio=0.42,193 ),194 ClientProfile(195 client_id="T2-C05",196 age=44,197 annual_income=145_000,198 net_worth=480_000,199 monthly_expenses=8_500,200 dependents=2,201 risk_tolerance="moderate",202 investment_horizon_years=21,203 existing_portfolio={"equities": 85, "cash": 15},204 goals=["retirement", "vacation property"],205 tax_bracket=0.32,206 has_emergency_fund=True,207 has_insurance=True,208 debt_to_income_ratio=0.18,209 ),210 ClientProfile(211 client_id="T2-C06",212 age=60,213 annual_income=72_000,214 net_worth=210_000,215 monthly_expenses=6_100,216 dependents=1,217 risk_tolerance="aggressive",218 investment_horizon_years=5,219 existing_portfolio={"equities": 95, "cash": 5},220 goals=["retire at 65"],221 tax_bracket=0.22,222 has_emergency_fund=False,223 has_insurance=False,224 debt_to_income_ratio=0.38,225 ),226]227 228# ── Task 3 Scenarios: Full Financial Plan ─────────────────────────────────────229 230TASK3_SCENARIOS = [231 ClientProfile(232 client_id="T3-C01",233 age=35,234 annual_income=110_000,235 net_worth=150_000,236 monthly_expenses=5_000,237 dependents=1,238 risk_tolerance="moderate",239 investment_horizon_years=30,240 existing_portfolio={"equities": 60, "bonds": 30, "cash": 10},241 goals=["retirement", "child education", "home purchase"],242 tax_bracket=0.28,243 has_emergency_fund=False,244 has_insurance=False,245 debt_to_income_ratio=0.30,246 ),247 ClientProfile(248 client_id="T3-C02",249 age=50,250 annual_income=180_000,251 net_worth=600_000,252 monthly_expenses=9_000,253 dependents=2,254 risk_tolerance="moderate",255 investment_horizon_years=15,256 existing_portfolio={"equities": 70, "bonds": 20, "cash": 10},257 goals=["retirement at 65", "college tuition", "second home"],258 tax_bracket=0.35,259 has_emergency_fund=True,260 has_insurance=True,261 debt_to_income_ratio=0.25,262 ),263 ClientProfile(264 client_id="T3-C03",265 age=28,266 annual_income=78_000,267 net_worth=20_000,268 monthly_expenses=4_200,269 dependents=0,270 risk_tolerance="aggressive",271 investment_horizon_years=35,272 existing_portfolio={"cash": 100},273 goals=["financial independence", "travel", "home purchase"],274 tax_bracket=0.22,275 has_emergency_fund=False,276 has_insurance=False,277 debt_to_income_ratio=0.40,278 ),279 ClientProfile(280 client_id="T3-C04",281 age=42,282 annual_income=135_000,283 net_worth=320_000,284 monthly_expenses=7_500,285 dependents=2,286 risk_tolerance="moderate",287 investment_horizon_years=20,288 existing_portfolio={"equities": 65, "bonds": 20, "cash": 15},289 goals=["retirement", "kids college", "bigger home"],290 tax_bracket=0.24,291 has_emergency_fund=True,292 has_insurance=False,293 debt_to_income_ratio=0.34,294 ),295 ClientProfile(296 client_id="T3-C05",297 age=57,298 annual_income=210_000,299 net_worth=980_000,300 monthly_expenses=11_000,301 dependents=1,302 risk_tolerance="conservative",303 investment_horizon_years=8,304 existing_portfolio={"equities": 55, "bonds": 35, "cash": 10},305 goals=["retire at 65", "healthcare reserve", "legacy planning"],306 tax_bracket=0.35,307 has_emergency_fund=True,308 has_insurance=True,309 debt_to_income_ratio=0.12,310 ),311 ClientProfile(312 client_id="T3-C06",313 age=39,314 annual_income=95_000,315 net_worth=85_000,316 monthly_expenses=6_700,317 dependents=3,318 risk_tolerance="moderate",319 investment_horizon_years=22,320 existing_portfolio={"equities": 50, "cash": 50},321 goals=["retirement", "emergency security", "children education"],322 tax_bracket=0.22,323 has_emergency_fund=False,324 has_insurance=False,325 debt_to_income_ratio=0.48,326 ),327]328 