PureBytes Links
Trading Reference Links
|
The question of Fair Value has come up quite often.
The only calculation I have seen is by Gary Funck who is an expert
on this subject on the Omega List. His indicator from a previous post is
copied below.
I saw a much simpler calculation from ( McMillan on Options)
Page 118.
Fair Value = SP500 cash x ( 1+ TBill rate ) ^ time to expiry - Dividends to be
paid.
When I calculate the fair value using these different formulas posted on the
Omega list, they all give different results
Comments are welcome.
Frank990
==================================================
>On May 23, 10:04pm, Stuart A. Miller wrote:
> Subject: S&P Fair Value Code
> Has anyone coded the S&P fair value formula including automatic calculation
> of the remaining time to expiration?
>
==================================================
Stu,
Here's a first crack at calculating fair value, along with buy/sell levels.
Caveat: the values for slippage and commission are taken completely out
of thin air, so if there's a floor trader, or program trader out there
that can offer more realistic values, or a more realistic "arb" model,
then let me know, and I'll correct the code accordingly. I know from
experience that the sell levels predicted here are lower than those
shown on CNBC for example, and one reason might be that slippage and
commissions are lower on the sell side, because the "arb" is already
long the S&P 'basket', and is shorting against the box.
Note: I haven't tried verifying this code, but will do so later in
the week.
{
calculate "fair value" both as a the "premium" of the future over the
cash, and as the future price itself.
inputs:
i_rate: interest rate on 3 month t-bill
div_rate: dividend on S&P 500
slippage: amount of slippage assumed on S&P cash transaction
commish: amount of commission assumed on S&P cash transaction
data1 = the S&P future (eg, SPM7)
data2 = the S&P cash (eg, $SPX)
note: $PREM should is equal to data1 - data2
}
inputs: i_rate(0.05), div_rate(0.02), slippage(0.60), commish(0.75);
variables: sp_cash t_expire, int_expense, div_income;
variables: prem, prem_fair, prem_buy, prem_sell, fair_value;
sp_cash = close of data2;
prem = close of data1 - sp_cash;
t_expire = daystoexpiration (deliverymonth, deliveryyear) / 365.0;
int_expense = sp_cash * i_rate * t_expire;
div_income = sp_cash * div_rate * t_expire;
prem_fair = int_expense - div_income;
prem_buy = prem_fair + commish + slippage;
prem_sell = prem_fair - commish - slippage;
fair_value = sp_spot + prem_fair;
The code above uses the builtin DAYSTOEXPIRATION function. I don't know
if that is TS 4.0 only, and don't know if it returns the days until the
third Friday, which is what we want for the S&P future, or if it returns
the days until the Saturday that follows, which makes more sense for
equity options, because technically that's when they expire. If you
want to hand roll the "third Friday" calculation, try this,
(and let me know if it works :)):
variables: day1, jday1, jthirdfri, daystilex;
day1 = deliveryyear * 10000 + deliverymonth * 100 + 1;
jday1 = datetojulian(day1);
jthirdfri = jday1 + mod((5 - dayofweek(day1) + 7), 7) + 14;
daystilex = jthirdfri - datetojulian(date);
t_expire = daystilex / 365.0;
{
Question: any idea what the difference between dayofweek (p. 148,
TS 4, Easy Lang manual) and dayofweekfix (p. 186/187) is? They
sure look like they do the same thing.
====================================================
|