4 from dataclasses import dataclass
5 import returns_and_expenses as rai
6 from typing import List, Tuple
8 import string_utils as su
9 from type.money import Money
14 @dataclass(repr=False)
15 class SimulationParameters(object):
16 initial_account_states: List[account.Account]
17 initial_annual_expenses: Money
18 annual_expenses: Money
19 lynn_social_security_age: int
20 lynn_annual_social_security_dollars: float
21 scott_social_security_age: int
22 scott_annual_social_security_dollars: float
23 federal_dividends_and_long_term_gains_brackets: List[Tuple[Money, float]]
24 federal_ordinary_income_tax_brackets: List[Tuple[Money, float]]
25 returns_and_expenses: rai.ReturnsAndExpenses
28 with su.SprintfStdout() as buf:
29 print('SIMULATION PARAMETERS:')
30 print(f' initial_annual_expenses: {self.initial_annual_expenses}')
31 print(f' current_annual_expenses: {self.annual_expenses}')
32 print(f' lynn_social_security_age: {self.lynn_social_security_age}')
33 print(f' lynn_annual_social_security_dollars: {self.lynn_annual_social_security_dollars}')
34 print(f' scott_social_security_age: {self.scott_social_security_age}')
35 print(f' scott_annual_social_security_dollars: {self.scott_annual_social_security_dollars}')
36 print(f' returns_and_expenses: {self.returns_and_expenses}')
37 print(' federal_ordinary_income_tax_brackets: [')
38 for t in self.federal_ordinary_income_tax_brackets:
39 print(f' {t[0]} => {t[1]}')
41 print(' federal_dividends_and_long_term_gains_brackets: [')
42 for t in self.federal_dividends_and_long_term_gains_brackets:
43 print(f' {t[0]} => {t[1]}')
48 DEFAULT_SIMULATION_PARAMS = SimulationParameters(
49 initial_account_states = [],
50 initial_annual_expenses = Money(150000),
51 annual_expenses = Money(150000),
52 lynn_social_security_age = 67,
53 lynn_annual_social_security_dollars = 40000,
54 scott_social_security_age = 67,
55 scott_annual_social_security_dollars = 40000,
56 federal_ordinary_income_tax_brackets = taxman.PESSIMISTIC_FEDERAL_INCOME_TAX_BRACKETS,
57 federal_dividends_and_long_term_gains_brackets = taxman.PESSIMISTIC_LONG_TERM_GAIN_FEDERAL_TAX_BRACKETS,
58 returns_and_expenses = None,