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
@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 laststime_since_last_signal: Time elapsed since previous signalsignal_sequence: Sequential numbering of signals
@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 datastrategy- Strategy configurationopts- 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.
@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 columnsstrategy- Strategy configuration
Returns
DataFrame with only essential columns retained.
@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 validatestrategy- Strategy configurationopts- 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