Computing the Hurst exponent or fractal dimension of fractional Brownian motion

Mathematica's estimation routines are able to recover the Hurst exponent from the sample:

BlockRandom[SeedRandom["mathematica.SE/58539"];
  tlow = 1; thigh = 1000; tinc = 1; hurst = 0.4; 
  dataz = RandomFunction[FractionalBrownianMotionProcess[hurst], {tlow, thigh, tinc}, 1]];

FindProcessParameters[dataz, FractionalBrownianMotionProcess[h]]

{h -> 0.397063}

so the issue must be with your code.


This late answer gives some details of how to calculate a dimension for fractional Brownian motion. The documentation at Help > FractionalBrownianMotionProcess > Basic Examples shows that the variance

 Variance[FractionalBrownianMotionProcess[\[Mu], \[Sigma], h][t]]

is $t^{2 h} \sigma^2$, which is the same as that on page 84 of The Science of Fractal Images edited by Peitgen and Saupe. They write $\rm{Var}[X(t_2)-X(t_1)]=\sigma^2~Abs[t_2-t_1]^{2~h}$, where the Hurst exponent satisfies $0<h<1$, and the fractal dimension is $D=2-h$.

The strategy is to find the variance $V$ of data points separated by increasingly large time differences $k=t_2-t_1$. The slope and intercept of the best fit line on a log-log plot of $V$ versus $k$ give the Hurst exponent $h$ and volatility $\sigma$, respectively. Thus, $Log[V] = 2 \log[\sigma] + 2 h \log[k]$. The question assumes $\mu=0$ and $\sigma=1$.

Block[{tlow, thigh, tinc, hurst, dataz, u, k, fit},
   SeedRandom["mathematica.SE/58539"];
   tlow = 1;
   thigh = 1000;
   tinc = 1;
   hurst = 0.4;
   dataz = RandomFunction[
              FractionalBrownianMotionProcess[hurst],
              {tlow, thigh, tinc}, 1];
   u = Table[
            {N[Log[k]], Log[Variance[Differences[dataz, 1, k]]]},
            {k, 1, 500}];

   fit = Fit[u, {1, k}, k];

   ListLogLogPlot[u,
      Frame -> True, 
      FrameLabel -> {"Log[k] = Log[t2-t1]", "Log[Variance]"},
      PlotLabel -> "Log[V] = " <> ToString[fit],
      Epilog -> {
         Text["\[Sigma] = " <> ToString[E^(fit[[1]]/2)], {0.0, 1.3}],
         Text["h = " <> ToString[fit[[2, 1]]/2], {0.0, 1.0}],
         Thick, Red, 
         Line[{Log[{1, fit /. k -> 1}], Log[{6, fit /. k -> 6}]}]},
      BaseStyle -> {FontSize -> 14}]
]

log-log plot V vs k