## Inspiration

We wanted to work with financial data, but wanted to approach the problem in a novel manner.

## What it does

It converts stock prices to sound and more generally frequencies; then performs signal processing algorithms to
analyze the data.

## How we built it

We used Python (Pandas, Numpy, Scipy) to gather, format, and convert the stock price data from the Nasdaq API into
frequencies. We also used Tensorflow to implement a convolutional neural network that would classify frequencies into industries. We then used Flask to build the webapp, as well as using D3.js and p5.js for the graphs and visualizations.

## Challenges we ran into

Preprocessing and cleaning the dataset required tedious techniques to use the data, as certain companies had missing values.

## Accomplishments that we're proud of

We're proud of creating effective and aesthetic statistical visualizations that look at stock prices in a different manner. We definitely believe that more research can be done in this field to provide valuable insights.

## What we learned

We expanded our knowledge on creating visualizations and also learned about signal processing and sound analysis techniques as well more applications in data science.

## What's next for Sound of Money

We would like to continue our analysis with this sound data, we're in the process of improving our convolutional network to a convolutional recurrent neural network which has been used for feature extraction.
## Background:

Understanding finance as a beginner is a lot like googling "how to code" for the first time. There is a plethora of information available to you, but you just don't know where to start. We wanted to allow our users to pick up basic finance in an interactive way.

## What problem it solves:

Many concepts in economics and finance are based on the expected. A future prediction that no one can make for certain. We thus created a machine learning algorithm which attempts to predict a stocks near future based on trends. This information allows us to walk the user through the different strategies to employ when the information is in front of them. This way, when they make their own predictions they are better prepared.

For ease of use, we created a front end, comprehensive chat bot which explains every step of the way. It also can easily provide a definition or clarify a concept.

## How we built it:

We began by creating the underlying time series ML in R and the chatbot using dialogflow. React is used as the web frontend framework and sends requests to the Flask backend server and the Stdlib service which connects to Dialogflow SDK to handle the chatbot interactions. Requests are sent either straight to the Flask server when a ticker is searched for, or to the Stdlib service and when the response comes back the request is sent to the backend.

Backend is hosted with a Ngrok with a connection between Flask and R studios. React app is hosted on heroku.

## Challenges I ran into

We found it very difficult to link all of our different projects together to work in one streamlined and clean way. With so many moving parts and a lot of ML and AI working together, it was very difficult to make sure that everything was interpenetrated right and worked together to produce our desired output.

## Accomplishments that were proud of

We are extremely proud of our ability to create a machine learning model from scratch that works in a practical situation. Furthermore, the ability to implement something as complex as an artificial intelligence simultaneously while working on the ML is a great feat. We also think that it should be noted that we were able to take an extremely complicated subject of portfolio theory and make it simple and easy to understand.

## What I learned

Every member of the team worked in an area that we have never worked on before. By design we all chose tasks that we were unfamiliar with but thought we could learn. In a lot of cases, we were working in areas that other members of our team had worked before allowing for peer support.

## What's next for FinS.it

Sell the algy to a hedge fund, buy a yatch, etc.
## Inspiration

We are a team of engineering science students with backgrounds in mathematics, physics and computer science. A common passion for the implementation of mathematical methods in innovative computing contexts and the application of these technologies to physical phenomena motivated us to create this project [Parallel Fourier Computing].

## What it does

Our project is a Discrete Fourier Transform [DFT] algorithm implemented in JavaScript for sinusoid spectral decomposition with explicit support for parallel computing task distribution. This algorithm is called by a web page front-end that allows a user to program the frequency/periodicity of a sum of three sinusoids, see this function on a graphical figure, and to calculate and display the resultant DFT for this sinusoid. The program successfully identifies the constituent fundamental frequencies of a sum of three sinusoids by use of this DFT.

## How We built it

This project was built in parallel, with some team members working on DCL integration, web page front ends and algorithm writing. The DFT algorithm used was initially prototyped in Python before being ported over to JavaScript for integration with the DCL network. We tested the function of our algorithm from a wide range of frequencies and sampling rates within the human spectrum of hearing. All team members contributed to component integration towards the end of the project, ensuring compliance with the DCL method of task distribution.

## Challenges We ran into

Though our team has an educational background in Fourier analysis, we were unfamiliar with the workflows and utilities of parallel computing systems. We were principly concerned with (1) how we can fundamentally divide the job of computing a Discrete Fourier Transform into a set of sequentially uncoupled tasks for parallel processing, and (2) how we implement such an algorithm design in the JavaScript foundation that DCL relies on. Initially, our team struggled to define clearly independent computing tasks that we could offload to parallel processing units to speed up our algorithm. We overcame this challenge when we realized that we could produce analytic functions for any partial sum term in our series and pass these exact functions off for processing in parallel. One challenge we faced when adapting our code to the task distribution method of the DCL system was writing a work function that was entirely self-contained without a dependence on external libraries or extraneously long procedural logic. To avoid library dependency, we wrote our own procedural logic to handle the complex number arithmetic that's needed for a Discrete Fourier Transform.

## Accomplishments that We're proud of

Our team successfully wrote a Discrete Fourier Transform algorithm designed for parallel computing uses. We encoded custom complex number arithmetic operations into a self-contained JavaScript function. We have integrated our algorithm with the DCL task scheduler and built a web page front end with interactive controls to program sinusoid functions and to graph these functions and their Discrete Fourier Transforms. Our algorithm can successfully decompose a sum of sinusoids into its constituent frequency components.

## What We learned

Our team learned about some of the constraints that task distribution in a parallel computing network can have on the procedural logic used in task definitions. Not having access to external JavaScript libraries, for example, required custom encoding of complex number arithmetic operations needed to compute DFT terms. Our team also learned more about how DFTs can be used to decompose musical chords into its fundamental pitches.

## What's next for Parallel Fourier Computing

Next steps for our project in the back-end are to optimize the algorithm to decrease the computation time. On the front-end we would like to increase the utility of the application by allowing the user to play a note and have the algorithm determine the pitches used in making the note.

#### Domain.com submission

Our domain name is <http://parallelfouriercomputing.tech/>

#### Team Information

Team 3: Jordan Curnew, Benjamin Beggs, Philip Basaric