Этот пример показывает, как использовать расписания, чтобы визуализировать и вычислить еженедельную статистику от моделируемых ежедневных данных о запасе.
Шаг 1. Загрузите данные.
Данные для этого примера находятся в MAT-файле SimulatedStock.mat, который загружает следующее:
Даты, соответствующие ценам акций закрытия, TMW_DATES
Вводные курсы акций, TMW_OPEN
Ежедневно высоко курсов акций, TMW_HIGH
Ежедневно низко курсов акций, TMW_LOW
Цены акций закрытия, TMW_CLOSE, TMW_CLOSE_MISSING
Ежедневный объем проданных, TMW_VOLUME
Данные в таблице, TMW_TB
load SimulatedStock.mat TMW_*
Шаг 2. Создание объекта Timetable.
В расписаниях можно работать с финансовыми временными рядами, а не с векторами. При использовании timetable можно легко отследить даты. Можно управлять рядом данных на основе дат, потому что объект timetable отслеживает администрирование временных рядов.
Используйте функцию MATLAB® timetable, чтобы создать объект timetable. Также можно использовать функцию преобразования MATLAB table2timetable, чтобы преобразовать таблицу в расписание. В этом примере расписание TMW_TT создается из таблицы и только в целях рисунка. После того, как вы создадите объект timetable, можно использовать поле Description объекта timetable сохранить метаинформацию о расписании.
% Create a timetable from vector input TMW = timetable(TMW_OPEN,TMW_HIGH,TMW_LOW,TMW_CLOSE_MISSING,TMW_VOLUME, ... 'VariableNames',{'Open','High','Low','Close','Volume'},'RowTimes',TMW_DATES); % Convert from a table to a timetable TMW_TT = table2timetable(TMW_TB,'RowTimes',TMW_DATES); TMW.Properties.Description = 'Simulated stock data.'; TMW.Properties
ans =
TimetableProperties with properties:
Description: 'Simulated stock data.'
UserData: []
DimensionNames: {'Time' 'Variables'}
VariableNames: {'Open' 'High' 'Low' 'Close' 'Volume'}
VariableDescriptions: {}
VariableUnits: {}
VariableContinuity: []
RowTimes: [1000x1 datetime]
StartTime: 04-Sep-2012
SampleRate: NaN
TimeStep: NaN
CustomProperties: No custom properties are set.
Use addprop and rmprop to modify CustomProperties.
Шаг 3. Вычислите статистику основных данных и заполните недостающие данные.
Используйте функцию summary MATLAB, чтобы просмотреть базовую статистику данных timetable. Путем рассмотрения сводных данных для каждой переменной можно идентифицировать отсутствующие значения. Можно затем использовать функцию fillmissing MATLAB, чтобы заполнить недостающие данные в расписании путем определения метода заполнения.
summaryTMW = summary(TMW); summaryTMW.Close
ans = struct with fields:
Size: [1000 1]
Type: 'double'
Description: ''
Units: ''
Continuity: []
Min: 83.4200
Median: 116.7500
Max: 162.1100
NumMissing: 3
TMW = fillmissing(TMW,'linear');
summaryTMW = summary(TMW);
summaryTMW.Closeans = struct with fields:
Size: [1000 1]
Type: 'double'
Description: ''
Units: ''
Continuity: []
Min: 83.4200
Median: 116.7050
Max: 162.1100
NumMissing: 0
summaryTMW.Time
ans = struct with fields:
Size: [1000 1]
Type: 'datetime'
Min: 04-Sep-2012
Median: 31-Aug-2014
Max: 24-Aug-2016
NumMissing: 0
TimeStep: NaN
Шаг 4. Визуализируйте данные.
Чтобы визуализировать данные о расписании, используйте финансовые функции построения диаграммы, такие как highlow или movavg. В данном примере информация о скользящем среднем значении построена на том же графике для highlow, чтобы обеспечить полную визуализацию. Чтобы получить динамику акций в 2 014, используйте функцию timerange MATLAB, чтобы выбрать строки timetable. Чтобы визуализировать технический индикатор, такой как Расхождение сходимости скользящего среднего значения (MACD), передайте объект timetable в функцию macd для анализа.
index = timerange(datetime('01-Jan-2014','Locale','en_US'),datetime('31-Dec-2014','Locale','en_US'),'closed'); highlow(TMW(index,:)); hold on ema15 = movavg(TMW(:,'Close'),'exponential',15); ema25 = movavg(TMW(:,'Close'),'exponential',25); ema15 = ema15(index,:); ema25 = ema25(index,:); plot(ema15.Time,ema15.Close,'r'); plot(ema25.Time,ema25.Close,'g'); hold off legend('Price','15-Day EMA','25-Day EMA') title('Highlow Plot for TMW')

