Skip to content

Latest commit

 

History

History
77 lines (49 loc) · 2.63 KB

File metadata and controls

77 lines (49 loc) · 2.63 KB

Distance Arbitrage (Distarb)

Lint Ruff Tests

A Python desktop application that ranks stock ticker symbols and company names by keyboard-layout-aware edit distance. Built as a capstone project for the University of Utah Master of Software Engineering program.

Overview

Distarb explores the idea that typos in stock ticker searches are not random — they are influenced by the physical proximity of keys on a keyboard. The app combines string edit distance with QWERTY key-distance weighting to surface the most likely intended ticker or company name from a potentially mistyped input.

It also includes an SEC congressional trading disclosure scraper, allowing users to explore recent stock transactions made by U.S. senators.

Features

  • Keyboard-weighted edit distance ranking of ticker symbols
  • Company name fuzzy search using cleaned string matching
  • SEC congressional trading disclosure scraper
  • Interactive PyQt5 GUI with live graph output via PyQtGraph
  • 28 unit tests with CI via GitHub Actions

Tech Stack

Python, PyQt5, PyQtGraph, pandas, yfinance, BeautifulSoup, pendulum, clavier (vendored)

Getting Started

Recommended: use the provided conda environment.

conda create -n distarb python=3.9.15
conda activate distarb
python -m pip install -r requirements.txt
python app/main.py

Or run directly if dependencies are already installed:

python app/main.py

macOS note: if a packaged .app release fails to open, right-click and select Open, or run from terminal:

bash distarb.app/Contents/MacOS/distarb

Running Tests

python -m pytest app/tests.py -v

Class Diagram

diagram

App Screenshot

app

Deliverables

License

MIT


No animals were harmed in the making of this program. However, one particularly happy corgi named Doc received heaps of treats from the treat jar on my desk. As a result, he is becoming a bit of a chunk.