Математическое ожидание — это среднее значение случайной величины, которое ожидается в результате большого числа экспериментов или случайных событий. В контексте торговли, это важнейший показатель ожидаемой прибыльности торговой стратегии.
Математическое ожидание бывает двух видов: в пунктах и валюте депозита.
defcalculate_expectation(profit_losses): n =len(profit_losses) expectation =sum(profit_losses)/ nreturn expectation# Использованиеprofit_losses = [100,-50,75,-30,120] # пример прибыли/убытка от сделокexpectation =calculate_expectation(profit_losses)print("Математическое ожидание:", expectation)
doubleCalculateExpectation(double profit_losses[]) {int n =ArraySize(profit_losses);double sum =0;for (int i =0; i < n; i++) { sum +=profit_losses[i]; }double expectation = sum / n;return expectation;}// Использованиеdouble profit_losses[] = {100,-50,75,-30,120}; // пример прибыли/убытка от сделокdouble expectation =CalculateExpectation(profit_losses);Print("Математическое ожидание:", expectation);
Профит фактор
Описание:
Формула
Профит фактор — это показатель, который отражает отношение общей суммы прибыли к общей сумме убытков.
Чем выше значение профит фактора, тем лучше эффективность стратегии.
defcalculate_profit_factor(profits,losses): total_profit =sum(profits) total_loss =sum(losses) profit_factor = total_profit / total_lossreturn profit_factor# Использованиеprofits = [100,50,75,30,120] # пример прибыли от сделокlosses = [-50,-30,-20,-10,-25] # пример убытков от сделокprofit_factor =calculate_profit_factor(profits, losses)print("Профит фактор:", profit_factor)
doubleCalculateProfitFactor(double profits[],double losses[]) {double total_profit =ArraySum(profits);double total_loss =ArraySum(losses);double profit_factor = total_profit / total_loss;return profit_factor;}// Использованиеdouble profits[] = {100,50,75,30,120}; // пример прибыли от сделокdouble losses[] = {-50,-30,-20,-10,-25}; // пример убытков от сделокdouble profit_factor =CalculateProfitFactor(profits, losses);Print("Профит фактор:", profit_factor);
Прибыльность
Описание:
Формула
Прибыльность — это показатель, который отражает успешность торговой стратегии или инвестиций. Он представляет собой отношение общей прибыли к общим затратам или капиталу, и может быть выражен как абсолютное значение или в процентах.
Где:
Общая прибыль - сумма всех прибылей от сделок.
Общий капитал - начальный капитал или текущий баланс счета. Показатель прибыльности позволяет оценить доходность стратегии или инвестиций относительно вложенных средств.
defcalculate_profitability(total_profit,initial_capital): profitability = (total_profit / initial_capital) *100return profitability# Использованиеtotal_profit =5000# пример общей прибылиinitial_capital =10000# пример начального капиталаprofitability =calculate_profitability(total_profit, initial_capital)print("Прибыльность:", profitability, "%")
// MQL5doubleCalculateProfitability(double total_profit,double initial_capital) {double profitability = (total_profit / initial_capital) *100;return profitability;}// Пример использованияdouble total_profit =5000; // пример общей прибылиdouble initial_capital =10000; // пример начального капиталаdouble profitability =CalculateProfitability(total_profit, initial_capital);Print("Прибыльность:", profitability,"%");
Максимальная абсолютная просадка
Описание:
Формула
Максимальная абсолютная просадка (Maximum Drawdown, MDD) - это показатель, отражающий максимальную величину снижения капитала от пикового значения до минимального за определенный период времени.
MDD = (Наибольшее пиковое значение капитала - Наименьшее значение капитала после пика) / Наибольшее пиковое значение капитала
Чем меньше максимальная абсолютная просадка, тем более стабильной и менее рискованной считается торговая стратегия.
Максимальная относительная просадка (Maximum Relative Drawdown, MRD) - это показатель, отражающий максимальную долю (процент) потерянного капитала от наибольшего пикового значения за определенный период времени. В отличие от максимальной абсолютной просадки, она показывает просадку в относительных единицах.
MRD = (Наибольшее пиковое значение капитала - Наименьшее значение капитала после пика) / Наибольшее пиковое значение капитала * 100%
Чем меньше максимальная относительная просадка, тем более стабильной и менее
рискованной считается торговая стратегия.
Относительная просадка (Relative Drawdown, RD) - это показатель, отражающий текущую величину снижения капитала относительно его максимального предыдущего значения. Она измеряет текущий уровень просадки в процентах от наибольшего пикового значения капитала.
RD = (Наибольшее пиковое значение капитала - Текущее значение капитала) / Наибольшее пиковое значение капитала* 100%
Относительная просадка помогает оценить текущий уровень потерь по сравнению с максимально достигнутым капиталом. Чем выше значение, тем больше потери на данный момент.
defcalculate_relative_drawdown(equity_curve): peak = equity_curve[0] drawdowns = []for value in equity_curve: peak =max(peak, value) rd = (peak - value) / peak *100 drawdowns.append(rd)return drawdowns# Пример использованияequity_curve = [10000,11000,9500,10200,9800,10500]relative_drawdowns =calculate_relative_drawdown(equity_curve)print("Относительные просадки:")for rd in relative_drawdowns:print(f"{rd:.2f}%")
-данный параметр отображает рискованностьстратегии, какой суммой рискует советник что бы заработать полученную прибыль. Он вычисляется как отношение полученной прибыли к максимальной просадке.
Где:
Абсолютная прибыль - общая прибыль от сделок.
Максимальная просадка - наибольшее уменьшение доступных средств с момента достижения максимального значения баланса.
Значения менее 2 не рассматриваем
Параметр фактор восстановление тем более правильный, чем большая история торговли обсчитывается.
defcalculate_recovery_factor(absolute_profit,max_drawdown):return absolute_profit / max_drawdown# Пример использованияabsolute_profit =1500# пример абсолютной прибылиmax_drawdown =1000# пример максимальной просадкиrecovery_factor =calculate_recovery_factor(absolute_profit, max_drawdown)print("Фактор восстановления:", recovery_factor)
doubleCalculateRecoveryFactor(double absolute_profit,double max_drawdown){return absolute_profit / max_drawdown;}// Пример использованияdouble absolute_profit =1500; // пример абсолютной прибылиdouble max_drawdown =1000; // пример максимальной просадкиdouble recovery_factor =CalculateRecoveryFactor(absolute_profit, max_drawdown);Print("Фактор восстановления:", recovery_factor);
Процент прибыльных сделок
Описание:
Формула
Процент прибыльных сделок (Profit Factor, PF) - это показатель, который определяет долю успешных (прибыльных) сделок по отношению к общему количеству сделок за определенный период времени. Он помогает оценить эффективность торговой стратегии.
Процент прибыльных сделок = (Количество прибыльных сделок / Общее количество сделок) x 100%
Чем выше процент прибыльных сделок, тем более успешной считается торговая стратегия. Однако этот показатель не учитывает размер прибыли или убытка по каждой сделке, поэтому его следует рассматривать в совокупности с другими метриками.
defcalculate_profit_percent(trades): total_trades =len(trades) profitable_trades =sum(1for trade in trades if trade >0) profit_percent = (profitable_trades / total_trades) *100return profit_percent# Пример использованияtrades = [100,-50,75,-30,120,-80,200]profit_percent =calculate_profit_percent(trades)print(f"Процент прибыльных сделок: {profit_percent:.2f}%")
Максимальный выигрыш (Maximum Profit, MAX_PROFIT) - это наибольшая величина прибыли, полученная в результате одной успешной сделки за определенный период времени при использовании торговой стратегии.
MAX_PROFIT = max(прибыли от сделок)
Максимальный выигрыш показывает потенциал торговой стратегии в лучшем случае и может использоваться для оценки ее возможной доходности. Однако этот показатель не дает полной картины, поскольку он не учитывает убыточные сделки и общую стабильность стратегии.
defcalculate_max_profit(trades): profits = [trade for trade in trades if trade >0]ifnot profits:return0 max_profit =max(profits)return max_profit# Пример использованияtrades = [100,-50,75,-30,120,-80,200]max_profit =calculate_max_profit(trades)print(f"Максимальный выигрыш: {max_profit}")
Максимальный проигрыш (Maximum Loss, MAX_LOSS) - это наибольшая величина убытка, полученного в результате одной убыточной сделки за определенный период времени при использовании торговой стратегии.
MAX_LOSS = min(убытков от сделок)
Максимальный проигрыш показывает потенциальный риск торговой стратегии в худшем случае и может использоваться для оценки ее рискованности и управления капиталом. Однако этот показатель не дает полной картины, поскольку он не учитывает прибыльные сделки и общую стабильность стратегии.
defcalculate_max_loss(trades): losses = [trade for trade in trades if trade <0]ifnot losses:return0 max_loss =min(losses)return max_loss# Пример использованияtrades = [100,-50,75,-30,120,-80,200]max_loss =calculate_max_loss(trades)print(f"Максимальный проигрыш: {max_loss}")
Фактор линейности (Linearity Factor, LF) - это показатель, который оценивает линейность или стабильность роста капитала при использовании торговой стратегии. Он измеряет степень отклонения кривой капитала от идеальной прямой линии.
Идеальное значение фактора линейности равно 1, что означает полную линейность роста капитала. Значения меньше 1 указывают на нелинейный и нестабильный рост капитала, а значения выше 1 означают, что рост капитала происходит слишком быстро, что может быть признаком высокого риска.
Коэффициент Шарпа - это мера риска-прибыли, которая позволяет оценить доходность инвестиции или стратегии торговли относительно риска. Чем выше значение коэффициента Шарпа, тем лучше отношение доходности к риску.
Где:
Средняя доходность - среднее арифметическое значение доходности инвестиции или стратегии торговли.
Безрисковая ставка - ожидаемая доходность безрискового актива (например, государственных облигаций).
Стандартное отклонение доходности - мера риска инвестиции или стратегии торговли. Показатель позволяет оценить эффективность торговой стратегии с учетом принимаемого риска.
Коэффициент детерминации — это мера, которая показывает, какую часть дисперсии зависимой переменной объясняет модель. Он представляет собой квадрат коэффициента корреляции между фактическими и прогнозируемыми значениями.
Где:
defcalculate_r_squared(actual_values,predicted_values): mean_actual =sum(actual_values)/len(actual_values) sum_squared_total =sum((y - mean_actual) **2for y in actual_values) sum_squared_residuals =sum((actual_values[i] - predicted_values[i]) **2for i inrange(len(actual_values))) r_squared =1- (sum_squared_residuals / sum_squared_total)return r_squared
Важно отметить, что коэффициент детерминации R2 может принимать значения от 0 до 1. Значение ближе к 1 указывает на лучшее соответствие модели данным.
Этот код принимает массив фактических значений (actual_values) и массив прогнозируемых значений (predicted_values) и возвращает коэффициент детерминации R2.
ProfitStability (Стабильность прибыли)
Описание:
Формула
Показатель "ProfitStability" отражает степень стабильности прибыли торговой стратегии. Чем выше значение этого показателя, тем более стабильной является прибыльность стратегии.
Где:
Среднее значение прибыли - среднее арифметическое значение прибыли от сделок.
Стандартное отклонение прибыли - мера разброса прибыли относительно её среднего значения. Чем меньше стандартное отклонение, тем более стабильной является прибыльность стратегии.
doubleCalculateProfitStability(double profits[]){int n =ArraySize(profits);double mean_profit =ArraySum(profits) / n;double sum_squared_difference =0;for (int i =0; i < n; i++) { sum_squared_difference +=MathPow(profits[i] - mean_profit,2); }double std_dev_profit =MathSqrt(sum_squared_difference / n);return mean_profit / std_dev_profit;}
Этот показатель помогает оценить уровень стабильности прибыли стратегии, что может быть полезно для принятия решений о её дальнейшем использовании.
КБТС - Коэффициент безопасности торговой системы
Описание:
Формула
Коэффициент безопасности торговой системы (КБТС) позволяет оценить уровень защищенности торговой стратегии от рисков и потерь. Чем выше значение КБТС, тем более безопасной считается торговая система.
Где:
Максимальная просадка - наибольшая потеря средств с момента достижения максимального баланса.
Абсолютная просадка - максимальное уменьшение доступных средств с момента достижения максимального значения.
defcalculate_security_coefficient(max_drawdown,absolute_drawdown):return max_drawdown / absolute_drawdown# Пример использованияmax_drawdown =1000# пример максимальной просадкиabsolute_drawdown =500# пример абсолютной просадкиsecurity_coefficient =calculate_security_coefficient(max_drawdown, absolute_drawdown)print("Коэффициент безопасности торговой системы:", security_coefficient)
doubleCalculateSecurityCoefficient(double max_drawdown,double absolute_drawdown){return max_drawdown / absolute_drawdown;}// Пример использованияdouble max_drawdown =1000; // пример максимальной просадкиdouble absolute_drawdown =500; // пример абсолютной просадкиdouble security_coefficient =CalculateSecurityCoefficient(max_drawdown, absolute_drawdown);Print("Коэффициент безопасности торговой системы:", security_coefficient);
КБТС позволяет оценить, во сколько раз максимальная потеря превышает максимальное уменьшение средств. Чем выше значение КБТС, тем более надежной и безопасной считается торговая стратегия.
Коэффициент вариации
Описание:
Формула
Коэффициент вариации - это статистический показатель, который измеряет степень разброса или изменчивости данных относительно среднего значения. Он представляет собой отношение стандартного отклонения к среднему значению и обычно выражается в процентах.
Коэффициент вариации = (Стандартное отклонение / Среднее значение) x 100%
Коэффициент вариации помогает оценить риск и стабильность торговой стратегии. Чем ниже его значение, тем более стабильны результаты стратегии и тем меньше разброс значений вокруг среднего. Высокий коэффициент вариации указывает на высокую изменчивость и нестабильность результатов.
import mathdefcalculate_coefficient_of_variation(profits_losses): mean =sum(profits_losses)/len(profits_losses) squared_diffs = [(x - mean) **2for x in profits_losses] variance =sum(squared_diffs)/len(profits_losses) std_dev = math.sqrt(variance) coefficient_of_variation = (std_dev / mean) *100return coefficient_of_variation# Пример использованияprofits_losses = [100,-50,75,-30,120]coefficient_of_variation =calculate_coefficient_of_variation(profits_losses)print(f"Коэффициент вариации: {coefficient_of_variation:.2f}%")