├── .gitignore ├── Preprocess Stock Data.ipynb ├── README.md ├── floyd_requirements.txt └── stock2vec.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints/ 2 | input/ 3 | output/ 4 | .floyd* 5 | -------------------------------------------------------------------------------- /Preprocess Stock Data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## Import to Postgres\n", 8 | "\n", 9 | "Load the prices and fundamentals into postgres." 10 | ] 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "metadata": {}, 15 | "source": [ 16 | "```shell\n", 17 | "DB_NAME=stocks pgfutter csv prices.csv\n", 18 | "DB_NAME=stocks pgfutter csv --fields \"ticker_indicator,date,value\" fundamentals.csv\n", 19 | "```\n", 20 | "\n", 21 | "Setup the prices table.\n", 22 | "\n", 23 | "```sql\n", 24 | "ALTER TABLE import.prices\n", 25 | "SET SCHEMA public;\n", 26 | "\n", 27 | "ALTER TABLE prices ALTER COLUMN \"date\" \n", 28 | "SET DATA TYPE date \n", 29 | "USING date::date;\n", 30 | "\n", 31 | "CREATE INDEX idx_prices_date \n", 32 | "ON prices(date);\n", 33 | "```\n", 34 | "\n", 35 | "Setup the fundamentals materialized view.\n", 36 | "\n", 37 | "```sql\n", 38 | "ALTER TABLE import.fundamentals ALTER COLUMN \"date\" \n", 39 | "SET DATA TYPE date \n", 40 | "USING date::date;\n", 41 | "\n", 42 | "CREATE MATERIALIZED VIEW fundamentals AS\n", 43 | "SELECT split_part(ticker_indicator, '_', 1) as ticker, date, value as epsdil \n", 44 | "FROM import.fundamentals\n", 45 | "WHERE ticker_indicator LIKE '%EPSDIL_MRT';\n", 46 | "\n", 47 | "CREATE INDEX idx_fundamentals_date \n", 48 | "ON fundamentals(date);\n", 49 | "\n", 50 | "CREATE INDEX idx_fundamentals_ticker \n", 51 | "ON fundamentals(ticker);\n", 52 | "```" 53 | ] 54 | }, 55 | { 56 | "cell_type": "markdown", 57 | "metadata": {}, 58 | "source": [ 59 | "## Query and Export\n", 60 | "\n", 61 | "Export the prices with fundamentals. This took about 40 minutes." 62 | ] 63 | }, 64 | { 65 | "cell_type": "markdown", 66 | "metadata": {}, 67 | "source": [ 68 | "```sql\n", 69 | "COPY \n", 70 | "\n", 71 | "(SELECT p.*, \n", 72 | "\n", 73 | "CASE p.epsdil::numeric\n", 74 | "\tWHEN 0 THEN 0\n", 75 | "\tELSE p.adj_close::numeric / p.epsdil::numeric\n", 76 | "END as pe\n", 77 | "\n", 78 | "FROM (\n", 79 | "\tSELECT prices.adj_close, prices.date, prices.ticker,\n", 80 | "\t(\n", 81 | "\t\tSELECT fundamentals.epsdil\n", 82 | "\t\tFROM fundamentals\n", 83 | "\t\tWHERE prices.ticker = fundamentals.ticker\n", 84 | "\t\tAND prices.date >= fundamentals.date \n", 85 | "\t\tORDER BY fundamentals.date DESC\n", 86 | "\t\tLIMIT 1\n", 87 | "\t)\n", 88 | "\tFROM prices\n", 89 | "\tWHERE prices.adj_close IS NOT NULL AND prices.adj_close != ''\n", 90 | ") p\n", 91 | "WHERE p.epsdil IS NOT NULL AND p.epsdil != ''\n", 92 | ")\n", 93 | "\n", 94 | "TO 'prices.csv' (format CSV);\n", 95 | "```" 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": null, 101 | "metadata": { 102 | "collapsed": true 103 | }, 104 | "outputs": [], 105 | "source": [] 106 | } 107 | ], 108 | "metadata": { 109 | "kernelspec": { 110 | "display_name": "Python 3", 111 | "language": "python", 112 | "name": "python3" 113 | }, 114 | "language_info": { 115 | "codemirror_mode": { 116 | "name": "ipython", 117 | "version": 3 118 | }, 119 | "file_extension": ".py", 120 | "mimetype": "text/x-python", 121 | "name": "python", 122 | "nbconvert_exporter": "python", 123 | "pygments_lexer": "ipython3", 124 | "version": "3.6.0" 125 | } 126 | }, 127 | "nbformat": 4, 128 | "nbformat_minor": 2 129 | } 130 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Run on floydhub 2 | 3 | ```shell 4 | floyd run --gpu --mode jupyter --env tensorflow-1.0 5 | ``` 6 | 7 | ## View in Tensorboard 8 | 9 | ``` 10 | tensorboard --logdir output 11 | ``` 12 | -------------------------------------------------------------------------------- /floyd_requirements.txt: -------------------------------------------------------------------------------- 1 | tqdm 2 | --------------------------------------------------------------------------------