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
- 2007.03.07
- 2007.03.14
- 2007.03.21
- 2007.03.28
- 2007.04.04
- 2007.04.11
- 2007.04.18
- 2007.04.25
- 2007.05.02
- 2007.05.09
- 2007.05.16
- 2007.05.23
- 2007.06.06
- 2007.06.13
Programming Exercises (status)
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.
(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 static spread of a bond
given the bond price, the spot rates,
the maturity, the coupon rate of the bond, and a credit risk number.
The i-th cash flow shall be discounted by (spot rate + static spread + credit risk * i). This accounts for the fact that a firm is more likely
to fail for later cash flows.
All times are period-based for convenience.
Inputs: coupon bond price (% of par),
maturity (number of periods),
spot rates (%, one for each period),
period coupon rate (% of par),
credit risk (%).
For example, assume the bond price is 99%,
the maturity is 3 periods,
the spot rates are [ 1%, 1.5%, 2% ],
the coupon rate is 10%, and the credit risk is 0%.
You then calculate the static spread to be 8.47%.
Due: March 29, 2006.
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 Chang before 9:00 AM of March 29, 2006.
Name your directory StudentID_Name_1 for easy reference.
Example: R91723054_YourName_1.
Even if you need to make an appointment with Mr Chang for demonstration
because of the unusual software you use, you still have to submit the
files before the deadline.
-
Write a program to price European and American calls and puts.
Also output the deltas and gammas.
Inputs: S, X, tau (year), sigma (%), r (%),
continuous dividend yield q (%), and n.
For example,
when S = 50,
X = 50,
q = 1(%),
t = 0.5 (year),
s = 20(%), and
r = 5(%), the price is about 3.29595 for an American call
(I used a trinomial model here).
Due: April 26, 2006.
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 Lin, Kun Ching before 9:00 AM of April 26, 2006.
Name your directory StudentID_Name_2 for easy reference.
Example: R91723054_YourName_2.
Bring the program/notebook for on-site demonstration on April 26, 2006
during class hours.
-
Write a program to price fixed-strike European Asian calls based on the
CRR binomial tree and output the delta.
The payoff function is max(average - X, 0).
Inputs: S, X, t (year), s (%), r (%),
and n.
For example,
when S = 50,
X = 60,
r = 10 (%),
s = 30%, and
t = 0.5 (year),
the price is about 0.326 and the delta is about 0.11.
Due: May 10, 2006.
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 Chang before 9:00 AM of May 10, 2006.
Name your directory StudentID_Name_3
for easy reference.
Example: R91723054_YourName_3.
Even if you need to make an appointment with Mr Chang for demonstration
because of the unusual software you use, you still have to submit the
files before the deadline.
-
Write a program to price European double-barrier knock-out calls.
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.457-1.4584 when
t = 1 (year),
r = 10 (%),
S = 95,
s = 25 (%),
X = 100,
L = 90,
H = 140.
Due: May 24, 2006.
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 Lin, Kun Ching before 9:00 AM of May 24, 2006.
Name your directory StudentID_Name_4
for easy reference.
Example: R91723054_YourName_4.
Even if you need to make an appointment with Mr Lin for demonstration
because of the unusual software you use, you still have to submit the
files before the deadline.
-
Write a program to price 2-asset single-barrier European knock-out calls.
Inputs:
S1,
S2,
X,
barrier H (on S1),
t (year),
s1 (%),
s2 (%),
r (%),
r (%),
and n.
The terminal payoff is
max((S1 + S2)/2
- X, 0).
Assume H > S1.
For example, the price is about 3.08754-3.46407 (courtesy of
³\¬°¤¸ William Wei-Yuan Hsu) when
S1 = 100,
S2 = 100,
X = 95,
H = 130,
t = 1 (year),
s1 =30 (%),
s2 =25 (%),
r =0.5 (%),
and r =1.51 (%).
Due: June 7, 2006.
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 Chang before 9:00 AM of June 7, 2006.
Name your directory StudentID_Name_5
for easy reference.
Example: R91723054_YourName_5.
Even if you need to make an appointment with Mr Chang for demonstration
because of the unusual software you use, you still have to submit the
files before the deadline.
-
Write a program to price discretely monitored European-style Asian calls.
Inputs are identical to problem 3 except that n should
be interpreted as the number of monitoring dates (today counted).
You need an extra input N to denote the number of sample
paths. Use at least antithetic variates to reduce the variance.
Due: June 28, 2006.
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 Lin before 9:00 AM of June 28, 2006.
Name your directory StudentID_Name_6
for easy reference.
Example: R91723054_YourName_6.
Even if you need to make an appointment with Mr Lin 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.