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
Programming Exercises
Homework should be turned in on time. No late
homework will be accepted without legitimate reasons.
There will be three to four programming
assignments. You are expected to write your own
codes and turn in your source code.
Do not copy or collaborate with fellow students.
(But discussions are allowed.)
Never ask your friends to write
programs for you.
Do program carefully.
It is much more important to get the numbers right than to get a
pretty user interface running.
etc.
- Write a program to calculate the spot rates and forward rates
from coupon bond prices (% of par) and their coupon rates (%).
All times are period-based for convenience.
The complexity should be linear in n, the number of bonds.
Inputs: coupon bond prices (% of par; the ith maturing at period i), period coupon rates (% of par).
Outputs: spot rates (%), forward rates (%).
For example, if the coupon rates are [ 0%, 10%, 10% ] and the corresponding
bond prices are [ 92.5925, 90, 89 ], then the spot rates are
[ 8.00%, 16.72%, 14.96% ], and the forward rates are
[ 8.00%, 26.15%, 11.52% ].
Due: March 31, 2004.
Please send your source code, executable code,
and an explanation file (how to run it? what is the
programming language used?) under a folder/directory
to Mr Yang. Name your directory StudendID_Name_HomeworkNumber
for easy reference.
Example: R91723054_YourName_1.
Even if you need to make an appointment with Mr Yang for demonstration
because of the unusual software you use, you still have to submit the
files before the deadline.
-
Write a quadratic-time program to price American calls and puts based on
the CRR binomial tree. Observe its convergence behavior.
You may want to incorporate fancy ideas to improve the convergence speed
for your own pleasure.
Inputs: S, X, tau (year), sigma (%), r (%),
continuous dividend yield q (%), and n.
Due: April 28, 2004 with on-site demonstration.
-
Write a quadratic-time program to price European double-barrier knock-out calls.
You may use the CRR binomial tree or any other trees.
Observe its convergence behavior.
You may want to incorporate fancy ideas to improve the convergence speed.
Inputs: S, X,
high barrier H,
low barrier L,
t (year),
s (%), r (%), and n.
Assume L < S < H.
For example, the price is about 1.458 when
t = 1 (year),
r = 10%,
S = 95,
s = 25%,
X = 100,
L = 90,
H = 140.
You are strongly urged to let your program take in the parameters in the above order to make the job easier for Ms Teng.
Due: May 19, 2004.
-
Write a Monte Carlo simulation to price European calls based on the
GARCH model (with c = 0).
Inputs: S, X, t (days),
daily r (%),
H0,
b0,
b1,
b2,
and number of replications m.
Recall that
Ht+1 =
b0 +
b1 Ht + b2 Ht ( et+1)2.
For example, the price is about 0.72 when
S = 100,
X = 100,
t = 3 (days),
r = 0%,
H0 = 0.0001096,
b0 = 0.000006575,
b1 = 0.9,
b2 = 0.04.
You are strongly urged to let your program take in the parameters in the above order to make the job easier for Ms Teng.
Due: June 9, 2004.
Enrollments
-
Non-programmers will be strongly discouraged
as the probability of passing this course is slim,
if possible at all (measure zero, so to speak).
-
It is not impossible to pick up programming skills before
the first assignment.
-
The above two statements are not contradictory.