convert2monthly

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

Описание

пример

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

пример

TT2 = convert2monthly(___,Name,Value) задает опции с помощью одного или нескольких дополнительных аргументов пары "имя-значение" в дополнение к входному параметру в предыдущем синтаксисе.

Примеры

свернуть все

Примените отдельные методы агрегации к связанным переменным в timetable при поддержании непротиворечивости между агрегированными результатами при преобразовании в ежемесячную периодичность. Можно использовать convert2monthly агрегировать и внутриежедневные данные и агрегированные ежедневные данные. Эти методы результат в эквивалентном ежемесячном журнале агрегируются. Наконец, вы можете итоговые результаты в определенный день каждого месяца (например, 15-е), а не конец по умолчанию месяца.

Загрузите расписание (TT) из симулированных данных о курсе акций и соответствующих логарифмических возвратов. Данные хранимы в TT зарегистрирован неоднократно в течение дня в рабочие дни Нью-Йоркской фондовой биржи (NYSE) с 1 января 2018, до 31 декабря 2020. Расписание TT также включает осведомленность бизнес-календаря NYSE. Если ваше расписание не считает в течение многих нерабочих дней (выходные, праздники и закрытия рынка), добавьте осведомленность бизнес-календаря при помощи addBusinessCalendar сначала.

load('SimulatedStock.mat','TT');
head(TT)
ans=8×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    02-Jan-2018 11:52:11    100.71     0.0070749
    02-Jan-2018 13:23:09    103.11      0.023551
    02-Jan-2018 14:45:30    100.24     -0.028229
    02-Jan-2018 15:30:48    101.37       0.01121
    03-Jan-2018 10:02:21    101.81     0.0043311
    03-Jan-2018 11:22:37    100.17      -0.01624
    03-Jan-2018 14:45:20     99.66    -0.0051043
    03-Jan-2018 14:55:39    100.12     0.0046051

Первые совокупные внутриежедневные цены и возвращаются к ежедневной периодичности. Обеспечить непротиворечивость между ценами и возвращается за любые данные цены агрегата торгового дня путем создания отчетов о последней записанной цене с помощью "lastvalue" и агрегат возвращается путем подведения итогов всех логарифмических возвратов с помощью "sum".

TT1 = convert2daily(TT,'Aggregation',["lastvalue" "sum"]);
head(TT1)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    02-Jan-2018    101.37     0.013607 
    03-Jan-2018    100.12    -0.012408 
    04-Jan-2018    106.76     0.064214 
    05-Jan-2018    112.78     0.054856 
    08-Jan-2018    119.07     0.054273 
    09-Jan-2018    119.46      0.00327 
    10-Jan-2018    124.44     0.040842 
    11-Jan-2018    125.63    0.0095174 

Используйте convert2monthly агрегировать данные к ежемесячной периодичности и сравнить результаты двух разных подходов. Первый подход вычисляет ежемесячные результаты путем агрегации ежедневной газеты, агрегируется, и второй подход вычисляет ежемесячные результаты путем прямой агрегации исходных внутриежедневных данных. Обратите внимание на то, что несмотря на то, что convert2monthly отчеты заканчиваются в прошлый рабочий день каждого месяца по умолчанию, можно сообщить о ежемесячных результатах относительно 15-го из каждого месяца при помощи дополнительного аргумента пары "имя-значение" 'EndOfMonthDay'.

tt1 = convert2monthly(TT1,'Aggregation',["lastvalue" "sum"],'EndOfMonthDay',15); % Daily to monthly
tt2 = convert2monthly(TT ,'Aggregation',["lastvalue" "sum"],'EndOfMonthDay',15); % Intra-daily to monthly

head(tt1)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    12-Jan-2018    125.93      0.23056 
    15-Feb-2018    120.55    -0.043662 
    15-Mar-2018    113.49     -0.06035 
    13-Apr-2018    112.07    -0.012591 
    15-May-2018    110.47     -0.01438 
    15-Jun-2018     99.06     -0.10902 
    13-Jul-2018     95.74     -0.03409 
    15-Aug-2018     99.94     0.042934 

head(tt2)
ans=8×2 timetable
       Time        Price     Log_Return
    ___________    ______    __________

    12-Jan-2018    125.93      0.23056 
    15-Feb-2018    120.55    -0.043662 
    15-Mar-2018    113.49     -0.06035 
    13-Apr-2018    112.07    -0.012591 
    15-May-2018    110.47     -0.01438 
    15-Jun-2018     99.06     -0.10902 
    13-Jul-2018     95.74     -0.03409 
    15-Aug-2018     99.94     0.042934 

