Блог им. SciFi

Анализ торгового журнала и стратегий с помощью R

    • 05 июня 2016, 17:34
    • |
    • SciFi
  • Еще
Сегодня я решил провести анализ своего торгового журнала средствами и возможностями языка R.

Я понимаю, что есть специальные сервисы, которые позволяют анализировать торговый журнал. Но во-первых, они платные. Во-вторых, я веду свой журнал сам в Excel и мне удобнее было написать собственную программу. Тем более, что средствами R можно делать то, чего не будет в этих платных сервисах.

Взял все сделки на ФОРТС с 1 января по 1 июня 2016 года (за полгода). Их у меня было 565 штук. Торгую я роботом и руками по разным стратегиям, но записываю в журнал, почему открыл и закрыл каждую сделку. Стратегий было много разных, но я решил выделить все сделки в две группы — где я торговал роботом и где руками. 

Предварительно подготовил данные в Excel — выбрал только те столбцы, которые я планировал анализировать: дата сделки, маржа, номер стратегии (0 и 1 для ручной и робот. торговли). Создал файл CSV. И приступил к анализу в среде R. 

Далее я построил гистограммы маржи за каждую сделку для трех случаев — для всех сделок, для сделок роботом и сделок руками. Наложил синие линии — аппроксимацию. А также вывел описательную статистику для этих трех случаев. 

Описательная статистика

Анализ торгового журнала и стратегий с помощью R

Данные приведены в рублях. Видно, что лучшая сделка была совершена роботом. Худшая — руками. Мат. ожидание робота положительное. Мат. ожидание при торговле руками у меня отрицательное.



Графики

Анализ торгового журнала и стратегий с помощью R

Выводы

1. Робот торгует в плюс, руками я торгую в минус. С этого дня постараюсь перестать торговать руками вообще. 
2. Нужно стремиться, чтобы гистограмма имела короткий хвост слева и длинный хвост справа (как на гистограмме для робота). Для этого нужно резать убытки и дать прибыли расти. 
3. Когда я торговал руками, я не давал прибыли расти. Когда торговал робот, я четко знал, когда закрываться, поэтому давал прибыли расти.
4. Плюс робота образовался за счет длинных хвостов справа — нескольких жирных сделок. Большая часть сделок гасила друг друга. 
5. В торговле очень важна аккуратность и системность. Системно торговать руками сложнее.
6. Направленная алгоритмическая торговля на индикаторах может приносить прибыль. 


Код на R с комментариями

# КОЛИЧЕСТВЕННЫЙ АНАЛИЗ ТОРГОВОГО ЖУРНАЛА
# ©SciFi, 2016

print(getwd())
# Распечатываем расположение рабочей папки, в нее нужно положить csv файл

data <- read.csv("JournalData.csv")
# Считываем csv файл с нужными данными из журнала

names(data) <- c("n", "date", "margin", "strategy")
# Переименовываем столбцы так, чтобы названия были удобны при обращении к ним

print(head(data))
# Распечатываем первые 6 строк из считанных данных для проверки

print("Total summary")
print(summary(data$margin))
# Выводим краткую описательную статистику журнала (среднее, отклонения, макс, мин и т.д.)

data.1 <- subset(data, data$strategy==1)
# Получаем подмножество из журнала со стратегией 1 (в моем случае, 1 - это торговля роботом, 0 - торговля руками)

print("Robot trading summary")
print(summary(data.1$margin))
# Выводим описательную статистику для стратегии 1

data.0 <- subset(data, data$strategy==0)
# Аналогично для стратегии 0

print("Hand trading summary")
print(summary(data.0$margin))
# Аналогично для стратегии 0

par(mfrow=c(3,1))
# Создаем таблицу графиков с 3 строками и 1 столбцом

h <- hist(data$margin, breaks=100, main="Histogram of all margins", xlab="Margin (RUR)", ylab="Frequency", col="green", border="black")
# Строим гистограмму частоты определенного размера маржи на сделку и форматируем ее, чтобы было красиво

lines(x = d$x, y = d$y * length(x) * diff(h$breaks)[1], lwd = 2, col="blue")
# Добавляем кривую

h.0 <- hist(data.0$margin, breaks=100, main="Histogram of margins for hand trading", xlab="Margin (RUR)", ylab="Frequency", col="green", border="black")
# Строим гистограмму для ручной торговли (стратегия 0)

lines(x = d$x, y = d$y * length(x) * diff(h.0$breaks)[1], lwd = 2, col="blue")
# Добавляем кривую

h.1 <- hist(data.1$margin, breaks=100, main="Histogram of margins for robot trading", xlab="Margin (RUR)", ylab="Frequency", col="green", border="black")
# Строим гистограмму для торговли роботом (стратегия 1)

lines(x = d$x, y = d$y * length(x) * diff(h.1$breaks)[1], lwd = 2, col="blue")
# Добавляем кривую

Использованные источники

Combining Plots

How can I subset a data set

Add density lines to histogram and cumulative histogram

R:Histograms

Read table, csv


330 | ★19
3 комментария
Когда торговал робот, я четко знал, когда закрываться

алгоритм в твоей голове. ты в него, просто, не веришь. поэтому, постоянно нарушаешь. поверь в свою систему и торгуй придерживаясь собственных правил: стопы, тейки. и все получится.
avatar
а как запилить абстракицю, чтобы потом можно было скормить любой csv и получить какое то заранее заданное поведение?

типа такого

statistics = Statictics.createFrom(«myfile.csv»)

statistics.drawGraph
statistics.printTable
statistics.changeField(«myFieldName», newDataset)

и тд

так можно в этом Вашем R?
sortarray sortarray, из скрипта, который я опубликовал, можно сделать функцию. Классов в R нет, есть пакеты. Любой csv скормить можно, если заранее известно, какие поля в нем точно будут. CSV считывается и превращается в data frame, своего рода таблица. Далее можно использовать только нужные поля из этой таблицы.
avatar

Читайте на SMART-LAB:
Фото
Первичный рынок рублевых корпоративных облигаций: пробуждается после новогодних каникул
После перерыва на новогодние каникулы первичный рынок рублевых корпоративных облигаций стал демонстрировать признаки пробуждения. Некоторый...
Фото
Так ли много значит ключевая ставка?
Росстат отчитался об инфляции за праздники: 1,26% с 1 по 12 января. Годовая инфляция поднялась с 5,6% по итогу 2025 года до 6,3 на январь ....
AI в трейдинге: как финансовая индустрия работает с ML и AI-моделями
Чтобы свести человеческий фактор к минимуму, трейдеры используют алгоритмы для автоматизации. Но ведь можно делегировать не только сделки, но и...
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...

теги блога SciFi

....все тэги



UPDONW
Новый дизайн