convert2monthly

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

Описание

пример

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

пример

TT2 = convert2monthly(TT1,Name,Value) дополнительные опции использования заданы одними или несколькими аргументами 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

Задайте дополнительные пары аргументов как 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
Для просмотра документации необходимо авторизоваться на сайте