Skip to content

Commit 1c214f2

Browse files
Move dynamic creation of looping parameters from config.py to the corresponding tasks.
1 parent 64fb854 commit 1c214f2

File tree

4 files changed

+51
-18
lines changed

4 files changed

+51
-18
lines changed

src/backtest_bay/backtest/task_backtest.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""This script deploys a task to generate trading signals and backtest them."""
22

3+
import itertools
4+
35
import pandas as pd
46
import pytask
57

@@ -8,15 +10,34 @@
810
merge_data_with_backtest_portfolio,
911
)
1012
from backtest_bay.backtest.generate_signals import generate_signals
11-
from backtest_bay.config import BLD, INITIAL_CASH, PARAMS, SRC, TAC, TRADE_PCT
13+
from backtest_bay.config import (
14+
BLD,
15+
END_DATES,
16+
INITIAL_CASH,
17+
INTERVALS,
18+
SRC,
19+
START_DATES,
20+
STOCKS,
21+
STRATEGIES,
22+
TAC,
23+
TRADE_PCT,
24+
)
1225

1326
scripts = [
1427
SRC / "config.py",
1528
SRC / "backtest" / "generate_signals.py",
1629
SRC / "backtest" / "backtest_signals.py",
1730
]
1831

19-
for row in PARAMS.itertuples(index=False):
32+
params_to_backtest = pd.DataFrame(
33+
list(
34+
itertools.product(STOCKS, [START_DATES], [END_DATES], [INTERVALS], STRATEGIES)
35+
),
36+
columns=["stock", "start_date", "end_date", "interval", "strategy"],
37+
)
38+
39+
40+
for row in params_to_backtest.itertuples(index=False):
2041
id_backtest = (
2142
f"{row.stock}_{row.start_date}_{row.end_date}_" f"{row.interval}_{row.strategy}"
2243
)

src/backtest_bay/config.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
"""All the general configuration of the project."""
22

3-
import itertools
43
from pathlib import Path
54

6-
import pandas as pd
7-
85
SRC = Path(__file__).parent.resolve()
96
ROOT = SRC.joinpath("..", "..").resolve()
107

@@ -23,11 +20,3 @@
2320
INITIAL_CASH = 1000000
2421
TAC = 0.005
2522
TRADE_PCT = 0.05
26-
27-
# Define PARAMS using input data
28-
PARAMS = pd.DataFrame(
29-
list(
30-
itertools.product(STOCKS, [START_DATES], [END_DATES], [INTERVALS], STRATEGIES)
31-
),
32-
columns=["stock", "start_date", "end_date", "interval", "strategy"],
33-
)

src/backtest_bay/data/task_download_data.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
"""This script deploys a task to download data."""
22

3+
import itertools
4+
5+
import pandas as pd
36
import pytask
47

5-
from backtest_bay.config import BLD, PARAMS, SRC
8+
from backtest_bay.config import BLD, END_DATES, INTERVALS, SRC, START_DATES, STOCKS
69
from backtest_bay.data.download_data import download_data
710

811
scripts = [SRC / "config.py", SRC / "data" / "download_data.py"]
912

10-
data_to_download = PARAMS.drop_duplicates(
11-
subset=["stock", "start_date", "end_date", "interval"]
13+
data_to_download = pd.DataFrame(
14+
list(itertools.product(STOCKS, [START_DATES], [END_DATES], [INTERVALS])),
15+
columns=["stock", "start_date", "end_date", "interval"],
1216
)
1317

1418
for row in data_to_download.itertuples(index=False):

src/backtest_bay/plot/task_plot.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
"""This script deploys a task to plot the backtested portfolio and trading signals."""
22

3+
import itertools
4+
35
import pandas as pd
46
import pytask
57

6-
from backtest_bay.config import BLD, INITIAL_CASH, PARAMS, SRC, TAC
8+
from backtest_bay.config import (
9+
BLD,
10+
END_DATES,
11+
INITIAL_CASH,
12+
INTERVALS,
13+
SRC,
14+
START_DATES,
15+
STOCKS,
16+
STRATEGIES,
17+
TAC,
18+
)
719
from backtest_bay.plot.plot_portfolio import plot_portfolio
820
from backtest_bay.plot.plot_signals import plot_signals
921

@@ -13,7 +25,14 @@
1325
SRC / "plot" / "plot_portfolio.py",
1426
]
1527

16-
for row in PARAMS.itertuples(index=False):
28+
params_to_plot = pd.DataFrame(
29+
list(
30+
itertools.product(STOCKS, [START_DATES], [END_DATES], [INTERVALS], STRATEGIES)
31+
),
32+
columns=["stock", "start_date", "end_date", "interval", "strategy"],
33+
)
34+
35+
for row in params_to_plot.itertuples(index=False):
1736
id_backtest = (
1837
f"{row.stock}_{row.start_date}_{row.end_date}_{row.interval}_{row.strategy}"
1938
)

0 commit comments

Comments
 (0)