I need a python programmer to write a simple program to extract stock price data and accompanying call option prices from Yahoo finance. I expect your python library to be able to take a list of symbols (from 50 to 150 symbols) and go ahead to download the stock data and option data, for that day, from Yahoo finance for each given symbol, and extract the ‘call’ option chains for different expiration dates and different strike prices. I am not interested in put option data, just call option data.
You could check link to have an idea of what data you are downloading:
Stock Data: [url removed, login to view]
Options Chain Data: [url removed, login to view]
I would recommend using YQL or the ystockquote API to download the Yahoo stock data. It is available at [url removed, login to view] For downloading the call options chain data, I would also recommend using YQL.
When the contract is awarded I will provide more precise information on the stock data I wish to retrieve and what call options chain data I wish to retrieve. I will provide the logic for which call options I wish to download (e.g. expiry month, strike price, etc…)
On the delivery, I expect you to use regular expression or any other robust method to parse the data in a robust way and please raise an exception if anything goes wrong (for example, your code fails to download the page or your regular expression fails to parse the data). Finally, please document your code about input, output, exceptions raised in your code etc., and make your parsing code easier to accommodate future changes.
Upon retrieval of the stock and call options data, I want it written to a SQLite database called “StockData” residing in the same location as the python files. I will provide the schema and data model information when the contract is signed. The schema is really simply: two tables with a one to many relationship. Both tables combined have less than 20 columns.
After the data has been successfully written to the database, I want the program to query the database and email it to me as an HTML table in the body of the email. I will provide the columns and sort order. It must use SMTP to send the email and have variables in the code where I can specify the SMTP server name, username, and password, plus recipient email address. The Subject line of the email will have something like “Call Option Analysis for YYYY-MM-DD”. I will be using Gmail so your code must be able to authenticate to Gmail SMTP to send the email. You can setup a Gmail account and send an email using that account to test it.
I will run this python program once per day. It will be scheduled to automatically run using the Windows Task Scheduler. The python program must not require any arguments.
Please include your code a unit test for the following cases:
- test your code on three symbols with options: yhoo, msft, goog
- one symbol which has no options: grvy, in this case
- any other important functions need at least one test to show it works
Upon contract signing I will provide a high level application design, database schema, columns and datatypes, program logic, and sample HTML table.