Soybean futures: CBOT specs, hours in Taiwan time and backtest setup
One CBOT soybean futures contract covers 5,000 bushels, ticks in quarter cents worth $12.50, and trades in seven delivery months. For soybeans the calendar (sessions in Taiwan time, USDA report days, limit moves and crop-year rolls) changes a backtest more than the entry rule does, so fix those settings before the first run.
By Soren Huang · Published · updated · Editorial policy
Contents
- What are CBOT soybean futures: contract size, tick value and contract months?
- How much is one point of soybean futures worth?
- What time do soybean futures open in Taiwan time?
- Which seasonal periods, USDA report days and limit moves should a soybean backtest account for?
- How do you roll soybean contracts and check the data before testing?
- What should you set before backtesting soybean futures, and what does a report look like?
- Frequently asked questions
- References
What are CBOT soybean futures: contract size, tick value and contract months?
CBOT soybean futures (symbol ZS) cover 5,000 bushels per contract, move in quarter-cent ticks worth $12.50, and trade in seven delivery months: January, March, May, July, August, September and November. Fix these three facts before you write any rule: they set the position size, the cost model and the roll calendar of every soybean backtest.
A tick is the smallest price step the exchange allows, and for soybeans it is one quarter of a cent per bushel. Multiply 5,000 bushels by 0.25 cents and you get $12.50 per tick. The seven delivery months are written with the standard futures month codes: F (January), H (March), K (May), N (July), Q (August), U (September) and X (November). Exchanges can change contract values, so confirm them on the exchange's contract page; the free futures contract calculator shows the tick size, tick value and point value side by side.
| Fact | CBOT soybean futures (ZS) |
|---|---|
| Contract size | 5,000 bushels |
| Price quote | Cents per bushel |
| Minimum tick | 0.25 cent = $12.50 |
| One point (one cent) | $50 |
| Delivery months | Jan, Mar, May, Jul, Aug, Sep, Nov |
| Settlement | Physical delivery; speculative positions are closed before first notice day |
The month list matters more than it does for an index future, because soybeans are a crop. The US crop is planted in April to June and harvested in September to November. November is the first delivery month that trades the new crop, so the contracts from January to September belong to one crop year and November starts the next. The price difference between an old-crop and a new-crop month can be far larger than the difference between two quarterly index contracts, which is why rolling gets its own section below. The same logic of reading the contract page first applies when you set up a gold futures backtest with its specs and sessions, but gold has no crop year.
How much is one point of soybean futures worth?
One point of soybean futures is one cent per bushel and is worth $50 per contract, because 5,000 bushels × 1 cent = 5,000 cents = $50. Write every stop, target and slippage figure in cents, not in dollars or index points, so the backtest converts them with the same point value the exchange uses.
The conversion is the only formula in this article: dollar change per contract = 5,000 bushels × price change in cents ÷ 100. The 5,000 is the contract size, the price change is measured in cents per bushel, and dividing by 100 turns cents into dollars. A full dollar per bushel (100 cents) is therefore $5,000 per contract. Some data feeds display soybean prices in eighths, so a quote of 950'2 means 950 and 2/8 = 950.25 cents. Check that your data is in decimal cents before you set the tick size, or every stop distance will be off.
Hypothetical example
A soybean rule uses a 15-cent stop and a 30-cent target. The stop risks 15 × $50 = $750 per contract; the target is worth $1,500. Slippage of one tick on entry and one tick on exit costs 2 × $12.50 = $25 per round trip, and commission is assumed at $4 per round trip. A winning trade nets $1,500 − $29 = $1,471; a losing trade costs $750 + $29 = $779. With a 40 percent win rate the average trade is 0.4 × $1,471 − 0.6 × $779 ≈ $121, about ten ticks, so a second tick of slippage per side would remove roughly a fifth of it.
What time do soybean futures open in Taiwan time?
Soybean futures open for the overnight Globex session at 08:00 Taiwan time during US summer time and at 09:00 during US winter time, and the day session, where most of the volume usually trades, opens at 21:30 or 22:30 Taiwan time and runs into the early morning. Which bars a backtest sees depends entirely on which of these two sessions you include.
CME Globex trades soybeans Sunday to Friday from 19:00 to 07:45 Central Time (CT) and Monday to Friday from 08:30 to 13:20 CT, with a 45-minute break between them. Taiwan is UTC+8 all year. US Central Time is UTC−5 in summer (second Sunday of March to first Sunday of November) and UTC−6 in winter, so the Taiwan clock shifts by one hour twice a year while the CT times stay fixed. The free futures market hours tool shows both sessions in your time zone on any date.
| Session | Central Time | Taiwan time, US summer | Taiwan time, US winter |
|---|---|---|---|
| Overnight Globex | 19:00 (Sun–Thu) to 07:45 | 08:00 to 20:45 | 09:00 to 21:45 |
| Break | 07:45 to 08:30 | 20:45 to 21:30 | 21:45 to 22:30 |
| Day session | 08:30 to 13:20 (Mon–Fri) | 21:30 to 02:20 next day | 22:30 to 03:20 next day |
Three consequences follow for a backtest. First, a "daily" bar from a full-session feed can start at 19:00 CT the evening before, while a day-only feed starts at 08:30 CT; the two closes and ranges differ, so decide which one your rule means. Second, the Sunday 19:00 CT open is Monday morning in Taiwan, so the weekend gap appears on Monday's first bar. Third, an intraday rule tested on full-session bars spends most of its bars in the thin overnight session, where slippage of one tick is optimistic; test the same rule on day-session bars and compare the trade count. Traders who already handle the split day and night sessions of a FTSE China A50 futures backtest on SGX will recognize the same problem in reverse: the active session falls at night in Taiwan.
Which seasonal periods, USDA report days and limit moves should a soybean backtest account for?
A soybean backtest should mark the crop stages, the scheduled USDA report days and any day the contract traded at its price limit, then check whether the result changes when those days are removed. A result that lives on a handful of report days is a bet on reports, not on the rule.
The crop calendar gives soybeans a seasonal rhythm that index futures do not have. US planting runs April to June, the growing season and its weather risk July to August, and harvest September to November. The South American harvest, mainly Brazil, arrives roughly February to April and supplies the market during the US off-season. These periods change volatility and the shape of the price curve between contract months. A rule that tests well only in the US growing season is still a result, but it is a seasonal result, and the trader should know that before trading it in March.
Scheduled reports from the US Department of Agriculture (USDA) are the second calendar. The monthly WASDE report (World Agricultural Supply and Demand Estimates) updates supply and demand; Prospective Plantings in late March and Acreage in late June set the planted area; and the quarterly Grain Stocks report, released in January, late March, late June and late September, counts what is still in storage. These reports are released at midday US Eastern time, inside the CBOT day session, which is around midnight in Taiwan. The method for testing whether such days help or hurt a rule is the same as for stock index futures and is laid out in the article on backtesting around economic calendar events: run the strategy with report days included and excluded, and compare the two results.
A limit move is a day on which the price reaches the maximum daily change the exchange allows, after which no trade can happen beyond that price until the next session. The exchange recalculates the soybean limit at set times each year and publishes the current value and its expansion rules on the contract page, so do not hard-code a dollar figure. For a backtest the danger is simple: a stop order that sits beyond the limit cannot fill. A daily bar ends flat at the limit price, and a naive backtest fills the stop at that price anyway, while the real exit would come in the next session, often much further away. Think of a lift whose doors close while you are still inside: you leave at the next floor it opens on, not the one you pressed.
The practical check is to list the days on which the high or low of a bar equals the limit price of that day and rerun the backtest with the stop fills on those days pushed to the next session's open. If the net result barely moves, the rule is not depending on limit days.
How do you roll soybean contracts and check the data before testing?
Roll soybean contracts by a rule written in advance, several days before first notice day, and choose between an unadjusted and a back-adjusted continuous series knowing that the choice changes a soybean backtest more than it changes an index backtest. The reason is the crop year: the gap between the expiring July contract and the November contract is a real price difference between two different crops, not a small financing spread.
First notice day is the first day on which a holder of a long position can be told to take physical delivery, and for CBOT soybeans it is the last business day of the month before the delivery month. The last trading day is the business day before the 15th calendar day of the delivery month. A speculative backtest should be out of a month before first notice day, so a common roll rule is a fixed number of business days before it, or the day the next month's volume passes the expiring month's volume. Write the rule down and apply it to every roll; changing it after a bad roll is tuning. The general rules for futures backtesting with contract specs and rollover apply here, with one difference: on soybeans the roll gap is usually the largest single "move" in the series, so it must never be allowed to count as a trade.
A continuous series joins the successive contract months into one price history. An unadjusted series keeps every contract's real prices and shows the roll gap as a jump; a back-adjusted series shifts all earlier prices by the gap so the join is smooth. Back-adjusting is like renumbering the pages of a book so the chapters run on without a break: the page numbers change, the words do not. The price level in a back-adjusted series is therefore not a real price, and any percent-based rule, margin estimate or "price above 1000" filter built on it is wrong. Dollar results must come from the point value times the cents moved, never from the shifted price level.
| Property | Unadjusted series | Back-adjusted series |
|---|---|---|
| Price level | Real prices of each contract | Shifted; may be far from any real price |
| Roll gap | Visible jump; a rule can mistake it for a move | Removed; no false trade at the roll |
| Percent rules and filters | Correct | Distorted by the shifted level |
| Dollar P&L | From point value × cents moved | From point value × cents moved (same) |
| Best use | Checking levels, margin and limits | Testing rules that act on price changes |
Before the first run, check the data itself in this order:
- Roll gaps where expected and nowhere else. A jump that does not sit on a roll date is a bad tick.
- Missing day sessions. US exchange holidays remove the day session; a bar that exists on such a day is suspect.
- Limit days. Bars whose high or low sits on the limit, and bars with zero range after a report.
- Price format and time zone. Decimal cents, not eighths; timestamps in CT or exchange time, with the session boundaries falling where the table above says.
- Volume at the roll. If the series rolled while the expiring month still had most of the volume, the roll rule was applied too early.
What should you set before backtesting soybean futures, and what does a report look like?
Before the first soybean run, fix seven settings in order: the point value and tick, the session, the roll rule and series type, commission and slippage in ticks, next-bar execution, the flagged report and limit days, and the in-sample and out-of-sample split date. A report read afterwards is only as good as these seven inputs.
- Point value $50 per cent, tick $12.50. Confirm on the exchange page; set the tick size to 0.25 cent so stops round to tradable prices.
- Session in CT. Full session (19:00–13:20) or day only (08:30–13:20); decide which close your daily bar means.
- Roll rule and series type. A fixed number of days before first notice day, back-adjusted for the rule, unadjusted kept alongside for level checks.
- Commission and slippage per round trip, in ticks. At least one tick per side for the day session; test with two.
- Next-bar execution. A rule that decides on a bar's close fills on the next bar's open, not on the same close.
- Report days and limit days flagged. So the result can be recomputed with them removed.
- Split date written down. The in-sample period for tuning, the out-of-sample period for grading, chosen before the first run.
AlphaPrime (Valynox) applies the commission, slippage, session and next-bar execution you set to every candidate it evaluates, so the soybean settings in this checklist are entered once and the ranking you read from its backtesting already reflects them. Which rule families are worth entering is a separate question; the article on futures algo trading strategy types and how to backtest each covers breakout, trend and mean-reversion rules, all of which can be written in cents for soybeans.
To show what the report of such a run looks like, here is a real AlphaPrime run. It is a stand-in: it tested ES (E-mini S&P 500) daily bars from 2019-01-02 to 2025-06-30, not soybeans, using a HiLo Activator rule as its only entry and exit, with no stop, target or filter. It is the single candidate kept from the 1,024 the search tried, chosen on return against drawdown. Picking the kept candidate after the fact flatters it, as Bailey and co-authors (2014) show for any best-of-many selection, so the figures below describe this one run and nothing more.
Source: AlphaPrime product engine (CPU), run 2026-10-31. ES daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $25 slippage per trade.
| Number | Result |
|---|---|
| Net profit (closed trades) | $75,345 |
| Max drawdown | $65,790 |
| Trades | 34 |
| Win rate | 61.76% |
| Profit factor | 1.841 |
| Average trade | $2,216.03 |
| Time in market | 94.61% |
Read the table the way you will read your own soybean report. The max drawdown of $65,790 is almost as large as the net profit of $75,345, so the ratio between the two is the first number to judge. Thirty-four trades over six and a half years is a small sample; the average trade of $2,216.03 can move a long way if two or three trades change. Time in market of 94.61% means the rule was almost always exposed, which on soybeans would include every report day and every limit day. None of this says the rule earned that money in any sense a trader can expect; it says what one kept candidate did on one history after costs.

