Data Generation
All data generation methods use the makedata
function with different structs containing input parameters.
Parametric Data Generation
Log Diffusion
Creating a time series with the log diffusion model for asset prices (also known as Geometric Brownian Motion) uses the LogDiffInput
struct.
Note: drift (expected value of returns) and volatility are in terms of the implicit time period for the whole simulated data set. For example, when simulating a year of prices, drift represents the yearly expected return.
For simulating a year of daily and hourly prices, assuming there are 252 trading days in a year and 6 hours in a trading day.
# creating a LogDiffInput struct with input parameters
daily_input = LogDiffInput(;
nTimeStep=252,
initial=50,
volatility=.3,
drift=.08
);
hourly_input = LogDiffInput(;
nTimeStep=252*6,
initial=50,
volatility=.3,
drift=.08
);
# creating 2 new datasets with 2 timeseries each
daily_timeseries = makedata(daily_input, 2)
hourly_timeseries = makedata(hourly_input, 2)
Non-Parametric Data Generation
Time-Series Bootstrapping
Time-series bootstrapping samples with replacement from blocks of the original time-series dataset. The three bootstraps included in Bruno are Stationary
, MovingBlock
, and CircularBlock
.
All time series bootstraps use the BootstrapInput
struct with parameters.
Stationary
bootstrap (Politis and Romano, 1994) uses exponentially distributed blocksizes.MovingBlock
uses constant sized blocks that do not wrap around the time-series.CircularBlock
uses constant sized blocks that wrap around the time-series.