Michael Khosho

Michael Khosho: Capital Markets Quant Developer, Systems Architect, Software Developer, Product Owner

Back-end Python Developer @ BMO Capital Markets

Quant developer

Pricing, risk and market-data code in production, and a trading system I built and run.

  • BMOReconciled convertible dirty pricing against a second market-data vendor and had the incorrect values replaced.
  • BMORebuilt the nightly counterparty credit-risk pipeline: about 3 hours down to 40 minutes, output matched one-to-one.
  • BMOWrote the ETF decomposition feed: daily index units, weights, NAV and creation units from a vendor API.
  • MBATSSignal-driven execution with risk guardrails, backtests over years of one-minute history, nightly model scoring.
See MBATS

Current role

I own Python and SQL delivery on two capital-markets trading platforms: trade processing, back-office reporting, settlements, counterparty credit risk, pricing and regulatory feeds.

BMO Financial Group, Capital Markets

Backend Python Software Developer
February 2025 to present, Toronto

~500ktrades a day
60tracked initiatives
4audit cycles as control owner
  1. Trade ingestion

    Built an intraday pipeline loading front-office trade deltas every five minutes with batched Oracle MERGE upserts, encoding fallback, failed-file quarantine and a per-file audit trail.

  2. Credit risk

    Cut the nightly counterparty credit-risk job from about three hours to about 40 minutes (~78%) and removed manual restarts, validating output one-to-one against the legacy extract.

  3. Event integration

    Rebuilt a hard-coded monolithic transfer process as a config-driven, multi-entity package publishing trade events to Kafka, with separate extract and publish jobs so publishing can be held or replayed.

  4. Pricing

    Corrected dirty pricing on convertibles by reconciling zero-accrued positions against a second market-data vendor, and drove the platform vendor to replace the values.

  5. Controls

    Added a pre-batch completeness gate so the nightly back-office batch cannot run on a partial day, plus reconciliation reports and severity-tiered alerting before anything reaches clients.

  6. Modernisation

    Moved legacy .NET and JavaScript reporting and credit-risk processes into modular, config-driven Python; the reconciliation suite ran in parallel with the legacy batch before decommission.

  7. Integrations

    Oracle PL/SQL, SQL Server T-SQL, Apache Kafka, IBM MQ, REST and vendor market-data APIs, scheduled through Autosys.

Experience

Employment, and the systems I build and run on my own.

  1. BMO Financial Group, Capital Markets

    Backend Python Software Developer. February 2025 to present

    Current

    Python and SQL trade processing, ETL and reporting on two capital-markets platforms (swaps, loans, ETFs, convertibles, prime brokerage), about 500k trades a day. Details above.

  2. MBATS

    Private trading system. February 2026 to present

    Live, private

    A microservices trading system I designed, built and operate: about twenty Docker services for market data, signal-driven execution with risk guardrails, nightly model scoring, a trade journal and a research UI behind one sign-in gate.

  3. resumeMaster

    Automated job-search pipeline. September 2026 to present

    Live

    Scans LinkedIn and Indeed twice a day, matches postings against my constraints, tailors a résumé and cover letter from a database where every claim cites its source, and applies through the browser. Unknown screening questions come to me by Telegram with a suggested answer. This site is generated from the same database.

  4. ATLAS

    Multi-agent business automation. August 2026 to present

    In development

    A Python platform for delivering AI automations to small service businesses, where a second client is configuration rather than new code. Architecture.

  5. Revature

    L2 Production Support and Software Developer. September 2024 to present, contractor: CitiBank, then BMO

    • L2 production support in ServiceNow for stock-market trading tools and applications.
    • Trading tools for traders in US and Canadian stocks, securities and bonds.
    • RESTful APIs with Python, Flask, SQLAlchemy and Azure DB.
    • CI/CD with Ansible, Jenkins and Pytest; messaging with RabbitMQ and Celery.
  6. Horizon Digital

    Software Developer and Data Analyst. July 2021 to September 2024, remote

    • Designed, developed and deployed web applications with cross-functional teams: HTML, CSS, JavaScript, Angular, SOAP, .NET, SQL and Git.
    • Agile delivery with modular codebases.
  7. University of Windsor

    BSc, Computer Science

    Web systems development, operating systems, object-oriented programming in Java, data structures and algorithms, computer architecture.

