To Students,
You will learn a perhaps different perspective on finance,
especially as it pertains to pricing and software engineering.
Our emphasis on computation should add a new dimension and
toolbox to your existing knowledge and financial sense.
(But see Enrollments below.)
It is your
responsibility to learn to write in high-level programming
languages. We cannot impart that skill in the class.
If the mathematics proves hard going, you are expected to
fill in the gap by self-reading. The technicalities are not
beyond a motivated graduate student's reach.
The major topics covered in the course, time permitting, are listed
below for your reference.
- Time value of money
- Bonds, mortgages, and annuities
- Duration, convexity, and
immunization
- Yield curve,
forward rate, and spot rate
- Option pricing theory
and its wide-ranging applications
- Black-Scholes analysis
- binomial option pricing model (BOPM)
- Futures,
forwards, and other derivatives
- The combinatorics of random walks
-
Martingale,
Brownian motion,
stochastic calculus, and
Ito integral
- Risk-neutral valuation
- Risk management
- Fixed-income securities with embedded options
and interest rate derivatives
- Mortgage-backed securities (MBS)
- Numerical methods
- Monte Carlo methods
- Variance reduction (efficiency-improving) techniques
- Least-squares technique
- Quasi-Monte Carlo method
- Solving partial differential equations
- Yield curve fitting
- GARCH models
- Interest rate models and
calibration
-
2014.02.19
-
2014.02.26
-
2014.03.05
-
2014.03.12
& 1st assignment due
-
2014.03.19
-
2014.03.26
-
2014.04.02
No class
& 2nd assignment due
-
2014.04.09
-
2014.04.16
-
2014.04.23
& 3rd assignment due
-
2014.04.30
-
2014.05.07
& 4th assignment due
-
2014.05.14
-
2014.05.21
-
2014.05.28
& 5th assignment due
-
2014.06.04
-
2014.06.11
-
2014.06.18
6th assignment due
Programming Exercises
Homework should be turned in on time. No late
homework will be accepted without legitimate reasons.
There will be four to six programming
assignments.
Treat each homework as an examination.
Do program carefully.
It is much more important to get the numbers right than to get a
pretty user interface running.
-
Write a program to calculate the relative change (in %) in the n-year spot rate if the n-year zero-coupon bond price moves from q% to (1+k%) *q%, where q% is the quoted price.
Inputs: n (year), q (the n-year zero-coupon bond price as % of par), k (the increment in bond price, also as % of par).
Output:
the change in the n-year spot rate in %.
For example, assume n=10, q=60, k=1.
Then the change in the n-year spot rate is −1.9971%.
Please send your source code, executable code, and a brief explanation file if necessary (e.g., how to run it?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500) before 08:00 AM of March 12, 2014.
Compress your files into a single file and name it StudentID_HW_1 for easy reference.
Example: R91723054_HW_1. Even if you need to make an appointment with 盧政良 for demonstration
because of the unusual software you use, you still have to submit the files before the deadline.
-
Write a binomial tree program to calculate the prices of a standard
European put and an American put (which can be exercised only in the last quarter of the option's life).
Inputs: S (stock price at time = 0), X (strike price ),
s (annual volatility),
t (maturity), n (the number of periods, a multiple of 4),
d (continuous annualized dividend yield), r (interest rate).
For example, suppose
S = 100,
X = 95,
s = 0.4,
t = 1,
n = 1000,
d = 0.02,
and
r = 0.06.
The European option price is about 10.9611 and the American option price is about 11.2128.
Please send your source code, executable code, and a brief explanation file if necessary (e.g., how to run it?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500) before 08:00 AM of April 2, 2014.
Compress your files into a single file and name it StudentID_HW_2 for easy reference.
Example: R91723054_HW_2. Even if you need to make an appointment with 林盈宏 for demonstration
because of the unusual software you use, you still have to submit the files before the deadline.
-
Write a program to price American-style arithmetic average-rate calls based on the CRR binomial tree. Please output the delta, too.
The payoff function is max(average - X, 0). Of course, if the holder exercises early, then average means the average up to that node.
Inputs:
S (stock price at time = 0), X (strike price), t (maturity in years), s (%) (annual volatility), r (%) (continuously compounded annual interest rate), n (number of periods), and k (number of states per node).
For example, when
S = 100,
X = 70,
t = 2 (years),
s = 20%,
r = 5%,
n = 40, and
k = 5,
the price is about 36.308 and the delta is about 0.9515. Please send your source code, executable code, and a brief explanation file if necessary (e.g., how to run it?)
using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 08:00 AM of April 23, 2014.
Compress your files into a single file and name it StudentID_HW_3 for easy reference.
Example: R91723000_HW_3. Even if you need to make an appointment with 陸裕豪 for demonstration because of the unusual software you use, you still have to submit the files before the deadline.
-
Write a CRR binomial tree program to price European single-barrier knock-in calls on a dividend-paying stock and determine the relative error based on the call price using the formula (31) on p. 367 of the slides. Let c1 be the price from the tree program, c2 be the price from formula (31). Then the relative error is given by 100*[(c1
-c2)/c2] (%).
Inputs:
S (stock price),
X (strike price),
H (barrier, smaller than S),
t (year),
s (volatility in %),
r (interest rate in %),
q (dividend yield in %), and
n (number of periods).
For example, the prices are c1=5.3840 and c2=5.3844 when
S = 95,
X = 100,
H = 90,
t = 1 (year),
s = 25 (%),
r = 15 (%),
q = 5 (%), and
n = 192.
The relative error is -0.0083%.
For another example, the prices are c1=4.1270 and c2=5.3844 when the inputs are the same except that n = 193.
The relative error is -23.3527%.
Please send your source code, executable code, and a brief explanation file (e.g., how to run it?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 08:00 AM of May 7, 2014.
Compress your files into a single file and name it StudentID_HW_4 for easy reference.
Example: R91723054_HW_4. Even if you need to make an appointment with 盧政良 for demonstration because of the unusual software you use, you still have to submit the files before the deadline.
-
Write a trinomial tree or a binomial-trinomial program to price European double-barrier knock-out calls.
Inputs:
S (stock price), X (strike price), H (high barrier), L (low barrier), t (year),
s (volatility in %), r (continuously compounded interest rate in %), and n (number of periods).
Assume L < S < H.
For example, the price is about 1.457~1.4584 when
t = 1 (year), r = 10 (%), S = 95,
s = 25 (%), X = 100, L = 90, H = 140.
See here for the binomial-trinomial tree outputs.
See here for the convergence of binomial-trinomial tree vs that of trinomial tree.
As comparison, write a Monte Carlo simulation program to price the same option.
Inputs are the same (S, X, H, L, t,
s, r, n) plus m (number of paths).
Outputs are teh option price plus the sample standard deviation.
Please send your source code, executable code, and a brief explanation file if necessary (e.g., how to run it?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 08:00 AM of May 28, 2014.
Compress your files into a single file and name it StudentID_HW_5 for easy reference.
Example: R91723054_HW_5. Even if you need to make an appointment with 林盈宏 for demonstration because of the unusual software you use, you still have to submit the files before the deadline.
-
Write a program to price an x-year American-style call option on a zero-coupon bond that matures at year y with a par value of 1 dollar. Use trees for the CIR model.
Inputs:
x (year), y (year), r (%) (initial short rate), b (%) and m (%),
s (%) and number of partitions during the option's life n, and strike price X (% of par).
For example, the option price is about 5.87267 (% of par) when
x = 1,
y = 2,
r = 4 (%),
b = 20 (%),
m = 4 (%),
s = 10 (%),
n = 30 and
X = 90 (%).
Please send your source code, executable code, and a brief explanation file if necessary (e.g., how to run it?)
using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 08:00 AM of June 18, 2014.
Compress your files into a single file and name it StudentID_HW_6 for easy reference.
Example: R91723054_HW_6. Even if you need to make an appointment with 陸裕豪 for demonstration because of the unusual software you use, you still have to submit the files before the deadline.
Enrollments
-
Non-programmers will be strongly discouraged
as the probability of passing this course is slim,
if possible at all.
-
It is not impossible to pick up programming skills before
the first assignment.
-
Financial knowledge is a plus, but again it can be picked up if you are motivated.