Showing posts with label tools. Show all posts
Showing posts with label tools. Show all posts

Friday, June 20, 2008

Credit Card Reasons Revisited

Anonymous Says No To $350



Or, How To Miss Out On $29.20 a Month By Not Using Credit Cards



I recently listed 8 reasons to use a Credit Card which caused someone under the bravery of 'Anonymous' to call my advice crappy.

I understand that Credit Cards can be trouble for some people and I have no problem with people disagreeing with me. I did however take issue with these two segments of his response:

Why not keep the money in a high interest account and transfer it online,free, to your checking account as needed. problem solved
...
Rewards,benefits. Virtually useless. For most people the rewards/benefits do not outweigh the risks with credit cards


Great idea! And if one wasn't using a Credit Card at all, I'd agree. However, I found the line 'Virtually useless' rather suspect. I decided to run an analysis and see for myself (and for you, dear reader) what exactly is the financial benefit of using a Credit Card in the manner I use it.

Remember, our financial plan says to use the Credit Card wherever possible (and to pay it off on time, every time).

My analysis involves the following three scenarios:

Scenarios Under Analysis


Checking Account Only



  • One 0% interest, $0 fees checking account

  • Salary goes in, checks come out



Checking Account and a 3% APY Savings Account



  • Salary goes into Savings

  • Money is transfer ed over as needed


3% APY Savings Account, 1% Cash Back Credit Card



  • Salary goes into Savings

  • All expenses go onto Credit Card

  • Credit Card is paid off at the end of the month



The Results!


With a monthly salary of $3,013.26 and monthly expenses of $2,187.50 using a 1% cash back credit card and a 3% APY savings account I will make $29.20 more a month than if I were just using a checking account. I will make you $24.96 more a month than if you I were using a checking and savings account (but no Credit Card).

See the whole sheet for a more detailed look including assumptions I made to simplify the calculations.

Table: Monthly Difference Between the Three Scenarios






Blog Sized ExcerptChecking OnlyChecking and SavingsSavings and Credit Card
Vs. Checking Only$0.00$4.24$29.20
Vs. Checking and Savings-$4.24$0.00$24.96
Vs. Savings and Credit-$29.20-$24.96$0.00




A Partial List of Flaws


  • Not everything can be paid for with a Credit Card.

  • Expenses aren't actually evenly distributed throughout the month

  • It is possible to get an interest bearing checking account

  • Using multiple savings accounts will give you finer grained control over transfers to the checking account

  • Some people really really really hate credit cards, so this won't work for them

  • Some limitations may apply to 1% cash back purchases

  • Carrying a balance even once will wipe out months of returns



Conclusion


I stick with my recommendation to use a Credit Card. I realize that my numbers are rough estimates, but I believe that they are strong enough and close enough to show that there is a clear financial benefit to using a Credit Card.

Using a Credit Card isn't for everyone, and I respect that, but just because they don't work for you doesn't magically make them crappy for everyone.

Thursday, June 12, 2008

Driving Adds Up

Driving Cost Estimates



Blah blah blah price of gas blah blah blah. You already've heard all that.

On the Road Again


Our Chevy 2007 Malibu gets roughly 24 MPG city, 30 MPG freeway. Given the cost of gas, the miles per gallon and a couple of quick lookups on Google Maps, I now know how much it's costing us to go places. Like, say, $0.48 to visit the inlaws ($0.24 each way).

I kept separate columns for City and Freeway miles, and we just have to think for ourselves which trip belongs where.

Run the Numbers



This is a stupidly simple spreadsheet, but you might as well see how much you're paying for yourself.
  1. Download it as ODS, XLS

  2. Enter your MPG and local price per gallon. Get your MPG estimate at http://www.mpgbuddy.com/ if you don't know it

  3. Use the dollars per trip to estimate the value of using public transportation, ride sharing, getting a new car, quitting work (just kidding), etc.




View the whole thing online

Next Steps


I have no idea how many times we drive different places. We should start tracking that so we can see if we can cut out trips to the inlaws ($0.48!), to the grocery store ($0.12!), etc.

