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
Was this helpful?