Automated trading on Charles Schwab
DeployQuant connects to Charles Schwab through Schwab's official trading API. You log in on Schwab's own site, DeployQuant never sees your password, and a strategy you built can then place orders in your Schwab account. Cash and shares stay in your account in your name. The connection can trade and read. It cannot withdraw or transfer money, and you can disconnect it at any time.
The connection covers US stocks and ETFs. Schwab has no paper trading environment on this connection, so every order on a Schwab deployment is live. Paper trading on DeployQuant is separate: it runs a strategy on the live market feed and needs no broker, so a strategy can be tested that way before it goes to Schwab. Backtests are also separate. The 12 templates in the table further down were each run on 59 ETFs over 5.7 years of minute data, from 2021-01-04 to 2026-10-02, with $10,000 starting capital and no fees in the headline runs.
Ten of the 12 templates can run live at Schwab today. Two are backtest only for now: the 20-day momentum with a trailing stop and the SMA-200 trend with a 15% trailing stop. Trailing-stop exits cannot be deployed live yet at any broker DeployQuant supports, Schwab included.
Schwab's connection is one of three. Webull and Alpaca are the other two, and the order types section compares what each connection supports. The setup section covers the steps, the re-authorization Schwab requires, and the controls that sit between a strategy and a real order.
How it works
- Click Connect on the Brokerage page. You authorize DeployQuant on Schwab's own site with scoped trade and read permissions.
- Build or fork a strategy and backtest it on minute-resolution history.
- Deploy to Schwab with its own cash allocation, isolated in a sleeve.
- Confirm live trading explicitly before the first real order.
- Monitor every decision in the journal; pause anything with one switch.
Schwab's OAuth tokens require periodic re-authorization. DeployQuant emails you a one-link re-auth when needed, and holds orders while the connection is down.
Connecting and deploying
The connection starts on the Brokerage page. You click Connect and Schwab's login opens on Schwab's own site, where you grant scoped trade and read permissions. DeployQuant receives a token. It does not receive your password. This is the OAuth method. Webull and Alpaca connect with API keys instead.
After the connection exists, the path to a live order has five steps. You build or fork a strategy, and you backtest it on minute-resolution history. You deploy it to Schwab with its own cash allocation, which sits in a sleeve. You confirm live trading explicitly, by typing a confirmation, before the first real order goes out. From then on every decision the strategy makes is logged in the journal, and one switch pauses it.
The sleeve is the unit of money. Each deployed strategy has its own cash, positions and profit and loss. Every order is tagged with the strategy that placed it and checked against that sleeve's cash before it is sent, so one strategy cannot spend another's money. Fills go back to the sleeve that placed the order. A strategy that sells everything sells only its own positions, and the other sleeves in the account are unchanged. Two strategies can hold the same symbol in the same Schwab account, with each one's share tracked separately.
Cash in the account that you do not allocate to a sleeve is never traded. Positions you buy by hand stay yours. All sleeves share the one Schwab connection and the one login, and an order management system sends every order down that connection.
Schwab's OAuth tokens expire and need periodic re-authorization. When one is due, DeployQuant emails you a link that takes you through the Schwab login again with one click. While the connection is down, DeployQuant holds orders instead of failing them. If a token lapses, orders stay held until you follow the link.
The safety controls apply to every broker. Price bands refuse limit orders priced too far from the market. Per-order and per-position dollar caps limit size, and a further cap limits the number of orders in one sync. The caps never block an order that reduces exposure. Dry-run mode runs the whole order flow without sending an order to Schwab. One switch pauses a single strategy and another pauses every strategy on the connection. Positions and cash follow Schwab's own fill reports, so the platform's books match what actually filled.
The portfolio page shows the whole account: equity, cash, holdings and each strategy's share. Returns there are deposit-adjusted, so adding money is never counted as profit. The brokerage page shows how the Schwab account splits into sleeves, including the part that no strategy manages. The journal gives the reason for each trade, with the prices and indicator values the strategy saw at that moment.
The free plan includes 1 live strategy. Pro is $10 a month and runs up to 20 live strategies at a time, side by side, with per-strategy cash allocation and top-ups. A strategy can be built from blocks, typed in English or written in Python, and any of the three runs on the same engine.
DeployQuant is software. It is not a broker-dealer, does not hold customer funds or securities, and gives no investment advice. Live trading can lose money, including the money you put in.
What the Charles Schwab connection supports
| Charles Schwab | |
|---|---|
| Order types | Limit, Limit on close, Market, Market on close, Stop, Stop limit, Trailing stop |
| Time in force | Day, Fill or kill, Good till canceled |
| Extended hours | Yes |
| Paper trading account | No, live accounts only |
| How you connect | Log in on Charles Schwab's own site |
| Assets | US stocks and ETFs |
What the Schwab connection can send
The table lists seven order types on the Schwab connection: limit, limit on close, market, market on close, stop, stop limit and trailing stop. A market order buys or sells at the best available price right away. A limit order sets the worst price you will accept. A stop order becomes a market order once the stop price trades, and a stop limit becomes a limit order at that point. The two on-close types, limit on close and market on close, are orders placed to fill in the closing auction. A trailing stop follows the price by a set distance and sells if the price falls back by that distance.
Three time-in-force settings are supported: day, fill or kill, and good till canceled. A day order expires at the close of the session. A fill-or-kill order must fill completely and immediately or it is canceled. A good-till-canceled order stays working until it fills or is canceled, which suits an order that rests for days. Extended-hours orders are supported. The connection handles equities only.
The three connections differ. Alpaca supports limit, market, stop, stop limit and trailing stop orders, with six time-in-force settings: cls, day, fok, gtc, ioc and opg. It also offers a paper environment, which Schwab does not. Webull supports limit, market, stop and stop limit, with day and gtc, and has no paper environment on this connection. Schwab sits between them on order types and is the only one of the three with the two on-close types. For strategies that rest a target order for days, the shared feature is good-till-canceled, which all three support.
The 12 templates use a smaller set than the connection allows. The ten live templates send market orders, and two of them, the weekly 7% target and the dip buyer, also send limit orders. The weekly template rests a profit target at the broker as a limit order the whole time, and DeployQuant maintains it as a managed order. The dip buyer rests a limit order at the entry price times 1.08. A resting target needs an order that lasts beyond the day, which the good-till-canceled setting provides. None of the templates sends a stop, stop-limit or on-close order. Those types are on the connection, and no template exercises them.
Entries and exits that depend on a signal run at the open. A rule such as "buy when the market opens if the 50-day average is above the 200-day" sends a market order after the open, using the previous day's information. The backtests fill on minute bars, with no fees in the headline run and 5 and 10 basis points of slippage in the cost runs. A live market order in a thin fund can fill at a worse price than a minute bar shows.
Build it from blocks (or type it in English), backtest it on 5.7 years of minute data in seconds, tweak any parameter, then paper trade it on live data. No card, no broker needed to start.
The 12 strategy templates on Charles Schwab
| Strategy | Orders it sends | Runs live at Charles Schwab | Median CAGR, 59 ETFs | Strongest ETF |
|---|---|---|---|---|
| RSI(14) Mean Reversion | Market | Yes, all of them | 3.0% | TECL 23.9% |
| RSI(2) Dip Snapback | Market | Yes, all of them | 4.7% | TQQQ 39.3% |
| Golden Cross (SMA 50/200) | Market | Yes, all of them | 2.0% | SOXL 45.9% |
| SMA 10/50 Trend | Market | Yes, all of them | 2.1% | QLD 18.8% |
| EMA 12/26 Trend | Market | Yes, all of them | 2.8% | SOXL 26.2% |
| 200-Day SMA Regime Filter | Market | Yes, all of them | 1.8% | TQQQ 24.9% |
| Weekly Entry + 7% Target | Market, Limit | Yes, all of them | 6.6% | TECL 35.5% |
| Drawdown Dip Buyer + 8% Target | Market, Limit | Yes, all of them | 1.3% | SOXX 27.5% |
| 20-Day Momentum + Trailing Stop | Market, Trailing stop | Backtest only for now: trailing-stop exits are not deployable live yet | 0.0% | QLD 22.5% |
| SMA-200 Trend + 15% Trailing Stop | Market, Trailing stop | Backtest only for now: trailing-stop exits are not deployable live yet | 2.6% | TQQQ 25.0% |
| 3-Month Momentum Switch | Market | Yes, all of them | 0.0% | SOXL 16.4% |
| First-to-Last Day of Month | Market | Yes, all of them | 5.5% | TECL 36.0% |
The templates and where they stand
The table pairs each template with the orders it sends, whether it can run live at Schwab, its median annualized return across the 59 ETFs, and the ETF where it did best. Read the median as the typical result of the rule across a broad list of funds, and the best ETF as the top of the range. The two are far apart for every template.
Eight templates send only market orders and run live: the RSI(14) mean reversion with a median of 2.98% and a best ETF of TECL at 23.89%, the RSI(2) snapback at 4.74% with TQQQ at 39.31%, the golden cross at 2.05% with SOXL at 45.93%, the SMA 10/50 trend at 2.12% with QLD at 18.76%, the EMA 12/26 trend at 2.76% with SOXL at 26.2%, the 200-day regime filter at 1.84% with TQQQ at 24.95%, the 3-month momentum switch at 0% with SOXL at 16.43%, and the monthly cycle at 5.46% with TECL at 35.97%.
The two templates with resting limit orders also run live. The weekly 7% target has the highest median of the 12, 6.61%, with TECL at 35.49% as its best result. The dip buyer has a median of 1.33% and a best ETF of SOXX at 27.48%. Their resting orders are the reason the order types and time-in-force settings matter on this page: a limit order that waits for a profit target must be good till canceled, and Schwab supports that.
The two backtest-only templates are the 20-day momentum with a trailing stop and the SMA-200 trend with a 15% trailing stop. Their medians are 0% and 2.61%, with best ETFs of QLD at 22.49% and TQQQ at 25.03%. These two run in backtests and, for now, not live. The 3-month momentum switch listed above uses no trailing stop. Its 0% median matches the momentum breakout's.
Each live template has a limit that belongs on the page next to its order types. The weekly 7% target sells a losing position on Thursday afternoon, which realizes many small losses by design, and it needs its 7% winners to outnumber them. The dip buyer has no stop-loss, so a position that keeps falling rides down until the 8% target fills or the strategy is stopped, and its trade counts are low enough that single trades dominate the result. The monthly cycle is a research template that holds about 95% of sessions, so its results usually track buy-and-hold minus the boundary days. The RSI(2) snapback is the highest-turnover template in the library, which makes its results sensitive to execution quality, and a real Schwab fill can differ from a backtest fill. The trend rules, the golden cross, the SMA 10/50 and the EMA 12/26, trade less often but lag at turning points.
Three notes on the numbers. First, the best-ETF figures come from the funds where each rule did best over one window, 2021-01-04 to 2026-10-02, and a rule picked after the fact for its best fund carries hindsight. Second, the medians cover all 59 ETFs, including inverse and volatility funds. Third, none of the figures include fees or slippage, and every backtest page shows buy-and-hold on the same window so that a rule can be judged against owning the fund.
To go from a template to a Schwab order, open the template's page, pick a fund from the table of 59 and read its backtest, then fork the rules into the builder. The free plan runs 1 live strategy, so a first strategy can go live without a paid plan. Backtests are hypothetical and say nothing certain about live results, and live trading can lose money.
Frequently asked questions
Can you automate trading on Charles Schwab?
Yes. Connect Charles Schwab to DeployQuant and strategies you build from blocks or plain English trade in your existing Charles Schwab account. The connection can trade and read, never withdraw, your assets stay at Charles Schwab, and live trading requires an explicit typed confirmation.
Does my money move to DeployQuant?
No. Cash and shares stay in your Charles Schwab account in your name. DeployQuant sends orders and reads fills. It cannot withdraw, and you can disconnect anytime.
Can I automate trading on Charles Schwab with DeployQuant?
Yes. You connect through Schwab's own OAuth login, then a strategy built from blocks, plain English or Python can trade in your Schwab account. The connection can trade and read but cannot withdraw, and live trading requires a typed confirmation.
Does DeployQuant see my Schwab password or hold my money?
No. You log in on Schwab's site, and DeployQuant receives a token with scoped trade and read permissions. Cash and shares stay in your Schwab account in your name.
Is there a Schwab paper trading account?
No. The Schwab connection is live accounts only. Paper trading on DeployQuant runs on the live market feed and needs no broker, so you can test a strategy there before connecting Schwab.
Which strategies can run live on Schwab?
Ten of the 12 templates run live. The 20-day momentum with a trailing stop and the SMA-200 trend with a 15% trailing stop are backtest only for now. Trailing-stop exits are not deployable live at any broker yet.
What order types does the Schwab connection support?
Limit, limit on close, market, market on close, stop, stop limit and trailing stop, with day, fill-or-kill and good-till-canceled time in force. Extended-hours orders are supported. The connection covers US stocks and ETFs.
What happens when my Schwab token expires?
Schwab's OAuth tokens need periodic re-authorization. DeployQuant emails you a one-link re-auth when needed and holds orders while the connection is down.
Other brokers
Backtests are hypothetical, computed by DeployQuant's engine on minute-resolution consolidated US market data (2021-01-04 to 2026-10-02, $10,000 starting capital, no margin, no fees or slippage in the headline run; buy-and-hold puts 98% of the account in at the first open, as the templates do) and do not guarantee future results. Nothing on this page is investment advice. Live trading involves risk of loss.