Используйте backtesting механизм в MATLAB®, чтобы запустить backtest на инвестиционной стратегии по временным рядам данных о рынке. Можно задать backtesting механизм при помощи backtestEngine
объект. backtestEngine
возразите устанавливает свойства backtesting среды, такие как безрисковый уровень, и содержит результаты backtest. В этом примере можно создать backtesting механизм, чтобы запустить простой backtest и исследовать результаты.
Создайте стратегию
Задайте инвестиционную стратегию при помощи backtestStrategy
функция. Этот пример создает простую равно взвешенную инвестиционную стратегию, которая вкладывает капитал одинаково через все активы. Для получения дополнительной информации о создании backtest стратегии, смотрите backtestStrategy
.
strategy =
backtestStrategy with properties:
Name: "EqualWeighted"
RebalanceFcn: [function_handle]
RebalanceFrequency: 20
TransactionCosts: [0.0025 0.0050]
LookbackWindow: 0
InitialWeights: [1x0 double]
Установите свойства Engine Backtesting
backtesting механизм имеет несколько свойств, которые вы устанавливаете при помощи параметров на backtestEngine
функция.
Безрисковый уровень
RiskFreeRate
свойство содержит процентную ставку, заработанную для неинвестированного капитала (то есть, наличные деньги). Когда сумма весов портфеля ниже 1, остающийся капитал инвестирован в наличные деньги и зарабатывает безрисковый уровень. Безрисковый уровень задан как уровень "на временной шаг", означая, что это - процентная ставка, которую наличные деньги зарабатывают для каждого шага backtest, не годового показателя. В данном примере вы запускаете backtest, использующий ежедневные данные, и безрисковая процентная ставка составляет пересчитанные на год 2%, таким образом, устанавливает RiskFreeRate
свойство к 0.02
/ 252
аппроксимировать ежедневную процентную ставку.
Наличные деньги одалживают уровень
CashBorrowRate
наборы свойств уровень накопления процентов применились к отрицательным остаткам наличных средств. Если в любое время сумма весов портфеля к значению, больше, чем 1, то денежная позиция отрицательна суммой сверх 1. Это поведение весов портфеля походит на капитал заимствования на поле, чтобы наделить рычагами. Как RiskFreeRate
свойство, CashBorrowRate
свойство задано как уровень на временной шаг, необходимо предоставить годовой показатель, разделенный на количество временных шагов в год.
Начальная стоимость портфеля
InitialPortfolioValue
наборы свойств значение портфеля в начале backtest для всех стратегий. Значение по умолчанию составляет 10 000$.
Создайте Engine Backtest
Используя подготовленные свойства, создайте backtesting механизм с помощью backtestEngine
функция.
backtester =
backtestEngine with properties:
Strategies: [1x1 backtestStrategy]
RiskFreeRate: 7.9365e-05
CashBorrowRate: 2.3810e-04
InitialPortfolioValue: 1000000
NumAssets: []
Returns: []
Positions: []
Turnover: []
BuyCost: []
SellCost: []
Несколько дополнительных свойств backtesting механизма инициализируются, чтобы опустеть. backtesting механизм заполняет эти свойства, которые содержат результаты backtest после завершения backtest.
Загрузите данные и запущенный Backtest
Запустите backtest по ежедневным ценовым данным из 30 запасов компонента DJIA.
Запустите backtest использование runBacktest
функция.
backtester =
backtestEngine with properties:
Strategies: [1x1 backtestStrategy]
RiskFreeRate: 7.9365e-05
CashBorrowRate: 2.3810e-04
InitialPortfolioValue: 1000000
NumAssets: 30
Returns: [250x1 timetable]
Positions: [1x1 struct]
Turnover: [250x1 timetable]
BuyCost: [250x1 timetable]
SellCost: [250x1 timetable]
Исследуйте результаты
backtesting механизм заполняет свойства только для чтения backtestEngine
объект результатами backtest. Дневные значения для портфеля возвращаются, положения актива, оборот, и операционные издержки доступны, чтобы исследовать.