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
-
2009.02.24
-
2009.03.03
-
2009.03.10
-
2009.03.17
-
2009.03.24
& 1st assignment due
-
2009.03.31
-
2009.04.07
& break
& 2nd assignment due
-
2009.04.14
-
2009.04.21
& 3rd assignment due
-
2009.04.28
-
2009.05.05
-
2009.05.12
& 4th assignment due
-
2009.05.19
-
2009.05.26
-
2009.06.02
& 5th assignment due
-
2009.06.09
-
2009.06.16 & national holiday
-
2009.06.23 & 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. You are expected to write your own
codes and turn in your source code.
Do not copy or collaborate with fellow students.
Never ask your friends to write
programs for you.
Never give your code to other students or publish your code because it may be copied
and you in turn may be suspected of copying other's code!
Do program carefully.
It is much more important to get the numbers right than to get a
pretty user interface running.
-
Write a program that calculates the yields to maturity, spot rates, and one-year forward rates (all compounded annually) of a series of prices of level-coupon bonds with 100 face value.
For example, suppose the prices of 5%-coupon paid annually bonds with maturity from one year to five year are [100, 99, 98, 97, 96].
Then the yields to maturity are roughly [5%, 5.54%, 5.74%, 5.86%, 5.95%],
the spot rates are [5%, 5.56%, 5.76%, 5.89%, 5.98%],
and the forward rates are [5%, 6.11%, 6.18%, 6.26%, 6.34%].
Due: March 25, 2009.
Please send your source code, executable code,
and an explanation file (how to run it? what is the
time complexity?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 24:00 AM of March 25, 2009.
Name your files 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 program to price American calls with a payoff of sqrt(max(S-X,0)).
Also output the deltas and gammas.
Inputs: S, X, t (year),
s (%), r (%),
continuous dividend yield q (%), n
(number of periods between now and the maturity, an even number).
The American call can be exercised only at time T/2 and later.
For example,
suppose S = 40,
X = 40,
t = 1.0 (year),
s = 40(%),
r = 6(%), and
q = 0(%). The price is about
1.80939, the delta is about 0.125065, and the gamma is about 0.00120771 (for n = 100).
Suppose one sets q = 2(%).
Then the price is about 1.74307, the delta is about
00.12367, and the gamma is about 0.00141229
(for n = 100).
Due: April 8, 2009.
Please send your source code, executable code,
and an explanation file (how to run it? what is the
time complexity?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 24:00 AM of April 8, 2009.
Name your files 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 Asian squared root calls based on the
CRR binomial tree and output the delta as well.
The payoff function is sqrt(max(average - X, 0)).
Of course, if the holder exercises early, then average means the running average.
Note that running average includes the current stock price.
Inputs: S, X, t (year), s (%), r (%),
n, and k (the number of states per node).
For example,
when S = 50,
X = 50,
t = 0.5 (year),
s = 30%,
r = 10 (%),
n = 40, and
k = 5,
the price is about 1.5863 and the delta is about 0.1759.
Due: April 22, 2008.
Please send your source code, executable code,
and an explanation file (how to run it? what is the time complexity?)
using the CEIBA system
(922 U0270)/CEIBA system (723 M9500)
before 24:00 PM of April 22, 2009.
Name your files StudentID_HW_3 for easy reference.
Example: R91723054_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 tree program to price European single-barrier down-and-out
calls.
Inputs: S, X,
barrier H,
t (year),
s (%), r (%), and n.
Assume
H < S.
For example, the price is about 8.05185 by using the trinomial tree
(n=100) and 8.09061 by using the binomial tree (n=102) when
S = 90,
X = 100,
H = 80,
t = 1 (year),
s = 30 (%), and
r = 10 (%).
Due: May 13, 2009.
Please send your source code, executable code, and an explanation file
(how to run it? what is the time complexity?) using the
CEIBA system (922 U0270)/CEIBA system (723 M9500)
before 24:00 AM of May 13, 2009.
Name your files 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 Monte Carlo Simulation program to price 2-asset single-barrier European
knock-out calls.
Inputs:
S1,
S2,
X,
barrier H (on S1),
t (year),
s1 (%),
s2 (%),
ρ (%),
r (%),
number of paths n,
and number of time points (including today) m ( This parameter
is not required if the Brownain bridge method is used).
The terminal payoff is
max((S1 + S2)/2
- X, 0).
Assume H > S1.
The option will be knocked out if the price of the asset with
the initial price S1 hits the barrier
H.
For example, with 95% confidence, the price is about 3.75925-3.78427 when
S1 = 100,
S2 = 100,
X = 95,
H = 130,
t = 1 (year),
s1 =30 (%),
s2 =25 (%),
ρ = 20 (%),
and r = 5 (%).
Due: June 3, 2009.
You may experiment with either variance reduction and/or the
Brownian bridge method
to see if results will converge faster.
Please send your source code, executable code,
and an explanation file (how to run it? what is the
programming language used?)
using the CEIBA system (922
U0270)/CEIBA system (723
M9500) before 24:00 AM of June 3, 2009.
Name your files StudentID_HW_4 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 build a calibrated binomial interest rate tree as in the lecture notes (p.788-p.796). Inputs: the number of period n, the spot rates for period i (%) and the multiplicative v. Outputs: the n baseline rates. Suppose the spot rates are [ 3%, 3.3%, 3.6%] and v =1.25. Then the baseline rates are about [ 3%, 3.202%, 3.325% ]. Due: June 17, 2009. Please send your source code, executable code, and an explanation file (how to run it? what is the time complexity?) using the CEIBA system (922 U0270)/CEIBA system (723 M9500) before 24:00 AM of June 17, 2009.
Name your files 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 (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.