Skip to content

Commit 66a5d2e

Browse files
committed
Fix data provider initialization for permutation tests
1 parent c3f0a87 commit 66a5d2e

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

investing_algorithm_framework/app/app.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,19 +1357,20 @@ def run_permutation_test(
13571357
self._data_providers = []
13581358

13591359
for combi in permutated_datasets:
1360-
dp_identifier = combi[0].data_provider_identifier
1360+
data_source = combi[0]
1361+
data_provider = PandasOHLCVDataProvider(
1362+
dataframe=combi[1],
1363+
symbol=data_source.symbol,
1364+
market=data_source.market,
1365+
window_size=data_source.window_size,
1366+
time_frame=data_source.time_frame,
1367+
data_provider_identifier=data_source.data_provider_identifier,
1368+
pandas=data_source.pandas,
1369+
)
13611370
# Add pandas ohlcv data provider to the data provider service
1362-
self.add_data_provider(
1363-
PandasOHLCVDataProvider(
1364-
dataframe=combi[1],
1365-
symbol=combi[0].symbol,
1366-
market=combi[0].market,
1367-
window_size=combi[0].window_size,
1368-
time_frame=combi[0].time_frame,
1369-
data_provider_identifier=dp_identifier,
1370-
pandas=combi[0].pandas,
1371-
),
1372-
priority=1
1371+
data_provider_service.register_data_provider(
1372+
data_source=data_source,
1373+
data_provider=data_provider
13731374
)
13741375

13751376
# Run the backtest with the permuted strategy
@@ -1379,7 +1380,7 @@ def run_permutation_test(
13791380
strategy=strategy,
13801381
snapshot_interval=SnapshotInterval.DAILY,
13811382
risk_free_rate=risk_free_rate,
1382-
show_data_initialization_progress=False
1383+
skip_data_sources_initialization=True
13831384
)
13841385

13851386
# Add the results of the permuted backtest to the main backtest

investing_algorithm_framework/app/reporting/charts/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .yearly_returns_barchart import get_yearly_returns_bar_chart
55
from .ohlcv_data_completeness import get_ohlcv_data_completeness_chart
66
from .entry_exist_signals import get_entry_and_exit_signals
7+
from .line_chart import create_line_scatter
78

89
__all__ = [
910
"get_equity_curve_with_drawdown_chart",
@@ -12,4 +13,5 @@
1213
"get_yearly_returns_bar_chart",
1314
"get_ohlcv_data_completeness_chart",
1415
"get_entry_and_exit_signals",
16+
"create_line_scatter",
1517
]

investing_algorithm_framework/services/data_providers/data_provider_service.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,28 @@ def _throw_no_data_provider_exception(self, params):
592592
f"No data provider found for the given parameters: {params}"
593593
)
594594

595+
def register_data_provider(
596+
self, data_source: DataSource, data_provider: DataProvider
597+
) -> DataProvider:
598+
"""
599+
Function to directly register a data provider for a given data source.
600+
601+
This method will not check if the data provider supports the
602+
data source. It will directly register the data provider in the index.
603+
604+
Args:
605+
data_source (DataSource): The data source to register the
606+
data provider for.
607+
data_provider (DataProvider): The data provider to register.
608+
609+
Returns:
610+
DataProvider: The registered data provider.
611+
"""
612+
data_provider = data_provider.copy(data_source)
613+
self.data_provider_index.data_providers_lookup[data_source] = \
614+
data_provider
615+
return data_provider
616+
595617
def add_data_provider(
596618
self, data_provider: DataProvider, priority: int = 3
597619
):

0 commit comments

Comments
 (0)