Finance.Quote.Yahoo is a module to obtain quote information from
finance.yahoo.com, which delivers a csv file with data for various fields,
which are documented at http://www.gummy-stuff.org/Yahoo-data.htm.

The homepage for this module is
http://www.b7j0c.org/content/haskell-yquote.html

The license for this module is at
http://www.b7j0c.org/content/license.txt

Since this uses Data.Time.Format, ghc-6.6.1 or greater is required.

Error reporting is somewhat of a mixed model in this module. Where strict
errors of data construction occur, these will be noted as fatal error()
signals, so the error can be noted and fixed. An example of this would be
putting the start and end data in the wrong order for the retrieval of
historical quotes or the creation of a malformed URI. On the other hand,
I continue to propogate Nothing() for networking issues as there may be
external issues creating these errors for which one may want program
execution to continue. My personal tendency is to fail early when
possible and practical.

Exported functions:

getQuote, which takes a list of quote symbols (in the finance sense of
"symbol" - YHOO,GOOG etc), a list of fields, and
returns a Data.Map, where the keys are pairs (symbol,field) and
values are the returned Strings. Upon any problem, Nothing is
returned. I have not cast the data into stronger types than String since
Yahoo is inconsistent about what is returned in the csv. Fields often
contain punctuation, symbols, as well as numbers. So really, they are
Strings.

getHistoricalQuote, which takes a quote symbol, and two Data.Time.Calendar
Day types, one for the starting date to receive quote data, and one for the
end date. Yahoo does not let you choose the fields to see in historical
quotes, data is limited to price and volume information.

quoteRec - useful for debugging the quote URI to see if Yahoo is denying
the service.

getQuote will take a list of symbols, a list of fields, and will
return a Data.Map, where the key type is
(symbol,field)
and the value type is whatever quote value string is returned.
An example map entry:

key: ("YHOO","c"), value: "24.00"

Which gives you the closing price (c) for the symbol YHOO.

NOTE!
This function does NOT alter the casing of the quote symbols passed
in the first parameter. These symbols are used as the first element
of the Map key tuple without altering them. Be careful! This function
is exported.

getHistoricalQuote takes a stock symbol and a start and end dates
and obtains the HistoricalQuote lines for this given range.
Nothing is returned on any error. Check finance.yahoo.com to see how
far they offer quote history for a symbol you are interested in.
Note! Yahoo takes some liberties with dates due to weekends and
holidays and market closures. Exported.