Poisson Process Modeling of Pure Jump Equities on the Ghana Stock Exchange ()
1. Introduction
The study of asset price behavior is a fundamental link in the development of derivative pricing models. Consequently, having a model that accurately captures the behavior of the underlying asset is crucial in stock price modeling. A time series observation of the empirical distribution of some stock returns on the Ghana Stock Exchange (GSE) exhibits behavior that significantly deviates from existing normality assumption models. In this study, we develop a model to capture the observed behavior and proceed to test its suitability using numerical procedures. The basic premise in Merton’s Jump Diffusion Model (JDM) is that the total change in an asset price is driven by a continuous and pure jump process. However, empirical observation of the stock price on the Ghana stock exchange shows that changes in some stock prices are driven strictly by jumps. It is therefore, imperative that we examine pure jump models to analyse stock behavior on the Exchange. One problem with the pure jump model is that researchers hardly give the mathematical background leading to the derivation of the model. This poses a problem for practitioners with limited mathematical backgrounds. In this study, we focus on deriving the pure jump model mainly from an abstract framework and give a step-by-step approach using basic mathematical language. The aim is to provide an accessible overview of the fundamentals of the pure jump model to the non-specialist reader and bridge the link between the abstract conception of the stock price process and the corresponding Levy process. To achieve this, emphasis is placed on certain aspects in the development of the pure jump model, specifically from the abstract perspective, that has not been well addressed in previous studies. In addition, although models with jumps in the underlying asset have been used extensively in asset price modeling, especially when market returns have only discontinuities, practical developments in this area are rare as most stocks have sufficiently high frequency data to depart from purely discontinuous processes. This arises because European and American markets are mostly characterized by high level trading activity resulting in high frequency data such that although the underlying assets evolve structurally as discrete, they can without any loss of generality be approximated by diffusion and jump diffusion models. This is, however, not the case in some African markets such as Nigeria, Kenya and more specifically, as observed on the GSE. Recent empirical data and time series analysis from the exchange has shown that stocks assume specific prices for long periods and do not change for a considerable length of time. Price changes are irregular and lead to either small or large price jumps. To demonstrate these empirical observations, we present in Figures 1-3 plots of a five-year time series of the actual movement of six trading stocks: Ecobank Transnational Inc, HFC Bank, SIC Insurance Limited, SG-SSB, Cocoa Processing Company and Starwin Products Limited totaling 1174 of trading days on GSE, from July 2013 to July 2018.
Figure 1(a) and Figure 1(b) show the plots of stock prices of Ecobank Transnational and HFC Bank within the trading period. Clearly, the trajectories are purely continuous and are suitably modeled by Geometric Brownian Motion. Pricing follows diffusion processes and is modeled under Black-Scholes option pricing model. Figure 2(a) and Figure 2(b) also show the paths of SIC Insurance Ltd and SG-SSB Limited during the same trading period. The trajectories are continuous but punctuated by occasional jumps at arbitrary time intervals. The pricing trajectories are thus suitably modeled by Merton’s Jump Diffusion processes. On the other hand, the plots in Figure 3(a) and Figure 3(b) show the
Figure 1. (a & b) Trajectories of Ecobank transnational and HFC—from July 2013 to July 2018. Source: Annual reports Ghana.
Figure 2. (a & b) Trajectories of SIC insurance Ltd and SG-SSB limited: July 2013-July 2018. Source: Annual reports Ghana.
Figure 3. (a & b) Trajectories of cocoa processing company and Starwin products: July 2013-July 2018. Source: Annual reports Ghana.
trajectories of Cocoa Processing Company and Starwin Products Limited for the same period. It is observed that the price paths have only jumps occurring at different times and the stock price either goes up or come down. In between these occasional jumps the price of the stock remains constant. Clearly, the trajectories are dimensionally different and cannot be modeled using diffusion or jump diffusion models. To this end, we develop the pure jump processes which captures all the empirical facts associated with such stocks. Strictly speaking, the model is characterized purely by discontinuities such that at any given point in time, the sample paths are almost surely discontinuous with points of continuity forming a set of zero measures. The paper is organized as follows: In Section 2, we develop the pure jump process from the framework of an abstract probability space. This is done under the physical probability measure which describes the evolution of an arrival process into a Poisson jump process and consequently a compound Poisson process. Section 2.2 considers the compound Poisson process under the levy measure and derives the characteristic functions and the Levy-Ito decomposition. Section 3 discusses the results of the simulation of pure jumps for stocks listed on GSE.
2. Literature Review
Models of stock price processes with the Geometric Brownian Motion (GBM) were proposed by [1] and popularized as a pricing model in the [2] seminal paper. However, to provide a realistic description of empirical stock price dynamics and accommodate several practical situations many extensions have been made to the GBM. The most popular are Jump Diffusion Models (JDM), stochastic volatility, and regime switching models. Models with jumps have their roots from [3], in which a compound Poisson process modeling pure jumps is added to the continuous GBM. Whilst Merton assumed a normal distribution for the jump sizes, [4] demonstrates that the dynamics of the asset price can be modeled as a combination of GBM and a Poisson process such that jump sizes have double exponential distribution. The Merton model underlying jump diffusion models has since been thoroughly examined by many authors. [5] developed a discrete time version of Merton’s jump diffusion model so that the values of the discrete model converge weakly to the desired corresponding continuous time model values. [6] further showed that the sequence of American option values obtained from discrete-time models also converges to the corresponding value obtained from the continuous-time model. Option pricing on Jump Diffusion Models has been examined extensively leading to closed form analytical solutions or numerical simulations of European and American call-and-put options. [7] [8] presented closed form solutions of options written on JDMs. [9] presented a finite difference method for solving parabolic partial integro-differential equations of underlying assets driven by jump-diffusions. The Variance-Gamma (VG) model of [10] and the CGMY model of [11] have all proposed options prices on pure jump processes.
Stochastic volatility models that generalize the traditional GBM by allowing the constant volatility to be stochastic have been presented by [12] [13] [14]. [15] in particular, allows for a volatility risk premium that is proportional to the square root of the stochastic variance. Options pricing models under stochastic volatility have been further examined by [16] [17]. Monte–Carlo simulations that numerically analyse the pricing of options in this regime have been examined extensively by [18] [19] [20]. Regime switching models that account for markets that may switch from time to time between a stable low-volatility state and an unstable high-volatility regime have been proposed by [21] and further examined by [22] [23] [24] [25]. The class of hyperbolic distributions that capture empirical data following pure jump distributions and characterized by infinitely divisible fat-tails have been introduced in [26] [27]. Levy models that can rigorously analyse pure jumps and produce explicit computations of finite results have been analyzed [28] [29] [30].
3. Methodology
3.1. The Model
Let
be a probability space with filtration
,
a sigma algebra generated by
. All processes that we shall consider in this section will be defined in this space. Consider the price of a typical stock on the Ghana Stock Exchange specifically Starwin Limited, from June 1 2018 to June 30 2018 as shown in Table 1.
Table 1 shows that there were four price changes within a given month. Let’s consider these prices changes as jumps and assign
as the event that there is a jump in the stock price. Since stock price changes occur randomly it can be considered as a stochastic process. Let
be the real valued function of the random variables describing jumps in the stock price and let
represent the arrival times of the jumps as shown in Figure 4.
Suppose the process starts at time 0 then when the first jump event occurs at T1 we wait for a time period S1 until the next jump occurs at T2. The waiting time between the first and the second jump is S2 and the waiting time between the second and third jump is S3 and so on. Suppose Si’s are independent and the Ti’s are such that T0 is the time we start to observe the process and
. Then we can write
So that
Table 1. Typical trading day stock prices.
Figure 4. Abstract representation of the stock price process.
Let
represent a process that counts the arrival of a jump event and let the value of the process at time t be equal to j. Then we can write
and the probability of the event as
. In the time step ∆t, there are three possibilities before the next observation:
1) One jump occurs and the process value increase by 1 to j + 1.
2) More than one jump occurs and the process value increases to more than j + 1.
3) No jump occurs and the value stays the same.
If one jump occurs then in an infinitesimal time interval the probability of j increasing by 1, conditional on the number of jumps at t is given by
Let’s assume that the intensity of the jump process is
, then we can write that
As ∆t is infinitesimal we expect the probability of the next jump (two or more jumps) to be negligible.
and
Now in the reverse order suppose the process value was j- 1 at time t and 1 jump occurred in ∆t then
one jump occurred
more than one jump occurred
no jump occurred
.
Thus, the from time t to time t + ∆t we have
Let’s denote
then
(1)
Since j is an integer, we can have the following sequence
This system of equations can be written as a matrix
(2)
Hence, we can write the system of differential equations as
(3)
where
is a matrix.
The process starts at zero with probability 1, that is
,
,
.
For
the condition is
,
(4)
Essentially, the process starts at zero, so the probability of the process taking a value zero at time zero is 1 and the probability of the process taking any other value at time zero is 0 by the same logic.
Now from (4) we have
From the initial conditions
hence,
(5)
Now from 4
,
When
,
, but
.
,
.
,
.
Iteratively for
,
.
We recognise this as the Poisson random variable. The random variablesXi’s representing the arrival of jumps are independently distributed such that if
counts the number of jumps in the interval
then,
.
If
is the natural filteration of the process then,
1)
, almost surely,
2)
has independent increments, that is if
then
is independent of
,
3) The increment
is a Poisson distributed with parameter
for all
.
has density
(6)
We have established that the stock process having distribution as in Table 1, follows the Poisson distribution. The distribution of waiting times between jumps is obtained by setting
in (6) and considering waiting at least t time units to see the first jump. This yield,
Hence
Differentiating equation above we have
3.2. The Jump Model
The Poisson process developed for the jump events appears too limited to obtain a realistic stock price model as its jump size is always equal to 1. In reality, jump sizes in stock prices vary hence there is some interest in considering jumps with random sizes. Consider the stock price
, understood to be right-continuous function with left limits so that
represents the value of
just before a possible jump at t. We write
as the limit from the left, i.e.
(7)
Suppose that in the small-time interval ∆t the stock price jumps by
so that it jumps from
to
. The percentage change in the stock price is thus given by
In the infinitesimal limit
(8)
Yt’s are non-negative random variables modeling the distribution of the jump sizes such that they are independently identically distributed and the trajectories of jump sizes are right-continuous with left limits. Equation (8) gives the relative jump amplitude or percentage change in stock price as
. In addition to the jump sizes, the inter-arrival times of the jumps needed to be modeled. As shown earlier, the arrival times of jumps
is generated by a Poisson process
independent of the jump sizes
with average arrival intensity
. By combining the jump times and the jump sizes, the trajectory of the stock price process is now completely characterised by the compound Poisson process.
The compound Poisson process gives us all the information about the jumps in the stock price process and tells us when the jumps occur and how big they are.
3.3. Jump Measures of the Compound Poisson Process
Now let
then the stochastic process
is a compound Poison process and the following preposition suffice.
Proposition 1.1.
The stochastic process
is a compound Poison process if and only if it is a Levy process and its sample paths are piecewise constant.
Proposition 1.1 allows the stock price process to be characterized as a Levy process. There are ample reasons for introducing Levy processes at this stage. First of all, stock prices, when they jump carries associated risk and such risks can only be rigorously analysed by Levy models which allows for the explicit computations of finite results. In essence, the distributional properties of the empirical data admit the Levy-Khintchine formula which describes the structure of the sample paths via the Levy-Ito decomposition.
We now calibrate the trajectories of
as a process having infinite number of jumps in a finite time grid. The increments
depends only on
and
has the infinite divisibility property such that for a given path
there exist a sequence of i.i.d random variables
such that
can be decomposed as:
(9)
and the increment
yields a sequence of stationary i.i.d random variables.
is a compound process on
, having intensity
and jump size distribution f We define a random measure
on
describing the jumps of the stock price such that for any measurable Borel set
,
counts the number of jumps between
and
. That is,
Then
is the Poisson random measure on
with intensity measure
where
is the Levy measure defined as the expected number of jumps per unit time and given by
is thus given by
(10)
For a one-dimensional distribution
(11)
where b is the linear drift term.
has the characteristic triplet
and its characteristic exponent can be expressed as
(12)
Given the Levy measure
we can rewrite (12) as
(13)
All paths of
has a finite variation if and only if
.
By the levy-Ito decomposition, if
is a pure jump then it can be decomposed as
where b is the drift defined as
represents the behavior of large jumps and
represents the behavior of small jumps. We assume that
, so the process has a finite expected number of small (
) and large (
) jumps per time interval time interval of
.
4. Results and Discussion
To test the extent to which the model predicts the actual stock price, we simulate the path of each stock using Monte Carl simulations and the results are compared to the actual stock price for the coming year. The previous year was from January 2018 to December 2018 and the coming year was January 2019 to December 2019. The estimates for the coming year are obtained from the simulation-based estimator in
using log maximum likelihood as the sampling toll. The data for the input parameters were obtained for 36 common stocks on Ghana Stock Exchange and consisted of daily share prices quoted on GSE for the period. The data source is a daily Ghana Annual Reports stock price file wherein we assume no dividend payments within the period. We define a jump as when the return on the stock is greater or less than 10% from the previous day. So a jump occurs if
The Monte Carlo simulation results allow us to pin down the parameters of stocks that follow pure jumps, jump diffusion or strictly diffusion processes. The input parameters for the simulation comprising the mean and variance of the diffusion process, the mean and variance of the jump processes, the intensity of the Poisson process and the number of jumps per period. These parameters are summarised in Table 2. The simulation procedure for pure jumps and jump diffusion processes are well documented in Cont and Tankov (2003) and we adopt the procedure here. The codes for the simulation are given in the Appendix and a cross-section of the simulated and actual results is also given in Table A1.
The simulated results and the actual stock price processes that follow pure jump and jump diffusion processes are presented graphically in Figures 5-13. The figures show the log returns for 9 stocks whose price processes are characterized by pure jump and jump diffusion processes. They include Total Petroleum, Fanmilk, Calbank Ltd., Ecobank, Ecobank transnational, Unilever, Produce
Table 2. Input parameters for simulation process.
m = mean of the data, s = standard deviation of the data, l = number of jumps, a = mean of the jumps, D = standard deviation of the jumps, ts = ∆x, J = number of trading days.
Figure 5. Graphs of simulated and. actual stock price—Total Petroleum.
Figure 6. Graphs of simulated and. actual stock price—Fanmilk Ghana.
Figure 7. Graphs of simulated and. actual stock price—CalBank.
Figure 8. Graphs of simulated and. actual stock price—SIC.
Figure 9. Graphs of simulated and. actual stock price—Starwin.
Figure 10. Graphs of simulated and. actual stock price—Aluworks.
Figure 11. Graphs of simulated and. actual stock price—PBC.
Figure 12. Graphs of simulated and. actual stock price—Unilever.
Figure 13. Graphs of simulated and. actual stock price—Ecobank Transnational.
Buying Company, State Insurance Company and Starwin Ltd. Other stocks that follow diffusion processes are not shown here. The actual and simulated trajectories are shown in the graphs and the summary statistics and t-test analysis are also presented in Table 3. Using the t-test, the null hypothesis is that the population means of the simulated and actual stock prices are equal assuming that the variances are equal. In this case if the t-stat is greater than the p-value at a given significance level and degrees of freedom, then for a two-tail test the population means will be statistically different. It is realised that this is the case for PBC, Starwin, SIC, Total Petroleum and Fanmilk. Thus it was realised that the trajectories of Starwin, PBC, Total Petroleum, Fanmilk, PBC, Starwin and SIC follow pure jumps processes. However, the paths of Calbank, Unilever and Ecobank Transnational cannot be confirmed from the results as pure jump processes.
Table 3. T-test table of simulated and actual stock prices.
5. Conclusion
The main results of the paper are: developing an underlying price model of a pure jump model from an abstract framework of empirical stock price data. The model is extended as Levy pure jump model that captures the features associated with pure jumps. The numerical results were able to isolate the stocks that follow pure jump processes from those that follow diffusion and jump diffusion processes. The summary statistics of the trajectories show that stock price processes on the Ghana stock exchange are characterized by diffusion, jump diffusion and pure jump processes. In conclusion, it is realised that the paths of Starwin, PBC, Total Petroleum, Fanmilk, PBC, Starwin and SIC follow pure jumps. The paths of Calbank, Unilever and Ecobank Transnational cannot be confirmed as pure jumps.
Appendix
Codes for simulation
SimulatePureJump = function(m, s, l, a, D, ts, J)
{L = length(ts);
T = ts[L];
# simulate number of jumps;
N = rpois(J, l * T);
Jumps = matrix(0, J, L);
for(j in 1 : J);
{# simulate jump arrival time;
t = T * runif(N[j]);
t = sort(t);
# simulate jump size;
S = a + D * rnorm(N[j]);
# put things together;
CumS = cumsum(S);
Jumps_ts = matrix(0, 1, L);
for(n in 1 : L);
{Events = sum(t ≤ ts[n]);
if(Events);
{Jumps_ts[n] = CumS[Events]; }
} Jumps[j,] = Jumps_ts;}
D_Diff = matrix(NaN, J, L);
for(l in 1 : L);
{Dt = ts[l];
if(l > 1);
{Dt = ts[l] - ts[l - 1];}
D_Diff[, l] = m * Dt + s * sqrt(Dt) * rnorm(J);}
X = cbind(matrix(0, J, 1), apply(D_Diff, 2, cumsum) + Jumps);
return(X);}
tot<-SimulatePureJump(.0023096,0.01343,1,0.12,0,0.00405,122)
Total1<-tot[,-1]
plot(abs(Total1),type = “s”,col=“red”, xlab=“Trading Days”,
ylab=“Log Returns of Stock”, main = “Total Petroleum”, xlim=c(0, 40))
lines(abs(doc$Total),type =“s”,col=“blue”)
legend(15, 0.125, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
eco<-SimulatePureJump(.0006356,0.0133,2,0.02,0.00405,0.00405,122)
Ecobank<-eco[,-1]
plot(abs(doc$ecobank),type = “s”,col=“blue”, xlab=“Trading Days”, ylab=“Log Returns of f(Y)”, main = “Ecobank”)
lines(abs(Ecobank),type =“s”,col=“red”)
legend(0, 0.11, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
fun<- SimulatePureJump(.00186,0.01192,1,0.10,0.01,0.00405,122)
Funmilk1<-fun[,-1]
sim_2<-cbind(Funmilk1,doc$Funmilk)
plot(abs(doc$Funmilk),type = “s”,col=“blue”, xlab=“Trading Days”, ylab=“Log Returns of Stock”, main = “Fanmilk”)
lines(abs(Funmilk1),type =“s”,col=“red”)
legend(0, 0.15, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
cal<- SimulatePureJump(.001428,0.03198,9,0.14,0.02,0.00405,122)
ca<-cal[,-1]
ca1<-cbind(ca,doc$calbank)
View(ca)
plot(abs(ca),type = “s”,col=“red”, xlab=“Trading Days”, ylab=“Log Returns of Stock”, main = “CALBANK”)
lines(abs(doc$calbank),type =“s”,col=“blue”)
legend(15, 0.125, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
ecot<- SimulatePureJump(.00191,0.03410,2,0.57,0.61,0.00405,122)
Ecotrans<-ecot[,-1]
e1<-cbind(Ecotrans,doc$eco_trans)
plot(abs(Ecotrans),type = “s”,col=“red”, xlab=“Trading Days”, ylab=“Log Returns of Stock”,main = “Ecobank Transactional”)
lines(abs(doc$eco_trans),type =“s”,col=“blue”)
legend(0, 0.2, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
uni<- SimulatePureJump(.00191,0.03410,2,0.57,0.61,0.00405,122)
Uniliver<-uni[,-1]
u1<-cbind(Uniliver,doc$uniliver)
plot(abs(Uniliver),type = “s”,col=“red”, xlab=“Trading Days”, ylab=“Log Returns of Stock”,main = “UNILIVER”)
lines(abs(doc$uniliver),type =“s”,col=“blue”)
legend(80, 0.25, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
pbc<- SimulatePureJump(0,0.04573,12,0.20,0.03,0.00405,122)
PBC<-pbc[,-1]
p1<-cbind(PBC,doc$pbc)
plot(abs(doc$pbc),type = “s”,col=“blue”, xlab=“Trading Days”, ylab=“Log Returns of Stock”,main = “PBC”)
lines(abs(PBC),type =“s”,col=“red”)
legend(0, 0.3, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
sic<- SimulatePureJump(-.0007411,0.037589,12,0.14,0.03,0.00405,122)
SIC<-sic[,-1]
s1<-cbind(SIC,doc$sic)
plot(abs(SIC),type = “s”,col=“red”, xlab=“Trading Days”, ylab=“Log Returns of Stock”,main = “State Insurance Company”)
lines(abs(doc$sic),type =“s”,col=“blue”)
legend(60, 0.21, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
star<- SimulatePureJump(0,0.0844,14,0.35,0.57,0.00405,122)
Starwin<-star[,-1]
st1<-cbind(Starwin,doc$starwin)
plot(abs(Starwin),type = “s”,col=“red”, xlab=“Trading Days”, ylab=“Log Returns of Stock”,main = “Starwin”)
lines(abs(doc$starwin),type =“s”,col=“blue”)
legend(0, 0.9, legend=c(“Simulated”, “Actual”),col=c(“red”, “blue”), lty=1:2, cex=0.8)
Table A1. Cross section of simulated and actual results.