Data Science Work Experience
Data Scientist, Systems Engineer -- February 2018 to Present
While working as an algorithm trader I had to develop many tools in-house in order to be competitive with the larger institutional traders. One such tool that significantly improved my ability to watch changes in price/volume across thousands of coins on dozens of markets was "Live DataFrame".
This tool is an-in memory datatable, a pandas dataframe, that updates in a background thread every 5 seconds. It is a python package that you can download and plug into your trading bot or backtesting environment. LiveDataFrame makes it so anyone interested in algorithm trading doesnt have to deal with the complex backend development and data storage/retrieval struggles I went through to get started.
The backend was created with a ruby on rails api and a series of dockerized python microprocesses. This project taught me a great deal about devops, continuous deployment, and microservice networking/architecture. A major design constraint was working with limited RAM resources on the API. The LiveDataFrame allows someone to query up to years of data for thousands of coins at the same time. I had to strike a balance between not overloading the RAM on the API and speedy data delivery to the users every time a request to load the dataframe was made. I solved this problem by using a combination of HTTP streaming, websockets, and 'smart' long-polling from the frontend.
Systems Engineering Achievements:
- Deployed and networked over 20 docker instances to Digital Ocean. This was my first time using Digital Ocean and I found the internal networking functionality to be exactly what I needed. I set up my data pipeline instances, chaos monkey, load balancers, api, and data dashboard instances to be redudnant using their IP switching feature.
- Constructed a data transfer protocol to faciliate the transfer of immense amounts of data between python and rails environments. The protocol took into account available computing resources and servers and then decided how data should be transfered from service to service. If many people were using the service it would choose a slower, and less RAM intensive method. However, if there were machines and RAM available it would then choose the fasted data transfer method, but the most CPU intensive.
- Designed and implemented a python package to act as a frontend for the complex LiveDataFrame API. This allowed users to have years of data for thousands of coins on dozens of exchanges all in one dataframe on the front end. Oh, and the dataframe updates every 5 seconds with new data in a background process making it very easy to get started in the world of algorithm trading.
- Integrated discord with the marketing site and rails api via the creation of an SSO server.
- Designed a "chaos monkey"service to randomly shut down processes/services to ensure my redundant fail safes were working .
- Constructed a "process dashboard" to analyze and alert me if too many processes went down, if one of my servers was overloading on RAM, and to visually represent where data was backing up in data pipeline. This allowed me to ensure zero down-time.
CryptoCurrency Algorithm Trading
Data Scientist, Systems Engineer
Since September 2017, I have been working on the cutting edge of financial data science by analyzing data taken from the cryptocurrency world with a wealth of approaches commonly used in big data analysis. My mission has been twofold: 1) predict price movements across 700 different coins before they happen using machine learning, mathematical, statistical, and financial strategies and 2) act on those price movements by automatically placing buy/sell orders through online tradebots constantly inputting realtime data into a trading strategy/algorithm that produces buy/sell signals.
While finding patterns, correlations, and ‘secrets’ buried in vast amounts of data has been incredibly exhilarating and stimulating, it has not been without its challenges. The biggest challenge has been developing a foundation/ecosystem to support the tradebots. This ecosystem includes microservices for scraping data from multiple crypto exchanges, processing and cleaning it, redundantly storing it, and being able to read millions of records in a few seconds. I have overcome these problems through the creation of a robust data pipeline consisting of 'dockerized' microservices terminating in a custom-built database.
Once collected, analyzing the data has its own set of problems including separating the noise from the signal and developing testable machine learning hypotheses and cost functions. I have overcome these problems with robust data processing/normalizing techniques, creative strategies utilizing popular machine learning frameworks, and by implementing methods found in neurocomputing research journals.
Systems Engineering Achievements:
- Designed and implemented a data pipeline consisting of 'dockerized' microservices that reads, processes, and stores price information for over 700 coins from multiple exchanges every second.
- Constructed a messaging queue for pipeline units to interact with each other using Redis
- Designed a frontend interface for the entire ecosystem (data pipeline, backtest framework, and trade bots). Provides information on tradebot orders/positions/decisions, system errors, and percent gains for different strategies. It also facilitates live updates of tradebot/algorithm variables.
- Designed a custom database that significantly decreased the time required to backtest strategies due to drastically cutting data read-back times. It takes tick data from Mongo and then caches it into binary files and then batches these binary files into a single output. Months of asset data at 20 ticks per second can now be read in seconds!
Data Science Achievements:
- Utilized Python/Pandas to clean, plot, and backtest many different trading strategies/algorithms.
- Implemented multiple, successful machine learning trading strategies using cutting-edge data science tools such as Google’s TensorFlow, Numenta’s Platform for Intelligent Computing (NuPIC), Twitter’s Breakout Detection, and many more.
- Modified modern machine learning ideas and methods from scientific
journals, such as the Journal of Neurocomputing, to function on
financial time-series data. Some examples of these modified strategies
- A Recurrent Neural Network trained to predict trading volume utilizing the derivatives of price, volume, and spread as features.
- Anomaly Detection using a Hierarchal Temporal Memory model with post-prediction statistical filters in order to detect bull/bear price breakouts.
- Twitter’s Breakout Detection Package for detecting anomalies in trading volume.
- Designed and Implemented unique trading strategies based on technical indicators and observation. Some examples include:
- Utilizing a Bandpass Filter to identify which coin is currently oscillating ‘most-similar’ to a Sine wave.
- Utilizing BollingerBands, Simple Moving Averages, and RSI for a simple ‘combined technical indicator’ approach
- Creating a ‘Correlation Report’ tool that generates pairs of assets that have a high inverse correlation in order to hedge bets.
Web/Mobile App Development Work Experience
Full-stack Web Developer -- Remote Contractor (11 Mo's)
Vancouver, BC (Remote)
From February 2017 to December 2017, I had the wonderful opportunity to work alongside some of the best developers in the health information industry. I worked as part of an 8 person Agile development team creating interfaces that help care teams and health organizations better understand their patients as people. Our stack was a Ruby on Rails backend with an Express/React frontend.
PatientWisdom’s development team was incredibly well-managed and I was fortunate enough to gain insight and experience into the best practices of a high-functioning development team operating on an institutional level. In addition to systems design, test-driven development, and pair-programming practices I learned how to contribute and lead as a member of an agile development team. While consulting for PatientWisdom, I substantially improved their acceptance testing process and was referred to as ‘The QA Expert’
- React.js and Redux for the Frontend
- Ruby on Rails for the Backend/API
- GraphQL for interfacing the frontend with DB/Backend
- Express as a 'middle-man' interface between React/Frontend and Rails Backend
- Postgres for DB
- Redis as a data cache and feature flag/configuration store
- Mocha and Enzyme for unit testing React components and Express endpoints
- RSpec for Unit Testing Rails and Ruby Microservices
- Capybara and Cucumber for writing integration tests for entire app.
- Docker for deploying microservices (e.g SSO server)
Skills and Experience:
- Teamwork from 35 hours/week of pair-programming and working with design/product teams.
- System Architecture designing intricate systems linking multiple internal microservices with external APIs and client databases
- Devops from deploying code through staging enviroments to production. Also from building, testing, and running data migrations on production databases.
- Agile/Scrum Methodology from planning meetings every iteration, code reviewing, and acceptance testing code.
LiverIncytes (FDA Compliant Data Collection System )
Full-stack App/API Developer -- Contract (2 Month)
While attending medical school at UBC I was contracted to design and implement an FDA compliant data collection system for a research lab on campus. They were looking for a web app to provide to multiple distributed locations to facilite the uploading of files and data and the subsequent analysis/downloading of it.
A key requirement was to make the app FDA compliant. In order to do this I implemented auditing using rails' audited gem, enforced both server-side and client-side data validations, enforced limited login attempts and auto-logout among many other data security features. Part of this requirement was to split the app into two seperate apps based on the two user roles: researcher and clinician.
Some interesting requirements for this project included the ability to manipulate the database via a .csv upload, download an audit report with full versions and changes, as well as uploading documents using S3 and ActiveStorage.
- Ruby on Rails for the backend and ERB for frontend views
- ActiveStorage and S3 for file uploads
- Surveys.js for surveys
- Postgres for DB
- RSpec for Unit Testing Rails
DEDO - Church Donation Mobile App
Full-stack App/API Developer -- Contract (1 Month)
Dedo is an app designed for the process of ‘alms-giving’ at select churches in Vancouver. It allows church-goers to donate money when they do not have cash by using QR code scanning technology. A church-goer downloads the app, scans the QR code on a donation paper, attaches a monetary value via the app, and then puts the paper in the donation basket.
This project was my first paid react native project. It was built with a ruby on rails backend and react-native frontend. Authentication was done using JRT tokens. In the future I think I would use a more lightweight backend solution such as firebase.
In this project I also implemented automated integration testing utilizing detox. This was a pain at first but proved to be incredibly useful.
- React Native.js and Redux for the Frontend
- Ruby on Rails for the Backend/API
- Postgres for DB
- Expo for the development and automated testing environments.
- Jest and Enzyme for snapshot and unit testing components
- RSpec for Unit Testing Rails
- Detox for writing integration tests.
A 'Micro Performance Review' Platform.
Covalent was created for a group of psychology researchers at Portland State University as a "micro performance review" platform. The entire functionality of the project was built to client specifications, and the UI was entirely my own interpretation of the best way to interact with their desired functionality.
Exciting features include:
- Dynamic Form Creation
- Downloadable Data to Excel Spreadsheets
- Auto-Association of Participants on Sign Up Through URL Params
Other Programming Projects
Hackathon-Winning Facial Recognition Project
PokeMAN GO is a Hackathon-Winning parody application built in a day by myself and three other CodeCore students for the Comedy Hackathon. It allows users to "catch" real people utilizing facial recognition technology.
Our team was the winner of 12 teams as determined by three judges from the comedy and tech world of Vancouver. According to the judges, we won primarily because of our use of the facial recognition technology.
RESTful API, jQuery/Ajax Client, CRUD, OAUTH
The blog app uses OAuth for facebook and google login. It allows favouriting/storing of favourite posts. It allows tagging of posts and grouping by tag/category. A default image is assigned to a post based on what category it is in. This was my first effort at styling a project without bootstrap.
CodeCore Group Project
Indie arcade was a group project for actual clients I contributed to while I attended the CodeCore Web Development Bootcamp.
My main contribution was designing and implementing the image carousel for an individual game's 'show' page. I used the CarrierWave gem for image uploading and the MiniMagik gem for image processing. Furthermore, I utilized jQuery to run the carousel.
This project boosted my Git competency tremendously. For 1.5 weeks I worked alongside 10 of my classmates to integrate many functions into an integration branch and then into production. I gained experience making pull requests and performing code reviews.
Achievements and Awards
Halfway through my CodeCore bootcamp I competed in and won my first Hackathon with 3 of my classmates. We were the least experienced, and youngest, of the 12 teams competing in Vancouver's first Comedy Hackathon.
Developing in a team in a fast-paced environment has been one of the best experiences I've had in my new life as a web developer, and I cannot wait until I can participate in another hackathon.
99% - MCAT Exam Score
99 Perenctile on the Medical College Admission Test
The MCAT is a test which emphasizes problem solving and critical thinking. While it does have an incredible amount of content ranging from physics to organic chemistry, it rewards people who can break a problem down into its component parts. One of the sections is even called "Verbal Reasoning and Problem Solving."
I spent two months studying for the MCAT and I scored in the 99 percenticle which means I am in the top 1% of people who take the MCAT, most of whom are incredibly bright and in the top tiers of their respective science, undergraduate programs.
I achieved this score without an undergraduate in science, and I believe this strongly speaks to my abilities to solve problems and learn lots of content quickly.
$22,000 in Scholarships
For Continued Academic Excellence
I was awarded an entrance scholarship of $5,000 out of high school for academic excellence. This scholarship was renewed every year of my undergraduate (4 years) for my continued academic excellence.
I also recieved the Iola B. Worthington Scholarship ($1,250) from the Gustavson School of Business for being at the top of my class. Finally, I received another $500 from Gustavson for being academically outstanding.
Dean's List (Top 5% GPA)
Peter B. Gustavson School of Business
At my 2015 commencement I graduated on the Dean's List and with distiction due to my GPA.
Best Undergraduate Research Paper
Peter B. Gustavson School of Business
While on exchange in Austria, I wrote an exceptionally detailed research paper analyzing the marketing strategies of Austrian-Born PEZ Candy.
My research paper was chosen from among hundreds of other undergraduate papers to be published in the Gustavson Undergraduate Journal.
Technical Work Experience
Marketing and Business Development Intern
CogniLab is a platform for creating and conducting psychology research via Amazon's Mechanical Turk. I spent a summer working for CogniLab in their office located at the Viatec incubator. It was my introduction into the tech world, and I was hooked.
I was part of the business development team and was responsible for starting their inbound marketing program. I became very familiar with Unbounce and I like to think I was something of a "Hubspot Whisperer" by the end of the summer.
Another key role I played was that of liaison between the business/marketing team and the technical development team. I ended up in this role due to my marketing experience, business knowledge, and fluency with tech jargon and problems. Please see my LinkedIn for more details.
University of Victoria
Computer Help Desk Analyst
As a Computer Help Desk Analyst, I provided front-line technical support for the entire University of Victoria. I fielded e-mails, phone calls, and walk-in visits from students, professors, and staff. I had to be familiar with many types of technologies, and deliver quality customer service to frustrated clients. Once again, my ability to distill technical problems and communicate them to non-technical people helped me tremendously in this role.
I diagnosed complex technical issues, rebuilt computers, reinstalled operating systems, recovered data, removed viruses, and worked with Systems Administrators to solve problems outside of my own scope.
12 week, 60 hour/week, full-stack web development bootcamp.
Technologies learned include:
- Ruby on Rails
- TDD with RSpec
- API Creation
In addition to the above technologies I had many opportunities to practice pair programming and contribute as part of team. Every day we would spend four hours pair programming with a new partner.
Additionally, the entire cohort contributed to a project for the SPCA for two weeks. In this project I gained experience making/reviewing pull requests and maintaining legacy code. I also gained SCRUM experience and familiarity using the Trello project management tool.
University of Victoria
Bachelor of Commerce - Dean's List (3.9/4.0 GPA)
I graduated at the top of my class from the Peter B. Gustavson School of Business at UVic with an exceptional GPA. I focused on finance and accounting, but I was also exposed to many other topics such as marketing, sustainability, project management, international business, and effective human resource management.
At Gustavson, group projects are a large portion of the curriculum. From the multitude of group projects, I was able to develop both strong teamwork skills (in an internationally diverse team) as well as exceptional public speaking skills.
During my time at UVic I had the opportunity to participate in three co-op work terms. I started two businesses for my first co-op: Blue Lotus Events and White Lotus Events. Blue Lotus was a special event company that hosted High School after-grad parties, and White Lotus provided entertainment services for weddings, corporate parties, and other upscale events. My second co-op was with CogniLab: a tech startup in the ViaTech incubator. For my third I worked in UVic's Systems Department as a Computer Help Desk Consultant.
In addition to academics and co-ops, I participated in many extracurriculars. I was a Varsity Athlete on the UVic Sailing Team, I competed in the JDC West business competition on UVic's Finance Team, and participated in many clubs.
Vienna School of Business and Economics
Bachelor of Commerce - Dean's List
I had the unique and wonderful opportunity to attend the University of Business and Economics in Vienna, Austria for 4 months. This was part of Gustavson's international exchange program.
While participating in assignments and projects with other exchange students and local Austrians, I was able to develop a diverse set of cross-cultural competencies. I learned how to communicate, problem solve, and work within diverse teams. Most importantly, I learned how to properly order a schnitzle at my local GastHaus.
In addition to Austria, I had the opportunity to establish meaningful connections with the locals in many countries including: Germany, Finland, the Netherlands, Slovakia, Hungary, Indonesia, and Singapore. While I value the knowledge and skills from my international education, the relationships and lifelong friendships I made with the eclectic set of individuals is what I will remember the most.
Royal Canadian Marine Search and Rescue
SAR Crew Member/Volunteer (since January 2015)
Royal Canadian Marine Search and Rescue (RCMSAR) is a key part of the marine rescue system on the West Coast of Canada. My key responsibilities include being on-call and crisis-ready for one week of every month. This means I am ready to respond to any emergency within 15 minutes, and willing to go out in any type of conditions to fulfill my commitment to save lives on the water.
This volunteer activity requires tremendous teamwork skills, the ability to think/act under pressure, and commitment.
Big Brothers Big Sisters of Canada
Big Brother (September 2015 - June 2016)
As a Big Brother, I mentored my 'Little Brother', a grade 5 student with special needs, for one hour per week. I designed science experiments for us to do together, and played games with my Little Brother to help build his confidence and self-esteem.
St. John Ambulance
First Aid Bridage (January 2016 - September 2016)
The First Aid Brigade is an all-volunteer organization committed to providing First-Aid service at community events. I committed over 50 hours to providing a First-Aid presence at various events in Victoria, BC. In addition, there were weekly First-Aid trainings and a few intensive First-Aid courses.