Under the hood

How each system is put together, drawn at the level of its architecture. Strategy rules, results, client work and internal names stay private.

MBATS, a private trading system

Live, privateML gating and sizing: planned

Personal project, February 2026 to present. 348 of 372 commits and 106 merged pull requests are mine; the rest is the open-source base it started from. The strategy was specified by a collaborator. Access is limited to its two operators; the public demo runs on synthetic data.

Walkthrough of the public demo, 1 min 13 s, no sound. Every figure on screen is synthetic demo data.
Market data and signal alerts feed an execution service that places orders with risk guardrails and logs every event to PostgreSQL. A research plane of backtests, scheduled pipelines and experiment tracking writes results to the same database. Web apps read it behind one sign-in gate. Research never changes execution directly. Market databroker gateway Signal alertsdirect webhook Executionde-dupe, guardrailsorder management PostgreSQLevent log, results History1-minute bars ResearchAirflow, MLflownightly scoring Web appsjournal, research UIone sign-in gate
Architecture only. Strategy rules and results are private.
  1. Two planes: research changes freely while execution stays fixed; new behaviour ships switched off behind pre-registered gates.
  2. A direct webhook replaced a chat-relay hop, removing about one to three seconds and a class of silent failures.
  3. Model scoring fails open and execution fails closed: a missing score never blocks or alters an exit.
  4. No ML stack inside the execution container; models score nightly and execution only attaches the result.
  5. 543 tests, including a regression suite numbered by incident, and a 75-incident troubleshooting log.

Python, FastAPI, Pydantic, SQLAlchemy, PostgreSQL, Airflow, MLflow, XGBoost, Optuna, PyTorch, Vue 3, React with TypeScript, Docker Compose, nginx, Firebase Auth

resumeMaster, an automated job-search pipeline

Live

Personal project, September 2026 to present. I designed it and directed the build; much of the code was written with Claude Code. 41 commits, 10 pull requests, 97 tests.

Architecture and a tour of the control panel, 1 min 8 s, no sound.
A scheduler runs twice a day: scan job boards, match postings against constraints, tailor a résumé and letter, and apply through the browser. Everything reads and writes one SQLite database loaded from source-cited seed records. Unknown screening questions go to Telegram and replies flow back. A control panel and tracker read the same database. Schedulertwice a day ScanLinkedIn, Indeed Matchfilter, score Tailorrésumé, letter Applybrowser Seed recordsevery claim cited SQLite, the database of recordprofile, skills, postings, applications, runs Telegramquestions control panel, tracker, this website
The loader refuses any record without a source, so nothing it generates can claim more than the records show.
  1. One database of record with fail-closed provenance: every highlight and skill must cite the document it came from.
  2. Applications stop at the review step unless auto-submit is switched on; a kill switch pauses the agent.
  3. Questions the forms ask that it cannot answer from records go to me with a suggested answer; one reply answers the same question worded differently.
  4. Everything is local and inspectable: SQLite, plain files, one command-line entry point.

Python 3.12, SQLite, FastAPI, Playwright, ReportLab, Telegram Bot API

Intraday trade ingestion

In production at BMO

Software developer, October 2025 to September 2026.

Front-office trade deltas arrive every five minutes. Each file is tracked in a payload table, merged into Oracle in batches of 250, and moved to quarantine if it fails, with a fallback across encodings. A completeness gate holds the nightly back-office batch until the day is whole.

Outcome: five-minute loads with per-file auditability, duplicates eliminated, and encoding failures no longer stall the queue.

Python, Oracle, Autosys

ATLAS, multi-agent business automation

In development

Personal project, August 2026 to present. I designed the system, wrote the specification and the core, and directed AI-assisted implementation of several subsystems. Over 700 tests. Nothing is deployed for real users yet.

Taking on a second client is configuration rather than new code. Every stage is stateless, auditable and gated by deterministic checks.

