вот пример того, как вы можете протестировать простую торговую стратегию на 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)

Обратите внимание, что это всего лишь базовый пример, и в действительности на эффективность стратегии могут влиять различные рыночные условия, проскальзывание, комиссия и т. д. Также важно учитывать методы управления рисками, такие как стоп-лосс и корректировка размера позиции, а также тестировать различные стратегии, наборы данных и параметры для оптимизации результатов.

Пожалуйста, подпишитесь на меня, чтобы увидеть больше статей, подобных этой, и если вам понравилась эта статья, поставьте ХЛОП!!