Pardo (2008) recommends judging a rule on the out-of-sample segment that the optimization never saw, and Harvey and Liu (2015) recommend discounting any result for the number of trials behind it; both apply with extra force to a soybean run, where the calendar gives many ways for a rule to look good by accident. The next step is concrete: load your soybean series, run the five data checks from the previous section, and count how many limit days and report days fall inside the out-of-sample period you wrote down. If that count is more than a tenth of the out-of-sample trading days, plan the with-and-without comparison before you look at a single equity curve.
Frequently asked questions
What is the symbol for CBOT soybean futures?
The CME Globex symbol is ZS, followed by a month code and year. The seven month codes are F (January), H (March), K (May), N (July), Q (August), U (September) and X (November). A mini-sized soybean contract of one thousand bushels also trades on CBOT; its tick value is on the exchange's contract page.
Do I have to take delivery of soybeans if I trade the futures?
Only if you hold a long position past first notice day, which for CBOT soybeans is the last business day of the month before the delivery month. Speculative traders and backtests close or roll the position several days before that date. The last trading day is the business day before the 15th calendar day of the delivery month, and the exchange publishes both dates for every month.
What does a soybean backtest need to watch for that an index backtest does not?
Three things. The roll between old-crop and new-crop months can be a large price gap that a rule may mistake for a move. Scheduled USDA reports are released inside the day session and can drive a result on their own. Daily price limits can stop trading at a price a backtest would otherwise fill through, so stop fills on limit days should be pushed to the next session.
Which soybean session should a Taiwan trader backtest?
Test both and compare the trade counts. The day session, 08:30 to 13:20 CT, is 21:30 to 02:20 Taiwan time in US summer and 22:30 to 03:20 in US winter, and it usually carries most of the volume. The overnight session opens at 08:00 or 09:00 Taiwan time and is thinner, so slippage of one tick per side is optimistic there.
References
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.

