The Wayback Machine - https://web.archive.org/web/20201014221315/https://github.com/Nasdaq/hack
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Sep 13, 2017

README.md

Nasdaq's hackathon challenge:

"Best Re-imagination of Markets" - Hack today's financial markets. We are looking for hacks that introduce a new way to look at financial markets.

Examples:

  • Face recognition technology parallel to creating financial landmarks
  • Electrical signal process to find financial signals
  • Using Amazon Alexa, chat bots for financial use case
  • VR for a financial use-case
  • Graph technology for finance
  • Visualization of some analysis; visualize market data as a tree growing
  • Show streaming market data in context of historical norms
  • Identify inflection point on streaming market data
  • Chart of chocolate milk production vs. Nasdaq-100 index performance

Judging Criteria

  • Intersting use of the data
  • Potential impact
  • Technical accomplishment
  • Flair, baby

Sample Data

{
    "Symbol": "NDAQ",
    "DateStamp": "2017-08-10T00:00:00Z",
    "High": 76.7999000000, 
    "Low": 75.5810000000,  
    "Open": 76.0300000000,
    "Close": 75.9200000000, 
    "LastSale": 75.9200000000, 
    "Volume": 750671
}

Address and Usage

URI for realtime stream

ws://34.214.40.112/stream

Parameters

  • Symbols (stock tickers) - one or more, comma seperated
symbol=NDAQ,AAPL,GOOG,MSFT
  • Start date
start=20170101
  • End date
end=20170201

Client WebSocket Examples

Nodejs

    var WebSocket = require('ws');
    var ws = new WebSocket("ws://34.214.40.112/stream?symbol=NDAQ,AAPL,GOOG,MSFT&start=20170101&end=20170201");

    process.stdin.resume();
    process.stdin.setEncoding('utf8');

    process.stdin.on('data', function(message) {
      message = message.trim();
      ws.send(message, console.log.bind(null, 'Sent : ', message));
    });

    ws.on('message', function(message) {
      console.log('Received: ' + message);
    });

    ws.on('close', function(code) {
      console.log('Disconnected: ' + code);
    });

    ws.on('error', function(error) {
      console.log('Error: ' + error.code);
    });

Python 2.7

    import sys
    import websocket
    import thread
    import time

    def on_message(ws, message):
        print message

    def on_error(ws, error):
        print error

    def on_close(ws):
        print "### closed ###"

    def on_open(ws):
        def run(*args):
            for i in range(1):
                time.sleep(1)
                ws.send("Hello %d" % i)
            time.sleep(1)
            ws.close()
            print "thread terminating..."
        thread.start_new_thread(run, ())

    if __name__ == "__main__":
        websocket.enableTrace(True)
        url = 'ws://34.214.40.112/stream?symbol=NDAQ,AAPL,GOOG,MSFT&start=20170101&end=20170201')
        ws = websocket.WebSocketApp(url,
                                    on_message = on_message,
                                    on_error = on_error,
                                    on_close = on_close)
        ws.on_open = on_open
        ws.run_forever()

Python 3 Example

import websocket
import threading
import time
import argparse

def on_message(ws, message):
   print(message)

def on_error(ws, error):
   print(error)

def on_close(ws):
   print("### closed ###")

def on_open(ws):
   def run():
       ws.send("")
       time.sleep(1)
       ws.close()
   threading.Thread(target=run).start()

def main():
   parser = argparse.ArgumentParser(description='gettin some market data')
   parser.add_argument('--start_date', required=True, help="Enter a valid start date in YYYYMMDD format")
   parser.add_argument('--end_date', required=True, help="Enter a valid end date in YYYYMMDD format")
   parser.add_argument('--symbols', required=True, help="Enter a ticker symbol or list of tickers. E.g. NDAQ or NDAQ,AAPL,MSFT")

   args = parser.parse_args()

   websocket.enableTrace(True)

   symbols = args.symbols.split(',')

   for symbol in symbols:
       url = 'ws://34.214.40.112/stream?symbol={}&start={}&end={}'.format(symbol,args.start_date,args.end_date)

       ws = websocket.WebSocketApp(url,
                                   on_message = on_message,
                                   on_error = on_error,
                                   on_close = on_close)
       ws.on_open = on_open
       ws.run_forever()

if __name__ == "__main__":
  main() 
You can’t perform that action at this time.