Количественная инвестиционная стратегия, основанная на ежемесячной дате покупки


Дата создания: 2023-11-24 14:10:23 Последнее изменение: 2023-11-24 14:10:23
Копировать: 0 Количество просмотров: 593
1
Подписаться
1617
Подписчики

Количественная инвестиционная стратегия, основанная на ежемесячной дате покупки

Обзор

Ключевая идея этой стратегии заключается в том, чтобы найти оптимальную дату покупки в месяц, чтобы получить оптимальную отдачу от инвестиций, покупая цифровые активы в эту дату и продавая их в конце месяца. Эта стратегия подходит для инвесторов, которые хотят получить дополнительную прибыль, используя колебания цен в течение дня.

Стратегический принцип

Стратегия работает в зависимости от установленных пользователем дат покупки и продажи. Если в день покупки открывается ордер на покупку актива, то в день продажи он становится равным, если в день продажи он не установлен, то в день окончания стратегии он становится равным. Таким образом, можно проверить разницу в прибыли, вызванную различными датами покупки в месяц.

Логика выбора сигнала покупки заключается в следующем: если это дата покупки, которую установил пользователь, и она находится в пределах даты вступления в силу стратегии, то открывается дополнительный счет.

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

Стратегические преимущества

  1. Найдите наибольшую точку покупки при ежемесячных колебаниях цен, чтобы получить дополнительную прибыль от высокочастотных внутридневных торгов
  2. Вы можете найти оптимальную точку покупки, сравнив прибыль с датами покупки
  3. Лучшие даты для покупки могут меняться в зависимости от событий в новостях месяца.
  4. Можно установить различные даты продажи для достижения баланса между короткими и длинными сделками

Стратегические риски и решения

  1. Риск падения цен после покупки

    • Установка стоп-стоп, снижение максимальных потерь
    • Выбор пары с достаточной ликвидностью, чтобы избежать крайних колебаний цен
  2. Риск изменения даты оптимальной покупки

    • Мониторинг изменений в исторических данных и своевременная корректировка оптимальных точек покупки
    • Снижение размеров позиций в период повышенного риска
  3. Риск потерь в результате неправильной настройки

    • Поэтапное тестирование различных параметров для сравнения различий в доходах
    • Выбор репрезентативного временного диапазона для тестирования

Направление оптимизации стратегии

  1. Покупательская точка в сочетании с другими факторами

    • Рассмотрение влияния ключевых новостных событий месяца на цены
    • Анализ ценовых тенденций соответствующих цифровых активов
    • Добавление моделей машинного обучения для определения наиболее подходящего момента покупки
  2. Оптимизация механизма управления позициями

    • Настройка динамического равновесия остановки
    • Корректировка размера позиции на волатильность
    • Рассматривать долгосрочные позиции
  3. Расширение на другие торговые рынки

    • Применение для большего количества цифровых валютных паров
    • Применение на рынках, таких как акции, иностранные валюты
    • Разработать стратегию арбитража на рынке

Подвести итог

Эта стратегия, тестируя разницу в прибыли, вызванную различными датами покупки, ищет точки покупки с наибольшим количеством колебаний цены в месяц. Это может принести дополнительную прибыль инвесторам, которые ищут прибыль от высокой частоты торгов в течение дня. Следующий шаг может еще больше повысить стабильность и уровень прибыли стратегии путем введения большего количества факторов, определяющих время покупки, оптимизации управления позициями и расширения рынка приложений.

Исходный код стратегии
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()