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