This week I will also be checking our tire's air pressure and getting those pumped up correctly. We are also working to drive more smoothly to improve our mileage.


Scooter Love?


Lots of people are getting scooters thinking that they're going to save a ton of money. At least for us, this wouldn't have been the case if we'd bought the scooter ourselves. My scooter is a 2006 Honda Helix which was $5,000 new. Since I only drive it in the city, the money saved per mile is $0.07. At that rate, I'll need to incur no other expenses for the scooter (oil, tires, insurance, etc.) and drive 71428.57 miles.

That's not going to happen, and so I don't think I can recommend getting a scooter (at least at this price) in addition to a car.

If we hadn't been given the scooter we would have needed a second car eventually. In the case of buying a scooter instead of a second car, it can make sense.

Don't forget to get a helmet.

Friday, June 6, 2008

Is It Time to Switch To CFLs?


I've known for quite a while that CFLs (Compact Fluorescent Bulbs) were cheaper in the long run, but I was ambivalent about the savings, and was under the impression that it wasn't that much of a difference anyways. Now that I'm trying to become more disciplined and save money wherever I can, I decided to do an honest evaluation of the potential savings.

We are likely moving in January, so I wanted the CFLs to pay themselves off before then since I don't know what kind of lighting our yet-to-be-found new house will have.

My plan was to a) analyze the costs and b) stick all the existing incandescent bulbs into a shoebox till we're moving out and take the CFLs with us.

We now have all CFLs, except for the two porch lights which are almost never used and which are difficult to replace anyways. If my estimates and calculations are correct, we should save about $10 a month and recoup our costs in four months.

Below is the spreadsheet I used for my calculations. Please let me know if you see any errors. The in-line view doesn't have quite the whole sheet. Please view it on Google docs or download it to see the full thing.

(Post continues after spreadsheet)

View it, Download it as ODS, Download it as XLS.



As you may have noticed, the longer you leave your lights on the sooner you recoup your costs. The obvious solution is of course to leave your lights on all day long. You'll be saving money before you know it! ;-)

There are some minor issues to switching to CFLs. If you're concerned about the color of your lighting, you may want to buy just a couple of bulbs and try them first. The CFLs, though they claim to be pure white, daylight or whatever do seem to have more of a blueish tinge than the incandescents.

I put the bulbs in our house last night, and due to the color of the glass around the light fixtures, the color temperature change isn't that noticeable, except in the bathroom, where we have a built-in vanity with six bare bulbs surrounding it.

When my two year old walked into the bathroom this morning, he said "We got new walls in the bathroom?", "No" replied my wife. "Somebody painted the walls in the bathroom?" returned my son. The color change isn't bad, but it does exist and may take some getting used to. For $10/month though, I'll do it.

Thursday, June 5, 2008

Categorizing My Monthly Spending

When we used our accounts at Wells Fargo, we could see a categorical breakdown of our expenses, but only for the Credit Card. My current Credit Union doesn't offer this functionality, but I had a driving need to know where my money was going.

Initially I would download the .csv (comma separated values) files, and manually sort them out into categories on a spreadsheet.

Of course, that grew old quickly, and I was forced to search the internet for something better. Coming up empty handed, I wrote my own script to sort out my different expenses into categories.

You run it on the command line like so

./statementToCategories.pl list.csv of.csv account.csv statements.csv

It will ask you how to categorize different expenses, and when it sees them again, it will remember what you entered last time. When it's done, it will ask you what to save the file as, and will create a .csv file with the different categories, and how much was spent in each category. It will also tell you how much you spent in each category in an average month.

With that data you can make charts, make plans and moan about how much you wasted on eating out....

You can find the script here:

http://richerandbetter.blogspot.com/2000/01/statementtocategoriespl.html

The script is in Perl, since that's what I'm comfortable with, and it probably won't work as-is for you, unless your bank/credit union lets you download .csv files with the same format as mine does, and you're running Linux. You are free to edit the script however you want and redistribute it.

I have no idea if the .csv files I download are some banking standard, or if they're just the way my credit union decided to make them.

Monday, June 2, 2008

Estimating Mortgage Payments and How Much House We Could Afford

Guestimating Housing Costs

