Skip to content

Commit 247e1f4

Browse files
committed
Fix permutation test dataset reference
1 parent 4d05d5d commit 247e1f4

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

investing_algorithm_framework/app/app.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,7 +1332,12 @@ def run_permutation_test(
13321332
end_date=backtest_date_range.end_date
13331333
)
13341334
original_data_combinations.append((data_source, data))
1335-
original_datasets_ordered_by_symbol[data_source.symbol] = data
1335+
original_datasets_ordered_by_symbol[data_source.symbol] = \
1336+
data_provider_service.get_data(
1337+
data_source=data_source,
1338+
start_date=data_provider._start_date_data_source,
1339+
end_date=backtest_date_range.end_date
1340+
)
13361341

13371342
for _ in tqdm(
13381343
range(number_of_permutations),
@@ -1394,7 +1399,10 @@ def run_permutation_test(
13941399
real_metrics=backtest_metrics,
13951400
permutated_metrics=permuted_metrics,
13961401
ohlcv_permutated_datasets=permuted_datasets_ordered_by_symbol,
1397-
ohlcv_original_datasets=original_datasets_ordered_by_symbol
1402+
ohlcv_original_datasets=original_datasets_ordered_by_symbol,
1403+
backtest_start_date=backtest_date_range.start_date,
1404+
backtest_end_date=backtest_date_range.end_date,
1405+
backtest_date_range_name=backtest_date_range.name
13981406
)
13991407
return permutation_test_metrics
14001408

investing_algorithm_framework/domain/backtesting/backtest.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,27 @@ def get_backtest_run(
9191
return run
9292
return None
9393

94+
def get_backtest_permutation_test(
95+
self, date_range: BacktestDateRange
96+
) -> Union[BacktestPermutationTest, None]:
97+
"""
98+
Retrieve a specific BacktestPermutationTest based on
99+
the provided date range.
100+
101+
Args:
102+
date_range (BacktestDateRange): The date range to search for.
103+
104+
Returns:
105+
Union[BacktestPermutationTest, None]: The
106+
matching BacktestPermutationTest if found,
107+
otherwise None.
108+
"""
109+
for perm_test in self.backtest_permutation_tests:
110+
if (perm_test.backtest_start_date == date_range.start_date and
111+
perm_test.backtest_end_date == date_range.end_date):
112+
return perm_test
113+
return None
114+
94115
def get_all_backtest_metrics(self) -> List[BacktestMetrics]:
95116
"""
96117
Retrieve all BacktestMetrics from the backtest runs.
@@ -382,3 +403,15 @@ def get_backtest_date_ranges(self):
382403
)
383404
for run in self.backtest_runs
384405
]
406+
407+
def add_permutation_test(
408+
self, permutation_test: BacktestPermutationTest
409+
) -> None:
410+
"""
411+
Add a permutation test to the backtest.
412+
413+
Args:
414+
permutation_test (BacktestPermutationTest): The permutation test
415+
to add.
416+
"""
417+
self.backtest_permutation_tests.append(permutation_test)

investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ class BacktestPermutationTest:
4242
field(default_factory=dict)
4343
ohlcv_original_datasets: Dict[str, pd.DataFrame] = \
4444
field(default_factory=dict)
45+
backtest_start_date: pd.Timestamp = None
46+
backtest_end_date: pd.Timestamp = None
47+
backtest_date_range_name: str = None
4548

4649
def compute_p_values(
4750
self, metrics: List[str] = None, one_sided: bool = True

0 commit comments

Comments
 (0)