Stocks with Python
Tags: python, stocks
Published: 2020-06-04 22:34:22

####Intro
This application pulls live stock data in json format then parses the data accordingly. It requires an API key which can be requested at this link https://www.alphavantage.co/support/#api-key.

####Installation 
In order to run this program, package alpha-vatange is required. Install the package on your localhost or virtual environment using: ``` pip install alpha_vantage ```

####API Key
This portion of the code initializes the API key. The user is also required to specify the stocks in a list format.
```python
apiKey = os.getenv('STOCK_API')
stock_sym = ['GOOGL','FB']
ts = TimeSeries(apiKey)
```
####Weekday
This function is responsible for determining the day of the week. If the end user runs the program during the weekend, data from Friday will be displayed. 
```python
def weekday():
    today_date = date.today()
    weekday = today_date.weekday()

    if weekday <= 4:
        return today_date
    elif weekday == 5 : 
        return datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
    else: 
        return datetime.strftime(datetime.now() - timedelta(2), '%Y-%m-%d')
```
####Stock Data
An API call is made to alpha vantage in this function, and the result is stored in a list. 
```python
def vatage_stock_data(date):
    vantage_data = []
    local_stock_list = []

    for symbol in stock_sym:
        symbol, meta = ts.get_daily(symbol=f'{symbol}')
        vantage_data.append(symbol[f'{date}'])

    for line,name in zip(vantage_data,stock_sym):
        new_dict={f'{name}':line}
        local_stock_list.append(new_dict)

    return local_stock_list
```
####Parse Data
The stock list retrieved via the API call is parsed in this function. This function displays stock analytics that can be easily modified. I chose to display the daily open, close, high, and close. 
```python
def stock_open(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("OPEN",symbol,value['1. open'],sep="-")
    print("\n")

def stock_high(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("HIGH",symbol,value['2. high'],sep="-")
    print("\n")

def stock_low(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("LOW",symbol,value['3. low'],sep=":")
    print("\n")

def stock_close(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("ClOSE",symbol,value['4. close'],sep="-")
    print("\n")
```
####Full Code
```python
import urllib.request
from alpha_vantage.timeseries import TimeSeries
from datetime import date, datetime, timedelta
import os

apiKey = os.getenv('STOCK_API')
stock_sym = ['GOOGL','FB']
ts = TimeSeries(apiKey)

def weekday():
    today_date = date.today()
    weekday = today_date.weekday()

    if weekday <= 4:
        return today_date
    elif weekday == 5 : 
        return datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d')
    else: 
        return datetime.strftime(datetime.now() - timedelta(2), '%Y-%m-%d')

def vatage_stock_data(date):
    vantage_data = []
    local_stock_list = []

    for symbol in stock_sym:
        symbol, meta = ts.get_daily(symbol=f'{symbol}')
        vantage_data.append(symbol[f'{date}'])

    for line,name in zip(vantage_data,stock_sym):
        new_dict={f'{name}':line}
        local_stock_list.append(new_dict)

    return local_stock_list

def stock_open(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("OPEN",symbol,value['1. open'],sep="-")
    print("\n")

def stock_high(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("HIGH",symbol,value['2. high'],sep="-")
    print("\n")

def stock_low(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("LOW",symbol,value['3. low'],sep=":")
    print("\n")

def stock_close(list):
    for i in range(len(list)):
        for symbol,value in list[i].items():
            print("ClOSE",symbol,value['4. close'],sep="-")
    print("\n")

weekday = weekday()
stock_data = vatage_stock_data(weekday)

stock_open(stock_data)
stock_high(stock_data)
stock_low(stock_data)
stock_close(stock_data)
```