В этом примере показано, как использовать расписания, чтобы визуализировать и вычислить еженедельную статистику из симулируемых ежедневных данных о запасе.
Шаг 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.Close
ans = 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×5 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×7 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
⋮
timetable
| retime
| synchronize
| timerange
| withtol
| vartype
| issorted
| sortrows
| unique
| diff
| isregular
| rmmissing
| fillmissing