Extract Features

The feature extractor module generates features that can be categorized into several types based on the nature of the calculations.

Tutorials are the best documentation — Extract Features Tutorial

Feature Extraction Module

This module provides powerful feature extraction capabilities for time series data, particularly focused on financial and accounting metrics. It leverages the sovai library for data retrieval and a custom feature_extractor function for generating a wide range of statistical and time series features.

Feature Categories

The feature_extractor generates features that fall into several categories:

  • Statistical Features

  • Entropy and Complexity Features

  • Frequency and Streak Features

  • Energy and Magnitude Features

  • Distributional Features

  • Position Features

Usage Examples

import sovai as sov

# Authenticate and load data
sov.token_auth(token="your_token_here")
df_mega = sov.data("accounting/weekly").select_stocks("mega").date_range("2018-01-01")

1. Basic Usage with Default Parameters

# Extract features with default parameters
result = df_mega.extract_features(every="all")
print(result.head())

2. Weekly Rolling Features

# Extract features with a 12-week lookback, calculated weekly
result = df_mega.extract_features(lookback=12, every='week')
print(result.head())

3. Custom Feature List

# Extract specific features with custom parameters
custom_features = ["operating_working_capital", "cash_short_term"]
result = df_mega.extract_features(lookback=12, every='week', features=custom_features)
print(result.head())

4. Monthly Rolling Features

# Use monthly rolling features with a 2-month lookback
result = df_mega.extract_features(lookback='2mo', every='month')
print(result.head())

Advanced Usage

The underlying feature_extractor function offers more granular control over the feature extraction process. It can be used directly for more advanced use cases:

import polars as pl
from feature_extractor import feature_extractor

# Assuming df is your input DataFrame
result = feature_extractor(df, entity_col='ticker', date_col='date', 
                           lookback='1mo', every='week', verbose=True)
print(result.head())

This advanced usage allows for more customization, including specifying entity and date columns, adjusting lookback periods, and enabling verbose output for debugging.

Statistical Features

  • Mean and Variance Related:

    • mean_abs_change

    • variation_coefficient

    • mean_change

    • mean_second_derivative_central

Entropy and Complexity Features

  • Entropy:

    • binned_entropy

  • Complexity:

    • lempel_ziv_complexity

Frequency and Streak Features

  • Frequency:

    • number_crossings

    • number_peaks

  • Streak:

    • longest_streak_above_mean

    • longest_losing_streak

    • longest_winning_streak

Energy and Magnitude Features

  • Energy:

    • absolute_energy

  • Magnitude:

    • absolute_maximum

    • absolute_sum_of_changes

    • max_abs_change

Statistical and Distributional Features

  • Statistical:

    • root_mean_square

    • ratio_beyond_r_sigma

  • Distributional:

    • benford_correlation

    • percent_reoccurring_points

    • percent_reoccurring_values

Position Features

  • Positions:

    • first_location_of_maximum

    • first_location_of_minimum

    • last_location_of_maximum

    • last_location_of_minimum

These categories help organize the wide range of features generated, which capture different aspects of the time series data, making them useful for various analytical and predictive tasks.

Last updated