exponenta event banner

equityCurve

Построить кривые собственного капитала стратегий

Описание

пример

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)

Figure contains an axes. The axes with title Equity Curve contains an object of type line. This object represents EqualWeighted.

Входные аргументы

свернуть все

Механизм обратного тестирования, указанный как backtestEngine объект. Использовать backtestEngine для создания backtester объект.

Примечание

backtester аргумент должен использовать backtestEngine объект, который был запущен с использованием runBacktest.

Типы данных: object

(Необязательно) Допустимый объект оси, указанный как ax объект, который создается с помощью axes. График создается на осях, указанных опционально ax вместо на текущих осях (gca). Необязательный аргумент ax может предшествовать любой из комбинаций входных аргументов.

Типы данных: object

Выходные аргументы

свернуть все

Ручка рисунка для графика кривой долевого участия, возвращенная как объект ручки.

Представлен в R2021a