xpectral.data

Market data access via the Polygon/Massive API with caching and rate limiting.

xpectral.data.massive.get_aggregate_bars(tickers, multiplier, timespan, from_, to, adjusted=True, sort=None, limit=None)[source]
Parameters:
  • tickers (List[str])

  • multiplier (int)

  • timespan (str)

  • from_ (str | int | datetime | date)

  • to (str | int | datetime | date)

  • adjusted (bool | None)

  • sort (str | Sort | None)

  • limit (int | None)

Simulations

class xpectral.data.simulations.BrownianMotion(n_steps, n_paths=1, dt=0.003968253968253968, seed=None)[source]

Bases: object

Generates standard and geometric Brownian motion paths.

Parameters:
  • n_steps (int) – Number of time steps per path.

  • n_paths (int) – Number of independent paths to simulate.

  • dt (float) – Length of each time step in years. Defaults to \(1/252\) (one trading day).

  • seed (Optional[int]) – Random seed for reproducibility.

standard()[source]

Generate standard Brownian motion paths.

Each path is constructed as cumulative Gaussian increments:

\[W_t = \sum_{i=1}^{t} \epsilon_i \sqrt{\Delta t}, \quad \epsilon_i \sim \mathcal{N}(0, 1)\]
Return type:

DataFrame

Returns:

DataFrame with columns step and path_0 path_N. Each path starts at \(W_0 = 0\).

geometric(mu=0.0, sigma=1.0, s0=1.0)[source]

Generate geometric Brownian motion paths.

Uses the exact closed-form solution:

\[S_t = S_0 \exp\!\left( \left(\mu - \tfrac{1}{2}\sigma^2\right) t + \sigma W_t \right)\]
Parameters:
  • mu (float) – Annualised drift \(\mu\). Defaults to 0.0.

  • sigma (float) – Annualised volatility \(\sigma\). Defaults to 1.0.

  • s0 (float) – Initial asset price \(S_0\). Defaults to 1.0.

Return type:

DataFrame

Returns:

DataFrame with columns step and path_0 path_N. Each path starts at \(S_0\).