An orchestrator holds all state and routes work to stateless agents. Agents call models only through an LLM gateway that can replay recorded responses, write knowledge only through a librarian into a versioned vault with provenance rules, and send anything outbound through guardrails and human approval gates. Orchestratorstate, 3 human gates Agentsstateless LLM gatewayrecord / replay, schema-checked Skills layerruntime, solver Librarian and vaultgit-backed, provenance rules Guardrailsconsent, approvals evaluation harness
Architecture only. Client work and business details are private.
  1. All state and memory live in two places, so every other agent is stateless, testable alone and safe to re-run.
  2. The orchestration framework stops at the orchestrator; no shared skill depends on it.
  3. No language model inside a gate, a solver or the runtime. Those cores are deterministic.
  4. Provenance is enforced by the vault schema: every claim needs a source or a derivation.
  5. CI never calls a model: tests replay recorded responses, and an unbound provider is an error, never a fallback.

Python 3.12, Pydantic, LangGraph, SQLite, OR-Tools CP-SAT, pytest, ruff, mypy strict, GitHub Actions

Stack

Each tool is listed with where I used it.

Languages and craft

  • Python BMO, MBATS, resumeMaster
  • SQL BMO
  • C# Horizon Digital
  • Java BSc
  • JavaScript Horizon Digital
  • TypeScript MBATS
  • C/C++ Horizon Digital
  • OOP BSc
  • Software Development Horizon Digital
  • Software Engineering Horizon Digital

Back-end and APIs

  • FastAPI MBATS, resumeMaster
  • Flask Revature
  • RESTful APIs Revature, BMO
  • Pydantic ATLAS
  • SQLAlchemy Revature
  • Apache Kafka BMO
  • IBM MQ BMO
  • RabbitMQ and Celery Revature

Data and storage

  • Oracle BMO
  • SQL Server BMO
  • PostgreSQL MBATS
  • SQLite resumeMaster, ATLAS
  • ETL BMO
  • Data reconciliation BMO
  • Data Analysis Horizon Digital

Quant and ML

  • Capital markets BMO
  • Counterparty credit risk BMO
  • Pricing and valuation BMO
  • XGBoost, PyTorch MBATS
  • LLM evaluation and RAG ATLAS
  • OR-Tools ATLAS
  • Machine Learning MBATS
  • Neural Networks MBATS
  • Quant Development MBATS

Infrastructure and DevOps

  • Docker MBATS
  • Airflow MBATS
  • Autosys BMO
  • Playwright resumeMaster
  • Git and GitHub Actions ATLAS
  • Jenkins, Ansible Revature
  • nginx MBATS
  • Linux Horizon Digital
  • Operating Systems BSc
  • Hardware Architectures BSc
  • IT Hardware Horizon Digital
  • MS Office Horizon Digital

Front-end

  • HTML, CSS Horizon Digital
  • Angular 2+ Horizon Digital
  • Vue 3 MBATS
  • React MBATS
  • Web Development Horizon Digital
  • Computer Graphics Horizon Digital
  • OpenGL Horizon Digital

Working style

  • Critical Thinking Horizon Digital
  • Strong Mathematics Horizon Digital
  • Organized Horizon Digital
  • Powerful Communication Skills Horizon Digital
  • Proficient in Sales Horizon Digital
  • Financial Literacy Horizon Digital
  • Time Efficient Horizon Digital

More work

Live demos and earlier projects.

About

Tech Geek, Fitness Enthusiast, Amateur Chef, Computer Scientist

Highly-ambitious, creative and innovative individual. Greatly intrigued by technology, strategy, philosophy, fitness, psychology and history.

Seeking a position as a data analyst, software developer, web developer or machine learning/AI engineer.

Roles I've worked toward: Data Analyst, Software Engineer, Software Developer, Machine Learning Engineer, Full-Stack Web Developer, Quant Developer.

LinkedIn   GitHub

TechnologyStrategyPhilosophyFitnessPsychologyHistoryMK

Contact

Email MichaelKhosho716 [at] gmail [dot] com

Resume