Log in

Previous Entry | Next Entry

Python Retrospective

I started programming in Python early 2004. At the time, I considered myself primarily a Java developer. When I began using Python I was impressed with how much more effective it made me as a developer. Only a few lines of code could accomplish actual tangible functionality. Python has given me a choice of being able to go object-oriented or procedural or even both at the same time. It proved to be virtually omnipresent as it came preinstalled with practically all UNIX environments.

At first I found Python extremely instrumental as a prototyping language. Friends asked me to collaborate in writing a book called “Financial Algorithm Cookbook” (ISBN-13: 978-1411622593). I was tasked with producing implementations for over 60 technical analysis related algorithms such as Standard Deviation, Correlation, Gaussian Distribution, etc. Once I achieved a full understanding of the algorithm and its functionality I was ready port it further to C, Java, and JavaScript.

My first 100% Python project was Dual Trading Market Analysis System that I was contracted to develop. The system was to mine market data from Yahoo Financial website, persist it to RDMS, find a prospective pairs of equities and commodities with a particularly high correlation. The system was to render daily investment suggestions report and was used as a paid service to investors. I used the algorithms from the book, the database was MySQL, Web front-end was developed with use of PSP on Apache web server. The data mining was implemented using Beautiful Soup web parser library.

Backend services for Caissa Chess.app (first iOS chess mobile application)

  • Opening database miner. The script would scrape web for all possible chess openings in FEN notation(Beautiful Soup) and store it in SQLite database to be used in Main application.

  • Push Notification Agent that would provide an interface between Caissa’s server backend and Apple’s Push Notification Server facilities (JSON, SSL, Tornado, APNS protocol over TCP)

  • Caissa Client Provisioning, Authentication/Authorization, Tournaments Standings, DeviceID to APNS destination resolution. (SQLIte, mod_python, web services)

  • Caissa Chess Puzzle Service. A web service that creates a dynamic image(PNG) of a chess position while embedding possible solutions in reversible algebraic notation into metadata section of PNG image file (Python Imaging Library, libPNG, SQLite)

ICAPMobile.app Auxiliary services

  • Push Notification Agent

  • User Agreement Delivery and Acceptance Service (Python CGI, also applies to all items below)

  • Market Connectivity Router and Load-Balancer

  • Location Security Audit, Geographical Policy Enforcement module, Mobile Usage reports (Oracle 11g, Oracle Spatial)

  • TradeNotification Messaging System (unittest)

  • Client Maintenance Framework

  • 7. TwitPie. Twitter publishing gateway (TwittPy)

ICAP FX Forward NDF Matching Engine
An algorithm that evaluates banks schedule to swap currency pairs. The goal is to find a sequence of swaps that would bring originator bank its original instrument at NDF settlement date. The engine would build red-black tree of all swap possibilities while looking for paths that would lead to a closure by the settlement date. The algorithm is very similar to Sudoku puzzle solver. (NumPy)

ICAP Wrightson Research PDF Data Miner
The service would fetch bank’s Condition and Income report from FDIC website. Extract graphical data out of PDF files, process images through OCR module and parse out textual data as an indexed PDF form into a database. (Beautiful Soup, PDFMiner, XPDF, Tesseract, PyOCR, Adobe Distiller, SQLIte)

ICAP Wrightson Calendar for ICAPMobile Application
Economic Calendar Feed for Wrightson Subscribers (Beautiful Soup)

PyTrader. Retail Credit Trading Framework
This agent scans EBay for a particular retailer Gift Card or Store Credit(instrument), calculates a moving average for an instrument,and allows to purchase a store credit at a calculated discount to the face value. The app would monitor eBay commission definitions to calculate minimum selling price,automatically lists purchased securities, tracks securities sales and settlement process. (MySQL, EBay Trading API)

BlueCan of Waves
Industrial networking BlueTooth LE Router. The device brings wireless connectivity options to CANBus J1939 industrial networks. BlueCan mobile application can connect to automotive network (Nissan-Renault dictionaries), open doors, control windows, scan real time engine characteristics such as RPMs, temperate, gas mixture ratio, and fuel consumption rate. The demo app can start Yamaha F150 engines and monitor all aspects along with other data available on NMEA2000 networks (sonar data, AIS, weather reading, anchor chain counters, etc). The demo app can assume remote control of Shindler’s 700 HighRise elevator.

  • CANBus message parser and generator (CANID, PGN, network priority, Destination Masks)

  • J1939 protocol implementation (Network address negotiation, handshake, service discovery, conflict resolution)

  • NMEA2000 network protocol parser and messaging queue with FastPacket support, Unicast support, and pluggable JSON PGN definitions.

  • ECU emulator, BroadcasterQueue, Network emulator and sripted data loader (PySerial)

  • NMEA2000 Python API and debugging tools. (PySerial)

  • Metric - Imperial Unit conversion module for Python

ICAP ETC Video Server
AWS CloudFront CDN video streaming repository. The server would provide a content via one-time use signed URLs (AWS Boto)

ICAP ETC Configuration Managment System
Hierarchical configuration content repository with a support for a structured content, versioning, transactions, observation, and custom workflows. This system allowed real-time configuration management for ICAP primary trading client (Apache, mod_WSGI, cherryPy, JavaScript, jQuery, ZTree, Oracle 11g DRCP)

ICAP Deployment Automation Tool
Release management software to keep track of every backend software module instance and its metadata. The tool can sequentially and concurrently introspect remote environments, detect existent deployment layouts, architecture and dependencies. The system would render distribution to deployment mapping and facilitate further updates in the transactional manner withing workflows defined by QA group, Operations group, and Production Support
(CherryPy, JavaScript, jQuery, AngularJS, NG-GRID, ZTree, SQLite)