Совокупные данные расписания для ежемесячной периодичности
задает опции с использованием одного или нескольких необязательных аргументов пары "имя-значение" в сложение с входным параметром в предыдущем синтаксисе.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"
.
Заметьте, что функция агрегации для простых возвратов действует вдоль первой (строки) размерности и опускает отсутствующие данные (NaN
с). Для получения дополнительной информации о пользовательских функциях агрегации смотрите 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
TT1
- Данные в совокупности с ежемесячной периодичностьюДанные для агрегирования в ежемесячную периодичность, указанную в виде расписания.
Примечание
NaN
s указывает отсутствующие значения. Метки времени должны быть в порядке возрастания или убывания.
По умолчанию все дни являются рабочими днями. Если ваше расписание не учитывает дни небизнеса (выходные, праздничные дни и закрытие рынка), добавьте осведомленность о бизнес-календаре при помощи addBusinessCalendar
во-первых. Например, следующая команда добавляет логику бизнес-календаря для включения только рабочих дней NYSE.
TT = addBusinessCalendar(TT);
Типы данных: timetable
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
TT2 = convert2monthly(TT1,'Aggregation',["lastvalue" "sum"])
'Aggregation'
- Метод агрегации для TT1
данные для внутримесячной или междневной агрегации'lastvalue'
(по умолчанию) | вектор символов со значением 'sum'
, 'mean'
, 'prod'
, 'min'
, 'max'
, 'firstvalue'
, или 'lastvalue'
| строку со значением "sum"
, "mean"
, "prod"
, "min"
, "max"
, "firstvalue"
, или "lastvalue"
Метод агрегации для TT1
данные для внутримесячной или междневной агрегации, заданные как разделенная разделенными запятой парами, состоящая из 'Aggregation'
и символьный вектор, строка или указатели на функцию, применяемые ко всем временным рядам в TT1
, или вектор камеры из векторов символов, строкового вектора или вектора камеры функции обрабатывает ту же длину, что и количество переменных в TT1
.
Методы агрегирования определяют, как данные агрегируются по рабочим дням во внутримесячной или междневной периодичности. Доступными методами агрегации являются:
'sum'
- Суммируйте значения в каждом месяце или дне.
'mean'
- Рассчитать среднее значение значений в каждом месяце или дне.
'prod'
- Вычислите продукт значений в каждом месяце или дне.
'min'
- Рассчитать минимум значений в каждом месяце или дне.
'max'
- Рассчитать максимальное значение в каждом месяце или дне.
'firstvalue'
- Используйте первое значение в каждом месяце или дне.
'lastvalue'
- Используйте последнее значение в каждом месяце или дне.
Все перечисленные выше методы опускают отсутствующие данные (NaN
s) в вычислениях прямой агрегации. Однако в ситуациях, когда отсутствующие значения появляются в первой строке 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
'Daily'
- Метод внутридневной агрегации данных в TT1
Метод внутридневной агрегации для данных в TT1
, заданная как разделенная разделенными запятой парами, состоящая из 'Daily'
и скалярный вектор символов, строка или указатель на функцию, применяемая ко всем временным рядам в TT1
, или вектор камеры из векторов символов, строковых массивов или вектора камеры функции обрабатывает ту же длину, что и количество переменных в TT1
.
Типы данных: char
| string
| cell
| function_handle
'EndOfMonthDay'
- День месяца, который заканчивается месяцами1
на 31
День месяца, который заканчивается месяцами, задается как разделенная разделенными запятой парами, состоящая из 'EndOfMonthDay'
и скалярное целое число. Для месяцев с меньшим количеством дней, чем EndOfMonthDay
Результаты агрегирования регистрируются в последний рабочий день месяца.
Типы данных: double
TT2
- Ежемесячные данныеЕжемесячные данные, возвращенные как расписание. Функция возвращается NaN
s для переменных в TT2
для месяцев, когда данные не записаны ни в какие рабочие дни для этих переменных в TT1
. Если TT1
находится в порядке возрастания, так же как и TT2
, и если TT1
находится в порядке убывания, так же как и TT2
.
Первое свидание в TT2
является последней рабочей датой месяца, в котором первая дата в TT1
происходит, при условии TT1
имеет рабочие даты в этом месяце, в противном случае первая дата в TT2
является следующей бизнес-датой в конце месяца.
Последняя дата в TT2
является последней рабочей датой месяца, в котором последняя дата в TT1
происходит, при условии TT1
имеет рабочие даты в этом месяце, в противном случае последняя дата в TT2
является предыдущей бизнес-датой в конце месяца.
convert2annual
| convert2daily
| convert2quarterly
| convert2semiannual
| convert2weekly
| timetable
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.