Buying a house is somewhat stressful. As I've mentioned, we're trying to move at the end of the year. One approach to our house hunt has been 'how much can we afford?'. We don't want to actually stretch ourselves to the very limit and buy exactly the most house we possibly could, but understanding where we are is going to be financially is important.

Today I'm sharing a spreadsheet I've created which is helping us understand what kind of price range we will be able to afford. I realize that these numbers are a little rough, but we're still months away from buying. The numbers will firm up as we draw closer and know exactly how much I'll be making next year, how much we will have saved up for a down payment etc.

You can download a copy to play with, if you'd like: Download as ODS , Download as XLS

Here's a snippet of the results. See the full spreadsheet here

Saturday, January 1, 2000

statementToCategories.pl


Well, this is my first financial software, such as it is. I've been using and refining this over the last few months. It *does* work with my credit union, it may or may not work with your institutions downloadable bank statements.



It has only been tested on my own computer, which is a Ubuntu Linux computer. It requires Perl and the File::Basename and Date::Calc modules. It may or may not work on Windows.




#!/usr/bin/perl

#====================================================
#
# statementToCategories.pl
#
# This script will take in a csv formatted bank statement and output two
# csv files. The first file is a list of categories and how much was spent
# in each category. The other is the original csv, with a list of which
# cateogry each line item was categorized as.
#
# If a particular line hasn't been seen before, the script will prompt
# the user to select a category for the line. It saves the categories to
# ~/.finance_categories
#
# The format for the bank statement csv file that the script reads is:
# "Date","Check No.","Description","Debit","Credit"
#
# License and Copyright
# Copyright 2008, Richard Better <richerandbetter@gmail.com>
# This program is Free software. Use it at your own risk. I take
# no responsibility for the results of the use of this software.
#
# Licensed under the GNU GPL Version 3
# View the full license here: http://www.gnu.org/licenses/gpl.html
#
# Enjoy!

#====================================================
# Run more safely. Import needed modules
use strict;
use warnings;
use File::Basename;
use Date::Calc qw(Delta_Days);


#====================================================
# Make sure we were passed at least one file
if(scalar @ARGV < 1)
{
print "\nUSAGE: statementToCategories.pl financialData.csv [financialData.csv ... financialData.csv]\n\n";
exit(-1);
}


#====================================================
# Categories we'll be sorting into
# To customize categories, edit this array.
my @cats = (
'car-gas',
'car-insurance',
'car-payments',
'car-maintenance',
'cash',
'clothing',
'electronics',
'food-dining',
'food-groceries',
'gifts',
'home-maintenance',
'home-rent',
'medical',
'megamart',
'recreation',
'school',
'util-electric',
'util-gas',
'misc',
);

#====================================================
# Setup variables

# Global variables
# Set initial date range
my @mindate = (2050,12,31);
my @maxdate = (1901,1,1);

my %predef = (); # Already defined categories
my %values = (); # A hash of categories and amount spent
my @longdesc = (); # An array which stores the original data, plus it's categorization, so that you can figure out why categories have the values they do
my $predefvalues;
my $outdir;
my $homepath = $ENV{'HOME'};
chomp($homepath);

#====================================================
# Run the script

createOutdir();
prepCategories();
parseFiles();
saveDefs();
writeResults();

#====================================================
# Just functions below

sub createOutdir
{
# Create the output directory if it doesn't exist
$outdir = $homepath . '/Finance/';
mkdir($outdir) unless (-e $outdir);
}

sub prepCategories
{
# Prepopulate category totals
foreach(@cats){
$values{$_} = 0;
}

# Find existing categories
$predefvalues = $homepath . "/.finance_categories";

if (-e "$predefvalues")
{
open(FH,"<$predefvalues");
while(<FH>){
my @def = split(',',$_);
chomp($def[1]);
$predef{$def[0]} = $def[1];
}
close(FH);
}
}

