Add starting balance to profit cumsum calculation

This commit is contained in:
Matthias 2021-02-16 20:12:59 +01:00
parent 0d2f877e77
commit aed23d55c2
2 changed files with 9 additions and 3 deletions

View File

@ -389,10 +389,11 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_date'
return abs(min(max_drawdown_df['drawdown'])), high_date, low_date, high_val, low_val return abs(min(max_drawdown_df['drawdown'])), high_date, low_date, high_val, low_val
def calculate_csum(trades: pd.DataFrame) -> Tuple[float, float]: def calculate_csum(trades: pd.DataFrame, starting_balance: float = 0) -> Tuple[float, float]:
""" """
Calculate min/max cumsum of trades, to show if the wallet/stake amount ratio is sane Calculate min/max cumsum of trades, to show if the wallet/stake amount ratio is sane
:param trades: DataFrame containing trades (requires columns close_date and profit_percent) :param trades: DataFrame containing trades (requires columns close_date and profit_percent)
:param starting_balance: Add starting balance to results, to show the wallets high / low points
:return: Tuple (float, float) with cumsum of profit_abs :return: Tuple (float, float) with cumsum of profit_abs
:raise: ValueError if trade-dataframe was found empty. :raise: ValueError if trade-dataframe was found empty.
""" """
@ -401,7 +402,7 @@ def calculate_csum(trades: pd.DataFrame) -> Tuple[float, float]:
csum_df = pd.DataFrame() csum_df = pd.DataFrame()
csum_df['sum'] = trades['profit_abs'].cumsum() csum_df['sum'] = trades['profit_abs'].cumsum()
csum_min = csum_df['sum'].min() csum_min = csum_df['sum'].min() + starting_balance
csum_max = csum_df['sum'].max() csum_max = csum_df['sum'].max() + starting_balance
return csum_min, csum_max return csum_min, csum_max

View File

@ -296,6 +296,11 @@ def test_calculate_csum(testdatadir):
assert isinstance(csum_max, float) assert isinstance(csum_max, float)
assert csum_min < 0.01 assert csum_min < 0.01
assert csum_max > 0.02 assert csum_max > 0.02
csum_min1, csum_max1 = calculate_csum(bt_data, 5)
assert csum_min1 == csum_min + 5
assert csum_max1 == csum_max + 5
with pytest.raises(ValueError, match='Trade dataframe empty.'): with pytest.raises(ValueError, match='Trade dataframe empty.'):
csum_min, csum_max = calculate_csum(DataFrame()) csum_min, csum_max = calculate_csum(DataFrame())