equityCurve

Постройте кривые акции стратегий

Описание

пример

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)

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

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

свернуть все

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

Примечание

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

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

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

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

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

свернуть все

Изобразите указатель для графика кривой акции, возвращенного как объект указателя.

Введенный в R2021a