Quant.Strategy.Utils (quant v0.1.0-alpha.1)

Utility functions for strategy operations.

This module provides common utility functions used across different strategy types, including DataFrame validation, column management, and data preprocessing.

Summary

Functions

Add timing information for strategy signals.

Calculate position sizing based on strategy configuration and risk parameters.

Remove intermediate indicator columns that are not needed in final output.

Validate that a DataFrame has the required structure for strategy execution.

Functions

add_timing_analysis(dataframe)

@spec add_timing_analysis(Explorer.DataFrame.t()) :: Explorer.DataFrame.t()

Add timing information for strategy signals.

Adds columns for signal timing analysis:

  • signal_duration: How long each signal lasts
  • time_since_last_signal: Time elapsed since previous signal
  • signal_sequence: Sequential numbering of signals

calculate_position_sizes(dataframe, strategy, opts \\ [])

@spec calculate_position_sizes(Explorer.DataFrame.t(), map(), keyword()) ::
  Explorer.DataFrame.t()

Calculate position sizing based on strategy configuration and risk parameters.

Parameters

  • dataframe - DataFrame with price data
  • strategy - Strategy configuration
  • opts - Position sizing options

Options

  • :method - Position sizing method (:fixed, :percent_capital, :volatility)
  • :capital - Total available capital
  • :risk_per_trade - Risk percentage per trade
  • :atr_multiplier - ATR multiplier for volatility-based sizing

Returns

DataFrame with position sizes added.

cleanup_intermediate_columns(dataframe, strategy)

@spec cleanup_intermediate_columns(Explorer.DataFrame.t(), map()) ::
  Explorer.DataFrame.t()

Remove intermediate indicator columns that are not needed in final output.

Parameters

  • dataframe - DataFrame with intermediate columns
  • strategy - Strategy configuration

Returns

DataFrame with only essential columns retained.

validate_dataframe(dataframe, strategy, opts \\ [])

@spec validate_dataframe(Explorer.DataFrame.t(), map(), keyword()) ::
  {:ok, Explorer.DataFrame.t()} | {:error, term()}

Validate that a DataFrame has the required structure for strategy execution.

Parameters

  • dataframe - DataFrame to validate
  • strategy - Strategy configuration
  • opts - Additional validation options

Returns

{:ok, dataframe} if valid, {:error, reason} if invalid.

Validations Performed

  • Check for required columns
  • Validate minimum number of rows
  • Check for proper data types
  • Ensure datetime index if required