convert2monthly

Совокупные данные о расписании к ежемесячной периодичности

Описание

пример

TT2 = convert2monthly(TT1) агрегировал данные (например, данные, зарегистрированные ежедневно или еженедельно) к ежемесячной периодичности.

TT2 = convert2monthly(TT1,Name,Value) дополнительные опции использования заданы одними или несколькими аргументами name-value.

Примеры

свернуть все

Загрузите симулированные данные о курсе акций и соответствующие логарифмические возвраты в SimulatedStockSeries.mat.

load SimulatedStockSeries

Расписание DataTable содержит измерения, зарегистрированные в различные, неправильные времена в течение торговых часов (9:30 к 16:00) Нью-Йоркской фондовой биржи (NYSE) с 1 января 2018, в течение 31 декабря 2020.

Например, отобразите первые несколько наблюдений.

head(DataTable)
ans=8×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    01-Jan-2018 11:52:48       100     -0.025375
    01-Jan-2018 13:23:13    101.14      0.011336
    01-Jan-2018 14:45:09     101.5     0.0035531
    01-Jan-2018 15:30:30    100.15      -0.01339
    02-Jan-2018 10:43:37     99.72    -0.0043028
    03-Jan-2018 10:02:21    100.11     0.0039033
    03-Jan-2018 11:22:37    103.96      0.037737
    03-Jan-2018 13:42:27    107.05       0.02929

DataTable не включает осведомленность бизнес-календаря. Если вы хотите с учетом нерабочих дней (выходные, праздники и закрытия рынка), и вы имеете лицензию Financial Toolbox™, добавляете осведомленность бизнес-календаря при помощи addBusinessCalendar функция.

Агрегируйте ценовой ряд к ежемесячному ряду путем создания отчетов об окончательной цене в каждом месяце.

MonthlyPrice = convert2monthly(DataTable(:,"Price"));
tail(MonthlyPrice)
ans=8×1 timetable
       Time        Price 
    ___________    ______

    31-May-2020    227.22
    30-Jun-2020    224.29
    31-Jul-2020     236.4
    31-Aug-2020     227.5
    30-Sep-2020    246.77
    31-Oct-2020    275.07
    30-Nov-2020    298.87
    31-Dec-2020    301.04

MonthlyPrice расписание, содержащее окончательные цены в течение каждого месяца, о котором сообщают, в DataTable.

Можно применить пользовательские методы агрегации с помощью указателей на функцию. Задайте указатель на функцию к связанным с агрегатом переменным в расписании при поддержании непротиворечивости между агрегированными результатами при преобразовании от ежедневной газеты до ежемесячной периодичности.

Загрузите симулированные данные о курсе акций и соответствующие логарифмические возвраты SimulatedStockSeries.mat.

load SimulatedStockSeries

Включайте другую переменную в данные под названием Simple_Return это содержит простые (пропорциональные) возвраты, сопоставленные с ценовым рядом, и исследуйте первые несколько строк.

DataTable.Simple_Return = exp(DataTable.Log_Return) - 1;  % Log returns to simple returns
head(DataTable)
ans=8×3 timetable
            Time            Price     Log_Return    Simple_Return
    ____________________    ______    __________    _____________

    01-Jan-2018 11:52:48       100     -0.025375      -0.025056  
    01-Jan-2018 13:23:13    101.14      0.011336         0.0114  
    01-Jan-2018 14:45:09     101.5     0.0035531      0.0035594  
    01-Jan-2018 15:30:30    100.15      -0.01339        -0.0133  
    02-Jan-2018 10:43:37     99.72    -0.0043028     -0.0042936  
    03-Jan-2018 10:02:21    100.11     0.0039033       0.003911  
    03-Jan-2018 11:22:37    103.96      0.037737       0.038458  
    03-Jan-2018 13:42:27    107.05       0.02929       0.029723  

Ценовая серия Price содержит абсолютные измерения, тогда как журнал и простой ряд возвратов, Log_Return и Simple_Returns, скорости изменения ценового ряда среди последовательных наблюдений. Поскольку ряды имеют различные модули, необходимо задать соответствующий метод, когда вы агрегировали ряд. А именно, если вы сообщаете об окончательной цене за данную периодичность, необходимо сообщить, что сумма журнала возвращается в каждый период и пользовательское преобразование для простых возвратов.

Создайте функцию, чтобы агрегировать простые возвраты.

f = @(x)(prod(1 + x,1,'omitnan') - 1);  

Агрегируйте данные так, чтобы результат имел ежемесячную периодичность. Для каждого ряда задайте метод агрегации, который подходит для модуля.

TT = convert2monthly(DataTable,Aggregation={'lastvalue' 'sum' f});
head(TT)
ans=8×3 timetable
       Time        Price     Log_Return    Simple_Return
    ___________    ______    __________    _____________

    31-Jan-2018    117.35      0.13462          0.1441  
    28-Feb-2018    113.52    -0.033182       -0.032637  
    31-Mar-2018    110.74    -0.024794       -0.024489  
    30-Apr-2018    105.58    -0.047716       -0.046596  
    31-May-2018     97.88    -0.075727        -0.07293  
    30-Jun-2018     99.29     0.014303        0.014405  
    31-Jul-2018    102.72     0.033962        0.034545  
    31-Aug-2018    124.99      0.19623          0.2168  

