Microsoft works with NDSU's Precision Agriculture department to improve the technology and data quality that farmers may use. This semester, my capstone team and I worked on behalf of Microsoft to create an automated solution that collects, parses, and uploads farm data to an Azure Cosmos database. We then use Power BI to create meaningful visualizations of the data. Our stack includes Microsoft products such as OneDrive, Power Automate, Azure Functions, Cosmos DB, and Power BI. Different data types and structures flow through our system the same way because the parsing logic turns the specified file types into JSON. Since the data is of different structures and we want to gather insights between data sets, turning it into JSON and putting it into a No-SQL database is an efficient way of correlating the data and making visualizations for it. We used Azure's serverless architecture (Azure Functions), and the flow of our product is shown below along with some of the data visualizations.
Upon a valid entry of a ticker, the program scrapes Yahoo Finance to gather important information about the company. After running multiple analyzing algorithms on the data, it displays it to the user over an attractive user interface. The photos below show the full output screen after a successful run for Amazon (AMZN). There you can see all of the data displayed in the simple UI. Visula was built using a Python (with multiple libraries) backend, and an HTML-CSS-Bootstrap-Javascript-Chart.Js frontend.
Hy-Flex the snowplow is currently undergoing a physical makeover, resulting in a software one as well. The mechanical team is switching from a traditional 4 wheel drive body to a pivot, and the software team and I are writing new code for the driving software as well as the turning mechanisms. Hy-Flex is an autonomous snowplow that uses Lidar for vision, ROS as its software framework, and python for scripting. It competes in autonomous snowplow competitions where a self-driving vehicle must plow sections of snow away while being timely and avoiding an obstacle. Hy-Flex won first place in a 4/2021 competition while working collaboratively with Case Western Reserve University's robot, Ottou!
The snowplow at the 2019 competition
Image Credits: Bison Robotics Twitter
Raxu is an in-progress iOS app meant to help users and organizations manage and track inventory. It uses Google's Firebase as its server, more specifically, Firebase's analytics and cloud Firestore. Firestore is a No-SQL database that Raxu uses to do all database operations, including authentication. The UI/UX of Raxu is made to be seamless and minimalistic so users can simply start/join an organization and get to working on projects. After downloading, all users must create an account before using the app (shown below). This allows data to be consistent and accessible from any iOS device, making Raxu a cloud software service application. Since it is likely that users will be accessing Raxu's database concurrently, Google Cloud is the best server to use because of their Firestore "snapshot" method of updating the database in real time.
The Chainlink Editor is a text editor made to rival BBEdit. It works closely with a user's file system with open, close, and save functionality. The current file path is always shown in the top left, also. The stack is WinForms .NET with C#. The user interface is sleek and simplistic, with the font style and size being chosen based on text readability. Since the Chainlink Editor also supports saving file types of scripting and markup languages (HTML, CSS, JavaScript, Python, etc.), spacing, indentation, and margins are all crucial for a better UX.
About
For one Capstone class, four classmates and I made stock market investing algorithms and tested them using Alpaca's paper trading API. The point of the project was to see if certain trading algorithms are better than others, if you're better off randomly trading stocks, or if your money is best kept in a broad index fund. We wrote the scripts in Python and had them automatically execute at 2 pm each day over the course of two months. The different algorithms included: an ML linear regression model, a technical indicator analyzer that bought and sold based on the crossing of the 20 and 50 day moving averages, an algorithm that randomly sold 50 shares and randomly bought 50 shares each day, and a control group that mirrored the S&P 500 Index.
Results
S&P 500: 0.84% Increase
Linear Regression Model: 1.26% Increase
Technical Analysis Model: 0.15% Increase
Random Trading Model: 0.12% Decrease
Over the short-term course of our test, only the ML linear regression model outperformed the S&P 500 index. The technical indicator analyzer gained value but still underperformed the control group. The random trading algorithm lost value, therefore underperforming the control group.