firenomics-tools 0.1.0__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.
- firenomics_tools-0.1.0/PKG-INFO +27 -0
- firenomics_tools-0.1.0/README.md +12 -0
- firenomics_tools-0.1.0/pyproject.toml +22 -0
- firenomics_tools-0.1.0/setup.cfg +4 -0
- firenomics_tools-0.1.0/src/firenomics_tools/__init__.py +33 -0
- firenomics_tools-0.1.0/src/firenomics_tools.egg-info/PKG-INFO +27 -0
- firenomics_tools-0.1.0/src/firenomics_tools.egg-info/SOURCES.txt +7 -0
- firenomics_tools-0.1.0/src/firenomics_tools.egg-info/dependency_links.txt +1 -0
- firenomics_tools-0.1.0/src/firenomics_tools.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: firenomics-tools
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: FIRE withdrawal math: survival-checked withdrawal rates for early retirees
|
|
5
|
+
Author: Scrap Labs
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://firenomics.com
|
|
8
|
+
Project-URL: Repository, https://github.com/scrapertweeter3-prog/firenomics-site
|
|
9
|
+
Project-URL: Related projects, https://www.poketdev.com,https://pastagi.com,https://extrahustles.com,https://firenomics.com,https://durablepicks.com,https://hackedself.com
|
|
10
|
+
Keywords: fire,retirement,withdrawal-rate,personal-finance
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Topic :: Software Development
|
|
13
|
+
Requires-Python: >=3.8
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# firenomics-tools
|
|
17
|
+
|
|
18
|
+
FIRE withdrawal math: survival-checked withdrawal rates for early retirees.
|
|
19
|
+
|
|
20
|
+
Part of the Scrap Labs toolkit:
|
|
21
|
+
|
|
22
|
+
- Poket Dev: https://www.poketdev.com
|
|
23
|
+
- Pastagi: https://pastagi.com
|
|
24
|
+
- Extra Hustles: https://extrahustles.com
|
|
25
|
+
- Firenomics: https://firenomics.com
|
|
26
|
+
- Durable Picks: https://durablepicks.com
|
|
27
|
+
- Hacked Self: https://hackedself.com
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# firenomics-tools
|
|
2
|
+
|
|
3
|
+
FIRE withdrawal math: survival-checked withdrawal rates for early retirees.
|
|
4
|
+
|
|
5
|
+
Part of the Scrap Labs toolkit:
|
|
6
|
+
|
|
7
|
+
- Poket Dev: https://www.poketdev.com
|
|
8
|
+
- Pastagi: https://pastagi.com
|
|
9
|
+
- Extra Hustles: https://extrahustles.com
|
|
10
|
+
- Firenomics: https://firenomics.com
|
|
11
|
+
- Durable Picks: https://durablepicks.com
|
|
12
|
+
- Hacked Self: https://hackedself.com
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "firenomics-tools"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "FIRE withdrawal math: survival-checked withdrawal rates for early retirees"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = {text = "MIT"}
|
|
12
|
+
authors = [{name = "Scrap Labs"}]
|
|
13
|
+
keywords = ["fire", "retirement", "withdrawal-rate", "personal-finance"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Topic :: Software Development",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
[project.urls]
|
|
20
|
+
Homepage = "https://firenomics.com"
|
|
21
|
+
Repository = "https://github.com/scrapertweeter3-prog/firenomics-site"
|
|
22
|
+
"Related projects" = "https://www.poketdev.com,https://pastagi.com,https://extrahustles.com,https://firenomics.com,https://durablepicks.com,https://hackedself.com"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Withdrawal-rate stress math for early retirement planning."""
|
|
2
|
+
|
|
3
|
+
VERSION = "0.1.0"
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def portfolio_survival(balance: float, annual_spend: float, returns: list) -> bool:
|
|
7
|
+
"""Does a balance survive a fixed sequence of real returns while
|
|
8
|
+
withdrawing annual_spend (inflation-adjusted kept simple: constant)?"""
|
|
9
|
+
b = balance
|
|
10
|
+
for r in returns:
|
|
11
|
+
b = b * (1 + r) - annual_spend
|
|
12
|
+
if b <= 0:
|
|
13
|
+
return False
|
|
14
|
+
return True
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def safe_rate(balance: float, annual_spend: float, horizon_years: int, step: float = 0.0025) -> float:
|
|
18
|
+
"""Highest constant withdrawal RATE (spend/balance) that survives a
|
|
19
|
+
flat real-return assumption at horizon. Deliberately naive; see site
|
|
20
|
+
for sequence-of-returns discussion."""
|
|
21
|
+
rate = 0.03
|
|
22
|
+
while True:
|
|
23
|
+
spend = balance * (rate + step)
|
|
24
|
+
b = balance
|
|
25
|
+
ok = True
|
|
26
|
+
for _ in range(horizon_years):
|
|
27
|
+
b = b * 1.05 - spend # 5% flat real assumption
|
|
28
|
+
if b <= 0:
|
|
29
|
+
ok = False
|
|
30
|
+
break
|
|
31
|
+
if not ok:
|
|
32
|
+
return rate
|
|
33
|
+
rate += step
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: firenomics-tools
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: FIRE withdrawal math: survival-checked withdrawal rates for early retirees
|
|
5
|
+
Author: Scrap Labs
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://firenomics.com
|
|
8
|
+
Project-URL: Repository, https://github.com/scrapertweeter3-prog/firenomics-site
|
|
9
|
+
Project-URL: Related projects, https://www.poketdev.com,https://pastagi.com,https://extrahustles.com,https://firenomics.com,https://durablepicks.com,https://hackedself.com
|
|
10
|
+
Keywords: fire,retirement,withdrawal-rate,personal-finance
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Topic :: Software Development
|
|
13
|
+
Requires-Python: >=3.8
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# firenomics-tools
|
|
17
|
+
|
|
18
|
+
FIRE withdrawal math: survival-checked withdrawal rates for early retirees.
|
|
19
|
+
|
|
20
|
+
Part of the Scrap Labs toolkit:
|
|
21
|
+
|
|
22
|
+
- Poket Dev: https://www.poketdev.com
|
|
23
|
+
- Pastagi: https://pastagi.com
|
|
24
|
+
- Extra Hustles: https://extrahustles.com
|
|
25
|
+
- Firenomics: https://firenomics.com
|
|
26
|
+
- Durable Picks: https://durablepicks.com
|
|
27
|
+
- Hacked Self: https://hackedself.com
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
firenomics_tools
|