main.rkt
#lang racket

(require (planet neil/csv:1:2/csv)
         net/url)

(provide/contract
 [market-value (-> string? number?)])

(define-struct sq (symbol price last-closed opened) #:prefab)

(define (stock-quote stock-symbol)
  (let ([url (format "http://download.finance.yahoo.com/d/quotes.csv?s=~a&f=sl1po" stock-symbol)])
    (apply make-sq (first (csv->list (port->string (get-pure-port (string->url url))))))))

(define (market-value stock-symbol)
  (with-handlers ([exn:fail? (lambda (exn) -1)])
    (string->number (sq-price (stock-quote stock-symbol)))))