Рассчитать среднюю доходность стратегии
Сценарий (с использованием Quantstrat, Blotter и Portalanalytics)
- У меня 10к начальный капитал
- У меня есть стратегия, по которой я хочу протестировать более 3000 символов вселенной (акции)
- Допустим, стратегия представляет собой простой MA кроссовер
- Каждый раз, когда я получаю кроссовер на покупку, я покупаю акции на 10 тыс. И закрываю позицию на кроссовере на продажу.
- Для целей тестирования на истории стратегия может торговаться без каких-либо ограничений портфеля, поэтому я могу держать 100+ позиций в любой момент времени, поэтому начальный капитал не должен учитываться.
Я хочу знать СРЕДНЕЕ возвращение этой стратегии по всем сделкам.
На самом деле, если бы у меня было только 10 КБ, я мог бы участвовать только в одной сделке одновременно, но я хотел бы знать статистически, какой будет средняя прибыль.
Затем я хочу сравнить это с эталоном фондового индекса.
- СУММА или СРЕДСТВО возвратный поток каждого символа
- Является ли это возвращением портфеля, учитывает ли это первоначальный капитал? - Я не хочу, чтобы доход был в процентах от первоначального капитала, или рассмотрим, как могут торговаться символы.
1 ответ
Я добавлю пример стратегии, когда у меня будет время, но решение проблемы:
#get the portfolio returns
instRets <- PortfReturns(account.st)
#for each column, NA the values where there is no return, because when the values are averaged out, you don't want 0's to be included in the calculation
# if there are no signals in the strategy, you will invest money elsewhere rather than just leaving lying around. Therefore you only calculate the returns #when the strategy is ACTIVE
for (i in 1:ncol(instRets)){
instRets[,i][instRets[,i] == 0] <- NA
}
#this will give you the average return when the strategy is active, if there are 100 trades on, you want the average return during that period.
portfRets <- xts(rowMeans(instRets, na.rm = T), order.by = index(instRets))
portfRets <- portfRets[!is.na(portfRets)]
Теперь вы можете сравнить стратегию с тестом SPY, например. Если у стратегии есть альфа, вы можете использовать правило балансировки, чтобы применить средства к стратегии, когда сигналы появляются, или продолжать инвестировать в индекс, когда сигналов нет.
Насколько мне известно, анализ доходности, встроенный в блоттер, использует начальный капитал для расчета прибыли, поэтому инвестируйте в каждую сделку ту же сумму, что и для первоначального капитала. 10 тыс. Начального капитала, 10 тыс. За сделку.