Построить кривые собственного капитала стратегий
equityCurve( выводит на график кривые собственного капитала каждой стратегии, создаваемой с помощью backtester)backtestStrategy. После создания механизма обратного тестирования с помощью backtestEngine и выполнение обратного теста с помощью runBacktest, использовать equityCurve для построения графика стратегий и сравнения их эффективности.
дополнительно возвращает дескриптор фигуры h = equityCurve(ax,backtester)h.
Механизм обратного тестирования MATLAB ® выполняет обратные тесты стратегий портфельных инвестиций на основе временных рядов данных о ценах на активы. После создания набора стратегий обратного тестирования с использованием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]
Выполнить обратное тестирование
Создайте механизм тестирования и выполните тестирование в течение года данных запаса. Дополнительные сведения о создании механизмов обратного тестирования см. в разделе 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 объект.
Примечание
backtester аргумент должен использовать backtestEngine объект, который был запущен с использованием runBacktest.
Типы данных: object
ax - Допустимый объект оси(Необязательно) Допустимый объект оси, указанный как ax объект, который создается с помощью axes. График создается на осях, указанных опционально ax вместо на текущих осях (gca). Необязательный аргумент ax может предшествовать любой из комбинаций входных аргументов.
Типы данных: object
h - Ручка рисункаРучка рисунка для графика кривой долевого участия, возвращенная как объект ручки.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.