- Specify a model under the Q(theta)-dynamics
- theta is a vector of parameters, e.g. volatility, drift, etc.
- Q() is the risk neutral framework
- Price all securities at time t by discounting the next period (t+1) risk neutral prices
- Calibrate the model by choosing theta so that market prices of appropriate liquid securities agree with model prices of those securities
- this calibration procedure to market prices will incorporate the factors not specified in the model, e.g. policy risk, market expectation, economic outlook, etc.
Sunday, December 14, 2014
PHILOSOPHY in pricing derivatives
(posts from old site)
Friday, December 5, 2014
HK property return forecast - Heya Delight
Regression analysis shows that there's a strong relationship (R^2 = -0.81) between annualized cumulative real return of HK property (40 months ahead) and the difference between US 10-year treasury yield and property rental yield. Basically, the more rental yield exceeds US 10-year treasury yield, a better buy a property is.
The regression result aligns with general investment valuation; as generated cash flows exceed risk-free rate further, valuation goes up.
Let's use a new development project, Heya Delight, as an example to see how the difference changes as the rent per sq. ft. changes:
US has been rumored to increase interest rate for quite a while, but it's been delayed and delayed again. Let's assume interest rate remains relatively stable in the next 40 months.
The rent per square foot around the area of comparable quality gets as high as $35 / sq ft per month. Each line above shows different rental income.
It looks like a very good buy for the unit with the lowest price per sq ft at $9,790. Even for the unit with the highest price per sq ft, it's still okay if you can get a high enough rent.
I guess many people share the same views. (Well, it doesn't hurt to price the unit at "up to 40 per cent lower than a nearby project.") There are 130 units available for that project with more than 4000 applications submitted for ballot.
Unluckily for me, I didn't get a good draw... I'm 3374th person out of 4127 to get to pick an unit. (-_-")
The regression result aligns with general investment valuation; as generated cash flows exceed risk-free rate further, valuation goes up.
Let's use a new development project, Heya Delight, as an example to see how the difference changes as the rent per sq. ft. changes:
US has been rumored to increase interest rate for quite a while, but it's been delayed and delayed again. Let's assume interest rate remains relatively stable in the next 40 months.
The rent per square foot around the area of comparable quality gets as high as $35 / sq ft per month. Each line above shows different rental income.
It looks like a very good buy for the unit with the lowest price per sq ft at $9,790. Even for the unit with the highest price per sq ft, it's still okay if you can get a high enough rent.
I guess many people share the same views. (Well, it doesn't hurt to price the unit at "up to 40 per cent lower than a nearby project.") There are 130 units available for that project with more than 4000 applications submitted for ballot.
Unluckily for me, I didn't get a good draw... I'm 3374th person out of 4127 to get to pick an unit. (-_-")
Saturday, November 22, 2014
1+2+3+4+5+6+...= -1/12 ?!!!
1 + 2 + 3 + 4 + 5 + 6 + ... = ?
gotta be infinity, right?
let
S = 1 + 2 + 3 + 4 + 5 + 6 + ...
S1 = 1 - 1 + 1 - 1 + 1 - 1 + ...
S2 = 1 - 2 + 3 - 4 + 5 - 6 + ...
add S1 to S1:
S1 *2 = 1 - 1 + 1 - 1 + 1 - 1 + ...
+ 1 - 1 + 1 - 1 + 1 - 1 + ...
= 1
so, S1 = 1/2
add S2 to S2:
S2 *2 = 1 - 2 + 3 - 4 + 5 - 6 + ...
+ 1 - 2 + 3 - 4 + 5 - 6 + ...
= 1 - 1 + 1 - 1 + 1 - 1 + ...
= S1
= 1/2
so, S2 = 1/4
subtract S2 from S
S - S2 = 1 + 2 + 3 + 4 + 5 + 6 + ...
-[1 - 2 + 3 - 4 + 5 - 6 + ...]
= 0 + 4 + 0 + 8 + 0 + 12 + ...
= 4 *(1 + 2 + 3 + 4 + 5 + 6 + ...)
= 4 * S
S - 1/4 = 4 * S
-1/4 = 3S
so, S = -1/12
this is nuts...
Here are the professors explaining it:
gotta be infinity, right?
let
S = 1 + 2 + 3 + 4 + 5 + 6 + ...
S1 = 1 - 1 + 1 - 1 + 1 - 1 + ...
S2 = 1 - 2 + 3 - 4 + 5 - 6 + ...
add S1 to S1:
S1 *2 = 1 - 1 + 1 - 1 + 1 - 1 + ...
+ 1 - 1 + 1 - 1 + 1 - 1 + ...
= 1
so, S1 = 1/2
add S2 to S2:
S2 *2 = 1 - 2 + 3 - 4 + 5 - 6 + ...
+ 1 - 2 + 3 - 4 + 5 - 6 + ...
= 1 - 1 + 1 - 1 + 1 - 1 + ...
= S1
= 1/2
so, S2 = 1/4
subtract S2 from S
S - S2 = 1 + 2 + 3 + 4 + 5 + 6 + ...
-[1 - 2 + 3 - 4 + 5 - 6 + ...]
= 0 + 4 + 0 + 8 + 0 + 12 + ...
= 4 *(1 + 2 + 3 + 4 + 5 + 6 + ...)
= 4 * S
S - 1/4 = 4 * S
-1/4 = 3S
so, S = -1/12
this is nuts...
Here are the professors explaining it:
Monday, September 15, 2014
Monday, September 1, 2014
R 3D plot
suppressMessages(library("plot3D"))
xSeq <- seq(range(df$xSeq)[1], range(df$xSeq)[2], length.out = 30)
ySeq <- seq(range(df$ySeq)[1], range(df$ySeq)[2], length.out = 30)
## persp requires a matrix for z
zSeq <- outer(xSeq, ySeq, function(a,b) predict(glm.fit, newdata=data.frame(xSeq=a, ySeq=b), type="response"))
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=40, phi=15)
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=0, phi=0)
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=90, phi=0)
see http://pj.freefaculty.org/guides/Rcourse/plot-3d/plots-3d.pdf for details.
xSeq <- seq(range(df$xSeq)[1], range(df$xSeq)[2], length.out = 30)
ySeq <- seq(range(df$ySeq)[1], range(df$ySeq)[2], length.out = 30)
## persp requires a matrix for z
zSeq <- outer(xSeq, ySeq, function(a,b) predict(glm.fit, newdata=data.frame(xSeq=a, ySeq=b), type="response"))
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=40, phi=15)
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=0, phi=0)
persp(x=xSeq, y=ySeq, z=zSeq, ticktype="detailed", theta=90, phi=0)
see http://pj.freefaculty.org/guides/Rcourse/plot-3d/plots-3d.pdf for details.
Wednesday, August 20, 2014
R: what is the column type?
str(d)
## 'data.frame': 5922 obs. of 610 variables:
## $ Timestamp : POSIXt, format: "2010-01-04 17:30:00" "2010-01-04 17:35:00" ...
## $ Variable142OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable142HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable142LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable142LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable143OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable143HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable143LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable143LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable144OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable144HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable144LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable144LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable145OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable145HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable145LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable145LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable146OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable146HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable146LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable146LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable147OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable147HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable147LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable147LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable148OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable148HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable148LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable148LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable149OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable149HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable149LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable149LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable150OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable150HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable150LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable150LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable151OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable151HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable151LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable151LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable152OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable152HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable152LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable152LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable153OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable153HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable153LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable153LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable154OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable154HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable154LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable154LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable155OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable155HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable155LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable155LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable156OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable156HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable156LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable156LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable157OPEN : num 5.6 5.53 5.52 5.48 5.39 ...
## $ Variable157HIGH : num 5.6 5.55 5.52 5.48 5.42 ...
## $ Variable157LOW : num 5.53 5.51 5.46 5.39 5.39 ...
## $ Variable157LAST : num 5.53 5.52 5.48 5.39 5.42 ...
## $ Variable158OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable158HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable158LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable158LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable159OPEN : num 289 290 290 290 290 ...
## $ Variable159HIGH : num 290 290 290 290 290 ...
## $ Variable159LOW : num 289 290 290 290 289 ...
## $ Variable159LAST : num 290 290 290 290 290 ...
## $ Variable160OPEN : num 289 290 290 290 290 ...
## $ Variable160HIGH : num 290 290 290 290 290 ...
## $ Variable160LOW : num 289 290 290 290 289 ...
## $ Variable160LAST : num 290 290 290 290 290 ...
## $ Variable161OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable161HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable161LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable161LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable162OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable162HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable162LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable162LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable163OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable163HIGH : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable163LOW : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable163LAST : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## $ Variable164OPEN : num 9.56 9.48 9.5 9.54 9.54 ...
## $ Variable164HIGH : num 9.57 9.5 9.54 9.55 9.54 ...
## $ Variable164LOW : num 9.46 9.48 9.5 9.53 9.51 ...
## $ Variable164LAST : num 9.48 9.5 9.54 9.54 9.52 ...
## $ Variable165OPEN : num 9.98 10.02 10.02 9.98 10.04 ...
## $ Variable165HIGH : num 10.1 10.1 10 10 10 ...
## $ Variable165LOW : num 9.97 9.99 9.98 9.98 10.01 ...
## $ Variable165LAST : num 10.02 10.02 9.98 10.04 10.02 ...
## $ TargetVariable : logi TRUE TRUE TRUE TRUE FALSE TRUE ...
## $ Variable167OPEN : num NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
## [list output truncated]
Monday, August 4, 2014
kdb ipc - set remote variable = value of local variable
// opening conn
h: hopen `::5000
// assigning a fixed value to a remote variable is easy
h "rv:10"
// local variable = 12
lv:12
// assigning rv = lv is tricky and needs
h ({rv::x};lv)
h: hopen `::5000
// assigning a fixed value to a remote variable is easy
h "rv:10"
// local variable = 12
lv:12
// assigning rv = lv is tricky and needs
h ({rv::x};lv)
Subscribe to:
Posts (Atom)