diff --git a/stratestic/strategies/moving_average/ma.py b/stratestic/strategies/moving_average/ma.py index 3ec32a3..9536de3 100644 --- a/stratestic/strategies/moving_average/ma.py +++ b/stratestic/strategies/moving_average/ma.py @@ -101,8 +101,8 @@ def calculate_positions(self, data): pd.DataFrame OHLCV data with additional 'side' column containing -1 for short, 1 for long. """ - data["side"] = np.where(data["SMA"] > data[self.close_col], 1, 0) - data["side"] = np.where(data["SMA"] < data[self.close_col], -1, data["side"]) + data["side"] = np.where(data["SMA"] < data[self.close_col], 1, 0) + data["side"] = np.where(data["SMA"] > data[self.close_col], -1, data["side"]) return data def get_signal(self, row=None): @@ -122,10 +122,9 @@ def get_signal(self, row=None): if row is None: row = self.data.iloc[-1] - if row["SMA"] > row[self.close_col]: + if row["SMA"] < row[self.close_col]: return 1 - elif row["SMA"] < row[self.close_col]: + elif row["SMA"] > row[self.close_col]: return -1 - - elif row["SMA"] == row[self.close_col]: + else: return 0 diff --git a/tests/backtesting/combining/test_strategy_combiner.py b/tests/backtesting/combining/test_strategy_combiner.py index cf1a67f..f637e6b 100644 --- a/tests/backtesting/combining/test_strategy_combiner.py +++ b/tests/backtesting/combining/test_strategy_combiner.py @@ -64,7 +64,7 @@ def test_strategy_combiner_input_validation( "strategies": [Momentum(2), MovingAverage(2)], "method": "Majority" }, - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 0.0, -1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 1.0], id='2_strategies-Majority' ), pytest.param( @@ -72,7 +72,7 @@ def test_strategy_combiner_input_validation( "strategies": [Momentum(2), MovingAverage(2)], "method": "Unanimous" }, - [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -1.0, 0.0, -1.0, 0.0], + [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, -1.0, 0.0, 1.0], id='2_strategies-Unanimous' ), pytest.param( @@ -80,7 +80,7 @@ def test_strategy_combiner_input_validation( "strategies": [Momentum(2), MovingAverage(2), BollingerBands(3, 1)], "method": "Majority" }, - [0.0, 0.0, 0.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0], + [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, -1.0, 0.0, -1.0, 0.0, 1.0], id='3_strategies-Majority' ), pytest.param( diff --git a/tests/backtesting/iterative/test_iterative.py b/tests/backtesting/iterative/test_iterative.py index b73ec1e..e7e7e76 100644 --- a/tests/backtesting/iterative/test_iterative.py +++ b/tests/backtesting/iterative/test_iterative.py @@ -178,7 +178,7 @@ def test_optimize_parameters(self, fixture, mocked_plotly_figure_show): "method": "Majority" }, [{"window": (2, 4)}, {"ma": (1, 3)}, {}], - [{'window': 3.0}, {'ma': 1.0}, {'ma': 3.0, 'sd': 1.0}], + [{'window': 3.0}, {'ma': 2.0}, {'ma': 3.0, 'sd': 1.0}], id='3_strategies-majority' ), pytest.param( diff --git a/tests/backtesting/iterative/test_iterative_with_margin.py b/tests/backtesting/iterative/test_iterative_with_margin.py index 7d845f2..2d9be13 100644 --- a/tests/backtesting/iterative/test_iterative_with_margin.py +++ b/tests/backtesting/iterative/test_iterative_with_margin.py @@ -124,9 +124,9 @@ def test_exceptions(self, leverage, symbol, second_leverage, exception, mocked_p @pytest.mark.parametrize( "margin_threshold, expected_result", [ - pytest.param(0.1, 18, id="margin_threshold=0.1"), - pytest.param(0.5, 45, id="margin_threshold=0.5"), - pytest.param(1, 55, id="margin_threshold=1") + pytest.param(0.1, 23, id="margin_threshold=0.1"), + pytest.param(0.5, 91, id="margin_threshold=0.5"), + pytest.param(1, 124, id="margin_threshold=1") ], ) def test_maximum_leverage( diff --git a/tests/backtesting/vectorized/out/moving_average_no_trading_costs.py b/tests/backtesting/vectorized/out/moving_average_no_trading_costs.py index 8ac5742..415c93a 100644 --- a/tests/backtesting/vectorized/out/moving_average_no_trading_costs.py +++ b/tests/backtesting/vectorized/out/moving_average_no_trading_costs.py @@ -4,7 +4,7 @@ expected_performance = 0.985296 expected_outperformance = -0.030969 -expected_optimization_results = ({"ma": 1.0}, 0.999557) +expected_optimization_results = ({"ma": 3.0}, 0.999557) expected_results = [ { @@ -60,7 +60,7 @@ "taker_buy_quote_volume": 4588065.23181743, "returns": 0.002946423556387118, "SMA": 55429.82000000001, - "side": -1, + "side": 1, "strategy_returns": 0.0, "strategy_returns_tc": 0.0, "accumulated_returns": 1.002950768528602, @@ -80,12 +80,12 @@ "taker_buy_quote_volume": 22979821.33981915, "returns": 0.006818529518377586, "SMA": 55565.7, - "side": -1, - "strategy_returns": -0.006818529518377586, - "strategy_returns_tc": -0.006818529518377586, + "side": 1, + "strategy_returns": 0.006818529518377586, + "strategy_returns_tc": 0.006818529518377586, "accumulated_returns": 1.0098127857970252, - "accumulated_strategy_returns": 0.993204663909056, - "accumulated_strategy_returns_tc": 0.993204663909056, + "accumulated_strategy_returns": 1.0068418286158654, + "accumulated_strategy_returns_tc": 1.0068418286158654, }, { "close_time": Timestamp("2023-09-01 14:39:59.999000+0000", tz="UTC"), @@ -100,12 +100,12 @@ "taker_buy_quote_volume": 20037884.70780964, "returns": 0.005926179097336494, "SMA": 55784.692500000005, - "side": -1, - "strategy_returns": -0.005926179097336494, - "strategy_returns_tc": -0.005926179097336494, + "side": 1, + "strategy_returns": 0.005926179097336494, + "strategy_returns_tc": 0.005926179097336494, "accumulated_returns": 1.0158148844101784, - "accumulated_strategy_returns": 0.9873361612642191, - "accumulated_strategy_returns_tc": 0.9873361612642191, + "accumulated_strategy_returns": 1.0128262685320526, + "accumulated_strategy_returns_tc": 1.0128262685320526, }, { "close_time": Timestamp("2023-09-01 14:44:59.999000+0000", tz="UTC"), @@ -120,12 +120,12 @@ "taker_buy_quote_volume": 10007121.78892216, "returns": -0.00170962942015996, "SMA": 55979.6575, - "side": -1, - "strategy_returns": 0.00170962942015996, - "strategy_returns_tc": 0.00170962942015996, + "side": 1, + "strategy_returns": -0.00170962942015996, + "strategy_returns_tc": -0.00170962942015996, "accumulated_returns": 1.0140797010812264, - "accumulated_strategy_returns": 0.9890255839449716, - "accumulated_strategy_returns_tc": 0.9890255839449716, + "accumulated_strategy_returns": 1.0110961902636069, + "accumulated_strategy_returns_tc": 1.0110961902636069, }, { "close_time": Timestamp("2023-09-01 14:49:59.999000+0000", tz="UTC"), @@ -140,12 +140,12 @@ "taker_buy_quote_volume": 8146012.47892439, "returns": 0.0003967606653441501, "SMA": 56139.335, - "side": -1, - "strategy_returns": -0.0003967606653441501, - "strategy_returns_tc": -0.0003967606653441501, + "side": 1, + "strategy_returns": 0.0003967606653441501, + "strategy_returns_tc": 0.0003967606653441501, "accumulated_returns": 1.0144821278464156, - "accumulated_strategy_returns": 0.9886332553316708, - "accumulated_strategy_returns_tc": 0.9886332553316708, + "accumulated_strategy_returns": 1.0114974330541975, + "accumulated_strategy_returns_tc": 1.0114974330541975, }, { "close_time": Timestamp("2023-09-01 14:54:59.999000+0000", tz="UTC"), @@ -160,12 +160,12 @@ "taker_buy_quote_volume": 7529521.30623853, "returns": -0.0008209293091875578, "SMA": 56192.465000000004, - "side": 1, - "strategy_returns": 0.0008209293091875578, - "strategy_returns_tc": 0.0008209293091875578, + "side": -1, + "strategy_returns": -0.0008209293091875578, + "strategy_returns_tc": -0.0008209293091875578, "accumulated_returns": 1.0136496514828948, - "accumulated_strategy_returns": 0.9894451865704871, - "accumulated_strategy_returns_tc": 0.9894451865704871, + "accumulated_strategy_returns": 1.0106674059086556, + "accumulated_strategy_returns_tc": 1.0106674059086556, }, { "close_time": Timestamp("2023-09-01 14:59:59.999000+0000", tz="UTC"), @@ -180,12 +180,12 @@ "taker_buy_quote_volume": 9447425.0774598, "returns": 0.0006607487960858385, "SMA": 56171.759999999995, - "side": -1, - "strategy_returns": 0.0006607487960858385, - "strategy_returns_tc": 0.0006607487960858385, + "side": 1, + "strategy_returns": -0.0006607487960858385, + "strategy_returns_tc": -0.0006607487960858385, "accumulated_returns": 1.014319640592638, - "accumulated_strategy_returns": 0.9900991773243144, - "accumulated_strategy_returns_tc": 0.9900991773243144, + "accumulated_strategy_returns": 1.0099998292114958, + "accumulated_strategy_returns_tc": 1.0099998292114958, }, { "close_time": Timestamp("2023-09-01 15:04:59.999000+0000", tz="UTC"), @@ -201,10 +201,10 @@ "returns": 0.0019165664875115606, "SMA": 56202.027500000004, "side": 0, - "strategy_returns": -0.0019165664875115606, - "strategy_returns_tc": -0.0019165664875115606, + "strategy_returns": 0.0019165664875115606, + "strategy_returns_tc": 0.0019165664875115606, "accumulated_returns": 1.016265515727322, - "accumulated_strategy_returns": 0.9882034036901499, - "accumulated_strategy_returns_tc": 0.9882034036901499, + "accumulated_strategy_returns": 1.0119374172015592, + "accumulated_strategy_returns_tc": 1.0119374172015592, }, ] diff --git a/tests/backtesting/vectorized/out_margin/moving_average_no_trading_costs.py b/tests/backtesting/vectorized/out_margin/moving_average_no_trading_costs.py index 3b89d19..56cac3b 100644 --- a/tests/backtesting/vectorized/out_margin/moving_average_no_trading_costs.py +++ b/tests/backtesting/vectorized/out_margin/moving_average_no_trading_costs.py @@ -27,7 +27,7 @@ "accumulated_returns": 1.0, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0, + "margin_ratios": 0.0, }, { "close_time": Timestamp("2023-09-01 14:19:59.999000+0000", tz="UTC"), @@ -48,7 +48,7 @@ "accumulated_returns": 1.0, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0, + "margin_ratios": 0.0, }, { "close_time": Timestamp("2023-09-01 14:29:59.999000+0000", tz="UTC"), @@ -63,13 +63,13 @@ "taker_buy_quote_volume": 4588065.23181743, "returns": 0.002946423556387118, "SMA": 55429.82000000001, - "side": -1, + "side": 1, "strategy_returns": 0.0, "strategy_returns_tc": 0.0, "accumulated_returns": 1.002950768528602, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0.004002528142238611, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 14:34:59.999000+0000", tz="UTC"), @@ -84,13 +84,13 @@ "taker_buy_quote_volume": 22979821.33981915, "returns": 0.006818529518377586, "SMA": 55565.7, - "side": -1, - "strategy_returns": -0.006818529518377586, - "strategy_returns_tc": -0.006818529518377586, + "side": 1, + "strategy_returns": 0.006818529518377586, + "strategy_returns_tc": 0.006818529518377586, "accumulated_returns": 1.0098127857970252, - "accumulated_strategy_returns": 0.993204663909056, - "accumulated_strategy_returns_tc": 0.993204663909056, - "margin_ratios": 0.004077834681277391, + "accumulated_strategy_returns": 1.0068418286158654, + "accumulated_strategy_returns_tc": 1.0068418286158654, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 14:39:59.999000+0000", tz="UTC"), @@ -105,13 +105,13 @@ "taker_buy_quote_volume": 20037884.70780964, "returns": 0.005926179097336494, "SMA": 55784.692500000005, - "side": -1, - "strategy_returns": -0.005926179097336494, - "strategy_returns_tc": -0.005926179097336494, + "side": 1, + "strategy_returns": 0.005926179097336494, + "strategy_returns_tc": 0.005926179097336494, "accumulated_returns": 1.0158148844101784, - "accumulated_strategy_returns": 0.9873361612642192, - "accumulated_strategy_returns_tc": 0.9873361612642192, - "margin_ratios": 0.004114014876268444, + "accumulated_strategy_returns": 1.0128262685320526, + "accumulated_strategy_returns_tc": 1.0128262685320526, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 14:44:59.999000+0000", tz="UTC"), @@ -126,13 +126,13 @@ "taker_buy_quote_volume": 10007121.78892216, "returns": -0.00170962942015996, "SMA": 55979.6575, - "side": -1, - "strategy_returns": 0.00170962942015996, - "strategy_returns_tc": 0.00170962942015996, + "side": 1, + "strategy_returns": -0.00170962942015996, + "strategy_returns_tc": -0.00170962942015996, "accumulated_returns": 1.0140797010812264, - "accumulated_strategy_returns": 0.9890255839449716, - "accumulated_strategy_returns_tc": 0.9890255839449716, - "margin_ratios": 0.004111708957739713, + "accumulated_strategy_returns": 1.0110961902636069, + "accumulated_strategy_returns_tc": 1.0110961902636069, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 14:49:59.999000+0000", tz="UTC"), @@ -147,13 +147,13 @@ "taker_buy_quote_volume": 8146012.47892439, "returns": 0.0003967606653441501, "SMA": 56139.335, - "side": -1, - "strategy_returns": -0.0003967606653441501, - "strategy_returns_tc": -0.0003967606653441501, + "side": 1, + "strategy_returns": 0.0003967606653441501, + "strategy_returns_tc": 0.0003967606653441501, "accumulated_returns": 1.0144821278464156, - "accumulated_strategy_returns": 0.9886332553316708, - "accumulated_strategy_returns_tc": 0.9886332553316708, - "margin_ratios": 0.004104691162420367, + "accumulated_strategy_returns": 1.0114974330541975, + "accumulated_strategy_returns_tc": 1.0114974330541975, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 14:54:59.999000+0000", tz="UTC"), @@ -168,13 +168,13 @@ "taker_buy_quote_volume": 7529521.30623853, "returns": -0.0008209293091875578, "SMA": 56192.465000000004, - "side": 1, - "strategy_returns": 0.0008209293091875578, - "strategy_returns_tc": 0.0008209293091875578, + "side": -1, + "strategy_returns": -0.0008209293091875578, + "strategy_returns_tc": -0.0008209293091875578, "accumulated_returns": 1.0136496514828948, - "accumulated_strategy_returns": 0.9894451865704871, - "accumulated_strategy_returns_tc": 0.9894451865704871, - "margin_ratios": 0.004, + "accumulated_strategy_returns": 1.0106674059086556, + "accumulated_strategy_returns_tc": 1.0106674059086556, + "margin_ratios": 0.0040078445355678375, }, { "close_time": Timestamp("2023-09-01 14:59:59.999000+0000", tz="UTC"), @@ -189,13 +189,13 @@ "taker_buy_quote_volume": 9447425.0774598, "returns": 0.0006607487960858385, "SMA": 56171.759999999995, - "side": -1, - "strategy_returns": 0.0006607487960858385, - "strategy_returns_tc": 0.0006607487960858385, + "side": 1, + "strategy_returns": -0.0006607487960858385, + "strategy_returns_tc": -0.0006607487960858385, "accumulated_returns": 1.014319640592638, - "accumulated_strategy_returns": 0.9900991773243144, - "accumulated_strategy_returns_tc": 0.9900991773243144, - "margin_ratios": 0.004004215661202739, + "accumulated_strategy_returns": 1.0099998292114958, + "accumulated_strategy_returns_tc": 1.0099998292114958, + "margin_ratios": 0.004, }, { "close_time": Timestamp("2023-09-01 15:04:59.999000+0000", tz="UTC"), @@ -211,12 +211,12 @@ "returns": 0.0019165664875115606, "SMA": 56202.027500000004, "side": 0, - "strategy_returns": -0.0019165664875115606, - "strategy_returns_tc": -0.0019165664875115606, + "strategy_returns": 0.0019165664875115606, + "strategy_returns_tc": 0.0019165664875115606, "accumulated_returns": 1.016265515727322, - "accumulated_strategy_returns": 0.9882034036901499, - "accumulated_strategy_returns_tc": 0.9882034036901499, - "margin_ratios": 0, + "accumulated_strategy_returns": 1.0119374172015592, + "accumulated_strategy_returns_tc": 1.0119374172015592, + "margin_ratios": 0.0, }, ], 10: [ @@ -239,7 +239,7 @@ "accumulated_returns": 1.0, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0, + "margin_ratios": 0.0, }, { "close_time": Timestamp("2023-09-01 14:19:59.999000+0000", tz="UTC"), @@ -260,7 +260,7 @@ "accumulated_returns": 1.0, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0, + "margin_ratios": 0.0, }, { "close_time": Timestamp("2023-09-01 14:29:59.999000+0000", tz="UTC"), @@ -275,13 +275,13 @@ "taker_buy_quote_volume": 4588065.23181743, "returns": 0.002946423556387118, "SMA": 55429.82000000001, - "side": -1, + "side": 1, "strategy_returns": 0.0, "strategy_returns_tc": 0.0, "accumulated_returns": 1.002950768528602, "accumulated_strategy_returns": 1.0, "accumulated_strategy_returns_tc": 1.0, - "margin_ratios": 0.04013944442538307, + "margin_ratios": 0.041091325886208535, }, { "close_time": Timestamp("2023-09-01 14:34:59.999000+0000", tz="UTC"), @@ -296,13 +296,13 @@ "taker_buy_quote_volume": 22979821.33981915, "returns": 0.006818529518377586, "SMA": 55565.7, - "side": -1, - "strategy_returns": -0.006818529518377586, - "strategy_returns_tc": -0.006818529518377586, + "side": 1, + "strategy_returns": 0.006818529518377586, + "strategy_returns_tc": 0.006818529518377586, "accumulated_returns": 1.0098127857970252, - "accumulated_strategy_returns": 0.993204663909056, - "accumulated_strategy_returns_tc": 0.993204663909056, - "margin_ratios": 0.04469173459549476, + "accumulated_strategy_returns": 1.0068418286158654, + "accumulated_strategy_returns_tc": 1.0068418286158654, + "margin_ratios": 0.040009788016342196, }, { "close_time": Timestamp("2023-09-01 14:39:59.999000+0000", tz="UTC"), @@ -317,13 +317,13 @@ "taker_buy_quote_volume": 20037884.70780964, "returns": 0.005926179097336494, "SMA": 55784.692500000005, - "side": -1, - "strategy_returns": -0.005926179097336494, - "strategy_returns_tc": -0.005926179097336494, + "side": 1, + "strategy_returns": 0.005926179097336494, + "strategy_returns_tc": 0.005926179097336494, "accumulated_returns": 1.0158148844101784, - "accumulated_strategy_returns": 0.9873361612642192, - "accumulated_strategy_returns_tc": 0.9873361612642192, - "margin_ratios": 0.04719350568838694, + "accumulated_strategy_returns": 1.0128262685320526, + "accumulated_strategy_returns_tc": 1.0128262685320526, + "margin_ratios": 0.03769466852671804, }, { "close_time": Timestamp("2023-09-01 14:44:59.999000+0000", tz="UTC"), @@ -338,13 +338,13 @@ "taker_buy_quote_volume": 10007121.78892216, "returns": -0.00170962942015996, "SMA": 55979.6575, - "side": -1, - "strategy_returns": 0.00170962942015996, - "strategy_returns_tc": 0.00170962942015996, + "side": 1, + "strategy_returns": -0.00170962942015996, + "strategy_returns_tc": -0.00170962942015996, "accumulated_returns": 1.0140797010812264, - "accumulated_strategy_returns": 0.9890255839449716, - "accumulated_strategy_returns_tc": 0.9890255839449716, - "margin_ratios": 0.047027107371075544, + "accumulated_strategy_returns": 1.0110961902636069, + "accumulated_strategy_returns_tc": 1.0110961902636069, + "margin_ratios": 0.036671743054818164, }, { "close_time": Timestamp("2023-09-01 14:49:59.999000+0000", tz="UTC"), @@ -359,13 +359,13 @@ "taker_buy_quote_volume": 8146012.47892439, "returns": 0.0003967606653441501, "SMA": 56139.335, - "side": -1, - "strategy_returns": -0.0003967606653441501, - "strategy_returns_tc": -0.0003967606653441501, + "side": 1, + "strategy_returns": 0.0003967606653441501, + "strategy_returns_tc": 0.0003967606653441501, "accumulated_returns": 1.0144821278464156, - "accumulated_strategy_returns": 0.9886332553316708, - "accumulated_strategy_returns_tc": 0.9886332553316708, - "margin_ratios": 0.04652671441712397, + "accumulated_strategy_returns": 1.0114974330541975, + "accumulated_strategy_returns_tc": 1.0114974330541975, + "margin_ratios": 0.03687232321904076, }, { "close_time": Timestamp("2023-09-01 14:54:59.999000+0000", tz="UTC"), @@ -380,13 +380,13 @@ "taker_buy_quote_volume": 7529521.30623853, "returns": -0.0008209293091875578, "SMA": 56192.465000000004, - "side": 1, - "strategy_returns": 0.0008209293091875578, - "strategy_returns_tc": 0.0008209293091875578, + "side": -1, + "strategy_returns": -0.0008209293091875578, + "strategy_returns_tc": -0.0008209293091875578, "accumulated_returns": 1.0136496514828948, - "accumulated_strategy_returns": 0.9894451865704871, - "accumulated_strategy_returns_tc": 0.9894451865704871, - "margin_ratios": 0.04023894662105466, + "accumulated_strategy_returns": 1.0106674059086556, + "accumulated_strategy_returns_tc": 1.0106674059086556, + "margin_ratios": 0.04043529094343017, }, { "close_time": Timestamp("2023-09-01 14:59:59.999000+0000", tz="UTC"), @@ -401,13 +401,13 @@ "taker_buy_quote_volume": 9447425.0774598, "returns": 0.0006607487960858385, "SMA": 56171.759999999995, - "side": -1, - "strategy_returns": 0.0006607487960858385, - "strategy_returns_tc": 0.0006607487960858385, + "side": 1, + "strategy_returns": -0.0006607487960858385, + "strategy_returns_tc": -0.0006607487960858385, "accumulated_returns": 1.014319640592638, - "accumulated_strategy_returns": 0.9900991773243144, - "accumulated_strategy_returns_tc": 0.9900991773243144, - "margin_ratios": 0.040232966236214605, + "accumulated_strategy_returns": 1.0099998292114958, + "accumulated_strategy_returns_tc": 1.0099998292114958, + "margin_ratios": 0.04048800385201632, }, { "close_time": Timestamp("2023-09-01 15:04:59.999000+0000", tz="UTC"), @@ -423,12 +423,12 @@ "returns": 0.0019165664875115606, "SMA": 56202.027500000004, "side": 0, - "strategy_returns": -0.0019165664875115606, - "strategy_returns_tc": -0.0019165664875115606, + "strategy_returns": 0.0019165664875115606, + "strategy_returns_tc": 0.0019165664875115606, "accumulated_returns": 1.016265515727322, - "accumulated_strategy_returns": 0.9882034036901499, - "accumulated_strategy_returns_tc": 0.9882034036901499, - "margin_ratios": 0, + "accumulated_strategy_returns": 1.0119374172015592, + "accumulated_strategy_returns_tc": 1.0119374172015592, + "margin_ratios": 0.0, }, - ], + ] } diff --git a/tests/backtesting/vectorized/test_vectorized.py b/tests/backtesting/vectorized/test_vectorized.py index 0c7edd1..205edc0 100644 --- a/tests/backtesting/vectorized/test_vectorized.py +++ b/tests/backtesting/vectorized/test_vectorized.py @@ -141,7 +141,7 @@ def test_optimize_parameters(self, fixture, mocked_plotly_figure_show): "method": "Majority", }, [{"window": (2, 4)}, {"ma": (1, 3)}, {}], - [{"window": 3.0}, {"ma": 1.0}, {"ma": 3.0, "sd": 1.0}], + [{"window": 3.0}, {"ma": 2.0}, {"ma": 3.0, "sd": 1.0}], id="3_strategies-majority-optimization", ), pytest.param( diff --git a/tests/backtesting/vectorized/test_vectorized_with_margin.py b/tests/backtesting/vectorized/test_vectorized_with_margin.py index 49df484..841d252 100644 --- a/tests/backtesting/vectorized/test_vectorized_with_margin.py +++ b/tests/backtesting/vectorized/test_vectorized_with_margin.py @@ -162,9 +162,9 @@ def test_results_equal_to_iterative( @pytest.mark.parametrize( "margin_threshold, expected_result", [ - pytest.param(0.1, 18, id="margin_threshold=0.1"), - pytest.param(0.5, 45, id="margin_threshold=0.5"), - pytest.param(1, 55, id="margin_threshold=1") + pytest.param(0.1, 23, id="margin_threshold=0.1"), + pytest.param(0.5, 91, id="margin_threshold=0.5"), + pytest.param(1, 124, id="margin_threshold=1") ], ) def test_maximum_leverage( diff --git a/tests/strategies/out/moving_average_ema.py b/tests/strategies/out/moving_average_ema.py index b5b7586..8643332 100644 --- a/tests/strategies/out/moving_average_ema.py +++ b/tests/strategies/out/moving_average_ema.py @@ -402,4 +402,4 @@ ] ) -expected_signal = -1 +expected_signal = 1 diff --git a/tests/strategies/out/moving_average_sma.py b/tests/strategies/out/moving_average_sma.py index cdd3afd..62a940f 100644 --- a/tests/strategies/out/moving_average_sma.py +++ b/tests/strategies/out/moving_average_sma.py @@ -403,4 +403,4 @@ ] ) -expected_signal = -1 +expected_signal = 1