Feeds:
Posts

## Modeling Poisson renewal process

### Zulfikar Ahmed<wile.e.coyote.006@gmail.com>

8:59 PM (40 minutes ago)

 to David, bcc: aimee
For Poisson processes, we have

E(N(t)) = E Poisson(lambda*t) = lamda*t
Therefore we can begin with the ‘Poisson volatility airbombing model’ by considering volatility shocks with a concentration lambda.  Therefore it should be possible to put a distributions of shock size B(s,rho) and use this in the renewal process event machinery and pick from this IID for each arrival. For each arrival event, we have to pick a node G=(V,E) and a radius rho and update the volatility object appropriately.
Now whether Poisson model is a good model or not is empirically testable very simply if we have a method of counting total shocks to the market graph in a given time: these have to be approximately linear for the Poisson shock generation method to hold.  The slope of the curve is lambda.Since we have data for equal spacing, at the risk of snooping, we can try to establish whether there is a parametric shape to total number of shocks to the entire market graph in volatility.  An exact Poisson model is unlikely to produce a useful model a priori without further analysis (putting on task queue)

The pseudocode for modeling by direct sampling:

sample.graph.shock<-function(v,graph,shock.distribution){

node<-pick.node.randomly(graph)
v<-update.volatility.with.shock( v, graph, node, rho )
v
}
T<-13000
time.interval<-seq(1,T)
sample.shocks<-rpois(time.interval, lambda=100)
for (i in 2:length(time.interval)){
volatility[i]<-sample.graph.shock(volatility[i-1],graph,sample.shocks)
}
This code obscures the process.  The model needs to be checked with further investigation on data: are the volatility shock density over time intervals linear? and what is the slope of the total number of observed shocks over time?  This is a question which I will try to answer next.  Although unlikely, a Poisson shock model would be very nice and parsimonious and not charged by any politics.

2 Attachments

### Zulfikar Ahmed<wile.e.coyote.006@gmail.com>

9:22 PM (16 minutes ago)

 to David, bcc: aimee
Sir, a simple method for calculating gross number of volatility shocks to the market graph can be calculated by a simple procedure for a fixed time:

(a) Denoise the appropriate noise level of the noisy stochastic volatility
(b) Set another threshold for significant movements of the volatility on the graph
(c) count those above threshold in (b)
Then we look at the statistics.  More specifically in R code:count.volatility.moves<-function( cvol, pvol, thresh){  # cvol=current/previous volatility vectors

diff<-abs(cvol-pvol)
sum( diff[diff > thresh] )
}
This works:

> count.volatility.moves(eh[501,],eh[502,],1.0)
[1] 4752.342
So we loop over all the dates and plot it just to look because 1.0 is an arbitrary thresholdm<-dim(eh)[1]

shocks<-matrix(0,nrow=1,ncol=m)
for (k in 2:m){
shocks[1,k]<-count.volatility.moves(eh[k,],eh[k-1,],1.0)
}
plot(shocks)VOILA

Results!!!That’s not linear but it’s interesting.

Attachments area
Preview attachment Screenshot from 2015-06-07 21:19:12.png

Screenshot from 2015-06-07 21:19:12.png

### Zulfikar Ahmed<wile.e.coyote.006@gmail.com>

9:39 PM (0 minutes ago)

 to David, bcc: aimee
This result of finding a strong pattern like this needs some care in interpretation.  I will do more checks and write up this result by tomorrow even if in some quick format.  There seems to be some possible substance to a simple Poisson model here that is surprising to me.