Re: Rookie Questions: Storing the results of calculations vs. not?

From: Ron Johnson <ron(dot)l(dot)johnson(at)cox(dot)net>
To: cjl <cjlesh(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Rookie Questions: Storing the results of calculations vs. not?
Date: 2007-05-29 15:15:31
Message-ID: 465C4393.9080201@cox.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 05/24/07 15:20, cjl wrote:
> PG:

Sorry it's taken so long for anyone to answer you, but it appears
that some emails were hung up for a while.

> I am playing around with some historical stock option data, and have
> decided to use a database to make my life easier. The data is "end-of-
> day" for all equitable options, so something like 17 columns and
> approximately 200,000 rows a day. I have several months of data in
> "csv" format, one file for each trading day.
>
> After some simple experiments, I found it was easier to import this
> data directly into postgresql than into mysql, because of the
> expiration date format being un-friendly to mysql. I'm using the COPY
> command to load the data.
>
> I realize I have a lot of reading to do, but I would like to ask a few
> questions to help guide my reading.
>
> 1) The data contains the price of the underlying stock, the strike
> price of the option, and the option premium. From this I can calculate
> the "cost basis" and the "maximum potential profit", which are
> elements I would like to be able to SELECT and ORDER. Should I store
> the results of these calculation with the data, or is this "business
> logic" which doesn't belong in the database. Is this what views are
> for?

I'd say "business logic", and yes, views are good for that.

> 2) For each underlying stock there are lots of options, each having
> unique strike prices and expirations. For example, AAPL (apple
> computer) have stock options (calls and puts) that expire in June, at
> various strike prices. Lets say that apple stock is trading at $112.
> I would like to be able to select the options with strikes just above
> and below this price, for example $110 and $115. The data contains
> options with strikes from $60 through $125, every $5. Is this
> something I need to do programatically, or can I create a complex SQL
> query to extract this information?

I'd have a table with one row per option. Then make this kind of query:
SELECT *
FROM T_OPTION
WHERE TICKER = 'AAPL'
AND EXPIRE_DT BETWEEN '2007-06-01' AND 2007-06-30'
AND PRICE = 112.0
ORDER BY PRICE DESC
LIMIT 1
UNION
SELECT *
FROM T_OPTION
WHERE TICKER = 'AAPL'
AND EXPIRE_DT BETWEEN '2007-06-01' AND 2007-06-30'
AND PRICE = 112.0
ORDER BY PRICE ASC
LIMIT 1
;

> I have rudimentary python skills, and I'm getting the hang of
> psycopg2. After reading the postgresql manual, what should I read
> next?

--
Ron Johnson, Jr.
Jefferson LA USA

Give a man a fish, and he eats for a day.
Hit him with a fish, and he goes away for good!

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message A. Kretschmer 2007-05-29 15:18:19 Re: Will a DELETE violate an FK?
Previous Message Ron Johnson 2007-05-29 15:02:14 Re: Will a DELETE violate an FK?