Spécifications
Job Description
I'm seeking an expert Python developer to build a fully automated, institution‑grade options trading bot for my Charles Schwab brokerage account. The core strategy is a Monday‑morning 5‑DTE Iron Condor on SPX weekly options with ultra‑narrow 1‑point wings, a fixed 17‑strike OTM entry, and a layered defense system that actively re‑centers the position when the market moves—then escalates to hard stops if the threat persists.
This bot does not simply fire a static order and wait. It actively manages risk through a configurable multi‑tier circuit breaker, progressing from a soft‑stop roll adjustment to a targeted wing closure and finally to an emergency full‑position unwind. The goal is to capture 60% of max credit while keeping the loss profile rigorously capped.
What the Bot Does (Core Responsibilities):
-
Authenticates securely with the Charles Schwab Trader API every session
-
Every Monday at 10:00 AM ET (configurable), fetches the SPX weekly option chain for the expiration exactly 5 days away
-
Calculates short strikes: 17 strikes out‑of‑the‑money (85 points below/above the current SPX price)
-
Sets long strikes: 1 point below the short put and 1 point above the short call, creating an ultra‑narrow defined‑risk vertical on each wing
-
Submits a NET_CREDIT Iron Condor combo order (all four legs) via the Schwab API, sized conservatively
-
Monitors the position continuously and executes a multi‑tier circuit breaker based on how far the underlying has breached beyond the short strikes:
| Tier | Trigger | Action | Purpose |
|---|---|---|---|
| Tier 1 – Soft-Stop (Rolling Adjustment) | Underlying moves within X points of a short strike (configurable, e.g., 15 points from the short put or call) | Buy back the untested far‑OTM wing, sell a new vertical spread closer to the money on that same side to collect a net credit. This re‑centers the condor, increases total premium, and keeps the position delta‑neutral. | Restore neutrality without closing the profitable side |
| Tier 2 – Threatened Wing Closure | Underlying breaches the short strike and moves beyond by Y points (configurable, e.g., 5 points ITM) | Immediately buy back the entire threatened vertical spread (both legs), capping the loss on that side. The remaining untested wing is left to expire or managed separately. | Hard cap on individual wing loss before it reaches max loss |
| Tier 3 – Emergency Full Unwind | Realized + unrealized loss across the whole position reaches Z% of the credit received (or a fixed dollar amount, configurable, e.g., 300% of net credit) | Close all remaining legs immediately with market orders. | Absolute circuit breaker to protect the account from tail risk |
-
Take Profit Exit: close the entire position (all active legs) when total profit reaches 60% of the maximum possible net credit accumulated across all adjustment cycles
-
All parameters—entry day/time, DTE, strike OTM distance, wing width, tier thresholds, take‑profit percentage—must be easily configurable in a single settings file
Why This Strategy?
The 5‑DTE window captures aggressive theta while allowing time for adjustments. Narrow 1‑point wings define an extremely tight max loss per spread, and the fixed 17‑strike OTM entry creates a neutral, high‑probability starting point. The multi‑tier circuit breaker is what transforms this from a retail iron condor into an institutional risk‑managed position—soft‑stopping to capture more premium when possible, but with pre‑defined hard cutoffs that trigger automatically when the market disagrees.
Strategy & Order Details (For Developer Precision)
| Parameter | Specification |
|---|---|
| Underlying | SPX (or SPXW weekly options) – European‑style, cash‑settled, no early assignment risk |
| Entry Schedule | Every Monday at 10:00 AM ET (configurable), provided a 5‑DTE expiration exists |
| Strike Selection | Short put: SPX price – 85 points (17 strikes OTM) Short call: SPX price + 85 points Long put: short put strike – 1 point Long call: short call strike + 1 point |
| Order Type | 4‑leg combo submitted as a NET_CREDIT Iron Condor via Schwab's /accounts/{accountNumber}/orders endpoint |
| Circuit Breaker Tier 1 (Soft-Stop Roll) | Trigger: underlying ≤ X points from a short strike (e.g., 15 points). Action: Close the untested side's vertical spread and sell a new one at a closer OTM distance, ensuring a net credit. This is a roll adjustment that re‑centers the condor. |
| Circuit Breaker Tier 2 (Wing Closure) | Trigger: underlying breaches a short strike by Y points (e.g., 5 points ITM). Action: Buy back the entire threatened vertical spread to cap loss on that side. |
| Circuit Breaker Tier 3 (Full Unwind) | Trigger: total loss reaches Z times the total net credits collected (e.g., 300%) or a fixed dollar amount. Action: Market order to close all remaining legs. |
| Take Profit Exit | When total realized + unrealized P&L ≥ 60% of the sum of all net credits received from entry and any subsequent rolls |
| Position Sizing | Configurable. Start with 1 contract for live testing. All tier thresholds based on per‑contract metrics. |
Note on SPX strike increments: SPX options often trade in 5‑point intervals. The developer must handle the nearest available strike to the calculated target.
Technical Requirements
-
Language: Python 3.11+
-
API Wrapper: schwab-py (handles OAuth2 authentication and provides clean methods for option chains and order placement)
-
Data: Option chain retrieval using schwab-py 's get_options_chain method
-
Monitoring: Polling every 60 seconds (configurable) during market hours
-
Authentication: Secure OAuth2 flow with token refresh and clear one‑time setup instructions
-
Deployment: Runnable on a cloud VM or local machine; a systemd service file or simple loop is acceptable
Deliverables
-
Main Python script – fully commented, implementing entry, tiered circuit breaker logic, and exit
-
Configuration file ( config.yaml or .env ) with all adjustable parameters
-
requirements.txt specifying schwab-py , pyyaml , python-dotenv , schedule , etc.
-
Setup Guide (README.md) – step‑by‑step from Schwab developer app creation to bot execution
-
Testing Evidence – a demonstration (screenshot or log) showing a valid Iron Condor order, a soft‑stop roll, a tier‑2 wing closure, or take‑profit exit
Budget & Timeline
-
Budget: 750–1,500 USD (negotiable based on experience and proven track record with Schwab API and multi‑leg options adjustments)
-
Timeline: Working prototype within 2–3 weeks, final delivery and verified testing within 30 days of hiring.
Screening Questions (Must Answer to Apply)
-
Have you successfully placed a 4‑leg Iron Condor or similar multi‑leg option order through the Charles Schwab API? Provide brief details.
-
Describe your experience with schwab-py or directly with the Schwab Trader API.
-
Briefly explain how you would structure a multi‑tier risk circuit breaker like the one described, ensuring each tier is triggered by configurable price or loss thresholds and that the bot can track multiple adjustment cycles.
-
Share a link to your MQL5 profile and any relevant past projects (especially those involving options trading automation).
I am looking for a developer who can clearly articulate their technical approach, understands the nuances of SPX options, and can deliver a robust, maintainable solution. All communication and payment must remain on the MQL5 platform.