mirror of
https://github.com/webclinic017/drift.git
synced 2026-08-17 12:58:20 +00:00
feat(Data): added daily_glassnode DataCollection (#99)
This commit is contained in:
@@ -31,10 +31,3 @@ presets = __presets | dict(
|
||||
level_2 = __presets["mom"] + __presets["vol"] + __presets["roc"] + __presets["rsi"] + __presets["stod"] + __presets["stok"],
|
||||
)
|
||||
|
||||
def preprocess_feature_extractors_config(data_dict: dict) -> dict:
|
||||
data_dict = data_dict.copy()
|
||||
keys = ['own_features', 'other_features']
|
||||
for key in keys:
|
||||
preset_names = data_dict[key]
|
||||
data_dict[key] = flatten([presets[preset_name] for preset_name in preset_names])
|
||||
return data_dict
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
## Utility functions
|
||||
|
||||
def __get_close_low_high(df: pd.DataFrame) -> tuple[pd.Series, pd.Series, pd.Series]:
|
||||
close = df['close']
|
||||
low = df['low']
|
||||
high = df['high']
|
||||
return close, low, high
|
||||
|
||||
## Feature extractors
|
||||
from feature_extractors.utils import get_close_low_high
|
||||
|
||||
def feature_debug_future_lookahead(df: pd.DataFrame, period: int, is_log_return: bool) -> pd.Series:
|
||||
return df['returns'].shift(-period)
|
||||
@@ -37,7 +28,7 @@ def feature_mom(df: pd.DataFrame, period: int, is_log_return: bool) -> pd.Series
|
||||
return df['close'].pct_change(period)
|
||||
|
||||
def feature_STOK(df: pd.DataFrame, period: int, is_log_return: bool) -> pd.Series:
|
||||
close, low, high = __get_close_low_high(df)
|
||||
close, low, high = get_close_low_high(df)
|
||||
|
||||
STOK = ((close - low.rolling(period).min()) / (high.rolling(period).max() - low.rolling(period).min())) * 100
|
||||
return STOK
|
||||
|
||||
@@ -3,8 +3,7 @@ import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
def feature_fractional_differentiation(df: pd.DataFrame, period: int, is_log_return: bool) -> pd.Series:
|
||||
feature_selector = FracdiffStat(window = period)
|
||||
frac_diff = FracdiffStat(window = period)
|
||||
input_series = df["close"].to_numpy().reshape(-1, 1)
|
||||
feature_selector.fit(input_series)
|
||||
result = feature_selector.transform(input_series)
|
||||
return pd.Series(np.log(result.squeeze()), index = df.index)
|
||||
result = frac_diff.fit_transform(input_series)
|
||||
return pd.Series(result.squeeze(), index = df.index)
|
||||
@@ -0,0 +1,8 @@
|
||||
import pandas_ta as ta
|
||||
import pandas as pd
|
||||
from feature_extractors.utils import get_close_low_high
|
||||
|
||||
def feature_EBSW(df: pd.DataFrame, period: int, is_log_return: bool) -> pd.Series:
|
||||
close, low, high = get_close_low_high(df)
|
||||
|
||||
return ta.ebsw(close, period)
|
||||
@@ -0,0 +1,7 @@
|
||||
import pandas as pd
|
||||
|
||||
def get_close_low_high(df: pd.DataFrame) -> tuple[pd.Series, pd.Series, pd.Series]:
|
||||
close = df['close']
|
||||
low = df['low']
|
||||
high = df['high']
|
||||
return close, low, high
|
||||
Reference in New Issue
Block a user