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 (programming exercise due for class demonstration)
- 2007.05.02
- 2007.05.09
- 2007.05.16
- 2007.05.23 (class starts at
10:40AM);
經濟金融會計國際研討會大會議程
& 經濟金融會計國際研討會報名表
- 2007.05.30
- 2007.06.06 (programming exercise due for class demonstration)
- 2007.06.13 (should have been delivered but was not)
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.
(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 forward probabilities of default given the zero-coupon bond prices of a corporation and
the riskless zero-coupon bond prices.
All times are period-based for convenience. Consult p. 54-55 of the textbook.
Note that the algorithm in Fig. 5.9 is errorneous.
Inputs:
longest maturity n (number of periods),
n corporate zero-coupon bond prices (% of par), and
n riskless zero-coupon bond prices (% of par).
Output:
n probabilities pi such that pi denotes
the probability that the corporation will default during the i th period given that the corporation
has not defaulted earlier.
For example, assume n=3,
corporate bond prices are [90, 88, 86], and
Treasury bond prices are [95, 93, 92].
The forward probabilities are [0.052632, 0.001195, 0.012105].
Due: April 18, 2007.
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 曾思遠 before 9:00 AM of April 18, 2007.
Name your directory StudentID_Name_1 for easy reference.
Example: R91723054_YourName_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 Bermudan calls.
Also output the deltas and gammas.
Inputs: S, X, t (year),
s (%), r (%),
continuous dividend yield q (%), n
(number of periods between two exercise points), and m
(number of exercise points from today, exclusively, to maturity,
inclusively). Note that nm is the total number of periods
for the tree.
For example,
suppose S = 40,
X = 40,
t = 1.0 (year),
s = 40(%),
r = 6(%),
q = 0(%), and
m = 50. The price is about 7.358, the delta is about
0.636172, and the gamma is about 0.023819 (for n = 1).
The price becomes 7.38901 (for n = 1000). Both are for a Bermudan call.
Suppose one sets q = 2(%).
Then the price is about 6.861622, the delta is about
0.605369, and the gamma is about 0.023737 (for n = 1).
For n = 1000, the price is about 6.892132,
the delta is about 0.605695, and the gamma is about 0.023369.
Due: April 25, 2007.
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 曾建翰 before 9:00 AM of April 25, 2007.
Name your directory StudentID_Name_2 for easy reference.
Example: R91723054_YourName_2.
Bring the program/notebook for on-site demonstration on April 25, 2007
during class hours.
-
Write a program to price average-strike European calls based on the
CRR binomial tree and output the delta.
The payoff function is max(Sn - average, 0).
Inputs: S, t (year), s (%), r (%),
n, and k (number of states per node).
For example,
when S = 50,
t = 0.5 (year),
s = 30%,
r = 10 (%),
n = 40, and
k = 5,
the price is about 4.48171 and the delta is about 0.0884323.
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 曾建翰 before 9:00 AM of May 16, 2007.
Name your directory StudentID_Name_3
for easy reference.
Example: R91723054_YourName_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 5.998 when
S = 95,
X = 100,
H = 90,
t = 1 (year),
s = 25 (%), and
r = 10 (%).
Due: June 6, 2007.
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 曾思遠 before 9:00 AM of June 6, 2007.
Name your directory StudentID_Name_4
for easy reference.
Example: R91723054_YourName_4.
Bring the program/notebook for on-site demonstration on June 6, 2007 during class hours.
-
Write a Monte Carlo 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 (%),
number of paths n,
and number of time points (including today) m.
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 13, 2007.
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?) under a folder/directory
to 曾建翰 before 9:00 AM of June 13, 2007.
Name your directory StudentID_Name_5
for easy reference.
Example: R91723054_YourName_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.
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.