Собственно, вопрос следующего плана:
Есть большой массив данных, порядка 500 000 наблюдений следующего вида:
TICKER.PER.DATE.TIME.OPEN.HIGH.LOW.CLOSE.VOL
GAZP.D.20060123.000000.239.0000000.239.0000000.218.4900000.218.8900000.5078252
GAZP.D.20060124.000000.220.5000000.224.6800000.219.6600000.224.0000000.8971078
GAZP.D.20060125.000000.225.2000000.231.0000000.225.0000000.228.3800000.15467697
GAZP.D.20060126.000000.228.9000000.229.4100000.223.5100000.224.4700000.7585458
GAZP.D.20060127.000000.226.2000000.231.5000000.224.0000000.228.7500000.12719299
Для простоты каждая из этих строк является наблюдением с 9-ю различными переменными. Для начала нам необходимо из этих данных выделить последовательность наблюдений, в которых заданное правило типа:
open[i]>open[i-1]& close[i]>close[i-1]
исполняется и где [i-1]является предыдущим наблюдением, [i]является текущим наблюдением, после которого нас интересует как меняется цена в дальнейшем через какое-то кол-во наблюдений, будь то 3/5/7/10 периодов и т.п.
Допустим:
[i-N]...............................................................................................................................
[i-3] GAZP.D.20131204.000000.139.0600000.139.9800000.135.7100000.136.2600000.75914790
[i-2] GAZP.D.20131205.000000.137.0200000.137.8000000.134.8100000.135.2500000.60114330
[i-1] GAZP.D.20131206.000000.135.7100000.137.9400000.135.0000000.137.4800000.57176190
[i] GAZP.D.20131209.000000.137.7500000.138.8500000.136.6100000.138.4300000.52689680
[i+1] GAZP.D.20131210.000000.138.6000000.138.7500000.136.9000000.137.6100000.43531940
[i+2] GAZP.D.20131211.000000.137.1000000.137.8700000.135.8100000.137.0400000.42658230
[i+3] GAZP.D.20131212.000000.135.7500000.136.1800000.133.5500000.134.1600000.65908040
[i+4] GAZP.D.20131213.000000.134.1800000.134.8700000.132.6900000.133.3800000.62409420
[i+5] GAZP.D.20131216.000000.132.7000000.136.6000000.132.3200000.136.5000000.74785600
[i+6] GAZP.D.20131217.000000.136.5000000.139.0800000.136.2300000.138.5500000.75623300
[i+7] GAZP.D.20131218.000000.139.0000000.139.8800000.137.3600000.139.8700000.64051730
[i+8] GAZP.D.20131219.000000.141.0100000.142.4800000.140.1400000.140.4500000.68051170
.............................................................................................................
[i+N]
Мы видим что 9 декабря данное условие выполняется, так как цена open ,больше чем цена open за 6 декабря и цена close текущего периода больше цены close от 6-го декабря. Далее необходимо эту последовательность зафиксировать в отдельный файл (к примеру перевести данную последовательность наблюдений подчиняющуюся указанному выше правилу в одно новое наблюдение). Интересуют строки начиная с [i-2], до [i+10].
Что нужно сделать далее, собрав определённое кол-во данных:
Необходимо сравнить все вновь полученные наблюдения и посчитать как в процентах, так и в абс.числах:
-На сколько в среднем изменилась цена close через 3/5/7/10 дней,
-Какое было в среднем максимальное значение параметра high за эти 3/5/7/10 дней.
-Какое было в среднем максимальное значение параметра high за эти 3/5/7/10 дней.
А теперь главный вопрос....в какой среде это можно сделать? Позволяет ли SPSS выполнить все выше перечисленное или нужно пользоваться иным софтом?
Не могу сказать за SPSS, но в RStudio с предустановленными пакетами и dplyr (хотя он необязателен, но, по-моему, в нём работа с датафреймами удобнее) всё реализуемо.
Загружаете исходные данные в датафрейм.
Производите выборку строк с условием для переменных, которое вы написали, в новый датафрейм. В dplyr за выборку строк отвечает функция filter().
Для изменения построения строк и столбцов в датафрейме можно воспользоваться функциями mutate() и melt().
Дальше построить посчитать среднее, максимальное и минимальное значение поможет функция summarise() из dplyr. Ну а графики можно построить либо с помощью предустановленных функций (plot()), либо с помощью пакетов lattice или ggplot2.
Полученные данные можно записать в файл (txt, xls/xlsx, csv, html, pdf).