# How to generate a fractional Brownian motion?

In Mathematica 9.0 I run the following piece of code:

H = 0.7; {nn, numIss} = {7, 10000};
data = RandomFunction[FractionalBrownianMotionProcess[H], {0, 1, 1/2^nn},
numIss];
data = data["SliceData", Array[# &, 2^nn, {0, 1}]];
Xs = Join[Transpose[{ConstantArray[0, numIss]}],
Transpose[Differences[Transpose[data]]], 2];

Clearly data is supposed to be 10000 instances of a fractional Brownian Motion (fBM) process of length T=2^7 and with mean zero, variance unity and Hurst exponent H=0.7. Now as the textbook tells us a fBM is supposed to be a time-homogeneous process (meaning that the correlation function depends on the lag only and not on the initial time). Let us check if this is true? I run another piece of code:

Join[
Map[Mean[Xs[[All, #[[1]]]] Xs[[All, #[[1]] + #[[2]]]]]/
Mean[Xs[[All, #[[1]]]]^2] &,
Table[{t, p}, {t, 2, 20}, {p, 0, 10}],
{2}],
{1/2 (Abs[-1 + #]^(2 H) - 2 Abs[#]^(2 H) + Abs[1 + #]^(2 H)) & /@ Range[0,10]},
1] // MatrixForm

I am getting the following output:

Clearly the first nineteen rows of the output are sample correlation functions for time t=2,3,..,20 and the last row is the population correlation function. The columns of this output represent different values of time lag from zero all the way to ten. Now, clearly the sample correlation function does depend both on time t and on the lag and is different from the population correlations function.

Does the textbook lie about the fBM being a time homogeneous stochastic process?

• You chose H=0.7... does this not add correlation? The white process is H=0.5. – bill s Nov 22 '17 at 15:48
• @bill s: Firstly for the white process there are no correlations so your remark is not relevant. Now, I can choose whatever value of the Hurst exponent from zero to unity and I see the same effect. This is clearly a bug in Mathematica and I was being sarcastic in my end remark.. – Przemo Nov 22 '17 at 16:22
• According to wikipedia, en.wikipedia.org/wiki/Fractional_Brownian_motion fBM is only white for H=0.5. For other values it is correlated. If you run your code for this value, the correlations you measure are very small, as might be expected from numerical effects. – bill s Nov 22 '17 at 18:51
• My question is not related to the fact whether the correlations are small or not. I have just noted a Mathematica bug. The fractional Brownian Motion is per definition a time homogeneous process-- see definition in the body of the question. This means that all the rows in my output must be roughly the same which they are not. This in turn means that the Mathematica'a fBM is not an fBM and is useless for anybody who wants to use it for simulations. As a final note Matlab , as opposed to Mathematica, gives the right correlation function. – Przemo Nov 23 '17 at 10:34
• Obviously, you should report any bug you encounter. What is your question? – bill s Nov 23 '17 at 15:12