Заметьте, что результатами двух подходов является то же самое. В течение многих месяцев, в которых 15-м не является торговый день NYSE, функциональные результаты отчетов в предыдущий рабочий день.

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

Загрузите расписание (TT) из симулированных данных о курсе акций и соответствующих логарифмических возвратов. Данные хранимы в TT зарегистрирован неоднократно в течение дня в рабочие дни Нью-Йоркской фондовой биржи (NYSE) с 1 января 2018, до декабря 31,2020. Расписание TT также включает осведомленность бизнес-календаря NYSE. Если ваше расписание не считает в течение многих нерабочих дней (выходные, праздники и закрытия рынка), добавьте осведомленность бизнес-календаря при помощи addBusinessCalendar сначала.

load('SimulatedStock.mat','TT')
head(TT)
ans=8×2 timetable
            Time            Price     Log_Return
    ____________________    ______    __________

    02-Jan-2018 11:52:11    100.71     0.0070749
    02-Jan-2018 13:23:09    103.11      0.023551
    02-Jan-2018 14:45:30    100.24     -0.028229
    02-Jan-2018 15:30:48    101.37       0.01121
    03-Jan-2018 10:02:21    101.81     0.0043311
    03-Jan-2018 11:22:37    100.17      -0.01624
    03-Jan-2018 14:45:20     99.66    -0.0051043
    03-Jan-2018 14:55:39    100.12     0.0046051

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

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

    02-Jan-2018 11:52:11    100.71     0.0070749         0.0071  
    02-Jan-2018 13:23:09    103.11      0.023551       0.023831  
    02-Jan-2018 14:45:30    100.24     -0.028229      -0.027834  
    02-Jan-2018 15:30:48    101.37       0.01121       0.011273  
    03-Jan-2018 10:02:21    101.81     0.0043311      0.0043405  
    03-Jan-2018 11:22:37    100.17      -0.01624      -0.016108  
    03-Jan-2018 14:45:20     99.66    -0.0051043     -0.0050913  
    03-Jan-2018 14:55:39    100.12     0.0046051      0.0046157  

Создайте функцию, чтобы агрегироваться, простые возвраты и вычислить ежемесячный журнал агрегируется. Обеспечить непротиворечивость между ценами и возвращается, в течение любого данного месяца, совокупных цен путем создания отчетов о последней записанной цене при помощи "lastvalue" и сообщите о логарифмических возвратах путем подведения итогов всех прошедших логарифмических возвратов при помощи "sum".

Заметьте, что функция агрегации для простых возвратов управляет вдоль первого (строка) размерностью и не использует недостающие данные (NaNs). Для получения дополнительной информации о пользовательских функциях агрегации смотрите timetable и retime. Когда методы агрегации являются соединением поддерживаемых методов и предоставленных пользователями функций, 'Aggregation' аргумент пары "имя-значение" должен быть задан как вектор ячейки из методов, заключенных в фигурные скобки.

f = @(x)(prod(1 + x,1,'omitnan') - 1);      % Aggregate simple returns
tt = convert2monthly(TT,'Aggregation',{'lastvalue' 'sum' f});
head(tt)
ans=8×3 timetable
       Time        Price     Log_Return    Simple_Return
    ___________    ______    __________    _____________

    31-Jan-2018    122.96      0.20669          0.2296  
    28-Feb-2018    121.92    -0.008494       -0.008458  
    29-Mar-2018     108.9     -0.11294        -0.10679  
    30-Apr-2018    110.38     0.013499         0.01359  
    31-May-2018     99.02     -0.10861        -0.10292  
    29-Jun-2018     96.24    -0.028477       -0.028075  
    31-Jul-2018     97.15    0.0094111       0.0094555  
    31-Aug-2018    101.51     0.043901        0.044879  

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

свернуть все

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

Примечание

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

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

TT = addBusinessCalendar(TT);

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

Аргументы в виде пар имя-значение

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

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

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

Методы агрегации задают, как данные агрегированы за рабочие дни в периодичности внутримесяца или междня. Доступные методы агрегации:

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

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

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

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

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

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

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

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

Кроме того, можно задать методы агрегации как указатели на функцию. Чтобы включать недостающие данные, задайте функции как указатели на функцию, которые включают недостающие данные при агрегации данных. Функции агрегации должны принять базовые данные, хранимые в TT1 и возвратите выходной параметр, который является скаляром или вектором-строкой, и должен принять пустые входные параметры. Каждая функция агрегации применена к соответствующей переменной и вызвана по одному. Каждая переменная должна содержать или одну числовую векторную или числовую матрицу. Например, рассмотрите ежедневное расписание, представляющее 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

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

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

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

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

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

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

свернуть все

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

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

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

Введенный в R2021a