handle missing csv file better
handle run from any directory
adjust so func can get path as a param
add a 'make_stats' convenience method to make all stats
change to not create stats for empty years
move interest stats loop from command to utils
update output to be consistent
skip updating noncanonical interests
add test to verify stats only get generated on canonical