Функция агрегации для простых возвратов действует по первому измерению (строка) и не использует недостающие данные (NaNs.

Для получения дополнительной информации о пользовательских функциях агрегации смотрите timetable и retime.

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

свернуть все

Данные, чтобы агрегироваться к ежемесячной периодичности в виде расписания.

Каждая переменная может быть числовым вектором (одномерный ряд) или числовая матрица (многомерный ряд).

Примечание

  • NaNs указывают на отсутствующие значения.

  • Метки времени должны быть в порядке возрастания или убывания.

По умолчанию все дни являются рабочими днями. Если ваше расписание не считает в течение многих нерабочих дней (выходные, праздники и закрытия рынка), и вы имеете лицензию Financial Toolbox™, добавляете осведомленность бизнес-календаря при помощи addBusinessCalendar сначала. Например, следующая команда добавляет логику бизнес-календаря, чтобы включать только рабочие дни NYSE.

TT = addBusinessCalendar(TT);

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

Аргументы name-value

Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

Пример: TT2 = convert2monthly(TT1,'Aggregation',["lastvalue" "sum"])

Метод агрегации для TT1 определение, как к агрегированным данным за рабочие дни в периодичности внутримесяца или междня в виде одного из следующих методов, вектора строки из методов или длины numVariables вектор ячейки из методов, где numVariables количество переменных в TT1.

  • "sum" — Суммируйте значения в каждом году или день.

  • "mean" — Вычислите среднее значение значений в каждом году или день.

  • "prod" — Вычислите продукт значений в каждом году или день.

  • "min" — Вычислите минимум значений в каждом году или день.

  • "max" — Вычислите максимум значений в каждом году или день.

  • "firstvalue" — Используйте первое значение в каждом году или день.

  • "lastvalue" — Используйте последнее значение в каждом году или день.

  • @customfcn — Пользовательский метод агрегации, который принимает табличную переменную и возвращает числовой скаляр (для одномерного ряда) или вектор-строка (для многомерного ряда). Функция должна принять пустые входные параметры [].

Если вы задаете отдельный метод, convert2monthly применяет заданный метод ко всем временным рядам в TT1. Если вы задаете вектор строки или вектор ячейки aggregation, convert2monthly применяет агрегацию (j) к TT1 (: J); convert2monthly применяет каждый метод агрегации по одному (для получения дополнительной информации, смотрите retime). Например, рассмотрите ежедневное расписание, представляющее TT1 с тремя переменными.

         Time         AAA       BBB            CCC       
      ___________    ______    ______    ________________
      01-Jan-2018    100.00    200.00    300.00    400.00
      02-Jan-2018    100.03    200.06    300.09    400.12
      03-Jan-2018    100.07    200.14    300.21    400.28
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      31-Jan-2018    114.65     229.3    343.95    458.60
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      28-Feb-2018    129.19    258.38    387.57    516.76
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      31-Mar-2018    162.93    325.86    488.79    651.72
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      30-Apr-2018    171.72    343.44    515.16    686.88
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      31-May-2018    201.24    402.48    603.72    804.96
          .             .         .         .         .
          .             .         .         .         .
          .             .         .         .         .
      30-Jun-2018    223.22    446.44    669.66    892.88
Соответствующее значение по умолчанию ежемесячно заканчивается, представляя TT2 (в котором все дни являются рабочими днями и 'lastvalue' сообщается в прошлый рабочий день каждого месяца), следующие.
         Time         AAA       BBB            CCC       
      ___________    ______    ______    ________________
      31-Jan-2018    114.65    229.30    343.95    458.60
      28-Feb-2018    129.19    258.38    387.57    516.76
      31-Mar-2018    162.93    325.86    488.79    651.72
      30-Apr-2018    171.72    343.44    515.16    686.88
      31-May-2018    201.24    402.48    603.72    804.96
      30-Jun-2018    223.22    446.44    669.66    892.88

Все методы не используют недостающие данные (NaNs) в прямых вычислениях агрегации на каждой переменной. Однако для ситуаций, в которых отсутствующие значения появляются в первой строке TT1, отсутствующие значения могут также появиться в агрегированных результатах TT2. Чтобы обратиться к недостающим данным, запишите и задайте пользовательский метод агрегации (указатель на функцию), который поддерживает недостающие данные.

Типы данных: char | string | cell | function_handle

Суточный метод агрегации для TT1В виде метода агрегации, вектора строки из методов или длины numVariables вектор ячейки из методов. Для получения дополнительной информации о поддерживаемых методах и поведениях, смотрите 'Aggregation' аргумент значения имени.

Типы данных: char | string | cell | function_handle

День месяца, который заканчивает месяцы в виде скалярного целого числа со значением 1 к 31. В течение многих месяцев с меньшим количеством дней, чем EndOfMonthDay, convert2monthly агрегация отчетов заканчивается в прошлый рабочий день месяца.

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

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

свернуть все

Ежемесячные данные, возвращенные как расписание. Временная договоренность TT1 и TT2 то же самое.

Если переменная TT1 не имеет никаких записей рабочего дня в течение месяца в промежутке времени выборки, convert2monthly возвращает NaN для той переменной и месяц в TT2.

Если первый месяц (month1) из TT1 содержит по крайней мере один рабочий день, первое свидание в TT2 последняя бизнес-дата month1. В противном случае, первое свидание в TT2 следующая дата бизнеса конца месяца TT1.

Если в прошлом месяце (monthT) из TT1 содержит по крайней мере один рабочий день, последнюю дату в TT2 последняя бизнес-дата monthT. В противном случае, последняя дата в TT2 предыдущая дата бизнеса конца месяца TT1.

Введенный в R2021a