Coder Social home page Coder Social logo

kablamo / networthify Goto Github PK

View Code? Open in Web Editor NEW
22.0 22.0 5.0 1012 KB

Personal finance for savings extremists and early retirement savants

Home Page: https://networthify.com

Perl 11.37% Perl 6 5.62% CSS 6.40% HTML 23.24% JavaScript 47.85% Makefile 0.03% Go 0.81% Python 0.65% ApacheConf 0.01% PHP 2.38% PLpgSQL 1.32% Shell 0.32%

networthify's People

Contributors

kablamo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

networthify's Issues

Networthify SSL Certificate Expiration

Just a heads up in case you didn't already know, the SSL certificate on https://networthify.com expired on February 18th, 2017.


Thank you, by the way, for the early retirement calculator portion. It's been the tool I come back to again and again for my projections.

Retirement plot and table calculations are inconsistent and calculator rounds savings rate to nearest 2% before proceeding

  1. Your tables assume a mid-year return of half the annual return rate for new savings, but your primary calculation does not. This makes your table and plot inconsistent.

Here is an example where the obvious answer (using your table's calculations) is 15 years, but the main calculation claims 15.2 years.

plot_table_inconsistency

Note that the desired target net worth

>>> expenses = 50000
>>> annual_withdrawal = 0.04
>>> expenses / annual_withdrawal
1250000.0

is exactly reached at 15 years in your table (ignoring rounding issues in your javascript code). That is, $1.25MM is the resulting value at t = 15:

>>> income = 100000
>>> savings = 50000
>>> expenses = income - savings
>>> portfolio = 69313.90
>>> return_rate = 0.05
>>> withdrawal_rate = 0.04
>>> 
>>> t = 15
>>> savings * (1 + return_rate / 2) * ((1 + return_rate) ** t - 1) / return_rate + portfolio * (1 + return_rate) ** t
1250000.0038315544

  1. As an aside, the effective intrayear increase on continuously DCA'd investments with exponential growth is actually r/ln(1+r), but I accept that r/2 is probably "close enough" here, especially considering the site is intended for rough calculation anyway.
>>> r = 0.05
>>> r / log(1 + r)
1.0247967157143927
>>> r = 0.07
>>> r / log(1 + r)
1.0346053546590026
>>> r = 0.10
>>> r / log(1 + r)
1.0492058687257062

  1. This is a bit minor, but the calculator rounds the savings rate to the nearest 2% (seemingly to align with the plot) and then proceeds using the rounded rate rather than the values input by the user.

E.g. the savings rate is clearly incorrect (on the left) unless manually input (on the right)

rounding_error

and thus the result is slightly incorrect by default. You can verify the result on the right is more correct via your straightforward annuity calculation (again, temporarily ignoring the fact that this calculation is slightly incorrect for the use case)

>>> from math import log
>>> 
>>> income = 100000
>>> savings = 71000
>>> expenses = income - savings
>>> portfolio = 600000
>>> return_rate = 0.05
>>> withdrawal_rate = 0.04
>>> 
>>> log((savings * withdrawal_rate + return_rate * expenses) / (portfolio * return_rate * withdrawal_rate + savings * withdrawal_rate)) / log(1 + return_rate)
1.2306177277526853

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.