def forward(self, tensor_price, tensor_volume): rocp = tsf.pct_change(tensor_price) tensor_volume = torch.clamp(tensor_volume, min=1) v_pct_change = tsf.pct_change(tensor_volume) v_pct_change_atan = torch.atan(v_pct_change) pv = rocp * v_pct_change_atan return pv
def forward(self, tensor): """defalt input is close""" returns = tsf.pct_change(tensor, period=1) sharp_ratio = tsf.rolling_mean_(returns, window=self._window) / tsf.rolling_std( returns, window=self._window) return tsf.shift(sharp_ratio, window=self._lag_window).squeeze(-1)
def forward(self, tensor): tensor_rolling_mean = tsf.rolling_mean_( tensor, window=self.timeperiod).squeeze(-1) volume_pct_change = tsf.pct_change(tensor_rolling_mean) return torch.atan(volume_pct_change)
def forward(self, tensor): tensor_rolling_mean = tsf.rolling_mean_( tensor, window=self.timeperiod).squeeze(-1) return tsf.pct_change(tensor_rolling_mean)
def forward(self, tensor): tensor = torch.clamp(tensor, min=1) pct_change = tsf.pct_change(tensor) return torch.atan(pct_change)
def forward(self, open, close): diff = close - open output = diff.div(open) output_ts = tsf.pct_change(output, period=self._window) return output_ts
def forward(self, open, close): shift_tensor = tsf.shift(close, window=1) diff = open - shift_tensor output = diff.div(shift_tensor) output_ts = tsf.pct_change(output, period=self._window) return output_ts
def forward(self, tensor): return tsf.pct_change(tensor)
def forward(self, tensor): rsi_ts = talib_func.rsi(tensor, timeperiod=self.timeperiod).squeeze(-1) rsi_pct_change = tsf.pct_change(rsi_ts + 100) return rsi_pct_change
def forward(self, tensor): return tsf.pct_change(tensor, period=self._window)
import featurizer.functors.talib as talib import featurizer.functions.talib_functions as talib_func import torch import numpy as np import pandas as pd # fake data # type=tensor, shape=50x10 open = torch.tensor(np.random.uniform(low=20, high=40, size=(50, 10))) close = torch.tensor(np.random.uniform(low=20, high=40, size=(50, 10))) high = torch.tensor(np.random.uniform(low=30, high=50, size=(50, 10))) low = torch.tensor(np.random.uniform(low=10, high=30, size=(50, 10))) volume = torch.tensor(np.random.uniform(low=10000, high=50000, size=(50, 10))) total_turnover = torch.tensor( np.random.uniform(low=200000, high=2000000, size=(50, 10))) returns = tsf.pct_change(close, 1) # ROCP func_ROCP = talib.ROCP(timeperiod=1) feature_ROCP = func_ROCP(close) # VolumeROCP func_VROCP = talib.VolumeROCP() feature_VROCP = func_ROCP(volume) # MAROCP func_MAROCP = talib.MAROCP(timeperiod=5) feature_MAROCP = func_MAROCP(close) # MARelative func_MA = talib.MARelative(timeperiod=5)
def forward(self, tensor): returns = tsf.pct_change(tensor, period=self._window) return tsf.shift(returns, window=-self._window)
def forward(self, tensor): """input is close""" tensor = tsf.pct_change(tensor, period=self._window) return tsf.shift(tensor, window=self._lag_window)