Files
OpenBB/tests/openbb_terminal/stocks/backtesting/test_bt_model.py
James Maslek a3419d0844 deps update (#3800) (#3801)
* deps update (#3800)

* statsmodels

* delete very old files

* Lots o tests

* etf tests

* OPtions tests

* Pin psutil for m1 build

* stocks rewrite expected

* pyproject comments + portfolio test

* disc/ark view test

* dcf coe

* dcf view

* stocks screener

* dcf model

* etf controller

* insider views

* dps view

* ca menu

* stocks/qa

* skip bt tests

* get rid of pymongo from .spec

* One last skip

* Allow finviz to be 1.4.4

* oops forgot to get rid of my debugging

* remove bson from spec because no more pymongo

* make requirments txt and requirements be finviz 1 4 4

* try hidden import

* Gray sweatpants

* Add files to spec

* Revert "Allow finviz to be 1.4.4"

This reverts commit 9581993b4f.

* Revert "Pin psutil for m1 build"

This reverts commit 07fa2d1be0.

* Revert "statsmodels"

This reverts commit 2e431b5d34.

* Revert "deps update (#3800)"

This reverts commit d9fb8a288c.

* Re-solve dependencies

Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
2022-12-20 23:45:29 +01:00

123 lines
3.3 KiB
Python

# IMPORTATION STANDARD
from datetime import datetime
# IMPORTATION THIRDPARTY
import pytest
# IMPORTATION INTERNAL
import bt
from openbb_terminal.stocks import stocks_helper
from openbb_terminal.stocks.backtesting import bt_model
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_headers": [("User-Agent", None)],
"filter_query_parameters": [
("period1", "1598220000"),
("period2", "1635980400"),
],
}
@pytest.mark.vcr
def test_get_data(recorder):
df_stock = bt_model.get_data(symbol="TSLA", start_date="2021-12-05")
recorder.capture(df_stock)
@pytest.mark.vcr
def test_buy_and_hold(mocker):
yf_download = stocks_helper.yf.download
def mock_yf_download(*args, **kwargs):
kwargs["threads"] = False
return yf_download(*args, **kwargs)
mocker.patch("yfinance.download", side_effect=mock_yf_download)
back_test_instance = bt_model.buy_and_hold(
symbol="TSLA",
start_date="2021-12-05",
name="MOCK_NAME",
)
assert isinstance(back_test_instance, bt.Backtest)
@pytest.mark.skip
def test_ema_strategy(mocker):
yf_download = stocks_helper.yf.download
def mock_yf_download(*args, **kwargs):
kwargs["threads"] = False
return yf_download(*args, **kwargs)
mocker.patch("yfinance.download", side_effect=mock_yf_download)
ticker = "PM"
start = datetime.strptime("2020-12-01", "%Y-%m-%d")
end = datetime.strptime("2020-12-02", "%Y-%m-%d")
df_stock = stocks_helper.load_ticker(ticker=ticker, start_date=start, end_date=end)
back_test_instance = bt_model.ema_strategy(
symbol=ticker,
data=df_stock,
ema_length=2,
spy_bt=True,
no_bench=False,
)
assert isinstance(back_test_instance, bt.backtest.Result)
@pytest.mark.skip
def test_emacross_strategy(mocker):
yf_download = stocks_helper.yf.download
def mock_yf_download(*args, **kwargs):
kwargs["threads"] = False
return yf_download(*args, **kwargs)
mocker.patch("yfinance.download", side_effect=mock_yf_download)
ticker = "PM"
start = datetime.strptime("2020-12-01", "%Y-%m-%d")
end = datetime.strptime("2020-12-02", "%Y-%m-%d")
df_stock = stocks_helper.load_ticker(ticker=ticker, start_date=start, end_date=end)
back_test_instance = bt_model.emacross_strategy(
symbol=ticker,
data=df_stock,
short_length=2,
long_length=2,
spy_bt=True,
no_bench=False,
shortable=True,
)
assert isinstance(back_test_instance, bt.backtest.Result)
@pytest.mark.skip
def test_rsi_strategy(mocker):
yf_download = stocks_helper.yf.download
def mock_yf_download(*args, **kwargs):
kwargs["threads"] = False
return yf_download(*args, **kwargs)
mocker.patch("yfinance.download", side_effect=mock_yf_download)
ticker = "PM"
start = datetime.strptime("2020-12-01", "%Y-%m-%d")
end = datetime.strptime("2020-12-02", "%Y-%m-%d")
df_stock = stocks_helper.load_ticker(ticker=ticker, start_date=start, end_date=end)
back_test_instance = bt_model.rsi_strategy(
symbol=ticker,
data=df_stock,
periods=2,
low_rsi=2,
high_rsi=2,
spy_bt=True,
no_bench=False,
shortable=True,
)
assert isinstance(back_test_instance, bt.backtest.Result)