Alguns administradores de 401k não têm a opção de definir as contribuições para um nível que
atinja a contribuição adiável máxima. Para 2017, esse valor é de $ 18.000.
Este pequeno script irá ajudá-lo a calcular a porcentagem que você precisa usar
quando essa é a única coisa que você pode definir.
Por que os vários intervalos de porcentagem? Alguns administradores 401k não permitem que você defina
uma porcentagem de alta precisão. Essas linhas dirão o quanto você está perdendo
por causa dessa imprecisão.
TL; DR Diga ao seu administrador 401k para entrar no programa e
maximizar o adiamento .
#!/usr/bin/env ruby
MAX_DEFERRABLE = ENV['MAX_DEFERRABLE'] || 18_000.00
if ARGV.size <= 1
me = File.basename($PROGRAM_NAME, File.extname($PROGRAM_NAME))
STDERR.puts "Usage: #{me} <number of periods remaining> <pretax pay per period> [amount already contributed]"
STDERR.puts 'Example, for the beginning of the year for someone who makes $60,000/yr with 24 pay periods:'
STDERR.puts "t#{me} 24 2500"
STDERR.puts "Set MAX_DEFERRABLE envvar if it's not #{MAX_DEFERRABLE}."
exit 1
end
PERIODS_REMAINING = ARGV[0].to_f
PAY_PER_PERIOD = ARGV[1].to_f
ALREADY_CONTRIBUTED = if ARGV.size == 3
ARGV[2].to_f
else
0.0
end
remaining = MAX_DEFERRABLE - ALREADY_CONTRIBUTED
per_period = remaining / PERIODS_REMAINING
puts <<~EH
#{MAX_DEFERRABLE} max deferrable.
#{ALREADY_CONTRIBUTED} already contributed.
#{remaining} remaining to be contributed.
#{PERIODS_REMAINING} periods remaining.
#{per_period} contribution per period to reach #{remaining}.
#{PAY_PER_PERIOD} pay each period.
EH
contribution = per_period / PAY_PER_PERIOD
(0...5).each do |places|
percent = (contribution * 100.0).floor(places)
year_total = ((percent / 100.0) * PAY_PER_PERIOD * PERIODS_REMAINING).round(2)
missed_out = (remaining - year_total).round(2)
puts "#{percent}% is recommended contribution at #{places} decimal places, totaling #{year_total} for the year, missing out on #{missed_out} because of safe decimal truncation."
end