Short Selling and Locates
Place short sales, understand hard-to-borrow locates, and estimate borrow costs.
Shorting Overview
Section titled “Shorting Overview”Shorting is selling a stock you do not own, anticipating the price will fall. Below are the steps.
- Borrow shares: someone lends you 100 XYZ
- Sell them: you receive cash at today’s price ($50)
- Price falls: XYZ is now $40
- Buy them back: you pay $40 (this is “covering”)
- Return the shares: profit = ($50 − $40) × 100 = $1,000, minus costs
If the price rises instead, you buy back higher and lose money. Unlike a long position, a short’s loss is unbounded: a stock can only fall to $0 but can rise without limit.
Clear Street classifies every equity as easy-to-borrow (ETB), hard-to-borrow (HTB), or not shortable. For HTB stocks, Clear Street requests the locate for you automatically when you submit the order. More details on locates can be found in the Advanced Shorting Concepts section.
Placing a Short Order
Section titled “Placing a Short Order”Submit a sell order through the submit orders endpoint. There is no short flag and no separate “request a locate” call.
[ { "order_type": "LIMIT", "limit_price": "350", "side": "SELL", "time_in_force": "DAY", "quantity": "100", "symbol": "TSLA", "instrument_type": "COMMON_STOCK" }]A SELL is treated as a short sale when you hold no long position in the stock or already hold a short position. Order responses report short sales with side: SELL; there is no separate short-sale side.
One Order Cannot Flip a Position
Section titled “One Order Cannot Flip a Position”A single sell order may close a long or open a short, never both. If you hold 100 shares, a SELL of 150 is rejected. To reverse, send two orders: close the long, then short.
Starting from a long position of 100 shares:
| Order | Outcome |
|---|---|
SELL 150 | Rejected: a single order cannot flip the position from long to short. |
SELL 100 | Accepted: closes the long (position is now 0). |
SELL 50 (submitted after the previous SELL 100) | Accepted: opens a short (position is now −50). |
HTB Order Rules
Section titled “HTB Order Rules”Hard-to-borrow short sales have restrictions that do not apply to other orders:
- Time in force must expire by end of day:
DAY,IMMEDIATE_OR_CANCEL,FILL_OR_KILL, andAT_CLOSEare supported.GOOD_TILL_CANCELandGOOD_TILL_DATEare rejected, because a locate is only valid for the day it is granted. - Sessions: locate requests are only accepted during pre-market, regular, and after-hours sessions (4:00 AM – 8:00 PM ET). An HTB short sale cannot be placed during the overnight session. ETB short sales are not session-restricted.
- Order types: trailing stop, trailing stop limit, and extended-hours stop limit orders are not supported for HTB short sales.
Typical Workflow
Section titled “Typical Workflow”- Read
shortable_attribute(andis_threshold_security) on the instrument. - Read the borrow rate and estimate cost, remembering it is only an estimate.
- Submit a
SELL. Locates, if needed, are handled for you. - Track the order status, and
/locatesif you want to see the grant.
Risks of Shorting
Section titled “Risks of Shorting”- Unbounded loss if the price rises.
- Margin calls if the position moves against you.
- Borrow rates can rise while you are short; the billed rate may exceed the estimate.
- Buy-ins, especially in threshold securities.
- Borrow cost continues to accrue on a halted security you are short, even though you cannot buy to cover.
Shorting Economics
Section titled “Shorting Economics”A short has costs beyond the price move. Note charges are estimates until billed or settled.
Overnight Borrowing Charge
Section titled “Overnight Borrowing Charge”You pay to borrow the shares. Key points:
- Borrow is charged only on settled shares. The cost starts once the short sale settles, not at order time, and accrues every calendar day based on settlement, including weekends and settlement holidays.
- Easy-to-borrow stocks typically accrue little or no borrow cost; hard-to-borrow rates run higher and can move quickly.
- The rate is annualized and accrues daily on the market value of the borrowed shares, using a 360-day year. Weekends count: a Friday-night position accrues 3 days of borrow cost (Fri, Sat, Sun).
daily_borrow_cost = short_market_value × annual_borrow_rate / 360
Short 1,000 XYZ @ $20 = $20,000, rate 0.037012 (3.7012%)daily_borrow_cost = 20,000 × 0.037012 / 360 ≈ $2.06 per dayChecking the Borrow Rate
Section titled “Checking the Borrow Rate”| Name | Method | Path | Description |
|---|---|---|---|
| List Locate Rates | GET | /v1/locates/rates | Get current borrow rates for up to 1,000 instruments. |
| Get Locate Rate | GET | /v1/locates/rates/{instrument_id} | Get the current borrow rate for a single instrument. |
Both accept instrument UUIDs or ticker symbols.
{ "instrument_id": "…", "rate": "0.037012", "as_of": "2026-10-16T14:30:00Z" }| Field | Description |
|---|---|
rate | Annualized borrow rate as a decimal. 0.037012 = 3.7012%. |
as_of | When the rate was last retrieved. |
The list endpoint returns 200 if every instrument has a rate and 207 if some do not; those entries carry an error instead of a rate. The single endpoint returns 404 when the instrument is unknown or has no rate.
The rate is an indicative estimate, not a quote. The billed rate is determined at billing and can be higher or lower than the rate shown when you opened the position. Use it to estimate cost.
Advanced Shorting Concepts
Section titled “Advanced Shorting Concepts”Three Shortable Classes
Section titled “Three Shortable Classes”Every tradable equity reports a shortable_attribute on the instrument (GET /v1/instruments, /v1/instruments/{id}, /v1/instruments/search, and watchlists):
| Value | Meaning | Locate needed? |
|---|---|---|
EASY_TO_BORROW | Shares are readily available to loan. | No |
HARD_TO_BORROW | Not easy to borrow, but locate inventory is available and float meets the minimum. | Yes |
NOT_SHORTABLE | Cannot be shorted: no locate inventory, or float below the minimum. | n/a |
The field is omitted for instruments that are not tradable equities (e.g. options). See Instrument Response for the full instrument shape.
Threshold Securities
Section titled “Threshold Securities”Hard-to-borrow stocks split further on is_threshold_security, also on the instrument. A stock lands on the SEC Regulation SHO threshold list after five consecutive settlement days with large fails to deliver (≥ 10,000 shares and ≥ 0.5% of shares outstanding).
For a short seller a threshold security means:
- Tighter supply and higher rates. Check the borrow rate first.
- Higher buy-in risk. Fails must be closed out on strict timelines, so a short can be bought in to meet delivery.
- Locates are not reused on cover (see below).
Screen programmatically:
GET /v1/instruments?is_threshold_security=true&instrument_type=COMMON_STOCKLocates
Section titled “Locates”Clear Street handles this for you. On a hard-to-borrow short, the order is held, a locate is requested on your behalf, and the order is released when it is granted. You never call a locate endpoint to place a short.
Locate behavior to know:
- Pooled per account, stock and day. Granted shares go into a pool that any of your orders can draw on.
- Valid for one trading day. In force for its
effective_date(New York date) and expires at 8:00 PM ET. Nothing carries over. - Same-day covers replenish, except in threshold securities. If you open and cover a short the same day in a stock that is not a threshold security, the covered quantity becomes available again that day. For threshold securities covering does not free quantity, even for a short opened the same day, so shorting again needs new availability.
- Granted even if the order dies. A locate granted after its order is canceled or rejected still counts toward your day’s pool.
- Replacing an order never triggers a new locate. It can draw on remaining located shares and is rejected if it needs more. A replace is not allowed while the locate is pending.
- There is no minimum locate size and no round-lot requirement. The locate request is for exactly the number of shares your order still needs.
Seeing Your Locates
Section titled “Seeing Your Locates”| Name | Method | Path | Description |
|---|---|---|---|
| List Locates | GET | /v1/accounts/{account_id}/locates | List locate requests and grants for an account. |
| Get Locate | GET | /v1/accounts/{account_id}/locates/{id} | Get a single locate by locate request ID or locate ID. |
List filters: effective_date (YYYY-MM-DD, defaults to today in New York), status (comma-separated), instrument_ids (UUIDs or symbols).
Locate Response
Section titled “Locate Response”Each locate joins the locate request with the locate granted for it, if any:
| Field | Type | Description |
|---|---|---|
locate_request_id | UUID string | Identifier of the request. |
client_request_id | string | Identifier assigned when requested. |
account_id | integer | Owning account. |
instrument_id | UUID string | Instrument located. |
requested_quantity | integer | Shares requested. |
effective_date | date | Trading day in force. |
status | string | REQUESTED, ACCEPTED, REJECTED, EXPIRED. |
related_order_id | UUID string | Order that triggered the request, if any. |
locate_id | UUID string | Present once granted. |
quantity | integer | Shares granted (may be less than requested). |
reserved_quantity | integer | Granted shares held by open short orders. |
used_quantity | integer | Granted shares consumed by executions. |
The quantity available for new short sales is quantity - used_quantity - reserved_quantity, and drops to zero once the locate expires.
How an Order Moves Through a Locate
Section titled “How an Order Moves Through a Locate”While the request is outstanding, the order shows status: PENDING_NEW and queue_state: AWAITING_RELEASE (the “pending locate” state).
| Locate Outcome | Locate Status | Order Result |
|---|---|---|
| Granted in full | ACCEPTED | Shares reserved, order released (NEW). |
| Rejected | REJECTED | Order rejected: Locate Check Failed: locate request rejected. |
| Granted partially | ACCEPTED (smaller quantity) | Order rejected: Locate Check Failed: insufficient locates: need X, have Y. The granted shares stay in your pool for the day, so send a new, smaller order that uses them. |
| Day ends | EXPIRED | Unused quantity is gone. |
Short Sale Rejections
Section titled “Short Sale Rejections”A short can be rejected before it is routed. Rejections at submission return synchronously; rejections after a locate response arrive as a REJECTED order with the reason in details. Locate-related messages are prefixed Locate Check Failed:.
| Reason | When it occurs |
|---|---|
Short selling not permitted | The account type does not permit shorting (e.g. a cash account). |
short sales of this stock must expire by end of day | A hard-to-borrow short used GOOD_TILL_CANCEL or GOOD_TILL_DATE. |
locate requests are only supported during premarket, regular, and after-hours sessions | A hard-to-borrow short was sent overnight or outside trading hours. |
strategy orders are not supported for hard-to-borrow short sales | A hard-to-borrow short used a trailing stop, trailing stop limit, or extended-hours stop limit. |
locate request rejected | The locate venue rejected the request. |
insufficient locates: need X, have Y | The locate venue granted fewer shares than the order needs. |