вот пример того, как вы можете протестировать простую торговую стратегию на Python:
Во-первых, вам нужно будет импортировать все необходимые библиотеки, такие как pandas
для обработки данных и matplotlib
для создания диаграмм.
import pandas as pd import matplotlib.pyplot as plt
Затем вам нужно будет загрузить свои исторические данные в pandas
DataFrame. Эти данные должны включать такую информацию, как дата открытия, максимум, минимум, закрытие и объем за каждый период.
data = pd.read_csv('historical_data.csv')
Затем вы можете создать новый столбец в DataFrame, представляющий скользящее среднее цены закрытия. Это можно сделать с помощью метода rolling()
и функции mean()
.
data['moving_average'] = data['close'].rolling(window=20).mean()
Теперь, когда вы подготовили данные, вы можете приступить к определению своей торговой стратегии. В этом примере предположим, что мы хотим открыть длинную позицию (покупку), когда цена закрытия выше скользящей средней, и короткую позицию (продажу), когда цена закрытия ниже скользящей средней.
data['position'] = None for i in range(len(data)): if data['close'][i] > data['moving_average'][i]: data['position'][i] = 1 else: data['position'][i] = -1
Далее вам нужно будет создать новый столбец, который будет представлять ежедневные доходы за каждый период. Это можно сделать с помощью метода pct_change()
и умножив его на позицию стратегии.
data['strategy_returns'] = data['close'].pct_change() * data['position'].shift(1)
Теперь вы можете рассчитать совокупную доходность и нарисовать ее график с помощью matplotlib.
data['cumulative_returns'] = (1 + data['strategy_returns']).cumprod() plt.plot(data['cumulative_returns']) plt.show()
Получив график, вы можете оценить эффективность своей стратегии, рассчитав общий доход, коэффициент Шарпа, максимальную просадку и т. д.
total_return = data['cumulative_returns'][-1] - 1 sharpe_ratio = data['strategy_returns'].mean() / data['strategy_returns'].std() max_drawdown = (1 - data['cumulative_returns'].div(data['cumulative_returns'].cummax())).max() print("Total Return:", total_return) print("Sharpe Ratio:", sharpe_ratio) print("Max Drawdown:", max_drawdown)
Обратите внимание, что это всего лишь базовый пример, и в действительности на эффективность стратегии могут влиять различные рыночные условия, проскальзывание, комиссия и т. д. Также важно учитывать методы управления рисками, такие как стоп-лосс и корректировка размера позиции, а также тестировать различные стратегии, наборы данных и параметры для оптимизации результатов.