FMS Treasury Statement Parser

This uses documentation-driven development; not all of this is implemented.

Load the ./archive submodule; this repository saves the downloaded files

git submodule init
git submodule update

Activate the environment

. activate

This provides download, parse and test functions.

# Download today's file
download $(date)

After you download, you might want to commit the submodule

cd archive
git add .
git commit . -m downloaded\ a\ file
git push
cd ..
git commit archive -m downloaded\ a\ file

The downloaded file gets saved in ./archive.

Run the simple parser that just gets total withdrawals, total deposits and net change

parse-simple

Try the complete parser that doesn't work yet.

parse ./archive/$filename

The tests expect fixtures to be in ./fixtures.

test

The run script does all of the downloading and parsing.

run

CSV schems

Parser just for Table II for now, in two sections: Deposits and Withdrawals

For Deposits:

  • Take each line item inder "Federal Reserve Account" and write to separate line with Subitem column blank, except for:
    • Deposits by States
    • Other Deposits For each of these, set Item = the main line item (Deposits by States, Other Deposits) Then set populate column Subitem with the indented line items that roll up into the item:
  • Set isTotal = 0 for all line items except:
    • Total Other Deposits
    • Total Federal Reserve Account
    • Total Deposits (excluding transfers) Set isTotal = 1 to flag these items as subtotals of the other items Keep type as Deposit for all items

An email

Hope the soundsystem is blaring without me . . . stuck in the office on deadline for the banks project so unfortunately won't be able to make it tonight.

Anyway, just wanted to pass along the scraping prototype I've created (also uploaded in our Dropbox folder), so you guys can discuss if you want.

Open to suggestions obviously on how to structure it differently, but I think it we get a scraper to pick out the data from the text file in this or a similar format, we'll get pretty much everything we need off of the deposits and withdrawals tables.

I will work on a prototype for the debt tables next, which should be even simpler than this.

And will scrape the FMS directory for all the text files so we have them handy in one place.

Anyhow, have a look and maybe we can get together on the weekend or sometime next week to push ahead with the scraping.

Take care,

Cezary

On Fri, Nov 30, 2012 at 3:21 PM, Cezary Podkul wrote:

Gents,

I haven't had a chance go create that CSV yet so Tom it's probably best if you go to your toilet thing tomorrow.

Should have it done by Tuesday night so we can pick things up again then. Mike just save the code from this week and we can hook up the scraped code to SQL 

lite and copare against the CSV output then.

Have a good weekend!

Cezary




On Wed, Nov 28, 2012 at 12:14 AM, Thomas Levine wrote:

    Here are the steps I plan for the parsing bit. This is the order
    that I would do them in, but if either of you are up for starting
    before our party, start with step 1 or step 4.

    1. Someone(s) manually converts one source file to eight csv files
        (one per table).
    2. Someone (probably me) writes code to load those csv files into a sqlite
        database. This is really simple; it's just the schema and
        some flags for the sqlite3 command.
    3. Someone (probably me) writes code to run SQL on two different
        databases and compare the result.
    4. Someone writes tests using the above SQL thingy. Write SQL
        queries to be run on the dataset for one table or one day. The
        result should be the same regardless of whether we run them on
        the manually parsed data or the automatically parsed data.

    After that, we write the parser, and the parser saves the data to
    an SQLite database. We use the above tests for writing the parser.


    On 2012-11-27 21:19, Cezary Podkul wrote:

        Here is the directory:

        http://www.fms.treas.gov/dts/index.html [1]


        And here is what the text files look like:


        https://www.fms.treas.gov/fmsweb/viewDTSFiles?dir=w&fname=12112600.txt
        [2]

        This might help:

        http://www.ruby-forum.com/topic/184294#805303 [3]


        Lots of great stories to be done with it!

        If we scrape it we can do them!