Skip to content

Aaron Log

Aaron edited this page Nov 9, 2020 · 21 revisions

Week 1 (8/31 - 9/4): Attempting to schedule an initial meeting with the rest of the team. May get pushed to next week due to conflicting schedules. On the side I have been performing some research on frameworks and APIs.

Week 2 (9/7 - 9/11): Have had 2 meetings so far. One to catch up on the Form Teams Milestone and another to finish the Personas and User Stories Milestone. Personally, I wrote the Marshall Presley Persona, created the wiki pages for the Form Teams Milestone, and have begun testing various potential APIs for stock price grabbing and trend data. For stock price grabbing, I have tested Alpha Vantage (not enough queries per day), pandas-datareader (not live data), and Yahoo Finance. Currently, I’m leaning towards Yahoo Finance but I want to do more research since it has been taken down before (from 2017 - 2019). For trend data I have only tested pytrends.

Week 3 (9/14 - 9/18): None.

Week 4 (9/21 - 9/25): Researched Finnhub API. This seems like our best current option since it is the first free one I have found with a minute limit instead of a daily limit (30 API calls per minute). Collaborated with the rest of the team for the design milestone. Personally, I made the final design using FrameWorks and discussed options for our rough design.

Week 5 (9/28 - 10/2): Read through the guide on how to create a web app in Django that was provided by Professor Vidal. My progress building an app is in this Repo. I have also been working on redesigning the app using FrameWorks to account for our change from an iOS application to a web app.

Week 6 (10/5 - 10/9): Finished my research milestone which can be found at this Repo. I also met with the team to discuss the requirements milestone. Personally, I reformatted the requirements wiki page to better organize the information.

Week 7 (10/12 - 10/16): None.

Week 8 (10/19 - 10/23): Modified README for the Source Control Milestone. Met with team to discuss a plan of action as we move through the rest of the semester. Currently, I am in charge of finding and testing potential APIs. The main one to use currently is Finnhub. I have been working on creating some tests for Finnhub since it is our best bet at having current data with enough API calls per minute.

Week 9 (10/26 - 10/30): Continued research into using Finnhub. During this testing I actually found some really interesting functionality. So far I found out that when using a websocket to obtain current stock data, those pings made to the Finnhub server do not count towards our API call limit. The downside to this however is that it appears that the stock will only update on the websocket when someone else has used an API call to request that specific stock's price. This means that large, highly watched stocks (Apple, Google, Microsoft, etc.) get updated constantly. While smaller stocks do not get updated. This is a very important bit of functionality to know because it means that we do not have to manually update only specific stocks based off of how many people want to view them, it'll just automatically do it for us. This does mean though, that we'll have to add a button to the stocks detailed view which requests a stocks price (and subsequent prediction). Since this would count towards our API calls we'll need a way to regulate the number of calls.

Week 10 (11/2 - 11/6): Have performed more stress tests on Finnhub. I verified that the websocket does not count towards our API call limit by adding more than 30 stocks to one websocket and verify that the number of responses does go past 30 calls / minutes. The next step will be to have a program which performs both simultaneously. I plan to do this by using a library called "django-background-tasks" to have a daemon worker which will constantly run the websocket and another worker which will run a request whenever one is requested. I am performing these tests to ensure that:

  1. Users do not have to wait when a request is made (or in other words that it can be made asynchronously).
  2. The websocket and request worker combo does not drastically impede server performance.

I will be doing more tests on these next week, hopefully by the end of it I can have some good functionality concretely setup.

Clone this wiki locally