test
This commit is contained in:
parent
c1fed8a077
commit
da701e67de
@ -390,6 +390,35 @@ def calculate_max_drawdown(trades: pd.DataFrame, *, date_col: str = 'close_date'
|
|||||||
low_val = max_drawdown_df.loc[idxmin, 'cumulative']
|
low_val = max_drawdown_df.loc[idxmin, 'cumulative']
|
||||||
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_mdd(data: pd.DataFrame, trades: pd.DataFrame, *, date_col: str = 'close_date',
|
||||||
|
value_col: str = 'profit_ratio'
|
||||||
|
) -> float:
|
||||||
|
"""
|
||||||
|
Calculate MDD (Max DrawDown) :
|
||||||
|
Give the max drawdown given each trades and the history candles data.
|
||||||
|
Args:
|
||||||
|
trades (pd.DataFrame): [description]
|
||||||
|
date_col (str, optional): [description]. Defaults to 'close_date'.
|
||||||
|
value_col (str, optional): [description]. Defaults to 'profit_ratio'.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
float: [description]
|
||||||
|
"""
|
||||||
|
if len(trades) == 0:
|
||||||
|
raise ValueError("Trade dataframe empty")
|
||||||
|
|
||||||
|
mdd_df = pd.DataFrame()
|
||||||
|
|
||||||
|
for pair, df in data.items():
|
||||||
|
print(pair)
|
||||||
|
print(df)
|
||||||
|
open_close_date = trades.loc[trades['pair']==pair]
|
||||||
|
# print(open_close_date)
|
||||||
|
# mdd_df = df[[df["date"].isin(open_close_date), open_close_date]]
|
||||||
|
# print(mdd_df)
|
||||||
|
return mdd_df
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_csum(trades: pd.DataFrame, starting_balance: float = 0) -> Tuple[float, float]:
|
def calculate_csum(trades: pd.DataFrame, starting_balance: float = 0) -> Tuple[float, float]:
|
||||||
"""
|
"""
|
||||||
|
@ -9,7 +9,7 @@ from tabulate import tabulate
|
|||||||
|
|
||||||
from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN, UNLIMITED_STAKE_AMOUNT
|
from freqtrade.constants import DATETIME_PRINT_FORMAT, LAST_BT_RESULT_FN, UNLIMITED_STAKE_AMOUNT
|
||||||
from freqtrade.data.btanalysis import (calculate_csum, calculate_market_change,
|
from freqtrade.data.btanalysis import (calculate_csum, calculate_market_change,
|
||||||
calculate_max_drawdown)
|
calculate_max_drawdown, calculate_mdd)
|
||||||
from freqtrade.misc import decimals_per_coin, file_dump_json, round_coin_value
|
from freqtrade.misc import decimals_per_coin, file_dump_json, round_coin_value
|
||||||
|
|
||||||
|
|
||||||
@ -462,6 +462,7 @@ def generate_strategy_stats(btdata: Dict[str, DataFrame],
|
|||||||
}
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
mdd = calculate_mdd(btdata, results)
|
||||||
max_drawdown, _, _, _, _ = calculate_max_drawdown(
|
max_drawdown, _, _, _, _ = calculate_max_drawdown(
|
||||||
results, value_col='profit_ratio')
|
results, value_col='profit_ratio')
|
||||||
drawdown_abs, drawdown_start, drawdown_end, high_val, low_val = calculate_max_drawdown(
|
drawdown_abs, drawdown_start, drawdown_end, high_val, low_val = calculate_max_drawdown(
|
||||||
|
Loading…
Reference in New Issue
Block a user