# Symbol Normalization<no value>

When you import your trade history, our system automatically "normalizes" your Futures and Options (F&O) symbols. This guide explains why this happens and how it works.

## Why Do We Normalize Symbols?

Every broker uses a slightly different naming convention for the exact same F&O contract. For example, if you trade a Bank Nifty 55500 Call option and download your trade history from different platforms, the symbol might look completely different:

*   **Zerodha:** `BANKNIFTY26JUN55500CE`
*   **Kotak Neo (Web):** `BANKNIFTY 55500 CALL 25 JUN NSE`
*   **Kotak Neo (Mobile):** `OPTIDXBANKNIFTY 25JUN2026CE 55500.00`

If we imported these symbols exactly as they appear, our system would treat them as three completely different trades. This would cause duplicate positions if you ever re-import data or switch brokers.

To solve this, our system converts all broker-specific symbols into a single **Canonical Format**.

## How It Works

During the CSV upload process, our symbol normalizer analyzes the raw symbol and translates it into our standard format.

### Monthly Expiry Contracts
*(Includes Stock Options, Stock Futures, Index Futures, and Monthly Index Options)*

For monthly contracts, different brokers often report the expiry date differently (e.g., one might report the exact date "25 JUN" while another simply reports "JUN").

To guarantee a perfect match across all brokers, **we drop the day of the month** for all monthly contracts.

**Standard Format:** `{SYMBOL}-{CE|PE|FUT}-{STRIKE}-{MONTH}{YEAR}`

**Examples:**
*   `RELIANCE 1500 CALL 28 AUG NSE` ➔ **`RELIANCE-CE-1500-AUG2025`**
*   `BANKNIFTY26JUNFUT` ➔ **`BANKNIFTY-FUT-JUN2026`**
*   `OPTSTKHDFCBANK 25SEP2025CE 1800.00` ➔ **`HDFCBANK-CE-1800-SEP2025`**

### Weekly Expiry Contracts
*(Includes Weekly Index Options like NIFTY, BANKNIFTY, SENSEX, BANKEX)*

Weekly options expire on specific days throughout the month. Because the exact day is necessary to identify the contract, **we keep the full date** in the normalized symbol.

**Standard Format:** `{SYMBOL}-{CE|PE|FUT}-{STRIKE}-{DD}{MONTH}{YEAR}`

**Examples:**
*   `OPTIDXNIFTY 15JUN2026CE 24000.00` ➔ **`NIFTY-CE-24000-15JUN2026`**
*   `SENSEX2661580000CE` ➔ **`SENSEX-CE-80000-15JUN2026`**

### Equity Delivery / Intraday
Regular stock symbols (Equity) do not have expiries or strike prices. These are **passed through unchanged**.

**Examples:**
*   `RELIANCE` ➔ **`RELIANCE`**
*   `INFY-EQ` ➔ **`INFY-EQ`**

## Supported Brokers & Exchanges

Our symbol normalizer currently supports and flawlessly translates formats from:

*   **Zerodha** (Tradebook CSV)
*   **Kotak Neo** (Web App Orders CSV)
*   **Kotak Neo** (Mobile App Trades CSV)

It supports all F&O segments across both **NSE** (NIFTY, BANKNIFTY, FINNIFTY, MIDCPNIFTY, Stock Options/Futures) and **BSE** (SENSEX, BANKEX).

> [!TIP]
> You do not need to manually edit your CSV files before uploading. Simply upload the raw files generated by your broker, and the system will automatically normalize the symbols to prevent duplicates.
