Principles of Financial Computing Course

Principles of Financial Computing

Location: Room 205, Building 2


On Wall Street, being right on the fundamentals and
wrong on the timing is the same as just being wrong.
---Jonathan Cohen

Where is the risk management at J.P. Morgan Chase?
--- Bloomberg News, January 16, 2002

10. Of course, I make a lot investing.
I only teach so I can help young people.
--- Top Ten Lies Finance Professors Tell Their Students


A single-semester course for the students of the Department of Finance and the Department of Computer Science and Information Engineering.
Required course for the Financial Engineering Track in the Department of Finance's Master's program.


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.


Notes [ 2003, 2004, 2005, 2006, 2007 ]

  1. 2007.03.07
  2. 2007.03.14
  3. 2007.03.21
  4. 2007.03.28
  5. 2007.04.04
  6. 2007.04.11
  7. 2007.04.18
  8. 2007.04.25 (programming exercise due for class demonstration)
  9. 2007.05.02
  10. 2007.05.09
  11. 2007.05.16
  12. 2007.05.23 (class starts at 10:40AM); 經濟金融會計國際研討會大會議程 & 經濟金融會計國際研討會報名表
  13. 2007.05.30
  14. 2007.06.06 (programming exercise due for class demonstration)
  15. 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.
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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