示例#1
0
def optimize(date: str = typer.Argument(..., help="YYYY-MM-DD")):
    """Optimize portfolio."""
    port = load_from_yaml(date)
    opt = Optimizer(port)
    print(opt.portfolio)
    print(opt.metrics)
    print(opt)
    div_status.new_dividends(tuple(port.index[:-2]))
示例#2
0
def optimize(date: str = typer.Argument(..., help="YYYY-MM-DD"),
             for_sell: int = 1) -> None:
    """Optimize portfolio."""
    port = load_from_yaml(date)

    if config.OPTIMIZER == "resample":
        opt = optimizer_resample.Optimizer(port, for_sell=for_sell)
    else:
        opt = optimizer_hmean.Optimizer(port)

    LOGGER.info(opt.portfolio)
    LOGGER.info(opt.metrics)
    LOGGER.info(opt)

    div_status.new_dividends(tuple(port.index[:-2]))
示例#3
0
def test_new_dividends_no_output(mocker, caplog):
    """Не печатается результат, если по запрашиваемым тикерам нет обновления."""
    mocker.patch.object(div_status, "_new_div_all", return_value=SMART_LAB_DF)

    with caplog.at_level(logging.INFO):
        assert not div_status.new_dividends(("GAZP", ))
        assert not caplog.records
示例#4
0
def test_new_dividends_no_output(mocker, capsys):
    """Не печатается результат, если по запрашиваемым тикерам нет обновления."""
    mocker.patch.object(div_status, "_new_div_all", return_value=SMART_LAB_DF)

    assert not div_status.new_dividends(("GAZP", ))
    captured = capsys.readouterr()
    assert not captured.out
示例#5
0
def test_new_dividends(mocker, capsys):
    """Различные варианты включения и не включения в статус."""
    mocker.patch.object(div_status, "_new_div_all", return_value=SMART_LAB_DF)
    mocker.patch.object(div, "dividends", side_effect=[PLZL_DF, T_DF, KZOS_DF, TTLK_DF])

    assert div_status.new_dividends(("TTLK", "T-RM", "KZOS", "PLZL")) == {"PLZL", "KZOS"}
    captured = capsys.readouterr()
    assert "ДАННЫЕ ПО ДИВИДЕНДАМ ТРЕБУЮТ ОБНОВЛЕНИЯ" in captured.out
示例#6
0
def test_new_dividends(mocker, caplog):
    """Различные варианты включения и не включения в статус."""
    mocker.patch.object(div_status, "_new_div_all", return_value=SMART_LAB_DF)
    mocker.patch.object(div,
                        "dividends",
                        side_effect=[PLZL_DF, T_DF, KZOS_DF, TTLK_DF])

    with caplog.at_level(logging.INFO):
        assert div_status.new_dividends(
            ("TTLK", "T-RM", "KZOS", "PLZL")) == {"PLZL", "KZOS"}
        assert "ДАННЫЕ ПО ДИВИДЕНДАМ ТРЕБУЮТ ОБНОВЛЕНИЯ" in caplog.records[
            0].msg