equityCurve

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

Описание

пример

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)

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

Входные параметры

свернуть все

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

Примечание

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

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

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

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

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

свернуть все

Указатель на фигуру для графика кривой собственного капитала, возвращенный как объект.

Введенный в R2021a