Example #1
0
def monthly_returns(report_name: str, months: int) -> pd.DataFrame:
    """Необходимое количество месяцев для анализа."""
    df = pdf_middle.portfolio_cum_return(
        pdf.read_data(report_name).iloc[-months - 1:])
    df = pd.concat([df, pdf_middle.index_cum_return(df)],
                   axis=1).pct_change().dropna()
    df.columns = ["Portfolio", "MOEX"]
    return df
Example #2
0
def get_investor_data(file_name: str, investor_name: str) -> pd.DataFrame:
    """Формирует DataFrame с вкладами, стоимостью активов и дивидендами инвестора."""
    df = pdf.read_data(file_name)
    value_column = "Value_" + investor_name
    investor_share = df[value_column] / df["Value"]
    df["Dividends"] = df["Dividends"] * investor_share
    df = df[[investor_name, value_column, "Dividends"]]
    df.columns = ["Inflow", "Value", "Dividends"]
    return df
Example #3
0
def test_report_new_month():
    port = portfolio.Portfolio(date=DATE_NEW, cash=CASH, positions=POSITIONS)
    pdf.report("test", port, dict(WLMike=10000, Igor=-5000), 4321)
    df = pdf.read_data("test")
    date = port.date
    assert df.index[-1] == date
    assert df.loc[date, "WLMike"] == pytest.approx(10000)
    assert df.loc[date, "Igor"] == pytest.approx(-5000)
    assert df.loc[date, "Value_WLMike"] == pytest.approx(387_550.829_708_377)
    assert df.loc[date, "Value_Igor"] == pytest.approx(4972.170_292)
    assert df.loc[date, "Value"] == pytest.approx(392_523)
    assert df.loc[date, "Dividends"] == pytest.approx(4321)
Example #4
0
def test_update_data():
    port = portfolio.Portfolio(date=DATE_NEW, cash=CASH, positions=POSITIONS)
    pdf.update_data("test", port.date, port.value[PORTFOLIO],
                    dict(WLMike=1000, Igor=-2000), 1234)
    df = pdf.read_data("test")
    assert df.shape == (241, 6)
    assert df.index[-1] == pd.Timestamp("2018-05-07")
    assert df.loc["2018-05-07", "WLMike"] == pytest.approx(1000)
    assert df.loc["2018-05-07", "Igor"] == pytest.approx(-2000)
    assert df.loc["2018-05-07",
                  "Value_WLMike"] == pytest.approx(384_396.431_074_62)
    assert df.loc["2018-05-07",
                  "Value_Igor"] == pytest.approx(8126.568_925_380_33)
    assert df.loc["2018-05-07", "Value"] == pytest.approx(392_523)
    assert df.loc["2018-05-07", "Dividends"] == pytest.approx(1234)
Example #5
0
def test_read_data():
    df = pdf.read_data("test")
    assert df.shape == (240, 6)
    assert df.index[0] == pd.Timestamp("2008-02-21")
    assert df.index[-1] == pd.Timestamp("2018-04-19")
    assert df.loc["2018-04-19", "Value"] == pytest.approx(392_261.78)