Извлечение данных о финансовых индикаторах
из среды Web
Макаренко А. В., научно-исследовательская группа “Конструктивная Кибернетика”, руководитель
из среды Web
Макаренко А. В., научно-исследовательская группа “Конструктивная Кибернетика”, руководитель
Общее количество использованных в посте встроенных функций или символов: 66
Список имен используемых встроенных функций и символов в порядке их появления в коде:
Times (*, ×) | CompoundExpression (;) | Set (=) | $HistoryLength | List ({...}) | Map (/@) | ToString | Part ([[…]]) | DateList | Rule (->, ->) | TimeZone | $TimeZone | Span (;;) | Function (&) | ImportString | URLFetch | Last | Slot (#) | StringJoin (<>) | StringTake | Import | SameQ (===) | StringTrim | StringReplace | StringCases | StringExpression (~~) | Pattern (:) | BlankNullSequence (___) | Flatten | StringSplit | ToExpression | Short | First | Length | Apply (@@) | And (&&, ∧) | Table | Plus (+) | Remove | Accumulate | DateDifference | Partition | Prepend | Red | Blue | Darker | Green | Orange | Brown | DateListPlot | Joined | True | PlotStyle | Directive | Thick | ImageSize | AspectRatio | Power (^) | PlotLabel | Style | PlotLegends | Placed | SwatchLegend | LegendLayout | LegendMarkerSize | Bottom
Список имен используемых встроенных функций и символов в порядке их появления в коде:
Times (*, ×) | CompoundExpression (;) | Set (=) | $HistoryLength | List ({...}) | Map (/@) | ToString | Part ([[…]]) | DateList | Rule (->, ->) | TimeZone | $TimeZone | Span (;;) | Function (&) | ImportString | URLFetch | Last | Slot (#) | StringJoin (<>) | StringTake | Import | SameQ (===) | StringTrim | StringReplace | StringCases | StringExpression (~~) | Pattern (:) | BlankNullSequence (___) | Flatten | StringSplit | ToExpression | Short | First | Length | Apply (@@) | And (&&, ∧) | Table | Plus (+) | Remove | Accumulate | DateDifference | Partition | Prepend | Red | Blue | Darker | Green | Orange | Brown | DateListPlot | Joined | True | PlotStyle | Directive | Thick | ImageSize | AspectRatio | Power (^) | PlotLabel | Style | PlotLegends | Placed | SwatchLegend | LegendLayout | LegendMarkerSize | Bottom
Оригинал данного поста доступен по ссылке.
Введение
Допустим Вы, также как и автор данной заметки, ведёте научные исследования в области приложения математических методов к финансовой сфере. И Вам для анализа понадобились какие-то данные, которые доступны в сети Интернет. Вы можете конечно поступить по “старинке” – взять и скопировать эти данные из интернет браузера в какой-нибудь текстовый редактор, там их распарсить, структурировать и скопировать файл в нужное место. У этого подхода есть несколько “но”, основные из них это: трудности при большом объёме данных или при сложной структуре их организации; низкая эффективность труда при многократных, однотипных запросах. Путь второй – написать на каком-нибудь универсальном языке программирования высокого уровня (например C/C++, C#, Java, Python, PHP, Perl, Ruby, Haskell – читатели продолжают...) собственное приложение (скрипт), которое запросит данные, распарсит их, структурирует и сохранит их в файл или в базу данных. Тогда основные недостатки первого подхода аннулируются, но появляются другие, а именно: скорость разработки, и затраты на отладку. Есть и ещё одна проблема – знание этих самых языков и умение решать на них требуемые задачи. Автор заметки, например, знает С/С++, но в объёме, необходимом для разработки консольных вычислительных приложений (OpenMP, MPI, Intel MKL) для высокопроизводительных кластеров. Как делать запрос к сайту, и парсить HTML на C/C++ – для него это великая тайна. К счастью, есть третий путь.
Для начала вспомним, для чего нам нужны эти самые финансовые (или иные) данные, доступные в сети Интернет. Правильно – для математических манипуляций с ними. Если Вам вполне хватает табличных редакторов (типа Microsoft Exсel), тогда по всей видимости Вам вполне подойдёт описанный выше первый путь. Если считате в чём-то помощней (например PTC MathCAD), то у Вас появляются аргументы для перехода на ещё более мощные решения (см. далее). Если Вы все свои математические расчёты делаете в программах, собственноручно написанных на каком-нибудь из универсальных языков программирования высокого уровня, то это конечно хардкор, но насколько это эффективно? Встречный вопрос: а что эффективно? Автор считает что эффективно – это Wolfram Mathematica. Это и есть третий путь.
Ниже мы продемонстрируем, как с помощью этой программы можно организовать многократную выгрузку данных из Web, их парсинг, структурирование и сохранение. Что касается нативной математической обработки, то её естественно можно (и нужно) проводить в этой же мощной среде. В качестве ремарок. Во-первых, эта заметка возникла не на пустом месте. Автор использовал этот подход (код программы см. ниже) для получения результатов, кратко изложенных в докладе: A.V. Makarenko, Symbolic CTQ-analysis – a new method for studying of financial indicators // International Conference “Advanced Finance and Stochastics” / Book of Abstracts – Moscow, 24-28 June 2013, Steklov Mathematical Institute, pp. 63-64. Презентация доступна по ссылке. Во-вторых, для хардкодеров (а также и халиварщиков) будет полезен пост: Jon McLoone, Code Length Measured in 14 Languages. Текст поста доступен по ссылке.