Ejemplo n.º 1
0
def test_annual_return():
    """
    Test for the annual return calculation.
    :return:
    """
    data = pd.DataFrame({
        'date':
        ['2020-10-03 12:09:07', '2020-10-04 16:10:05', '2020-10-05 12:03:00'],
        'pnl': [1000, 1050, -787]
    })

    result = dash_app.pnl_summary(data)
    ann_return = str(
        round((1000 + 1050 - 787) / TOTAL_CAPITAL / (3 / 365) * 100, 2)) + '%'
    assert ann_return == result['Value'].iloc[0]
Ejemplo n.º 2
0
def test_max_dropdown():
    """
    Test for the Max Dropdown calculation.
    :return:
    """
    data = pd.DataFrame({
        'date': [
            '2020-10-04 12:09:07', '2020-10-05 16:10:05',
            '2020-10-06 12:01:00', '2020-10-07 17:00:00'
        ],
        'pnl': [1000, 900, 750, -1500]
    })

    result = dash_app.pnl_summary(data)
    md = str((1000 - (-1500)) / np.max(data['pnl']))
    assert md == result['Value'].iloc[4]
Ejemplo n.º 3
0
def test_kurtosis():
    """
    Test for the kurtosis calculation.
    :return:
    """
    data = pd.DataFrame({
        'date': [
            '2020-10-04 12:09:07', '2020-10-05 16:10:05',
            '2020-10-06 12:01:00', '2020-10-07 17:00:00'
        ],
        'pnl': [1000, 900, 750, -1500]
    })

    result = dash_app.pnl_summary(data)
    kui = str(round(data['pnl'].kurtosis(), 2))
    assert kui == result['Value'].iloc[6]
Ejemplo n.º 4
0
def test_cumulative_return():
    """
    Test for the cumulative return calculation.
    :return:
    """
    data = pd.DataFrame({
        'date': [
            '2020-10-04 12:09:07', '2020-10-05 16:10:05',
            '2020-10-06 12:01:00', '2020-10-07 17:00:00'
        ],
        'pnl': [100000, 90000, 75000, -150000]
    })

    result = dash_app.pnl_summary(data)
    ann_return = str(
        round((
            (100000 + 90000 + 75000 - 150000) / TOTAL_CAPITAL) * 100, 2)) + '%'
    assert ann_return == result['Value'].iloc[1]
Ejemplo n.º 5
0
def test_sharpe_ratio():
    """
    Test for the Sharpe Ratio calculation.
    :return:
    """
    data = pd.DataFrame({
        'date': [
            '2020-10-04 12:09:07', '2020-10-05 16:10:05',
            '2020-10-06 12:01:00', '2020-10-07 17:00:00'
        ],
        'pnl': [1000, -800, 950, 600]
    })

    cum_shift = data['pnl']
    std = np.std(cum_shift, ddof=1)
    mean = cum_shift.mean()
    result = dash_app.pnl_summary(data)
    sr = str(round(mean / std * np.sqrt(365), 2))
    assert sr == result['Value'].iloc[3]
Ejemplo n.º 6
0
def test_annual_volatility():
    """
    Test for the annual return calculation.
    :return:
    """
    data = pd.DataFrame({
        'date': [
            '2020-10-04 12:09:07', '2020-10-04 12:09:07',
            '2020-10-05 16:10:05', '2020-10-06 12:01:00', '2020-10-07 17:00:00'
        ],
        'pnl': [0, 1000, 900, 750, -1500]
    })

    std = np.std([
        1000 / TOTAL_CAPITAL, 900 / TOTAL_CAPITAL, 750 / TOTAL_CAPITAL,
        -1500 / TOTAL_CAPITAL
    ],
                 ddof=1)
    result = dash_app.pnl_summary(data)
    volatility = str(round(std * np.sqrt(365), 2))
    assert volatility == result['Value'].iloc[2]