Options Contract Symbol (OCC Format) Regex for Python
/^([A-Z]{1,5})(\d{6})([CP])(\d{8})$/What this pattern does
This page provides a well-structured, multi-part regular expression for matching options contract symbol (occ format), ported and verified for Python. Financial data validation has zero tolerance for false negatives — a missed invalid entry can corrupt downstream calculations. The snippet below is ready to drop into your Python project — whether you're validating in a Django view, a FastAPI endpoint, or a standalone data processing script.
Python Implementation
# Options Contract Symbol (OCC Format)
# ReDoS-safe | RegexVault — Finance > Securities & Trading
import re
options_contract_symbol_occ_format_pattern = re.compile(r'^([A-Z]{1,5})(\d{6})([CP])(\d{8})$')
def validate_options_contract_symbol_occ_format(value: str) -> bool:
return bool(options_contract_symbol_occ_format_pattern.fullmatch(value))
# Example
print(validate_options_contract_symbol_occ_format("AAPL240119C00200000")) # TrueTest Cases
Matches (Valid) | Rejects (Invalid) |
|---|---|
AAPL240119C00200000 | AAPL2401190200000 |
TSLA240119P00250000 | aapl240119C00200000 |
SPY231215C00450000 | AAPL240119X00200000 |
MSFT240920C00350000 | AAPL24119C00200000 |
When to use this pattern
This pattern is drawn from the Finance > Securities & Trading category and carries a ReDoS-safe certification. That matters for Python developers because particularly important in Python web servers where CPU-bound regex operations can stall concurrent request handling. RegexVault audits patterns against known backtracking attack vectors, ensuring you have the necessary context before using this regex in a high-stakes production environment.
Common Pitfalls
The 21-char OCC symbol pads the ticker to 6 chars with spaces. This pattern matches the compact form without padding. The strike price is in thousandths of a dollar: 00200000 = $200.00.
Technical Notes
OCC format: 1-6 char ticker (right-padded with spaces in the 21-char version) + YYMMDD expiry + C or P + 8-digit strike price in 1/1000 of a dollar. Strike 00200000 = $200.000.
Have a pattern that belongs in the vault?
Submit it for review — community-verified patterns get credited to your GitHub handle. Free submissions join the queue. Priority review available for $15.
Submit a Pattern