I am currently trying to simulate an asset return using the student-t distribution, but I can't find how I should do this. I began with the Geometric Brownian motion and just changed in order that epsilon follows the student-t distribution instead of the normal distribution, but I found out that this is not the correct way, I read a lot about levy-processes, but I don't know exactly how do simulate such returns.

Thank you very much in advance

  • $\begingroup$ In Continuous Time it may not be possible AFAIK (since sum of two Student-t increments is not necessarily Student-t), but in Discrete Time it is easy and frequently done. $\endgroup$
    – nbbo2
    Jul 19, 2016 at 13:20
  • $\begingroup$ Nevertheless, you could get some insights in this paper arxiv.org/pdf/0906.4092.pdf $\endgroup$ Dec 1, 2020 at 11:56

1 Answer 1


You will need a 'pseudo' random number generator - most stats programming languages have them (Matlab, R, Python...). But GBM is defined with Normal increments $N(0,\sigma^{2}(T-t))$ so I dont think using Student's t distribution is a good idea, never seen it in any literature/applications. It is however used for instance in GARCH modelling....

Random variates: For instance in R, you can get random variates from student distribution from the fGarch package - rstd() function. In Matlab it is described here

Then you can use this as innovations in your BM or GBM motion simulation. How to do this was answered here few times see answer here.

If you elaborate further, what language you are using, or even post your code attempt so far, we might be able to help more...

  • $\begingroup$ Thank you so much Jan Sika. I am using Matlab. I use at the moment the following code: function [S,T] = studentt(mu, sigma, S0, nu, T, y, NSim) %mu=drift T= number of time steps, y=number of years, NSim number of %simulation N=yT; dt=y/N; eps=trnd(nu,N,NSim); trend=(mu-sigma^2/2)*dt; W=sqrt(dt)*eps; h=trend+sigmaW; z = cumsum([repmat(log(S0),NSim,1) h.'],2); S=exp(z); $\endgroup$
    – lechim
    Jul 20, 2016 at 7:16
  • $\begingroup$ I thjink you should do cumsum of the W=sqrt(dt)*eps. Then not sure what is the repmat doing, but I think you can just follow something like this, but just have the student distribution instead of normal in the BM generation part $\endgroup$
    – Jan Sila
    Jul 20, 2016 at 11:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.