Постройте кривые собственного капитала стратегий
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.