owlplanner 2025.4.22__tar.gz → 2025.4.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/PKG-INFO +1 -1
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/pyproject.toml +1 -1
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/plan.py +6 -14
- owlplanner-2025.4.26/src/owlplanner/version.py +1 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Documentation.py +4 -2
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/requirements.txt +1 -1
- owlplanner-2025.4.22/src/owlplanner/.plan.py.swo +0 -0
- owlplanner-2025.4.22/src/owlplanner/version.py +0 -1
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/.devcontainer/devcontainer.json +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/.flake8 +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/.gitattributes +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/.github/workflows/github-actions-runtests.yml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/.gitignore +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/INSTALL.md +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/LICENSE +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/BF01580653.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/FE00006821-Class-VI-Injection-Permit--Salient-Features-and-Regulatory-Challenges_Final.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Kou-OptionPricingDouble-2004.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Multi-Period Mean Expected-Shortfall Strategies Cut Your Losses and Ride Your Gains .pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Optimal Asset Allocation for Retirement Saving Deterministic Vs. Time Consistent Adaptive Strategies.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Rule-based_strategies_for_dynamic_life_cycle_inves.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Snyder-LinearProgrammingSpecial-1984.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/WileyModelBuildinginMathematicalProgramming5th2013.sharethefiles.com.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/bv_cvxbook.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/s10436-006-0062-y.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/README.md +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/USER_GUIDE.md +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docker/Dockerfile +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docker/README.md +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docker/docker-compose.yml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docker/fastentrypoint.sh +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/AD-taxDef.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/AD-taxFree.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/AD-taxable.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/Hist_Bequest.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/Hist_Spending.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/MC-tutorial2a.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/MC-tutorial2b.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/OwlUI.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/allocations.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/owl.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/profile.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/ratesCorrelations.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/ratesPlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/savingsPlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/sourcesPlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/spendingPlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/taxIncomePlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/images/taxesPlot.png +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/newowl.tex +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/owl.pdf +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/docs/owl.tex +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_jack+jill.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_joe.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_john+sally.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_jon+jane.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_kim+sam-bequest.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/case_kim+sam-spending.toml +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/jack+jill.xlsx +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/joe.xlsx +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/john+sally.xlsx +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/jon+jane.xlsx +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/examples/template.xlsx +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/john+sally.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/kim+sam.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/template.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/tutorial_1.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/tutorial_2.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/notebooks/tutorial_3.ipynb +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/owlplanner.cmd +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/owlplanner.sh +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/reponse.txt +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/requirements.txt +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/__init__.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/abcapi.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/config.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/data/__init__.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/data/rates.csv +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/logging.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/progress.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/rates.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/tax2025.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/timelists.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/src/owlplanner/utils.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/tests/test_logger.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/tests/test_regressions.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/tests/test_repro.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/tests/test_toml_cases.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/tests/test_units.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ttt.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ttt2.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ttt3.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/About_Owl.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Asset_Allocation.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Create_Case.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Current_Assets.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Fixed_Income.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Graphs.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Historical_Range.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Logs.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Monte_Carlo.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Optimization_Parameters.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Output_Files.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Quick_Start.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/README.md +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Rates_Selection.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Settings.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Wages_And_Contributions.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/Worksheets.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/main+fonts.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/main.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/owlbridge.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/plots.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/progress.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/sskeys.py +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/sskeys.py.color +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/style.css +0 -0
- {owlplanner-2025.4.22 → owlplanner-2025.4.26}/ui/tomlexamples.py +0 -0
|
@@ -1087,15 +1087,10 @@ class Plan(object):
|
|
|
1087
1087
|
Tau1_ijn = 1 + tau_ijn
|
|
1088
1088
|
Tauh_ijn = 1 + tau_ijn / 2
|
|
1089
1089
|
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
bigM = 5e6
|
|
1096
|
-
if "bigM" in options:
|
|
1097
|
-
# No units for bigM.
|
|
1098
|
-
bigM = options["bigM"]
|
|
1090
|
+
units = u.getUnits(options.get("units", "k"))
|
|
1091
|
+
# No units for bigM.
|
|
1092
|
+
bigM = options.get("bigM", 5e6)
|
|
1093
|
+
assert isinstance(bigM, (int, float)), f"bigM {bigM} is not a number."
|
|
1099
1094
|
|
|
1100
1095
|
###################################################################
|
|
1101
1096
|
# Inequality constraint matrix with upper and lower bound vectors.
|
|
@@ -1674,10 +1669,7 @@ class Plan(object):
|
|
|
1674
1669
|
if len(magi) != 3:
|
|
1675
1670
|
raise ValueError("previousMAGIs must have 3 values.")
|
|
1676
1671
|
|
|
1677
|
-
|
|
1678
|
-
units = u.getUnits(options["units"])
|
|
1679
|
-
else:
|
|
1680
|
-
units = 1000
|
|
1672
|
+
units = u.getUnits(options.get("units", "k"))
|
|
1681
1673
|
self.prevMAGI = units * np.array(magi)
|
|
1682
1674
|
|
|
1683
1675
|
self.lambdha = 0
|
|
@@ -1722,7 +1714,7 @@ class Plan(object):
|
|
|
1722
1714
|
objFac = -1 / self.gamma_n[-1]
|
|
1723
1715
|
|
|
1724
1716
|
# mip_rel_gap smaller than 1e-6 can lead to oscillatory solutions.
|
|
1725
|
-
milpOptions = {"disp": False, "mip_rel_gap": 1e-
|
|
1717
|
+
milpOptions = {"disp": False, "mip_rel_gap": 1e-7}
|
|
1726
1718
|
|
|
1727
1719
|
it = 0
|
|
1728
1720
|
absdiff = np.inf
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2025.04.26"
|
|
@@ -279,9 +279,11 @@ conversions will be allowed before the year specified.
|
|
|
279
279
|
|
|
280
280
|
Calculations of Medicare and IRMAA can be turned on or off. This will typically speed up
|
|
281
281
|
the calculations by a factor of 2 to 3, which can be useful when running Monte Carlo simulations.
|
|
282
|
-
If the age of individuals makes them eligible for Medicare within the next
|
|
283
|
-
additional cells will appear for entering the Modified Adjusted Gross Income (MAGI) for
|
|
282
|
+
If the age of individuals makes them eligible for Medicare within the next three years,
|
|
283
|
+
additional cells will appear for entering the Modified Adjusted Gross Income (MAGI) for the current
|
|
284
|
+
and past 2 years, when applicable. Values default to zero.
|
|
284
285
|
These numbers are needed to calculate the Income-Related Monthly Adjusted Amounts (IRMAA).
|
|
286
|
+
MAGI for current year is required as it allows plan to start in mid-year for the first year.
|
|
285
287
|
|
|
286
288
|
The time profile modulating the net spending amount
|
|
287
289
|
can be selected to either be *flat* or follow a *smile* shape.
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2025.04.22"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{owlplanner-2025.4.22 → owlplanner-2025.4.26}/Papers/Snyder-LinearProgrammingSpecial-1984.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|