Java Programming for Financial Mathematics
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
CPT206 Java Programming for Financial Mathematics
This is the specification task sheet for the Coursework 2 assessment component of your CPT206
module. This is worth 15% of your final grade for this module. The submission deadline for this
assignment is Sunday, 9 May, 2021, at 10pm. Detailed submission instructions are provided in
Section 3.
1 Task specification (60 marks)
The aim of this coursework is to implement the Hull-White model, which is a model of future interest
rates. First described by John Hull and Alan White in 1990, this model is one of the historically
most important interest rate models, and is still often used for risk-management purposes in the
market today. As part of this task, you will also produce a report documenting your design choices,
detailed in Section 2.
1.1 Model dynamics
The model is a short-rate model, whose dynamics are given by the following equation:
dr(t) =
θ(t) − ar(t)
dt + σdW(t). (1)
In Equation (1), a and σ are positive constants, the function θ(t) is chosen so as to exactly fit the
initial yield curve observed in the market, and W(t) is a standard Brownian motion. This means
that the differential dW(t) has normal distribution with mean 0 and variance dt.
1.2 Task description (40 marks)
You will write a Java program that simulates the Hull-White model over a given time period.
Your Java program should be written in a single Main class. It should take the following input
parameters:
• The constants a, σ, and the function θ(t) which drive the model’s behaviour. These should
be chosen by yourself (e.g. as class variables/constants), and the values selected will be
documented in the report (see Section 2).
• An initial rate r0 > 0.
• A time period T > 0 and a positive integer n indicating the number of increment intervals.
1
The idea is to break down the time period [0, T] into n increment intervals of length dt =
T
n
,
and apply the Euler method to Equation (1) to simulate the model over that time period. In other
words, we should have: r(t = 0) = r0, and for any given time t =
kT
n
for some k ∈ {0, . . . , n − 1},
r(t + dt) = r(t) + dr(t), where the increment dr(t) is given by Equation (1).
Your program should display the values of the rate function r(t) over the chosen time period
(i.e. should show the values of r(t) for all t of the form t =
kT
n
as above). It should also calculate the
minimum, maximum and average values of the rate function, and display them. For the minimum
and maximum, it should also display the point t at which these are reached.