Постройте кривые собственного капитала стратегий
equityCurve(
строит графики кривых собственного капитала каждой стратегии, которую вы создаете используя backtester
)backtestStrategy
. После создания механизма обратного тестирования используя backtestEngine
и выполнение бэктеста с runBacktest
, использовать equityCurve
построить график стратегий и сравнить их эффективность.
дополнительно возвращает указатель на рисунок h
= equityCurve(ax
,backtester
)h
.
Механизм обратного тестирования MATLAB ® запускает бэктесты инвестиционных стратегий портфеля на временных рядах данных о ценах активов. После создания набора стратегий backtest с использованием backtestStrategy
и механизм обратного тестирования, использующий backtestEngine
, а runBacktest
функция выполняет бэктест. После использования runBacktest
функция для тестирования инвестиционных стратегий, вы можете запустить equityCurve
функция для построения кривых собственного капитала стратегий.
Загрузка данных
Загрузка данных о ценах на акции за один год. Для читаемости в этом примере используется только подмножество запасов DJIA.
% Read a table of daily adjusted close prices for 2006 DJIA stocks T = readtable('dowPortfolio.xlsx'); % Prune the table to hold only the dates and selected stocks timeColumn = "Dates"; assetSymbols = ["BA", "CAT", "DIS", "GE", "IBM", "MCD", "MSFT"]; T = T(:,[timeColumn assetSymbols]); % Convert to timetable pricesTT = table2timetable(T,'RowTimes','Dates'); % View the final asset price timetable head(pricesTT)
ans=8×7 timetable
Dates BA CAT DIS GE IBM MCD MSFT
___________ _____ _____ _____ _____ _____ _____ _____
03-Jan-2006 68.63 55.86 24.18 33.6 80.13 32.72 26.19
04-Jan-2006 69.34 57.29 23.77 33.56 80.03 33.01 26.32
05-Jan-2006 68.53 57.29 24.19 33.47 80.56 33.05 26.34
06-Jan-2006 67.57 58.43 24.52 33.7 82.96 33.25 26.26
09-Jan-2006 67.01 59.49 24.78 33.61 81.76 33.88 26.21
10-Jan-2006 67.33 59.25 25.09 33.43 82.1 33.91 26.35
11-Jan-2006 68.3 59.28 25.33 33.66 82.19 34.5 26.63
12-Jan-2006 67.9 60.13 25.41 33.25 81.61 33.96 26.48
Создайте стратегию
Протестируйте равновзвешенную инвестиционную стратегию. Эта стратегия инвестирует равный фрагмент доступного капитала в каждый актив. Этот пример не описывает, как создать стратегии обратного тестирования. Для получения дополнительной информации о создании стратегий обратного тестирования смотрите backtestStrategy
.
Задайте 'RebalanceFrequency'
для ребаланса портфеля каждые 60 дней. Этот пример не использует интерполяционное окно для ребаланса.
% Create the strategy numAssets = size(pricesTT,2); equalWeightsVector = ones(1,numAssets) / numAssets; equalWeightsRebalanceFcn = @(~,~) equalWeightsVector; ewStrategy = backtestStrategy("EqualWeighted",equalWeightsRebalanceFcn,... 'RebalanceFrequency',60,... 'LookbackWindow',0,... 'TransactionCosts',0.005,... 'InitialWeights',equalWeightsVector)
ewStrategy = backtestStrategy with properties: Name: "EqualWeighted" RebalanceFcn: @(~,~)equalWeightsVector RebalanceFrequency: 60 TransactionCosts: 0.0050 LookbackWindow: 0 InitialWeights: [0.1429 0.1429 0.1429 0.1429 0.1429 0.1429 0.1429]
Запуск бэктеста
Создайте механизм обратного тестирования и запустите бэктест за год хранения данных. Для получения дополнительной информации о создании узлов backtest смотрите backtestEngine
.
% Create the backtesting engine. The backtesting engine properties that hold the % results are initialized to empty. backtester = backtestEngine(ewStrategy)
backtester = backtestEngine with properties: Strategies: [1x1 backtestStrategy] RiskFreeRate: 0 CashBorrowRate: 0 RatesConvention: "Annualized" Basis: 0 InitialPortfolioValue: 10000 NumAssets: [] Returns: [] Positions: [] Turnover: [] BuyCost: [] SellCost: []
% Run the backtest. The empty properties are now populated with % timetables of detailed backtest results. backtester = runBacktest(backtester,pricesTT)
backtester = backtestEngine with properties: Strategies: [1x1 backtestStrategy] RiskFreeRate: 0 CashBorrowRate: 0 RatesConvention: "Annualized" Basis: 0 InitialPortfolioValue: 10000 NumAssets: 7 Returns: [250x1 timetable] Positions: [1x1 struct] Turnover: [250x1 timetable] BuyCost: [250x1 timetable] SellCost: [250x1 timetable]
Сгенерируйте кривую собственного капитала
Используйте equityCurve
для построения графика кривой собственного капитала для стратегии равновесия.
equityCurve(backtester)
backtester
- Механизм обратного тестированияbacktestEngine
объектМеханизм обратного тестирования, заданный как backtestEngine
объект. Использование backtestEngine
чтобы создать backtester
объект.
Примечание
The backtester
аргумент должен использовать backtestEngine
объект, который был запущен с использованием runBacktest
.
Типы данных: object
ax
- Действительный объект оси(Необязательно) Допустимый объект оси, заданный как ax
объект, который вы создаете используя axes
. График создается на осях, заданных опциональной ax
аргумент вместо на текущей системе координат (gca). Необязательный аргумент ax
может предшествовать любой комбинации входных аргументов.
Типы данных: object
h
- Указатель на фигуруУказатель на фигуру для графика кривой собственного капитала, возвращенный как объект.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.