[macdLine, signalLine] = macd(TMW(:,'Close')); plot(macdLine.Time,macdLine.Close); hold on plot(signalLine.Time,signalLine.Close); hold off title('MACD for TMW') legend('MACD Line', 'Signal Line')

Шаг 5. Создайте ряд энергозависимости и еженедельный отчет.
Чтобы вычислить еженедельный отчет от ежедневных курсов акций, необходимо передискретизировать частоту данных от ежедневной газеты до еженедельника. При работе с расписаниями используйте функции MATLAB retime или synchronize с различными методами агрегации, чтобы вычислить еженедельную статистику. Чтобы настроить данные о расписании к основанию временного вектора, используйте retime и используйте synchronize с несколькими расписаниями.
weeklyOpen = retime(TMW(:,'Open'),'weekly','firstvalue'); weeklyHigh = retime(TMW(:,'High'),'weekly','max'); weeklyLow = retime(TMW(:,'Low'),'weekly','min'); weeklyClose = retime(TMW(:,'Close'),'weekly','lastvalue'); weeklyTMW = [weeklyOpen,weeklyHigh,weeklyLow,weeklyClose]; weeklyTMW = synchronize(weeklyTMW,TMW(:,'Volume'),'weekly','sum'); head(weeklyTMW)
ans=8×6 timetable
Time Open High Low Close Volume
___________ ______ ______ ______ ______ __________
02-Sep-2012 100 102.38 98.45 99.51 2.7279e+07
09-Sep-2012 99.72 101.55 96.52 97.52 2.8518e+07
16-Sep-2012 97.35 97.52 92.6 93.73 2.9151e+07
23-Sep-2012 93.55 98.03 92.25 97.35 3.179e+07
30-Sep-2012 97.3 103.15 96.68 99.66 3.3761e+07
07-Oct-2012 99.76 106.61 98.7 104.23 3.1299e+07
14-Oct-2012 104.54 109.75 100.55 103.77 3.1534e+07
21-Oct-2012 103.84 104.32 96.95 97.41 3.1706e+07
Чтобы выполнить вычисления на записях в timetable, используйте функцию rowfun MATLAB, чтобы применить функцию к каждой строке еженедельного расписания частоты.
returnFunc = @(open,high,low,close,volume) log(close) - log(open); weeklyReturn = rowfun(returnFunc,weeklyTMW,'OutputVariableNames',{'Return'}); weeklyStd = retime(TMW(:,'Close'),'weekly',@std); weeklyStd.Properties.VariableNames{'Close'} = 'Volatility'; weeklyTMW = [weeklyReturn,weeklyStd,weeklyTMW]
weeklyTMW=208×8 timetable
Time Return Volatility Open High Low Close Volume
___________ ___________ __________ ______ ______ ______ ______ __________
02-Sep-2012 -0.004912 0.59386 100 102.38 98.45 99.51 2.7279e+07
09-Sep-2012 -0.022309 0.63563 99.72 101.55 96.52 97.52 2.8518e+07
16-Sep-2012 -0.037894 0.93927 97.35 97.52 92.6 93.73 2.9151e+07
23-Sep-2012 0.039817 2.0156 93.55 98.03 92.25 97.35 3.179e+07
30-Sep-2012 0.023965 1.1014 97.3 103.15 96.68 99.66 3.3761e+07
07-Oct-2012 0.043833 1.3114 99.76 106.61 98.7 104.23 3.1299e+07
14-Oct-2012 -0.0073929 1.8097 104.54 109.75 100.55 103.77 3.1534e+07
21-Oct-2012 -0.063922 2.1603 103.84 104.32 96.95 97.41 3.1706e+07
28-Oct-2012 -0.028309 0.9815 97.45 99.1 92.58 94.73 1.9866e+07
04-Nov-2012 -0.00010566 1.224 94.65 96.1 90.82 94.64 3.5043e+07
11-Nov-2012 0.077244 2.4854 94.39 103.98 93.84 101.97 3.0624e+07
18-Nov-2012 0.022823 0.55896 102.23 105.27 101.24 104.59 2.5803e+07
25-Nov-2012 -0.012789 1.337 104.66 106.02 100.85 103.33 3.1402e+07
02-Dec-2012 -0.043801 0.2783 103.37 103.37 97.69 98.94 3.2136e+07
09-Dec-2012 -0.063475 1.9826 99.02 99.09 91.34 92.93 3.4447e+07
16-Dec-2012 0.0025787 1.2789 92.95 94.2 88.58 93.19 3.3247e+07
⋮