From 6cfee7aa4c9f1c13efdf2b9dcb54d1ae2106d73d Mon Sep 17 00:00:00 2001 From: David Brazda Date: Thu, 10 Oct 2024 10:23:05 +0200 Subject: [PATCH] update --- README.md | 18 +++++++++++++++--- setup.py | 6 +++--- tests/vbt-anchored.py | 3 +++ ttools/__init__.py | 1 + {utils => ttools}/vbtutils.py | 22 +++++++++++----------- utils/__init__.py | 0 6 files changed, 33 insertions(+), 17 deletions(-) create mode 100644 ttools/__init__.py rename {utils => ttools}/vbtutils.py (69%) delete mode 100644 utils/__init__.py diff --git a/README.md b/README.md index 2d376da..7337d4c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,19 @@ # ttools A Python library for tools, utilities, and helpers for my trading research workflow. -# Modules +Modules: +# utils +## vbtutils + +Contains helpers for vbtpro + +`AnchoredIndicator` - allows runing any vbt indicator in anchored mode (reset by Day, Hour etc.) + +Example usage: +```python +from ttools import AnchoredIndicator + +mom_standard = vbt.indicator("talib:MOM").run(t1data.data["BAC"].close) +mom_anchored_d = AnchoredIndicator("talib:MOM", anchor='D').run(t1data.data["BAC"].close) +``` -- `utils.vbtutils` - contains helpers for vbtpro - - `AnchoredIndicator` - allows runing any vbt indicator in anchored mode (reset by Day, Hour etc.) diff --git a/setup.py b/setup.py index 915bd78..c21d685 100644 --- a/setup.py +++ b/setup.py @@ -2,10 +2,10 @@ from setuptools import setup, find_packages setup( name='ttools', - version='0.1.0', - packages=find_packages(), + version='0.1.1', + packages=['ttools'], install_requires=[ 'vectorbtpro', # list your dependencies here ], -) \ No newline at end of file +) #find_packages() \ No newline at end of file diff --git a/tests/vbt-anchored.py b/tests/vbt-anchored.py index e69de29..32ce7e5 100644 --- a/tests/vbt-anchored.py +++ b/tests/vbt-anchored.py @@ -0,0 +1,3 @@ +import ttools + +#ttools.AnchoredIndicator("talib:MOM") \ No newline at end of file diff --git a/ttools/__init__.py b/ttools/__init__.py new file mode 100644 index 0000000..f9b9fe8 --- /dev/null +++ b/ttools/__init__.py @@ -0,0 +1 @@ +from .vbtutils import AnchoredIndicator \ No newline at end of file diff --git a/utils/vbtutils.py b/ttools/vbtutils.py similarity index 69% rename from utils/vbtutils.py rename to ttools/vbtutils.py index 8aab64f..d14bdf8 100644 --- a/utils/vbtutils.py +++ b/ttools/vbtutils.py @@ -5,39 +5,39 @@ class AnchoredIndicator: """ Allows to run any VBT indicator in anchored mode (reset per Day, Hour, or Minute). """ - def __init__(self, indicator_name: str, split_by='D'): + def __init__(self, indicator_name: str, anchor='D'): """ Initialize with the name of the indicator (e.g., "talib:MOM"). Parameters: - indicator_name: str, the name of the vectorbt indicator. - - split_by: str, 'D' for day, 'H' for hour, 'T' for minute (default is 'D'). + - anchor: str, 'D' for day, 'H' for hour, 'T' for minute (default is 'D'). """ self.indicator_name = indicator_name self.indicator = vbt.indicator(indicator_name) - self.split_by = split_by + self.anchor = anchor - def run(self, data, split_by=None, *args, **kwargs): + def run(self, data, anchor=None, *args, **kwargs): """ Run the indicator on a Series or DataFrame by splitting it by day, hour, or minute, applying the indicator to each group, and concatenating the results. Parameters: - data: pd.Series or pd.DataFrame, the input data series or dataframe (e.g., close prices). - - split_by: str, 'D' for day, 'H' for hour, 'T' for minute (default is 'D'). + - anchor: str, 'D' for day, 'H' for hour, 'T' for minute (default is 'D'). - *args, **kwargs: Arguments and keyword arguments passed to the indicator. """ - if split_by is None: - split_by = self.split_by + if anchor is None: + anchor = self.anchor # Group by the specified frequency - if split_by == 'D': + if anchor == 'D': grouped_data = data.groupby(data.index.date) - elif split_by in ['H', 'T']: - grouped_data = data.groupby(pd.Grouper(freq=split_by)) + elif anchor in ['H', 'T']: + grouped_data = data.groupby(pd.Grouper(freq=anchor)) else: - raise ValueError("Invalid split_by value. Use 'D' (day), 'H' (hour), or 'T' (minute).") + raise ValueError("Invalid anchor value. Use 'D' (day), 'H' (hour), or 'T' (minute).") # Run the indicator function for each group and concatenate the results results = [] diff --git a/utils/__init__.py b/utils/__init__.py deleted file mode 100644 index e69de29..0000000