BelstrelGit / OtusDataDriven

1 stars 1 forks source link

OtusBigProject Выпускной проект по курсу Data Engineer

Данное приложение реализует Data-driven подход для аналитики и мониторинга показателей с фондовых рынков. Данные на самом низком уровне будут поступать в Apache Kafka из API( Mock Files) , откуда сырые данные в необработанном виде через Kafka Connenct будут доставляться в уровень хранилища Stage(SQL / NoSQL / S3 / parquet / delta и тд) Опционально можно использовать инструменты для переноса данных(Apache Flume / Sqoop /Cast Tools ) . Также из Kafka данные будут забираться и обогащаться Spark Streaming , записываться в Kafka в другой топик и через Kafka Connect сохраняться в слой хранения данных. Из втрого топика обогащенные данные будут поступать в Эластик и следом в Kibana для визуализации. Из слоя хранения данные в целях построения аналитических отчетов будут периодически забираться(Apache Airflow, cron) батч обработкой Spark Batch. Также в целях обучения ML моделей данные могут бытьь предоставлены из слоя хранения , либо уже подготовленные батч обработкой и сохранённые в специальных файлах/таблицах. После обработки данные будут визуализироваться на Jupyter Notebooks . Данная схема не финальная, дополняется и изменяется в процессе разработки. Визуальная схема находиться в pdf файле.

How-to run

- Run analytics app for write and read data from kafka

 cd   ~/OtusDataDriven
make run-appliance

Запуск докера для ноутбука

 cd   ~/OtusDataDriven/SparkNotebooks
docker-compose up --build

Получение токена для ноутбука откройте новое окно терминала!!

 cd   ~/OtusDataDriven/JupyterNotebooks
$ sudo docker-compose -f docker-compose.yml exec jupyter-local jupyter notebook list

открыть папку work и запустить Spark_Batch_Job.ipynb

You could also access the SparkUI for this Job at http://localhost:4040/jobs

## Known issues

- Sometimes you need to increase docker memory limit for your machine (for Mac it's 2.0GB by default).
- To debug memory usage and status of the containers, please use this command:
```bash
docker stats

Оисание дата сета , взато с https://www.kaggle.com/dgawlik/nyse Context This dataset is a playground for fundamental and technical analysis. It is said that 30% of traffic on stocks is already generated by machines, can trading be fully automated? If not, there is still a lot to learn from historical data.

Content Dataset consists of following files:

prices.csv: raw, as-is daily prices. Most of data spans from 2010 to the end 2016, for companies new on stock market date range is shorter. There have been approx. 140 stock splits in that time, this set doesn't account for that. prices-split-adjusted.csv: same as prices, but there have been added adjustments for splits. securities.csv: general description of each company with division on sectors fundamentals.csv: metrics extracted from annual SEC 10K fillings (2012-2016), should be enough to derive most of popular fundamental indicators. Acknowledgements Prices were fetched from Yahoo Finance, fundamentals are from Nasdaq Financials, extended by some fields from EDGAR SEC databases.

Inspiration Here is couple of things one could try out with this data:

One day ahead prediction: Rolling Linear Regression, ARIMA, Neural Networks, LSTM Momentum/Mean-Reversion Strategies Security clustering, portfolio construction/hedging Which company has biggest chance of being bankrupt? Which one is undervalued (how prices behaved afterwards), what is Return on Investment?