sub parseFiles
{
# The main loop. It takes one or more files and reads them line by line, processing each and adding their contents to the totals
foreach(@ARGV){
my $file = $_;
print "Processing $file\n";

die("File $file does not exist\n") unless (-e $file);

open(COSTS,"<$file");
while(<COSTS>){

my $preline = $_;
$preline =~ s/\"//g;

my @line = split(',',$preline);
next if $line[0] =~ m/Date/; # Description line
checkDates($line[0]); # Find our date range

next if $line[3] !~ m/-/; # Payments / credits
next if $line[2] =~ m/Transfer/; # inter-account transfer
next if $line[2] =~ m/Savings\ Withdrawal/;


my $amount = $line[3];
$amount =~ s/-//g;

my $origPurchase = $line[2];
my $purchase = cleanupPurchase($line[2]);

# Flip the value to be positive

# Autocategorize
if($predef{$purchase}){
$values{$predef{$purchase}} += $amount;
push(@longdesc,"\"" . $predef{$purchase} . "\"," . $preline);
}
else
{
system 'clear';
print "Please enter a category number for the following item, then press ENTER:\n\n";

for(my $i = 0;$i<@cats;$i++){
print "($i) " . $cats[$i] . "\n";
}

print "\n$amount at '$origPurchase', short name is '$purchase' \n";
print "-----------------------\n";

# Read in the new category
my $newcat = <STDIN>;
$newcat =~ s/^.*[^\d](\d+)[^\d].*$/$1/;
if($newcat eq '')
{
$values{'misc'} += $amount;
push(@longdesc,"\"misc\"," . $preline);
}
else
{
$predef{$purchase} = $cats[$newcat];
$values{$predef{$purchase}} += $amount;
push(@longdesc,"\"" . $predef{$purchase} . "\"," . $preline);
}
}
}
close(COSTS);
}
}

sub saveDefs
{
# Write the definitions to a file, so we don't have to re-categorize everything each time
open(CATS,">$predefvalues");
foreach(sort keys %predef){
print CATS $_ . "," . $predef{$_} . "\n";
}
close(CATS);
}

sub writeResults
{
# Write the two results files
system 'clear';
print "What do you want the file named?\n";
my $outfile = <STDIN>;
chomp($outfile);
$outfile =~ s/\s+/_/g;

my $outfiledesc = $outdir . '/' . $outfile . "_desc.csv";
$outfile = $outdir . '/' . $outfile . ".csv";

open(OUTPUT,">$outfile");

my $months = getMonths();

print OUTPUT "\"Category\"\t\"Total Spent from " . join('/',@mindate) . " to " . join('/',@maxdate) . "\"\t\"Average per 30 day month ($months months total)\"\n";

foreach(sort(keys %values)){
print OUTPUT "\"$_\"\t\"" . $values{$_} . "\"\t\"". ($values{$_} / $months) ."\"\n";
}
close(OUTPUT);

open(DESC,">$outfiledesc");
foreach(sort(@longdesc)){
print DESC $_;
}
close(DESC);

print "Output is a tab separated file at $outfile\n";
}

sub getMonths
{
# Determine how much of a month is being considered here
my $days = Delta_Days(@mindate,@maxdate);
return ($days/30 + 1);
}

sub cleanupPurchase
{
# Strip un-needed info from the purchase description. This will let more similar names end up the same
my $purchase = shift;

$purchase =~ s/\s*Cr\ Crd\ Purchase\ \@\ //g;
$purchase =~ s/\s*\ \ Trace\ #[0-9]*//g;
$purchase =~ s/\s*[^\d\s]+\ \S\SUS//g;
$purchase =~ s/\t/\ /g;
$purchase =~ s/"/\ /g;
$purchase =~ s/\s*\ \S\SUS//g;
$purchase =~ s/\d*//g;
$purchase =~ s/#//g;
$purchase =~ s/[\s\@*-]+$//g;
chomp($purchase);
return $purchase;
}


sub checkDates
{
# Check if the current date is a new start or end date, and set the approriate variable if needed
my $strcurdate = shift;
my @curdate = split('/',$strcurdate);
@curdate = ($curdate[2],$curdate[0],$curdate[1]);
if(Delta_Days(@mindate,@curdate) < 0){
@mindate = @curdate;
}
if(Delta_Days(@maxdate,@curdate) > 0){
@maxdate = @curdate;
}
}