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