# Introduction

### Welcome to ClickOptions

ClickOptions is a crypto options venue built for better pricing (Flow-Implied pricing), deeper markets (coordinated liquidity across strikes/expiries), and clearer decisions (timestamped spread/depth benchmarks). Our goal is simple: help you trade volatility, not friction, with transparent methods and fair-play rules.

#### Who this documentation is for

**Traders**: instruments, fees, order types, risk controls, settlement.

**Liquidity providers**: incentives, penalties, and onboarding.

**Institutions**: connectivity, custody, reporting, SLAs.

**Builders**: APIs, market data, SDKs, sandboxes.

**Community**: programs, referrals, education, policy.

#### How to use these docs

**Trade:** Everything needed to place and manage orders: accounts and funding, instrument specs, order types and matching, market microstructure/risk controls, and index/settlement methodology. Start here if you’re trading.

**Earn:** Vaults and staking mechanics, token utility/policy, affiliate and referral, and MM/LP program details.

**Trust:** Security and custody, audits/reports, pricing and spread benchmarks (method + monthly report), status/incidents, legal/compliance, privacy/data.

#### Conventions and support

**Dated pages**: Look for “Last updated” to confirm recency; benchmark cards will be timestamped with a method footnote.

**Need help?** Join our official channels.

Welcome. Let’s make options cheaper, tighter, and clearer. Together.


# Trade

## Trading Options

### Overview

ClickOptions specializes in **crypto options trading**.\
All contracts are **cash-settled in USDT** and can be **closed at any time before expiry** or held until maturity.

Options give the buyer the right, but not the obligation, to buy or sell an underlying asset at a specified strike price.

### Contract Specifications

* **Underlying Assets**: BTC, ETH on Version 1 — expanding to 15+ assets.
* **Contract Size**:
  * BTC options → 0.01 BTC per contract
  * ETH options → 0.1 ETH per contract
* **Settlement Currency**: USDT (linear, not inverse).
* **Expiry Times**:
  * Daily, Weekly, Monthly, and Quarterly contracts are offered.
  * Each option expires at **08:00 UTC on its maturity date**.
* **Settlement Method**: Proprietary Index Price TWAP (see [*Expiry & Settlement*](/trade/expiry-and-settlement)).

***

### Option Types

ClickOptions supports cash settled:

* **Call Options** → Right to buy the underlying asset at the strike price.
* **Put Options** → Right to sell the underlying asset at the strike price.

Both Calls and Puts are:

* **European-style** → Exercised automatically at expiry.
* **Closeable before expiry** → A trader may close an open option position at any time before maturity.

***

### Order Types

Currently, ClickOptions supports only **limit-style order execution**.

* **Market Order** (not available yet)
  * Reserved for future phases.
* **Limit Order**
  * Executes at or better than the latest available market price at the moment the order request is submitted.
  * In most cases, the order is filled immediately.
  * If the price shifts unfavorably during order transition, the request remains as a **limit order** in the order book until it is matched.
  * Orders may be **partially filled** depending on liquidity.

***

### Index Price

#### Index Price

ClickOptions uses a **proprietary index price** as the settlement reference for all options contracts.

* The index is derived by aggregating **real-time data from multiple major exchanges and liquidity venues**.
* Pricing is computed using a **weighted average formula and filter** that incorporates both **spot and perpetual futures market data**.
* This ensures **robust, tamper-resistant pricing**, particularly during high-volatility events.

***

### Example – Buying a Call Option

* **Underlying**: BTC
* **Strike**: 100,000 USDT
* **Expiry**: Daily, 08:00 UTC
* **Contract Size**: 0.01 BTC
* **Premium**: 150 USDT

If BTC Index settles at 105,000 USDT:

$$
IntrinsicValue = (105{,}000 - 100{,}000) \times 0.01 = 50 ; USDT
$$

$$
Profit = IntrinsicValue - Premium - Fees
$$


# Account and Funding

### Account Funding

After completing initial registration, which requires **email verification** and **2FA activation**, each client can fund their account.

* **Supported Currencies**: At launch, only **USDT** deposits will be accepted. Additional cryptocurrencies will be added later, selectable from a drop-down menu.
* **Deposit Limits**:
  * Minimum deposit: **10 USDT**
  * **No maximum deposit limit.**
  * No identity verification (KYC) is required for cumulative deposits up to **20,000 USDT**.
* **Withdrawal Limits**:
  * Minimum withdrawal: **10 USDT**
  * No identity verification (KYC) is required for cumulative withdrawals up to **20,000 USDT**.

#### Fees

* **Deposits**: No fees are charged by us.
* **Withdrawals**: No fees are charged by us (for the early birds).

#### Verification Thresholds

* Identity verification (KYC) is required once a client's **cumulative deposits or withdrawals exceed 20,000 USDT**. This includes:

  * Proof of identity
  * Proof of address
  * Source of funds
  * Proof of wealth

  #### Restricted Jurisdictions & Rejected Verification

  * Users who cannot be verified or who are identified as being from a [**restricted country**](https://www.clickoptions.ai/legal/jurisdictions) will receive a notification.
  * We will inform them that their funds will be returned due to verification issues or jurisdictional restrictions.
  * If the deposit was made from a CEX hot wallet and the user wants the funds returned to a different address on the **same exchange**, they must provide proof from that exchange confirming the new address belongs to them.
  * If the user does not respond within the 7-day window, we will proceed with returning the funds to the original sending address.


# Instruments and specs

#### Options Contract Specification

| **Contract Type**     | Call and Put Options (**Buy only**)                                                                                                                                                                                              |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Underlying Index**  | Proprietary index price, aggregated from major exchanges for the underlying asset                                                                                                                                                |
| **Underlying Assets** | BTC, ETH                                                                                                                                                                                                                         |
| **Exercise Style**    | European, cash-settled                                                                                                                                                                                                           |
| **Trading Hours**     | 24/7                                                                                                                                                                                                                             |
| **Mark price**        | <p>Real-time estimate of an option contract value calculated using ClickOptions proprietary and  innovative flow-implied pricing engine.<br></p>                                                                                 |
| **Strike Prices**     | <p>Listed at ITM, ATM, and OTM levels. New strikes added if market trades outside available range. <br><a href="/trade/options-listing-policy">See Options Listing Policy →</a></p>                                              |
| **Expiration Dates**  | <p>Daily, weekly, monthly, and quarterly expirations.<br>Expiration time: 08:00 UTC<br><a href="/trade/options-listing-policy">See Options Listing Policy →</a></p>                                                              |
| **Settlement Price**  | <p>Arithmetic mean of the underlying Spot Index during the 30 minutes before expiry<br><a href="https://app.gitbook.com/o/LuGl9Oq3alJ0odWXii80/s/w3yP0kfoMRIj1rYHOfSZ/expiry-and-settlement">See Expiry and Settlement →</a></p> |
| **Fees**              | <p>Base fees: Trading <strong>0.025%</strong>, Exercise <strong>0.25%</strong><br><a href="https://app.gitbook.com/o/LuGl9Oq3alJ0odWXii80/s/w3yP0kfoMRIj1rYHOfSZ/fees-and-commissions">Detailed fee schedule →</a></p>           |

#### Trading Specs by Asset

| **Asset**   | **Type**      | **Settlement/Quote  Asset** | **Contract Size** | **Min Trade Amount/Step size** | **Tick Size** |
| ----------- | ------------- | --------------------------- | ----------------- | ------------------------------ | ------------- |
| **BTCUSDT** | Linear Option | USDT                        | 0.01 BTC          | 0.1                            | 1             |
| **ETHUSDT** | Linear Option | USDT                        | 1 ETH             | 0.01                           | 1             |


# Option Pricing

ClickOptions options are priced by a **flow-implied pricing framework**, operated by a professional market maker under an enforceable ClickOptions mandate, with a future ClickVault risk pool designed to add community risk capital.

The framework aims to deliver fair, liquid and competitively-priced option premiums relative to implied-volatility-only models — subject to risk, minimum-premium and quote-width constraints.

#### How the Pricing Works

* **Flow-implied pricing**\
  Quoting responds to real trading behaviour — call/put demand, flow imbalances and inventory — to adjust premiums rather than relying on a static spread over a reference model.
* **Dynamic, inventory-aware discounts**\
  When the book is unbalanced (too many calls or puts), pricing on the offsetting side becomes relatively more attractive to encourage flow that restores balance, keeping market structure healthy while offering competitive entries.
* **Enforceable market-making standards**\
  The market maker quotes continuously within a **published maximum-quote-width matrix** and a **contractual price-improvement obligation**. ClickOptions specifies, monitors and enforces the framework.
* **Fair fee model**\
  Base fee **0.025%** (capped at 10% of premium), with a **disclosed CLICK fee discount** where eligible commissions are settled in CLICK (schedule confirmed before listing).

> Competitive pricing can narrow the gap to other venues, but ClickOptions does not guarantee profitable arbitrage. Actual prices depend on contract comparability, timestamp, size, market conditions, execution costs and available liquidity.

#### How Discounts Are Determined

The pricing adjustment is influenced by three main components:

1. **Portfolio Balance (Delta)** — how far the overall book is tilted long or short.
2. **Time to Expiry** — longer-dated contracts may carry a slightly different adjustment.
3. **Moneyness** — because the adjustment acts in volatility space, it concentrates on time value; far out-of-the-money contracts are priced at fair value rather than inflated premiums, without discounting intrinsic value.

*Note on OTM Options:* Far OTM contracts are more likely to expire worthless. Pricing offers them at fair value, but this does not change their inherent risk profile.

### Capital-Aware Pricing Controls

Pricing is subordinate to capital and risk limits. In the current venue the market maker carries and hedges the option book; in the designed ClickVault architecture these controls are enforced against pooled capital.

$$
U = \frac{RiskExposure}{AvailableCapital}
$$

* On the **offsetting side**, competitiveness increases as capacity allows.
* On the **exposed side**, the adjustment fades as utilisation rises:

$$
U \to 1
$$

* Capacity limit:

$$
U \geq 1 ;;\Rightarrow;; \text{quoting is restricted on the exposed side}
$$

* Hard solvency rule:

$$
L^{stress} \geq \text{Risk Capacity} ;;\Rightarrow;; \text{the discount is set to zero and exposed-side quoting is halted}
$$

### Final Premium

$$
FinalPremium = ReferencePrice \times \left( 1 - DiscountFactor \right)
$$

Where:

* **ReferencePrice** is derived from the ClickOptions composite index
* **DiscountFactor** adjusts with delta, time, moneyness and capital utilisation, within governance limits

#### Example

**Instrument**: `BTC-260926-115000-C`

* Reference: 500 USDT
* Base after fees: 490 USDT
* Portfolio delta is long → calls priced more competitively to restore balance
* Time-to-expiry = 30 days, strike slightly OTM

**Result:**

* Adjustment applied ≈ 7%
* Final ask price ≈ 490 × (1 − 0.07) ≈ **455 USDT**

The trader buys at ≈ **455 USDT** vs a reference of 500 USDT.

### Assurance of Settlement

Pricing integrity is supported by:

* Market-maker inventory and hedging (today), and **ClickVault** collateral in the designed architecture (see Margin)
* **Insurance and reinsurance layers** (see Risk Assurance)
* **ClickOptions treasury reserves** as an additional backstop


# Options Listing Policy

#### &#x20;Listing Cycle

* **Daily Options**
  * Added every day at 08:00 UTC.
  * Expire 08:00 UTC on their maturity date.
  * Default listing horizon: **T+3** (always three daily expiries live).
* **Weekly Options**
  * Expire at 08:00 UTC every **Friday**.
  * New weekly listed at 08:00 UTC on **Thursday** before expiry.
  * Default listing horizon: **3 weekly expiries live**.
* **Monthly Options**
  * Expire at 08:00 UTC on the **last Friday of each month**.
  * New monthly listed one week before expiry.
  * Default listing horizon: **3 monthlies live**.
* **Quarterly Options**
  * Expire at 08:00 UTC on the **last Friday of March, June, September, December**.
  * Default listing horizon: **4 quarterlies live**.

**Overlap Rule**

* If a Daily, Weekly, or Monthly expiry overlaps with an existing higher timeframe expiry (e.g., a Quarterly), no duplicate expiry is created.

#### Strike Interval Policy

Our strike policy ensures sufficient **ITM, ATM, and OTM coverage** while adapting to volatility.

* **Initial Listing**
  * Always list:
    * 1 ATM strike
    * 3 strikes above and 3 below ATM
* **Delta Range**
  * Call strikes listed from \~0.05 to 0.95 delta
  * Put strikes listed from \~–0.05 to –0.95 delta
* **Dynamic Expansion**
  * New strikes are added if the **underlying price moves** outside the existing strike range.
  * Strike step size scales with volatility:
    * **Low volatility**: smaller step size
    * **High volatility**: larger step size
* **Indicative Intervals (Phase 1)**
  * **BTC**
    * ≤ 2 days: 250 USDT steps
    * ≤ 2 weeks: 500 USDT steps
    * ≤ 2 months: 1,000 USDT steps
    * > 2 months: 2,000–5,000 USDT steps
  * **ETH**
    * ≤ 2 days: 10 USDT steps
    * ≤ 2 weeks: 25 USDT steps
    * ≤ 2 months: 50 USDT steps
    * > 2 months: 100–200 USDT steps

*(Intervals may be adjusted dynamically based on realized and implied volatility.)*


# Order Types and Matching

### Order Types and Matching

The platform operates on a **limit-order basis**. Clients can **buy options to open positions** and **sell options to close positions**. All orders are **GTC (Good Till Canceled)**.

#### Order Types

**BBO (Best Bid Offer) Order**

* A limit order placed at the current **best available price**.
* If the market price changes while the order is being processed, the order is placed at the requested price as a limit order.
* Orders execute **for the available volume**. Any unfilled contracts remain in the order book as a limit order.

*Example – BTC Call (BBO Buy)*

* Instrument: `BTC-250926-115000-C`
* Current Order Book: **Bid 425 / Ask 428**

1. **Scenario A – No price change**
   * User places a **BBO buy order for 10 contracts at 428**.
   * Ask remains **428** with only **7 contracts available**.
   * Result: **7 contracts execute immediately at 428**, and the remaining **3 contracts rest in the order book as a limit order at 428**.
2. **Scenario B – Price change**
   * User places a **BBO buy order at 428**.
   * Ask moves to **431** during processing.
   * Result: A **limit order at 428** is placed in the order book for the full amount (pending fill).
3. **Scenario C – Price change**
   1. User places a **BBO buy order fro 10 cpntracts  at 428**.
   2. Ask moves to **420** during processing and 20 contracts available.&#x20;
   3. Result: 10 contracts are executed immediatley at 420.

**Close Order**

* Using the **Close button** submits a **sell BBO order** for the open position.
* If the market drops while processing, the order is placed at the requested price as a limit order.
* Orders execute **for the available volume**; any remaining contracts rest in the book.

*Example – BTC Call (Close)*

* Open Position: Long 0.05 contracts `BTC-250926-115000-C`
* Current Order Book: **Bid 422 / Ask 426**

1. **Scenario A – No price change**
   * User clicks **Close**.
   * Bid remains at **422**, with full size available.
   * Result: **All 0.05 contracts are sold immediately at 422**.
2. **Scenario B – Partial fill**
   * User clicks **Close** to sell 10 contracts at **Bid 422**.
   * Only **6 contracts are available** at 422.
   * Result: **6 contracts sell immediately at 422**, and the remaining **4 contracts rest in the order book at 422**.
3. **Scenario C – Price change**
   * User clicks **Close**.
   * Bid falls to **419** during processing.
   * Result: A **sell limit order at 422** is placed in the order book (pending fill).

**Limit Order**

* Placed directly in the order book at the **specific price** requested by the user.
* Remains active until matched or canceled.
* Supports **partial fills** — executed volume reduces the open amount, with the remainder staying in the book.

**Sell Limit Order (for Open Positions)**

* Lets users set a **target exit price** for their open position.
* Partial fills are possible if liquidity is less than the order size.

#### Matching Engine

* **Centralized Order Book**: All orders are placed in the book and matched by the engine.
* **Execution Rule**: Price-time priority (best price first, then earliest order).
* **Partial Fills**: Supported. Any unfilled contracts remain GTC in the book.
* **Order Book Visibility**: At (Phase 1), the order book is not displayed to clients, though all orders still rest and match in the book.


# Market Microstructure and Risk Controls

### Why Market Microstructure Matters

Market microstructure describes the rules and mechanics of how trades are executed, prices are formed, and liquidity flows.\
In highly volatile, 24/7 crypto markets, robust microstructure is essential to:

* Ensure fair and orderly trading
* Prevent manipulation and extreme swings
* Protect users from flash crashes or fat-finger trades
* Guarantee settlements and payouts

### ClickOptions controls (CEX Phase1)

#### 1) Reference price integrity

* Primary inputs: **ClickOptions Index** (median-based aggregator) with stale-quote filters and smoothing.
* **Price sanity window:** if **index dispersion** across sources > **0.75%** for **≥ 3 consecutive seconds**, quoting pauses for the affected series until dispersion normalizes.

#### 2) Price protection (order-level)

* **Dynamic trade bandwidth** around mark price (**±2.5%** baseline; wider for illiquid tenors).
* Orders that **cross outside the band are clipped or rejected**.
* Band can auto-widen up to **±5%** during elevated volatility (measured over rolling 60s).

#### 3) Volatility halts (instrument-level)

* **Single-series breaker:** If the **option’s mid** moves **> 12% within 2 seconds** without a commensurate move in the index (spot proxy) **> 2%**, trigger a **60s trading halt** for that series; resume after **30s stability** test.
* **Underlying spike guard:** If **underlying index** moves **≥ 10% within 2 seconds**, trigger a **platform-wide options halt** for that underlying for **60s**, then 30s stability test before resuming.

#### 4) Circuit breakers (session-level)

* **Tiered triggers on underlying (rolling 60s):**
  * **Tier 1:** **±5%/60s** → 30s pause on all series for that underlying.
  * **Tier 2:** **±7.5%/60s** → 60s pause.
  * **Tier 3:** **±10%/60s** → 120s pause + reprice check.
* Resumption requires **mark–index alignment** within **1.0%** and stable dispersion (≤0.5%) for 30s.<br>

#### 5) Position limits (user-level)

* **Per-series:** max **20,000 contracts** notional equivalent (BTC) / **5,000 contracts** (ETH) for long positions in OTM strikes (Pahse1; subject to risk review).
* **Per-underlying:** laddered limits by **tenor bucket** (daily/weekly/monthly/quarterly) to reduce concentration.

#### 6) Vault coverage gates (platform-level)

CoverageRatio formula:

$$
CoverageRatio = \frac{VaultCapital - \left| Exposure\_{adjusted} \right|}{\left| Exposure\_{adjusted} \right|}
$$

Actions:

$$
CoverageRatio < 0.5 ; \text{= disable (ASK) on exposed side}
$$

$$
CoverageRatio < 0.1 ; \text{= disable (ASK) and (BID) on exposed side}
$$

Direction rule:

$$
\Delta\_{portfolio} < 0 : \text{Calls disabled (ASK)}
\quad\quad
\Delta\_{portfolio} > 0 : \text{Puts disabled (ASK)}
$$

PnL safety gate:

$$
\left| PnL\_{unrealized}^{loss} \right| \geq VaultCapital
;;\Rightarrow;; \text{Halt exposed side quotes}
$$

*(These align with the* [*Margin page*](/trade/margin) *and ensure we never add risk beyond coverage.)*

#### 7) Auto-deleverage / liquidations (for buyers)

* **Not applicable to buyers** — max loss is the **premium**; no margin calls, no liquidations.
* System-level protections (halts/bands/coverage) prevent disorderly prints and ensure payout capacity.

### Hedging & quote continuity

**External hedges by the professional market maker:**

* **Futures/perpetuals:** reduce exposure **directly by notional** in the coverage calc.
* **Options:** reduce exposure via **delta contribution** only.
* If read-only API connectivity to external venues fails, hedges are **ignored** until feeds recover (conservative default).\
  *(NOP / coverage methodology is detailed on the* [*Margin page.*](/trade/margin)*)*

### Notes on transparency vs. flexibility

* Some top venues **publish explicit % levels** (e.g., 10%/2s breaker) while others keep bands **dynamic/undisclosed**. We adopt a **hybrid**:
  * **Published baselines** (e.g., ±2.5% bandwidth; 5/7.5/10% breakers),
  * **Risk discretion** to expand bands temporarily (up to ±5%) during abnormal volatility, with post-event disclosure.
* As the market matures (and we launch the DEX), we’ll formalize more as **deterministic formulas**.


# Margin

Margin ensures that every option trade on ClickOptions is **fully secured** and that payout obligations can always be honored.\
The system distinguishes between two types of margin:

* **User Margin** – applies to traders who buy options
* **Vault Margin (Underwriter Margin)** –applies to ClickVault participants who underwrite option risk.&#x20;

### User Margin

**Simple and Limited**

* Option buyers only pay the premium upfront.
* There are no margin calls.
* Maximum risk = the premium paid.

This makes options buying safer and simpler than leveraged futures or perpetuals.

### Vault Margin (Underwriter Margin)

The **Vault** is the central margin pool that underwrites all written options.\
It contains:

* Collateral pledged by community contributors, market makers, and ClickOptions
* Collected premiums from all open option trades
* Unrealized PnL from open positions

Reserves and treasury buffers are kept **outside** VaultCapital. They act as additional protection layers (see [*Risk Assurance*](/trade/risk-assurance)).

#### Portfolio-Based Margin

Unlike traditional exchanges where each short option requires separate maintenance margin, ClickOptions uses a **portfolio model**:

* **Offsetting Risk** → Profits from calls offset premiums from puts
* **Delta-Based Controls** → Margin scales with net portfolio exposure, not per trade
* **Capital Efficiency** → Recognizes natural hedges across expiries/strikes, requiring less locked collateral

#### Step 1 – Delta Contribution per Option

$$
\Delta\_{portfolio} =
\sum \left( \Delta\_{call} \times Size\_{call} \right) +
\sum \left( \Delta\_{put} \times Size\_{put} \right)
$$

$$
\Delta\_{call}: 0 ;\to; 1
$$

$$
\Delta\_{put}: -1 ;\to; 0
$$

#### Step 2 – Net Exposure

$$
Exposure\_{net} = \Delta\_{portfolio} \times SpotPrice
$$

#### Step 3 – Non-linear Adjustment

Calls and puts do not perfectly hedge each other, especially when far ITM/OTM or during volatility spikes.

$$
Exposure\_{adjusted} = Exposure\_{net} + \kappa \times Vega\_{portfolio}
$$

Where:

$$
\kappa = \text{stress multiplier (volatility regime)}
$$

$$
Vega = \text{sensitivity to volatility}
$$

#### Coverage-Based Controls (Vault Utilization)

Instead of individual margin requirements per trade, ClickOptions uses **coverage ratios** based on Vault Capital vs. Adjusted Net Exposure:

$$
CoverageRatio = \frac{VaultCapital - \left| Exposure\_{adjusted} \right|}{\left| Exposure\_{adjusted} \right|}
$$

* If

$$
CoverageRatio < 0.5
$$

→ **ASK side disabled** for the exposed leg

$$
\Delta\_{portfolio} < 0 ; : ; \text{Calls disabled (ASK)}
$$

$$
\Delta\_{portfolio} > 0 ; : ; \text{Puts disabled (ASK)}
$$

* If

$$
CoverageRatio < 0.1
$$

→ **ASK and BID disabled** for the exposed leg (trading halted on that side).

**Example**

* VaultCapital = 1,000,000 USDT
* Adjusted Net Exposure = 800,000 USDT

$$
CoverageRatio = \frac{1{,}000{,}000 - 800{,}000}{800{,}000} = 0.25
$$

→ Coverage < 0.5 → **ASK side disabled**.

#### Market Maker Hedging via External Venues

Professional market makers may hedge exposure on external venues.\
ClickOptions integrates these positions into the Vault risk engine via **read-only API keys**.

* **Futures / Perpetuals**: reduce exposure **directly** by notional amount.
* **Options**: reduce exposure only through **delta contribution**.

NOP calculation with external hedges:

$$
Exposure\_{adjusted}^{hedged} =
\left( \Delta\_{portfolio} + \Delta\_{options}^{external} \right) \times IndexPrice

* FuturesNotional^{external}

- \kappa \times Vega\_{portfolio}
  $$

Connectivity is continuously monitored.\
If API data is delayed or unavailable, the system automatically reverts to **internal-only exposure** (hedges excluded).

**Important**

* External hedges reduce Vault exposure but their **PnL is not included** in VaultCapital (belongs to the MM).
* Only if ClickOptions executes hedges directly would hedge PnL be reflected in VaultCapital.

#### PnL Coverage Gate

If running losses on Vault positions exceed Vault Capital, exposed side quotes (BID/ASK) are halted entirely.

$$
\left| PnL\_{unrealized}^{loss} \right| \geq VaultCapital
;;\Rightarrow;; \text{Halt exposed side quotes}
$$

This ensures outstanding contracts remain solvent until expiry.


# Risk assurance

ClickOptions ensures that every option trade executed on the platform is **collateralized and settled in real time**.\
A multi-layer protection model secures client payouts while enforcing strict exposure controls.

### 1. ClickVault (Primary Risk Pool)

* All option contracts are backed by the **ClickVault**, a capital pool funded in USDT/USDC.
* Participants include approved market makers, community contributors, and ClickOptions itself.
* Collected premiums are automatically credited to VaultCapital.
* Profits and losses are allocated pro-rata among contributors based on their equity share.
* **Important**: Market Makers do not control Vault assets directly; allocation is automated under ClickOptions’ margin and exposure rules. (see [Margin](/trade/margin) section)

### 2. Capacity & Coverage Gates

ClickOptions continuously monitors Vault exposures.

* **Capacity Gate (L1)**: when utilization reaches the cap, ASK quotes on the exposed side are disabled; only partial fills and BID (closing) remain.
* **Coverage Gate (L2)**: if unrealized Vault losses ≥ VaultCapital, exposed side quotes are halted entirely.

Together, these mechanisms ensure the Vault never exceeds its ability to honor payouts.

See [Margin](/trade/margin) for details on Coverage Gates

### 3. Insurance Layer – *Atlas Assurance LLC* (in pipeline)

A dedicated insurance partner, **Atlas Assurance LLC**, strengthens protection for traders.

* A fixed percentage of collected premiums is allocated to Atlas Assurance.
* The insurer also engages in **reinsurance strategies** to diversify and mitigate risks.
* This creates an additional safety net beyond VaultCapital.

### 4. Treasury Reserves

Over time, ClickOptions builds its own **treasury buffers and reserves**.\
These serve as a final backstop in case of market gaps or systemic events.

### Settlement Waterfall

1. **ClickVault Capital** (market makers + community + ClickOptions + premiums)
2. **Insurance Layer** (*Atlas Assurance LLC*, with reinsurance strategies)
3. **ClickOptions Treasury Reserves**

At each stage, sufficient collateralization is maintained to support full payout obligations.

### Transparency

* **Vault monitoring**: real-time exposure controls and utilization caps
* **Insurance**: a fixed % of premiums is allocated to Atlas Assurance LLC
* **Treasury reporting**: reserves disclosed in quarterly platform updates

With this layered model, traders know their option payouts are secured by **collateral Vault capital, external  insurance protection, and ClickOptions reserves**.


# Index price

The **Options Index Price** is our proprietary benchmark for valuing and settling option contracts. It is designed to be **robust against manipulation**, **resistant to stale data**, and **consistent across multiple exchanges**.

#### Calculation Flow

1. **Validation of Inputs**
   * Underlying asset, timestamp, and list of quotes must be present.
   * If any are missing, the index cannot be derived.
2. **Filter Non-Stale Quotes**
   * Only quotes marked as *fresh* are considered.
   * If no fresh quotes remain → index calculation fails.
3. **Extract Candidate Prices**
   * For each valid quote, the **midOrLast() price** is taken.
   * These values form the **candidate price set**.
4. **Median Aggregation**

   * The index is the **median** of candidate prices:

   $$
   IndexPrice =
   \begin{cases}
   Price\_{\frac{n+1}{2}}, & n \text{ is odd} \\\[10pt]
   \frac{Price\_{\frac{n}{2}} + Price\_{\frac{n}{2}+1}}{2}, & n \text{ is even}
   \end{cases}
   $$

   * Median ensures stability and reduces sensitivity to outliers.
5. **Final Scaling**
   * Result is rounded to the configured **scale** (precision) using *half-up rounding*.
6. **Result Packaging**
   * Final index object contains:
     * Underlying asset ID
     * Timestamp (epoch ms)
     * Calculated index price
     * Contributing quotes (exchange + price)

#### Example (Odd Number of Quotes)

**Input Quotes (Fresh Only):**

* Exchange A: 100,000
* Exchange B: 100,050
* Exchange C: 99,950
* Exchange D: 100,200
* Exchange E: 99,900

**Step 1 – Sorted Candidate Prices:**

\[99,900,  99,950,  100,000,  100,050,  100,200]\[99,900,\\; 99,950,\\; 100,000,\\; 100,050,\\; 100,200]\[99,900,99,950,100,000,100,050,100,200]

**Step 2 – Median:**

* n=5n = 5n=5 (odd)
* Median = 3rd value = **100,000**

**Final Index Price:**

IndexPrice=100,000.00IndexPrice = 100{,}000.00IndexPrice=100,000.00


# Fees and Commissions

ClickOptions applies a **transparent and capped fee model** to all option trades.\
Fees are charged on trade entry, exit, and at expiry if the option expires in-the-money (ITM).

### **1. Trading Fee**

Trading Fees are charged when **opening** or **closing** an option position.

**Formula:**

$$
\text{Trading Fee} = \text{Index Price} \times \text{Quantity} \times \text{Contract Size} \times \text{Fee Rate}
$$

**Fee Rate:** 0.025% (default)

#### **Maximum Fee Cap**

The trading fee can never exceed **10% of the option’s total value (premium paid).**

$$
\mathrm{TradingFee}\_{\max} = \mathrm{OptionPrice} \times \mathrm{Quantity} \times MaxCapRate
$$

If the calculated trading fee exceeds this cap, the maximum value applies automatically.

### **2. Exercise Fee**

ClickOptions options are **cash-settled**. An **Exercise Fee** is charged **only when an option expires in-the-money (ITM)**, and **daily options opened and expired on the same day are exempt**.\
Importantly, the fee is applied **to your exercise profit/loss (P/L)**—**not** to the underlying notional—making it more user-friendly and proportional to the actual outcome.

**Formula:**

$$
\text{Exercise Fee}
===================

\min\left(
\text{Exercise Fee Rate} \times \text{Exercise P/L},
\ 10% \times \text{Option Value}
\right)
$$

* **Exercise Rate:** 0.01%
* **Max Cap:** 10% of the option’s open premium value.
* The lower of the two values (calculated fee vs. max cap) is applied.

> For more details, please see the **Expiry & Settlement** section.

### **3. CLICK Fee Discount**

Eligible platform commissions can be settled in **CLICK** at a **disclosed discount**. The discount schedule will be confirmed before listing and published in the CLICK Tokenomics Paper.

$$
\mathrm{DiscountedFee} = \mathrm{Fee} \times (1 - \mathrm{DiscountRate})
$$

Where:

* *Fee* = Trading or Exercise Fee (in USDT)
* *Discount Rate* = the disclosed CLICK fee discount

> Paying eligible commissions in CLICK is one of the token’s core utilities. See the **Token Utility and Policy** section for details. Fee tiers may improve net execution economics but do not guarantee profitable arbitrage.

### **4. Balance & Equity Handling**

* When opening a position, both the **option premium** and **Trading Fee** are deducted immediately.
* To close early, the account must have sufficient equity to cover the **closing Trading Fee**.
* If equity is insufficient, the platform blocks the close request and shows a warning.

### **5. Worked Examples**

**Assumptions:**

* **BTC Contract Size:** 0.01 BTC per contract
* **Fee Rate:** 0.025%
* **Exercise Fee Rate:** 0.01%
* **Max Fee Cap:** 10% of option premium value

#### **Example A – Open & Close Before Expiry**

| Parameter     | Value        |
| ------------- | ------------ |
| Index Price   | 110,000 USDT |
| Option Price  | 150 USDT     |
| Contract Size | 0.01 BTC     |
| Quantity      | 1            |
| Max Cap       | 10%          |

**Step 1 – Trading Fee (per side)**

$$
110{,}000 \times 1 \times 0.01 \times 0.00025 = 0.28,\mathrm{USDT}
$$

**Step 2 – Fee Cap Check**

$$
150 \times 1 \times 0.10 = 15,\mathrm{USDT}
$$

Actual applied fee = 0.28 **USDT per trade** (below the cap).

#### **Example B – Open Call and Expire ITM**

| Parameter        | Value        |
| ---------------- | ------------ |
| Index price      | 111,000 USDT |
| Strike           | 110,000 USDT |
| Settlement Price | 115,000 USDT |
| Option Price     | 150 USDT     |
| Contract Size    | 0.01 BTC     |
| Quantity         | 10           |

**Step 1 – Trading Fee (entry)**

$$
111{,}000 \times 10 \times 0.01 \times 0.00025 = 2.78,\mathrm{USDT}
$$

**Step 2 – Exercise Fee (ITM only)**

Exercise P/L = (115,000 − 110,000) × 0.01 × 10 = 500 USDT.

$$
\mathrm{ExerciseFee} =
\min!\left( 500 \times 0.0001,\ \ 10 \times 150 \times 0.10 \right)
\= \min(0.05,\ 150) = 0.05,\mathrm{USDT}
$$

Total Fees = 2.78 + 0.05 = 2.83 **USDT**.

> A disclosed CLICK fee discount applies where eligible commissions are settled in CLICK; the schedule is confirmed before listing.


# Expiry and Settlement

### Expiry Time

* All options on ClickOptions **expire at 08:00 UTC** on their maturity date.
* Available expiries: **Daily, Weekly, Monthly, Quarterly**.
* Once expired, contracts are **automatically settled** and results recorded in *Exercise History*.

### Settlement Price Calculation

The **Settlement Price** is based on the **time-weighted average price (TWAP)** of the proprietary Index Price during the last **30 minutes before expiry (07:30–08:00 UTC)**.

#### Formula:

$$
SettlementPrice = \frac{\sum (IndexPrice\_t \times Weight\_t)}{\sum Weight\_t}
$$

Where:

* IndexPricetIndexPrice\_tIndexPricet​ = Index Price at time *t*
* WeighttWeight\_tWeightt​ = Assigned weight for observation *t*

This ensures the final settlement price is robust against **short-term volatility and price manipulation**.

### ITM vs OTM Outcomes

* **In-the-Money (ITM):**\
  The option has positive intrinsic value at expiry.

  * **Call Option:**

  $$
  IntrinsicValue = \max(IndexPrice\_{settlement} - Strike, ; 0) \times ContractSize
  $$

  * **Put Option:**

  $$
  IntrinsicValue = \max(Strike - IndexPrice\_{settlement}, ; 0) \times ContractSize
  $$
* **Out-of-the-Money (OTM):**\
  The option expires worthless → no payout.

### Exercise Fee

* **Applied only to ITM options** at expiry.
* **Exercise rate**: **0.01%**
* **Exemption:** If the option was opened and expired on the **same day**, no exercise fee applies.

#### Formula:

$$
\text{Exercise Fee}
===================

\min\left(
\text{Exercise Fee Rate} \times \text{Settlement Price} \times \text{Contract Size},
\ 10% \times \text{Option Value}
\right)
\times \text{Position Size}
$$

### Example – BTC Call Expiry

* **Strike:** 100,000 USDT
* **Settlement Price:** 105,000 USDT
* **Contract Size:** 0.01 BTC
* **Position size:** 10 contracts&#x20;
* **Premium Paid:** 150 USDT
* **Exercise Fee Rate:** 0.01%

#### Option value:&#x20;

$$
\text{Option Value}
===================

# 105{,}000 - 100{,}000

5{,}000\times 0.01 \times 10 = 500
$$

#### Exercise fee:

$$
\text{Exercise Fee}
===================

\min\left(
0.01% \times 105{,}000 \times 0.01,
\ 10% \times 500 \times 0.01
\right)
\times 10
$$

ExerciseFee = 0.11 USDT

Profit=500−150−0.11= 349.89  USDT


# User Guide


# Earn

This section covers how participants can contribute capital or distribution and be rewarded within the policy.&#x20;

You’ll find the mechanics for Vault and Staking (lock tiers, loss waterfall, CLT/CAR formulas, proportional withdrawals), Token Utility and Policy (fee discounts, boosted tracks when Vault+Token, treasury reporting cadence), Affiliate and Referral (eligibility, attribution, payout schedule, disclosure rules, regional restrictions), and the Market Maker / LP Program (quoting obligations, scoring, incentives, penalties, onboarding).&#x20;

Language here is utility-first, so you can understand exactly how value flows and what behaviors are incentivized.


# Staking and Vault Participation

> **Roadmap.** CLICK staking and ClickVault participation are part of the designed ecosystem and activate **at or after the CLICK token launch**. The mechanics below describe the intended framework; final parameters are confirmed before launch. Token rewards are funded from **capped, disclosed token reserves — not from company or platform revenue** — and CLICK carries no equity, debt, dividend, profit-sharing or revenue-sharing rights. The **CLICK Tokenomics Paper** is the canonical source for all token parameters.

The ClickOptions ecosystem is designed around two participation channels:

1. **CLICK Staking** — stake CLICK to unlock fee and access tiers and to earn rewards from disclosed reserves.
2. **ClickVault Participation** — contribute stablecoins (USDT/USDC) to the Vault to help underwrite option risk and share in Vault performance under a transparent, pro-rata model.

Users may participate in either channel independently or combine both.

### CLICK Staking (designed)

Staking CLICK is designed to provide:

* **Fee & access tiers** — settle eligible commissions in CLICK for a **disclosed discount** (schedule confirmed before listing), and unlock access tiers.
* **Rewards** — CLICK rewards funded from capped, disclosed token reserves.

Intended staking options:

* **Flexible** — withdraw anytime; lower base rewards; subject to settlement pacing if Vault liquidity is stressed.
* **7-Day Lock** — locked until maturity; rewards auto-compounded at cycle end; optional Auto-Restake; early exit triggers a redemption fee.
* **30-Day Lock** — locked until maturity; rewards auto-compounded at cycle end; optional Auto-Restake; early exit triggers a redemption fee.

> Rewards are not a share of trading revenue. They are distributed from disclosed token reserves and are subject to the caps in the Tokenomics Paper.

### ClickVault Participation (roadmap)

**ClickVault** is a design-stage risk-capital framework intended to underwrite option risk. Once live, participants deposit **USDT/USDC** and receive pro-rata Vault shares whose value tracks Vault performance.

* Returns are **performance-linked and variable — not a fixed or guaranteed APY**, and not a claim on company revenue.
* Vault results (premiums, settlements, hedging and mark-to-market) are shared pro-rata among capital providers.
* Detailed accounting, capital-adequacy, stress-loss and withdrawal mechanics are described in the **ClickOptions Technical Paper**.

### Designed Liquidity Controls

To protect solvency, the Vault is designed to monitor two ratios continuously:

$$
VaultLiquidity% = \frac{Available ; Liquidity}{Maximum ; Capacity} \times 100
$$

$$
CAR = \frac{Vault;Capital}{Required;Capital}
$$

* **VaultLiquidity%** measures the available liquidity buffer.
* **CAR (Capital Adequacy Ratio)** measures Vault health; a low CAR triggers more conservative withdrawal allowances.

Below a **Critical Liquidity Threshold (CLT)**, withdrawals are capped proportionally to each participant’s share of Vault capital, regardless of lock type, and a **dynamic settlement fee** applies that increases as liquidity falls:

$$
\text{SettlementFeeRate} = \text{Fee}\_{\max} \times \frac{\text{CLT} - \text{VaultLiquidity%}}{\text{CLT}}
$$

Fees collected are retained in the Vault to accelerate recovery. Withdrawal restrictions lift automatically once CAR and VaultLiquidity% recover above their thresholds. Threshold values are governance parameters, finalised before launch and published in the transparency dashboard.

### Transparency

Once live, staking and Vault metrics are published in real time via a **Transparency Dashboard**, including Vault Liquidity %, CAR, CLT status, active settlement fees and user reward history.


# Affiliate and Referral Program

The ClickOptions Affiliate Program is designed to be one of the most rewarding and transparent in the industry.\
Affiliates earn **lifetime commission rewards** for every client they introduce, with progression from a base rate of **50%** up to **65%**.

### Program Overview

* **Lifetime Rewards:** Commissions are paid for as long as referred clients trade on the platform.
* **Default Commission:** 50% of platform fees generated by referred clients.
* **Progression Tiers:**
  * 50% → Default starting rate
  * 55% → Reached when milestone achieved
  * 65% → Maximum reward level
* **Separate Wallet:** Affiliate earnings are stored in a dedicated **Affiliate Wallet**, independent of the trading balance.

### Progression & Milestones

Affiliates unlock higher commission rates by growing their network.\
Milestones are based on both **number of clients** and **total trading volume** introduced.

* **Level 1 (50%)** – Default
* **Level 2 (55%)** – Example milestone: 25 introduced users **AND** $5M total trading volume
* **Level 3 (65%)** – Example milestone: 100 introduced users **AND** $25M total trading volume

A **progress bar** inside the Affiliate Dashboard shows progress toward the next tier.

### Affiliate Dashboard

The Affiliate Dashboard provides real-time visibility of all affiliate activity.

#### Key Features:

1. **Overview**
   * Current affiliate rate (with visual progress bar)
   * Referral link & code (one-click copy)
   * Summary stats:
     * Total Introduced Users
     * Total Trading Volume
     * Current Earnings
2. **Introduced Clients**
   * List of referred users with masked identifiers (e.g., `j*@gmail.com`)
   * Signup date
   * Total trading volume
   * Commission generated
   * Affiliate earnings
3. **Reports**
   * Per-order breakdown for transparency:
     * Order time & ID
     * Asset traded
     * Contract type (Option / Spot / Futures)
     * Notional amount
     * Fee charged
     * Affiliate rate applied
     * Affiliate earnings credited
   * **Logic:** Rates are locked at the time of order execution.
4. **Transaction History**
   * Covers all Affiliate Wallet movements:
     * Payouts (daily/weekly/manual)
     * Withdrawals
     * Adjustments (bonus/rebate)
   * Status: Completed / Pending / Failed

### Payouts

* **Fees are displayed instantly** inside the Affiliate Dashboard.
* **Release Schedule:** By default, commissions are paid out **daily**.
* In certain cases — such as suspicious patterns, unusual spikes in unverified clients, or risk-control measures — payouts may be switched to **weekly, monthly, or manual review**.
* Full details can be found in the [Affiliate Agreement.](https://clickoptions.ai/affiliate)

### Example

An affiliate refers **30 traders** who generate **$7M in trading volume**:

* Base commission: 50%
* Milestone reached → Commission upgraded to 55%
* For a referred order with a $100 fee:
* $$
  AffiliateEarnings = Fee \times AffiliateRate
  $$

  $$
  AffiliateEarnings = 100 \times 0.55 = 55 ; USDT
  $$

### Transparency & Fairness

* Affiliate rates are **tiered, visible, and progress-based** — no hidden deals.
* Fees are shown in real-time, and payout schedules are transparent.
* Risk-adjusted payout controls protect against fraudulent or abusive behavior.
* Payouts are automated once released, with manual override available in case of disputes or adjustments.

### Creative Guidelines & Compliance

To protect both affiliates and clients, all promotional activity must follow compliance rules:

* **Branding**: Affiliates may only use official ClickOptions logos, banners, and creatives unless otherwise approved.
* **Prohibited Claims**: No false promises of guaranteed profits, risk-free trading, or misleading returns.
* **Transparency**: Affiliates must clearly state they are compensated for referrals.
* **Advertising Restrictions**: No spam, unsolicited emails, or misleading PPC campaigns using ClickOptions brand terms.
* **Monitoring**: ClickOptions reserves the right to audit affiliate materials and suspend accounts for violations.

### Disclosure Rules

Affiliates must comply with applicable advertising laws and industry best practices:

* **Mandatory Disclaimer**: Any promotional content must include a risk disclaimer.
* **Affiliate Disclosure**: Affiliates must disclose they may earn commissions from referrals.
* **Jurisdictional Laws**: All content must comply with financial marketing regulations in the region where it is shown.

### Regional Restrictions

Affiliates must ensure they do not target [restricted jurisdictions.](/trust/legal-and-compliance) Violations will result in commission clawbacks and potential account termination.


# Token Utility and Policy

CLICK is the proposed utility token of the ClickOptions ecosystem, designed for fee settlement, access tiers, contests and funded-trader qualification. The CLICK Tokenomics Paper is the canonical sour

CLICK is the proposed native **utility token** of the ClickOptions ecosystem. Its value case rests on product utility — not on buybacks, revenue sharing or supply reduction. CLICK is not designed to provide equity, debt, dividends, profit sharing or revenue sharing.

> The **CLICK Tokenomics Paper** is the sole authority for token supply, allocation, vesting, launch circulation, liquidity controls and governance. Where any figure here differs, that paper controls.

### Token Utility

**Targeted for TGE**

* **Fee settlement** — pay eligible platform commissions in CLICK for a disclosed discount.
* **Access tiers** — stake CLICK to unlock fee and access tiers.
* **Contests & funded-trader** — enter skill leaderboards, trading challenges and funded-trader qualification.

**Roadmap**

* **Vault-linked access** — optional benefits for qualifying ClickVault participation.
* **Professional tools** — selected advanced programmes and ecosystem integrations.
* **Scoped governance** — community rewards, grants and competition formats only.

### Trading Fee & CLICK Discount

* **Base commission:** `0.025%` (capped at 10% of premium).
* **CLICK discount:** eligible commissions settled in CLICK receive a **disclosed discount**. The discount schedule will be confirmed before listing. Fee tiers may improve net execution economics but do not guarantee profitable arbitrage.

### Economic Design

* **Rewards are funded from capped, disclosed token reserves — not from company or platform revenue.** Token rewards are a claim on those reserves, not on trading profits.
* **Fixed supply:** 1,000,000,000 CLICK.
* **Transaction-linked supply reduction (secondary mechanism):** a portion of CLICK used to pay eligible fees may be applied to an indicative allocation of **50% transaction-linked supply reduction / 30% treasury / 20% ecosystem**. This is a secondary mechanism, not the value case, and its economic cost is accounted for before retained revenue.
* **No treasury-funded automatic buyback.** There is no published buyback formula; any treasury-funded purchase would be discretionary and is excluded from the base-case model.
* The disclosed CLICK fee discount is deducted **before** commission revenue is recognised — headline gross fees are not treated as retained revenue.

### Governance Scope

Community participation is limited to **rewards, grants, competition formats and a defined community treasury**. Fees, risk limits, compliance, custody, listings, market-making controls and core platform operations remain under accountable company governance. Treasury and reserve wallets operate under multisignature controls, deployment limits and periodic reporting.

### Reporting & Transparency

* Treasury, liquidity, vesting and reserve wallet addresses are published before listing and reconcilable to the supply figures in the Tokenomics Paper.
* Supply, wallet concentration and reserve deployment are reported periodically.

> Full allocation, vesting, TGE circulation, liquidity structure, fee-payment mechanics and launch-readiness commitments live exclusively in the **CLICK Tokenomics Paper**.


# Market Maker / LP Program

## Market Maker / Liquidity Provider Program

ClickOptions integrates professional Market Makers (MMs) to deliver continuous, competitive, and **demonstrably best-priced** options quotes. This page defines the **obligations, monitoring, and enforcement** that make that promise measurable rather than aspirational.

#### The ClickOptions difference — a price-improvement mandate

For most venues, a market maker's core duty is simply to be **present** with a quote. On ClickOptions, presence is the *baseline*, not the obligation. The binding commitment is **price improvement**: MMs contractually undertake to quote **tighter spreads and lower premiums than the wider market for at least 95% of the time**, per instrument — a stricter, *relative* performance standard rather than a simple presence requirement.

#### Vault-integrated model

* The **ClickVault** is the settlement pool. MMs are **price-feed providers**, not fund managers.
* Because ClickOptions uses a **portfolio-margin model**, a short option does not require separate maintenance margin per position — risk is managed at the Vault level.
* MMs **lock capital into the Vault** as regular contributors, aligning their incentives with settlement solvency. They never control Vault assets directly.

***

### 1. Onboarding

1. **Capital Lock** — each MM locks **250,000–1,000,000 USDT** into the Vault (final amount set by ClickOptions) as a regular contributor.
2. **Acknowledgment** — the MM operates strictly as a **price-feed provider** and does not direct Vault assets.
3. **Integration** — connectivity via **API / FIX**, with mass-quote support and exchange-side **Market Maker Protection (MMP)** (see §7).

***

### 2. Quoting Obligations

#### 2.1 Price-Improvement Obligation — the 95% Standard

For every instrument in the **Core Coverage Set** (§2.5), the MM's live two-sided quote must **improve on the Consolidated External Best** for **≥ 95% of evaluated snapshots per instrument, per UTC day**.

**Consolidated External Best (CEB)** — the tightest bid and lowest ask across the major external options venues, taken from the ClickOptions market-data pipeline's synchronized top-of-book (the same normalized, per-underlying USD feed used by our public pricing benchmarks).

A snapshot **qualifies as improving** when **both** hold:

$$
\text{CO Ask} \le \text{CEB Ask} \quad\text{(lower premium to buy)} \qquad\text{and}\qquad \text{CO Spread} \le \text{CEB Spread}\quad\text{(tighter market)}
$$

* The obligation is **relative** (versus the live external market), which automatically adapts to volatility regimes — unlike a fixed spread cap.
* For deep-OTM series whose fair bid is zero, the obligation applies to the **offer (ask) side only** — a lower premium than the external best ask (see §2.2).
* The **Maximum Quote Width** matrix (§2.3) is an independent absolute ceiling that applies at all times, including when no external quote exists.

#### 2.2 Continuous Presence

* **Presence Ratio ≥ 99%** of each UTC day, quoting **24/7**.
* Quotes must be **two-sided wherever a genuine two-sided market exists**. For deep-OTM tail series whose fair bid is zero, a one-sided **ask-only** quote is normal and fully satisfies the obligation — the MM is not required to post a non-zero bid where none is warranted.
* A **valid quote** — the unit counted in every ratio — must be **resting ≥ 3 seconds**, **within the Maximum Quote Width** (§2.3), and **at or above the Minimum Quote Size** (§2.4) on each side it is required to show. Flickering or sub-second quotes do not count.

#### 2.3 Maximum Quote Width (absolute ceiling)

An absolute ceiling on the bid-ask width an MM may show, adaptive by moneyness and tenor — caps widen with both distance from the money and time to expiry. Values are a **percentage of the option mark**:

| Moneyness (distance of strike from spot) | ≤ 7 DTE | 8–30 DTE | 31–90 DTE | > 90 DTE |
| ---------------------------------------- | ------- | -------- | --------- | -------- |
| **ATM** (±2%)                            | 1.0%    | 1.5%     | 2.5%      | 4.0%     |
| **Near** (2–10%)                         | 2.0%    | 3.0%     | 5.0%      | 8.0%     |
| **Wing** (10–25%)                        | 5.0%    | 8.0%     | 12.0%     | 20.0%    |
| **Deep** (>25% or \|Δ\| < 0.10)          | 15.0%   | 25.0%    | 35.0%     | 45.0%    |

> Under **Stressed Market Conditions** (§4) every cap in this table is **doubled**.

#### 2.4 Minimum Quote Size & Depth

* **Best of book:** ≥ **0.1 BTC** / **1 ETH** on each side (for BTC, equal to **10× the 0.01-BTC contract minimum**).
* **Depth of book:** ≥ **5 BTC** / **100 ETH** aggregated across the near-ATM, short-dated strikes.
* Size requirements scale adaptively with moneyness and tenor; wings and long-dated series carry lighter depth obligations.

#### 2.5 Instrument Coverage

* **Core Coverage Set** = all listed BTC and ETH series with **DTE ≤ 90** and **|moneyness| ≤ 25%**. The 95% price-improvement and presence obligations apply to this set.
* MMs must maintain valid quotes in **≥ 90% of the Core Coverage Set** at all times.
* Far-dated (>90 DTE), deep-wing, and newly-listed series are **encouraged** but excluded from the binding ratios.

***

### 3. Pricing-Continuity Standard

Beyond individual quotes, MMs must maintain a **fair, orderly, and continuous price path**:

* **No gapping.** Consecutive quote updates on the same instrument may not move the mid by more than the greater of **one tick** or **1.5× the current Maximum Quote Width**, absent a corresponding move in the underlying index. This prevents discontinuous "jump" pricing.
* **Mandatory re-entry after a fill.** After an MMP freeze or a fill that exhausts displayed size, the MM must re-quote within the **Frozen Interval of 5 seconds** (§7).
* **No stale, locked, or crossed quotes.** Quotes must track the index; a quote that crosses the CEB in the MM's own favor for longer than one snapshot is treated as a continuity breach.
* **Two-sided wherever a two-sided market exists** during obligated hours (ask-only is acceptable on zero-bid tails, per §2.2), except under §4 conditions.

***

### 4. Exceptional & Stressed Market Conditions

ClickOptions applies a two-tier carve-out framework covering both temporary market dislocations and outright emergencies.

**Exceptional Circumstances — obligations suspended.** Quoting obligations (§2–§3) do **not** apply during, and ClickOptions will publish the start and resumption of, any of:

* extreme volatility triggering platform-wide circuit breakers;
* a reference-venue or market-data-feed outage that prevents a reliable Consolidated External Best;
* an inability to prudently hedge or manage risk (clearing, margin, or connectivity failure);
* war, cyber-sabotage, or other force-majeure events.

**Stressed Market Conditions — obligations relaxed.** Triggered automatically by significant short-term moves in price, volume, or implied volatility. For the duration of the stress window (default **10 minutes**, auto-extending while the trigger persists):

* **Maximum Quote Width doubles** (§2.3) and **Minimum Quote Size halves** (§2.4);
* the **Price-Improvement threshold is relaxed from 95% to 80%**;
* presence obligations continue.

***

### 5. Monitoring & Measurement

Compliance is **computed continuously, qualified daily, and reviewed monthly**.

**Sampling.** The compliance engine snapshots every MM's book **every 10 seconds** and reconciles each snapshot against the latest Consolidated External Best from the market-data pipeline.

**Daily qualification.** An **instrument-day is compliant** when, over that day's snapshots:

* Price-Improvement Ratio **≥ 95%** (≥ 80% under Stressed Conditions), **and**
* Presence Ratio **≥ 99%**, **and**
* no unresolved Pricing-Continuity breach (§3).

**Monthly review.** An MM is compliant for the month if compliant instrument-days cover the Core Set within a **tolerance of 3 violation-days per instrument per month**. Tiers and rebates for the next month are set from this review.

**Scorecard & reporting.** Each MM receives a **daily report card (T+1)** tracking:

| KPI                         | Definition                                                           |
| --------------------------- | -------------------------------------------------------------------- |
| **Price-Improvement Ratio** | % of snapshots at-or-better than the Consolidated External Best      |
| **Presence Ratio**          | % of snapshots with a valid two-sided quote                          |
| **Spread Quality**          | time-weighted depth of improvement inside the external best (see §6) |
| **Depth Score**             | average displayed size ÷ minimum required size                       |
| **Coverage**                | % of the Core Coverage Set quoted                                    |
| **Continuity Flags**        | count of §3 breaches                                                 |

***

### 6. Scoring & Rewards

A monthly **composite score** blends the §5 KPIs and sets the reward tier. The **Spread-Quality multiplier** rewards *how far inside* the external best the MM quotes — a distance-graded gradient rather than a binary pass/fail:

| MM improvement vs. Consolidated External Best       | Multiplier |
| --------------------------------------------------- | ---------- |
| Strictly inside by **≥ 50%** of the external spread | **5×**     |
| Inside by **25–50%**                                | **2×**     |
| At or inside by **0–25%**                           | **1×**     |
| Outside the external best (an obligation miss)      | **0×**     |

| Incentive             | Mechanism                                                                                                                                         | Notes                                                    |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| **Revenue Share**     | <div class="math math-display">\text{MM Share} = \frac{\text{MM Vault Deposit}}{\text{Total Vault Capital}} \times \text{Vault Performance}</div> | Proportional to the MM's Vault stake.                    |
| **Maker Fee Rebates** | Negative maker fees applied automatically on execution.                                                                                           | Scaled by composite score and Spread-Quality multiplier. |
| **Variable Rewards**  | Monthly incentive multiplier from the scorecard.                                                                                                  | Higher score → higher rebate tier.                       |

***

### 7. Risk Controls

ClickVault enforces portfolio-level controls (CAR, Coverage Ratio). On top of these, each MM is bound by **dynamic Delta, Vega, and Quantity limits** that scale with Vault size, plus exchange-side **Market Maker Protection (MMP)** — automatic quote-pull when a risk threshold is breached.

| Limit                 | Formula                                                                                                                   | Scaling  | Example (Vault = 10M USDT, index = 100k)                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------- |
| **Delta**             | <div class="math math-display">\Delta\_{\text{limit}} = \alpha \times \frac{\text{VaultCapital}}{\text{IndexPrice}}</div> | α = 0.5  | <div class="math math-display">0.5 \times \frac{10{,}000{,}000}{100{,}000} = 50 \text{ BTC}</div> |
| **Vega**              | <div class="math math-display">\text{Vega}\_{\text{limit}} = \beta \times \text{VaultCapital}</div>                       | β = 0.02 | <div class="math math-display">0.02 \times 10{,}000{,}000 = 200{,}000 \text{ USD}</div>           |
| **Quantity** (per 2s) | <div class="math math-display">Q\_{\text{limit}} = \gamma \times \frac{\text{VaultCapital}}{\text{IndexPrice}}</div>      | γ = 0.1  | <div class="math math-display">0.1 \times \frac{10{,}000{,}000}{100{,}000} = 10 \text{ BTC}</div> |

* **Frozen Interval:** 5 seconds before new quotes are accepted after an MMP trip.

***

### 8. Enforcement Ladder

Graduated for ordinary quote misses, immediate for abuse:

1. **Automated alert (real-time).** MMP protects the MM; the compliance engine flags any same-day breach on the report card.
2. **Non-compliance notice.** Issued when an instrument misses its daily qualification beyond the tolerated violation days.
3. **Cure period — 5 trading days** to restore KPIs.
4. **Rebate reduction / tier demotion** at the next monthly review if monthly KPIs are missed.
5. **Revenue-share suspension** after **2 consecutive** non-compliant months.
6. **Removal from the program** after **3 consecutive** non-compliant months, or on repeated Pricing-Continuity breaches.
7. **Immediate offboarding and reward clawback** for market abuse — wash or fictitious quotes, quote-fading/spoofing, or front-running the Vault.

> Related: Staking & Vault Participation · Fees and Commissions · Pricing & Spread Benchmarks


# Build


# API documentation

Split into REST, WebSocket, FIX (if any), auth, sandbox.

<br>


# API Guides and Examples

Code snippets (Python/JS), order flow recipes, idempotency, pagination, rate limits.

<br>


# Market Data

Endpoints, historical download, T+1 bulk, licensing.

<br>


# SDKs and Tools

Official/unofficial clients, Postman collection.

<br>


# Institutional Onboarding

VIP tiers, custody integrations, risk controls, reporting, SLAs.


# Trust

This is our transparency layer: how we safeguard assets, prove what we claim, and communicate when things go wrong, or right.&#x20;

This section details Security and Custody (segregation, MPC/HSM, key ceremonies, pen-tests), Audits and Reports (smart-contract audits, penetration tests, attestations, vault reports, future proof-of-reserves/liabilities), Pricing and Spread Benchmarks (monthly public report and methodology PDF), Status and Incidents (live status and post-mortems), Legal and Compliance (jurisdictional availability, restricted countries, marketing do/don’ts, trademarks, sanctions), and Privacy and Data (retention, analytics, cookies, user data requests).

Expect dated artifacts, plain-English explanations, and zero hype, just receipts.


# Security and Custody

ClickOptions follows institutional-grade security practices to keep client funds, Vault capital and protocol operations safe. Custody risk is actively managed and controlled — it is not eliminated.

#### **Asset Segregation**

* **Client funds** are held in platform-controlled wallets under documented multisignature and operational controls, segregated from ClickOptions’ operational treasury.
* **Vault capital** (roadmap) is designed to be isolated in smart contracts, separate from operational funds.
* Segregation is designed so that client withdrawals and option settlements remain unaffected by ClickOptions’ own finances.

#### **Key Management & Multisignature**

* Treasury and reserve wallets are secured with **multisignature controls**; signing requires threshold approvals and no single party holds unilateral control.
* Hot/warm operational wallets are kept minimal and separated from cold reserves.
* Withdrawal authorisation follows a defined approval and compliance workflow.

#### **Key Ceremonies**

* Formal **key-generation ceremonies** are conducted for treasury and reserve keys under documented procedures.
* Any future Vault smart contracts follow a separate deployment key-ceremony process, overseen by ClickOptions and independent auditors.
* Keys are rotated periodically and following any security event.

#### **Penetration Testing & Audits**

* ClickOptions commissions regular **penetration tests** on its trading infrastructure, covering application, network and cloud layers.
* **Independent smart-contract audits** are a pre-listing commitment for all on-chain modules before deployment (see Audits and Reports).
* A **bug bounty program** is planned to incentivise responsible vulnerability disclosure.

#### **Secure Development Lifecycle (SDLC)**

* Development follows a **secure software lifecycle** with:
  * Peer code reviews.
  * Automated security scans.
  * Continuous integration pipelines with inline security checks.
  * Role-based access for production deployments.
* **Threat modeling** is applied for every new feature.

> A move to third-party qualified custody may be introduced in a later phase. Any such arrangement, and any related certification, will be disclosed once contracted.


# Audits and Reports

ClickOptions is committed to independent verification and transparent reporting across the platform.

#### **Smart Contract Audits**

* Independent third-party smart-contract audits are a **pre-listing commitment**: all on-chain modules (including future Vault and governance contracts) are audited before deployment, with findings addressed before listing.
* Re-audits are performed after every major protocol upgrade.
* Audit reports are published for community review once available.

#### **Penetration Tests**

* The ClickOptions infrastructure (trading engine, APIs and front-end) undergoes **regular penetration testing** by certified cybersecurity firms.
* Tests cover application, network and cloud infrastructure layers.
* Key findings and remediation measures are summarised in periodic security disclosures.

#### **Attestations**

* SOC 2 and ISO/IEC 27001 are pursued on a **readiness** basis; any certification is stated only once achieved.
* ClickOptions publishes attestations for licensing status, compliance reviews and treasury operations as they become available.

#### **Vault Reports (roadmap)**

* Once ClickVault launches, a **Vault Transparency Dashboard** is intended to display real-time capital utilisation, coverage ratios and settlement buffers.
* Periodic reports would summarise Vault capital inflows/outflows, PnL distribution and utilisation statistics.

#### **Future: Proof of Reserves & Liabilities**

* ClickOptions is building toward a **cryptographic proof-of-reserves and liabilities framework**, allowing independent verification of:
  * client balances held in platform-controlled wallets;
  * total Vault capital locked in smart contracts (once live); and
  * matching obligations (open option contracts).
* This system is intended to integrate **Merkle-tree attestations** and independent auditor sign-off.

<br>


# Pricing and Spread Benchmarks

ClickOptions commits to publishing **independent, data-driven benchmarks** of its option pricing and market quality, ensuring full transparency for traders and partners.

#### **Benchmark Reports**

* Reports are published on a **weekly, monthly, and quarterly basis**.
* Each report compares **ClickOptions quotes and liquidity** against major external options venues (names not disclosed, but benchmarked against industry leaders).
* The goal is to provide **transparent evidence** that ClickOptions consistently delivers competitive spreads and meaningful liquidity.

#### **Methodology**

1. **Data Collection**
   * ClickOptions records all live bid/ask quotes for its listed assets.
   * External benchmark data is collected from major venues via public APIs at synchronized timestamps.
2. **Spread Comparison**
   * For each listed strike and expiry:
     * Calculate ClickOptions’ **best bid–ask spread**.
     * Compare against benchmark venues’ spreads.
   * Spreads are normalized as a percentage of option premium to allow fair cross-venue comparison.
3. **Volume & Depth Analysis**
   * Report includes **best bid/ask depth**: how much volume is available at top-of-book on ClickOptions vs. competitors.
   * Ratio of ClickOptions depth to benchmark depth is published, giving a liquidity coverage score.
4. **Reporting Frequency**
   * **Weekly Snapshot:** high-level spread + volume coverage for the week.
   * **Monthly Report:** detailed analysis with average spreads per asset and tenor.
   * **Quarterly Report:** long-term trend analysis across assets, showing ClickOptions’ relative competitiveness.

#### **Example Metrics (Published in Reports)**

* Average bid–ask spread (% of premium).
* % of time ClickOptions had the best price vs benchmarks.
* Top-of-book depth ratio (ClickOptions vs market).
* Effective liquidity score (weighted by volume).

#### **Transparency Commitment**

* Reports are made public and archived in the ClickOptions GitBook + Research Portal.
* Methodology is fully disclosed and reproducible, allowing independent validation.

<br>


# Status and Incidents

Link to status page + incident post-mortems.


# Legal & Compliance

### Legal and Compliance

ClickOptions is committed to operating under clear legal, regulatory and compliance standards. This includes rigorous KYC/AML verification, jurisdictional restrictions, sanctions adherence, and defined policies for marketing and brand use.

> This section describes current compliance principles and remains subject to ongoing legal review. The final issuer structure, permitted markets and product availability are determined by external legal advice.

#### **Jurisdictional Availability**

ClickOptions services are not available in jurisdictions where regulatory restrictions or company risk assessment prohibit operations.

**Restricted jurisdictions (indicative, subject to update):**

* United States of America (including all territories)
* Canada
* Mainland China
* Russia
* Belarus
* North Korea
* Cuba
* Syria
* Iran
* Sudan
* Panama
* Crimea region (Ukraine/Russia)
* Donbas regions (Ukraine/Russia – Donetsk and Luhansk)

Users are responsible for ensuring their use of the platform is lawful in their jurisdiction.

#### **KYC / AML Framework**

ClickOptions enforces a strict **Know Your Customer (KYC)** and **Anti-Money Laundering (AML)** program to comply with global standards:

* **Verification Levels**
  * Initial Onboarding → Email/wallet + 2FA (deposits allowed, withdrawals locked).
  * Standard Verification → Government ID, selfie, proof of address.
  * Institutional Verification → Incorporation docs, UBO registry, board resolution, SoF/SoW.
* **Enhanced Due Diligence (EDD):** Extra checks for PEPs, high-risk jurisdictions, large/unusual transactions.
* **Transaction Monitoring:**
  * Screening against **OFAC, UN, EU, UK sanctions lists**.
  * **On-chain analytics** via specialised blockchain-analytics providers.
  * Monitoring for wash trading, commission abuse or fraud.
* **Record Keeping:** All verification & transaction records retained min. **5 years**.
* **Right to Refuse:** ClickOptions may deny or suspend accounts that fail KYC/AML checks or present suspicious activity.

#### **Sanctions Policy**

* ClickOptions screens all users and transactions against **international sanctions lists** (OFAC, UN, EU, UK).
* Any sanctioned entity or wallet is blocked and reported.
* Accounts in violation may be suspended, funds frozen, and suspicious activity reports filed with relevant authorities.

#### **Marketing Standards**

All public and partner marketing is subject to the following controls:

* Illustrative trades and examples are clearly identified as such.
* No guaranteed-performance claims (e.g. “guaranteed profits”, “risk-free trading”).
* Required jurisdictional and risk disclosures are applied.
* No targeting of restricted jurisdictions.
* Education is distinguished from real-time trading signals, and public feeds may be delayed where required.

<br>


# Privacy and Data

## Trust

### Privacy & Data

ClickOptions is committed to protecting user privacy and handling personal data responsibly. We collect, process, and retain user data only as required to operate the platform, meet regulatory obligations, and improve user experience.

#### **Data We Collect**

* Identity documents (government-issued ID, passport, driver’s license).
* Biometric data (selfie/liveness check).
* Proof of address (utility bill, bank statement, government correspondence).
* Financial data (Source of Funds / Wealth when required).
* Device, browser, IP address, and geolocation.
* Usage data (pages visited, activity logs, trades executed).
* Information from third parties (KYC providers, custodians, sanctions/PEP lists).

#### **Data Retention**

* Identity verification and transaction data are retained for a minimum of **5 years after account closure**, per AML/CTF requirements.
* Marketing preferences are retained until you withdraw consent.
* Other data is kept only as long as necessary for legal or operational purposes.

#### **Analytics & Cookies**

* Analytics tools are used to improve platform performance and user experience.
* Cookies are used for:
  * Authentication and session management.
  * Security and fraud prevention.
  * Personalization and product improvements.
* Users may disable cookies in browser settings, but some features may not function correctly.

#### **Data Sharing**

Your data may be shared with:

* Identity verification providers (e.g., Veriff, SumSub).
* Custodians (e.g., BitGo, Fireblocks, Copper, Cobo, ClearLoop).
* Regulators and law enforcement where legally required.
* Authorized IT, analytics, and hosting service providers.
* Affiliates and referral partners where you provide consent.

#### **User Rights**

Depending on jurisdiction, you may have the right to:

* Access the data we hold about you.
* Correct inaccurate or incomplete information.
* Request deletion of your data (subject to AML/legal retention).
* Restrict or object to certain processing activities.
* Request portability of your data in a usable format.
* Opt-out of marketing communications.

Requests can be made at: **<privacy@clickoptions.ai>**

#### **International Transfers**

* As a global platform, your data may be stored or processed outside your home country.
* Where transfers occur, ClickOptions applies **Standard Contractual Clauses (SCCs)** or equivalent safeguards to protect your data.

#### **Data Protection Practices**

* Encryption of personal data in transit and at rest.
* Strict role-based access control.
* Continuous monitoring, audits, and regular security reviews.
* Contractual safeguards with all third-party providers.

#### **Transparency Commitment**

* A full Privacy Policy is available on the ClickOptions website.
* Users will be notified of material updates to privacy practices.

<br>


# Learn


# Company


# Changelog and Release Notes

What shipped, dates, and versions.

<br>


# Press and Brand Kit

Logos, Colours, Typography, usage, press contacts.


# Community

Ambassadors, KOL policy, code of conduct.


# FAQ & Support

Split general vs. institutional; add link to ticketing.


# Trading API V1 Positions

Position management operations

## Get positions

> Retrieve positions for the authenticated account with optional filtering

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading API v1 - Positions","description":"Position management operations"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/positions":{"get":{"tags":["Trading API v1 - Positions"],"summary":"Get positions","description":"Retrieve positions for the authenticated account with optional filtering","operationId":"getPositions","parameters":[{"name":"symbol","in":"query","description":"Symbol filter","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Position status filter (open, closed, exercised, liquidated)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"Positions retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseV1PositionResponseV1"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"PagedResponseV1PositionResponseV1":{"type":"object","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{"$ref":"#/components/schemas/PositionResponseV1"}}}},"PositionResponseV1":{"type":"object","description":"Response DTO for position operations in v1 API","properties":{"positionId":{"type":"string","description":"Unique identifier of the position"},"parentPositionId":{"type":"string","description":"Parent position, form which this positionw as created"},"symbol":{"type":"string","description":"Trading symbol"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Position size in USDT"},"size":{"type":"string","description":"Position size"},"sizeContracts":{"type":"string","description":"Position size in contracts"},"sizeUsdtClosed":{"type":"string","description":"Position closed size in USDT"},"sizeClosed":{"type":"string","description":"Position closed size"},"sizeContractsClosed":{"type":"string","description":"Position closed size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"status":{"type":"string","description":"Position status"},"fee":{"type":"string","description":"Fee paid"},"premiumTotal":{"type":"string","description":"Total collected premium"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"},"contractQty":{"type":"string","description":"Contract quantity"},"tradeSide":{"type":"string","description":"Trade side"},"excercisePlClosed":{"type":"string","description":"Closed exercise P/L"},"excercisePlFloating":{"type":"string","description":"Floating exercise P/L"},"curIdxPrice":{"type":"string","description":"Current index price, used for calculation of floating excercise P/L"},"settlementPrice":{"type":"string","description":"Settlement price for exercise"},"easyOptionId":{"type":"string","description":"Id of easy option"}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Get position by ID

> Retrieve a specific position by its ID

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading API v1 - Positions","description":"Position management operations"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/positions/{id}":{"get":{"tags":["Trading API v1 - Positions"],"summary":"Get position by ID","description":"Retrieve a specific position by its ID","operationId":"getPosition","parameters":[{"name":"id","in":"path","description":"Position ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Position retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PositionResponseV1"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"404":{"description":"Position not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"PositionResponseV1":{"type":"object","description":"Response DTO for position operations in v1 API","properties":{"positionId":{"type":"string","description":"Unique identifier of the position"},"parentPositionId":{"type":"string","description":"Parent position, form which this positionw as created"},"symbol":{"type":"string","description":"Trading symbol"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Position size in USDT"},"size":{"type":"string","description":"Position size"},"sizeContracts":{"type":"string","description":"Position size in contracts"},"sizeUsdtClosed":{"type":"string","description":"Position closed size in USDT"},"sizeClosed":{"type":"string","description":"Position closed size"},"sizeContractsClosed":{"type":"string","description":"Position closed size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"status":{"type":"string","description":"Position status"},"fee":{"type":"string","description":"Fee paid"},"premiumTotal":{"type":"string","description":"Total collected premium"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"},"contractQty":{"type":"string","description":"Contract quantity"},"tradeSide":{"type":"string","description":"Trade side"},"excercisePlClosed":{"type":"string","description":"Closed exercise P/L"},"excercisePlFloating":{"type":"string","description":"Floating exercise P/L"},"curIdxPrice":{"type":"string","description":"Current index price, used for calculation of floating excercise P/L"},"settlementPrice":{"type":"string","description":"Settlement price for exercise"},"easyOptionId":{"type":"string","description":"Id of easy option"}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```


# Trading Orders V1

Trading REST API for order management

## Get orders

> Returns a paginated list of open and partially filled orders for the authenticated account. Supports filtering by asset and option type (CALL/PUT).

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading Orders v1","description":"Trading REST API for order management"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/orders":{"get":{"tags":["Trading Orders v1"],"summary":"Get orders","description":"Returns a paginated list of open and partially filled orders for the authenticated account. Supports filtering by asset and option type (CALL/PUT).","operationId":"getOrders","parameters":[{"name":"asset","in":"query","description":"Underlying asset symbol to filter orders","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Option type to filter orders (CALL or PUT)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","description":"Number of orders per page (max 100)","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"Orders retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseV1OrderResponseV1"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"401":{"description":"Authentication required","content":{"*/*":{"schema":{"type":"object"}}}},"413":{"description":"Request size too large","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"429":{"description":"Rate Limit exceed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"PagedResponseV1OrderResponseV1":{"type":"object","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{"$ref":"#/components/schemas/OrderResponseV1"}}}},"OrderResponseV1":{"type":"object","description":"Response DTO for order operations in v1 API","properties":{"orderId":{"type":"string","description":"Unique identifier of the order"},"positionId":{"type":"integer","format":"int64","description":"Identifier of the related position, if available"},"symbol":{"type":"string","description":"Trading symbol"},"price":{"type":"string","description":"Order price"},"size":{"type":"string","description":"Order size"},"side":{"type":"string","description":"Order side (BUY/SELL)"},"orderType":{"type":"string","description":"Order type (LIMIT/MARKET)"},"status":{"type":"string","description":"Order status"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type (CALL/PUT)"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Order size in USDT"},"sizeContracts":{"type":"string","description":"Order size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"fee":{"type":"string","description":"Fee paid"},"timestamp":{"type":"integer","format":"int64","description":"Order creation timestamp as epoch millis"}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Create limit order

> Creates a new limit order with idempotency support

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading Orders v1","description":"Trading REST API for order management"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/orders":{"post":{"tags":["Trading Orders v1"],"summary":"Create limit order","description":"Creates a new limit order with idempotency support","operationId":"createOrder","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderRequestV1"}}},"required":true},"responses":{"200":{"description":"Order created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponseV1"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"401":{"description":"Authentication required","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"Duplicate idempotency key with different payload","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"422":{"description":"Business validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"429":{"description":"Rate limit exceeded","content":{"*/*":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"CreateOrderRequestV1":{"type":"object","description":"Request DTO for creating orders in v1 API","properties":{"idempotencyKey":{"type":"string","description":"Idempotency key for the order","minLength":1},"symbol":{"type":"string","description":"Trading symbol","minLength":1},"price":{"type":"string","description":"Order price as a decimal string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$"},"size":{"type":"string","description":"Order size as a decimal string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$"},"side":{"type":"string","description":"Order side","enum":["BUY","SELL"],"pattern":"^(BUY|SELL)$"},"orderType":{"type":"string","default":"LIMIT","description":"Order type","enum":["LIMIT"],"pattern":"^LIMIT$"},"positionId":{"type":"integer","format":"int64","description":"Position ID (optional)"}},"required":["idempotencyKey","price","side","size","symbol"]},"OrderResponseV1":{"type":"object","description":"Response DTO for order operations in v1 API","properties":{"orderId":{"type":"string","description":"Unique identifier of the order"},"positionId":{"type":"integer","format":"int64","description":"Identifier of the related position, if available"},"symbol":{"type":"string","description":"Trading symbol"},"price":{"type":"string","description":"Order price"},"size":{"type":"string","description":"Order size"},"side":{"type":"string","description":"Order side (BUY/SELL)"},"orderType":{"type":"string","description":"Order type (LIMIT/MARKET)"},"status":{"type":"string","description":"Order status"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type (CALL/PUT)"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Order size in USDT"},"sizeContracts":{"type":"string","description":"Order size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"fee":{"type":"string","description":"Fee paid"},"timestamp":{"type":"integer","format":"int64","description":"Order creation timestamp as epoch millis"}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Cancel order

> Cancels an existing order by ID

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading Orders v1","description":"Trading REST API for order management"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/orders/{orderId}":{"delete":{"tags":["Trading Orders v1"],"summary":"Cancel order","description":"Cancels an existing order by ID","operationId":"cancelOrder","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order cancelled successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponseV1"}}}},"404":{"description":"Order not found","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"Order already in final state","content":{"*/*":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"OrderResponseV1":{"type":"object","description":"Response DTO for order operations in v1 API","properties":{"orderId":{"type":"string","description":"Unique identifier of the order"},"positionId":{"type":"integer","format":"int64","description":"Identifier of the related position, if available"},"symbol":{"type":"string","description":"Trading symbol"},"price":{"type":"string","description":"Order price"},"size":{"type":"string","description":"Order size"},"side":{"type":"string","description":"Order side (BUY/SELL)"},"orderType":{"type":"string","description":"Order type (LIMIT/MARKET)"},"status":{"type":"string","description":"Order status"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type (CALL/PUT)"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Order size in USDT"},"sizeContracts":{"type":"string","description":"Order size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"fee":{"type":"string","description":"Fee paid"},"timestamp":{"type":"integer","format":"int64","description":"Order creation timestamp as epoch millis"}}}}}}
```


# Trading API V1 Trades

Trade history and management operations

## Get trades

> Retrieve trade history for the authenticated account with optional filtering

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading API v1 - Trades","description":"Trade history and management operations"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/trades":{"get":{"tags":["Trading API v1 - Trades"],"summary":"Get trades","description":"Retrieve trade history for the authenticated account with optional filtering","operationId":"getTrades","parameters":[{"name":"symbol","in":"query","description":"Symbol filter","required":false,"schema":{"type":"string"}},{"name":"orderId","in":"query","description":"Order ID filter","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"positionId","in":"query","description":"Position ID filter","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"side","in":"query","description":"Trade side filter (buy, sell)","required":false,"schema":{"type":"string"}},{"name":"startTime","in":"query","description":"Start timestamp (milliseconds)","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endTime","in":"query","description":"End timestamp (milliseconds)","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","format":"int32","default":1}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"Trades retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResponseV1"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"PagedResponseV1":{"type":"object","description":"Generic paged response for v1 API following trading standards","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{}}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Get trade by ID

> Retrieve a specific trade by its ID

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Trading API v1 - Trades","description":"Trade history and management operations"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/trades/{id}":{"get":{"tags":["Trading API v1 - Trades"],"summary":"Get trade by ID","description":"Retrieve a specific trade by its ID","operationId":"getTrade","parameters":[{"name":"id","in":"path","description":"Trade ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Trade retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TradeResponseV1"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"404":{"description":"Trade not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"TradeResponseV1":{"type":"object","properties":{"tradeId":{"type":"integer","format":"int64","description":"Unique trade identifier"},"orderId":{"type":"integer","format":"int64","description":"Order identifier"},"positionId":{"type":"integer","format":"int64","description":"Position identifier"},"asset":{"type":"string","description":"Asset symbol"},"type":{"type":"string","description":"Option type: CALL or PUT"},"fillType":{"type":"string","description":"Fill type: FILL or PARTIAL_FILL"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date (timestamp)"},"filledSizeUsdt":{"type":"string","description":"Filled size in USDT"},"filledSizeContracts":{"type":"string","description":"Filled size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price"},"openDate":{"type":"integer","format":"int64","description":"Open date (timestamp)"},"fee":{"type":"string","description":"Trade fee"},"tradeSide":{"type":"string","description":"Trade side: BUY or SELL"},"maker":{"type":"boolean","description":"Is maker trade"}}},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```


# Easy Options

Simplified options trading API

## Close Easy Option

> Closes an active Easy Option

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Easy Options","description":"Simplified options trading API"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/easy-options/{id}/close":{"post":{"tags":["Easy Options"],"summary":"Close Easy Option","description":"Closes an active Easy Option","operationId":"closeEasyOption","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Easy Option close initiated","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Easy Option not found","content":{"*/*":{"schema":{"type":"object"}}}},"422":{"description":"Business validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Open Easy Option

> Opens an Easy Option based on a card and investment amount

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Easy Options","description":"Simplified options trading API"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/easy-options/open":{"post":{"tags":["Easy Options"],"summary":"Open Easy Option","description":"Opens an Easy Option based on a card and investment amount","operationId":"openEasyOption","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenEasyOptionRequest"}}},"required":true},"responses":{"200":{"description":"Easy Option opened successfully","content":{"*/*":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}},"422":{"description":"Business validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiErrorV1"}}}}}}}},"components":{"schemas":{"OpenEasyOptionRequest":{"type":"object","properties":{"cardId":{"type":"integer","format":"int64"},"investmentAmount":{"type":"number"}},"required":["cardId","investmentAmount"]},"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## Search Easy Options

> Search easy options with filtering and pagination

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Easy Options","description":"Simplified options trading API"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/easy-options/search":{"get":{"tags":["Easy Options"],"summary":"Search Easy Options","description":"Search easy options with filtering and pagination","operationId":"searchEasyOptions","parameters":[{"name":"searchDto","in":"query","required":true,"schema":{"$ref":"#/components/schemas/EasyOptionSearchDto"}}],"responses":{"200":{"description":"Successfully retrieved easy options","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PagedResultEasyOptionDto"}}}},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"EasyOptionSearchDto":{"type":"object","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"id":{"type":"integer","format":"int64","description":"Option ID"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"cardId":{"type":"integer","format":"int64","description":"Card ID"},"positionId":{"type":"integer","format":"int64","description":"Position ID"},"orderId":{"type":"integer","format":"int64","description":"Order ID"},"type":{"type":"string","description":"Option type (UP_DOWN, TOUCH)"},"status":{"type":"string","description":"Option status (ACTIVE, CLOSED)"},"direction":{"type":"string","description":"Direction (UP, DOWN)"},"investmentCurrency":{"type":"string","description":"Investment currency"},"optionSymbol":{"type":"string","description":"Option symbol"},"optionSymbolContains":{"type":"string","description":"Option symbol contains (pattern match)"},"investmentAmountMin":{"type":"number","description":"Minimum investment amount"},"investmentAmountMax":{"type":"number","description":"Maximum investment amount"},"targetPriceMin":{"type":"number","description":"Minimum target price"},"targetPriceMax":{"type":"number","description":"Maximum target price"},"triggerPriceMin":{"type":"number","description":"Minimum trigger price"},"triggerPriceMax":{"type":"number","description":"Maximum trigger price"},"qtyMin":{"type":"number","description":"Minimum quantity"},"qtyMax":{"type":"number","description":"Maximum quantity"},"entryPriceMin":{"type":"number","description":"Minimum entry price"},"entryPriceMax":{"type":"number","description":"Maximum entry price"},"openTimeFrom":{"type":"string","format":"date-time","description":"Open time from"},"openTimeTo":{"type":"string","format":"date-time","description":"Open time to"},"closeTimeFrom":{"type":"string","format":"date-time","description":"Close time from"},"closeTimeTo":{"type":"string","format":"date-time","description":"Close time to"},"triggerTimeFrom":{"type":"string","format":"date-time","description":"Trigger time from"},"triggerTimeTo":{"type":"string","format":"date-time","description":"Trigger time to"}}},"PagedResultEasyOptionDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EasyOptionDto"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"empty":{"type":"boolean"},"numberOfElements":{"type":"integer","format":"int32"}}},"EasyOptionDto":{"type":"object","properties":{"id":{"type":"string","description":"Option unique identifier"},"accountId":{"type":"integer","format":"int64","description":"Account ID associated with the option"},"cardId":{"type":"integer","format":"int64","description":"Card ID associated with the option"},"type":{"type":"string","description":"Type of the option","enum":["UP_DOWN","TOUCH"]},"status":{"type":"string","description":"Status of the option","enum":["PENDING","ACTIVE","TRIGGERED","CLOSING","CLOSED","EXPIRED"]},"direction":{"type":"string","description":"Direction of the option","enum":["UP","DOWN"]},"investmentAmount":{"type":"number","description":"Investment amount"},"investmentCurrency":{"type":"string","description":"Currency of the investment"},"targetPrice":{"type":"number","description":"Target price for the option"},"triggerPrice":{"type":"number","description":"Trigger price for the option"},"optionSymbol":{"type":"string","description":"Symbol of the option"},"positionId":{"type":"string","description":"Position ID related to the option"},"orderId":{"type":"string","description":"Order ID related to the option"},"qty":{"type":"number","description":"Quantity of the option"},"entryPrice":{"type":"number","description":"Entry price of the option"},"openTime":{"type":"integer","format":"int64","description":"Open time (epoch millis)"},"closeTime":{"type":"integer","format":"int64","description":"Close time (epoch millis)"},"triggerTime":{"type":"integer","format":"int64","description":"Trigger time (epoch millis)"},"cardName":{"type":"string","description":"Card name associated with the option"},"fee":{"type":"string","description":"Fee paid"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"}}}}}}
```

## GET /v1/easy-options/list

>

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Easy Options","description":"Simplified options trading API"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/easy-options/list":{"get":{"tags":["Easy Options"],"operationId":"searchCards","parameters":[{"name":"searchDto","in":"query","required":true,"schema":{"$ref":"#/components/schemas/EasyOptionCardSearchDto"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EasyOptionCardDto"}}}}}}}}},"components":{"schemas":{"EasyOptionCardSearchDto":{"type":"object","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"type":{"type":"string"},"direction":{"type":"string"},"active":{"type":"string"},"underlying":{"type":"string"},"underlyingContains":{"type":"string"},"titleContains":{"type":"string"}}},"EasyOptionCardDto":{"type":"object","description":"Easy Option Card data transfer object","properties":{"id":{"type":"integer","format":"int64","description":"Card unique identifier"},"type":{"type":"string","description":"Option type","enum":["UP_DOWN","TOUCH"]},"underlying":{"type":"string","description":"Underlying asset symbol","maxLength":2147483647,"minLength":3},"direction":{"type":"string","description":"Trade direction","enum":["UP","DOWN"]},"targetPrice":{"type":"number","description":"Target price for the option","minimum":0},"triggerPrice":{"type":"number","description":"Trigger price for the option"},"optionSymbol":{"type":"string","description":"Option symbol"},"expiryDate":{"type":"string","format":"date-time","description":"Expiry date in ISO 8601 format"},"tradingIdea":{"type":"string","description":"Trading idea or rationale","maxLength":255,"minLength":0},"autoGenerated":{"type":"boolean","description":"Whether the card was auto-generated"},"active":{"type":"boolean","description":"Whether the card is active"},"title":{"type":"string","description":"Card title","maxLength":100,"minLength":0},"description":{"type":"string","description":"Card description","maxLength":255,"minLength":0},"currentAskPrice":{"type":"number","description":"Current ask price for the option"},"currentOptionSymbol":{"type":"string","description":"Current option symbol being traded"}},"required":["direction","expiryDate","targetPrice","title","type","underlying"]}}}}
```


# Coin Market Cap

CoinMarketCap-compatible market data endpoints

## Get option order book

> Returns the order book depth for the given option ticker, in CoinMarketCap format.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"CoinMarketCap","description":"CoinMarketCap-compatible market data endpoints"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/orderbook/{ticker_id}":{"get":{"tags":["CoinMarketCap"],"summary":"Get option order book","description":"Returns the order book depth for the given option ticker, in CoinMarketCap format.","operationId":"getOrderBook","parameters":[{"name":"ticker_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved order book data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CmcOrderBookDto"}}}},"404":{"description":"Order book not found"},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"CmcOrderBookDto":{"type":"object","description":"CoinMarketCap order book data transfer object","properties":{"ticker_id":{"type":"string","description":"Option contract symbol"},"timestamp":{"type":"integer","format":"int64","description":"Order book timestamp as epoch millis"},"bids":{"type":"array","description":"Bid levels as [price, qty] pairs","items":{"type":"array","items":{"type":"string"}}},"asks":{"type":"array","description":"Ask levels as [price, qty] pairs","items":{"type":"array","items":{"type":"string"}}}}}}}}
```

## Get all option contracts

> Returns every live (non-deleted, unexpired) option contract across all underlyings, in CoinMarketCap format.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"CoinMarketCap","description":"CoinMarketCap-compatible market data endpoints"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contracts":{"get":{"tags":["CoinMarketCap"],"summary":"Get all option contracts","description":"Returns every live (non-deleted, unexpired) option contract across all underlyings, in CoinMarketCap format.","operationId":"getContracts","responses":{"200":{"description":"Successfully retrieved result","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CmcContractDto"}}}}},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"CmcContractDto":{"type":"object","description":"CoinMarketCap option contract data transfer object","properties":{"ticker_id":{"type":"string","description":"Option contract symbol"},"base_currency":{"type":"string","description":"Base currency of the underlying"},"quote_currency":{"type":"string","description":"Quote currency"},"product_type":{"type":"string","description":"Product type"},"contract_type":{"type":"string","description":"Contract type"},"contract_price":{"type":"number","description":"Contract price = contract amount x last premium"},"contract_price_currency":{"type":"string","description":"Currency of the contract price"},"last_price":{"type":"number","description":"Last traded premium price"},"base_volume":{"type":"number","description":"24h traded volume in base currency"},"quote_volume":{"type":"number","description":"24h traded volume in quote currency"},"high":{"type":"number","description":"24h high premium price"},"low":{"type":"number","description":"24h low premium price"},"bid":{"type":"number","description":"Best bid premium price"},"ask":{"type":"number","description":"Best ask premium price"},"index_price":{"type":"number","description":"Current index price of the underlying"},"open_interest":{"type":"number","description":"Open interest in contracts"},"open_interest_usd":{"type":"number","description":"Open interest value in USD"},"creation_timestamp":{"type":"integer","format":"int64","description":"Contract creation date as epoch millis"},"expiry_timestamp":{"type":"integer","format":"int64","description":"Contract expiry date as epoch millis"}}}}}}
```


# Public Contest

Public endpoints for contest information

## Join a contest

> Allows the authenticated user to join a contest. Creates a contest account, deposits the initial balance, and registers the participant.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Public Contest","description":"Public endpoints for contest information"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contest/{contestId}/join":{"post":{"tags":["Public Contest"],"summary":"Join a contest","description":"Allows the authenticated user to join a contest. Creates a contest account, deposits the initial balance, and registers the participant.","operationId":"joinContest","parameters":[{"name":"contestId","in":"path","description":"Contest ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinContestDto"}}},"required":true},"responses":{"200":{"description":"Successfully joined contest","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContestAccountInfoResponseDto"}}}},"400":{"description":"Invalid request - contest ended, disabled, deadline passed, nickname taken, or already registered"},"401":{"description":"Unauthorized - authentication required"},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"JoinContestDto":{"type":"object","description":"Request body for joining a contest","properties":{"nickname":{"type":"string","description":"Nickname to display on the leaderboard","maxLength":255,"minLength":0}}},"ContestAccountInfoResponseDto":{"type":"object","description":"Complete contest account information with current state and historical snapshots","properties":{"id":{"type":"integer","format":"int64","description":"Contest account info ID"},"contestId":{"type":"integer","format":"int64","description":"Contest ID"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"fundedAccountId":{"type":"integer","format":"int64","description":"Funded account ID"},"userId":{"type":"integer","format":"int32","description":"User ID"},"demoContestAccountId":{"type":"integer","format":"int64","description":"Demo contest account ID"},"initialBalance":{"type":"number","description":"Initial balance for the contest account"},"joinTime":{"type":"string","format":"date-time","description":"Join time in ISO format"},"nickname":{"type":"string","description":"Participant's nickname or display name"},"contestStatus":{"type":"string","description":"Contest participation status"},"disqualificationReason":{"type":"string","description":"Reason for disqualification"},"currentRank":{"type":"integer","format":"int32","description":"Current rank in contest"},"currentNetPerformance":{"type":"number","description":"Current net performance percentage"},"currentEquity":{"type":"number","description":"Current equity"},"currentBalance":{"type":"number","description":"Current balance"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"currentMaxDrawdown":{"type":"number","description":"Current maximum drawdown percentage"},"currentMaxDayDrawdown":{"type":"number","description":"Current maximum daily drawdown percentage"},"lastSnapshotTime":{"type":"string","format":"date-time","description":"Latest snapshot time in ISO format"},"profitRatioViolated":{"type":"boolean","description":"Indicates if the profit ratio rule was violated"},"snapshotHistory":{"type":"array","description":"Historical snapshots for charting (ordered by time descending, max 30 entries)","items":{"$ref":"#/components/schemas/ContestAccountSnapshotHistoryDto"}}}},"ContestAccountSnapshotHistoryDto":{"type":"object","description":"Contest account snapshot data for historical charts","properties":{"snapshotTime":{"type":"string","format":"date-time","description":"Snapshot time in ISO format"},"equity":{"type":"number","description":"Current equity"},"balance":{"type":"number","description":"Current balance"},"netPerformance":{"type":"number","description":"Net performance percentage"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"rank":{"type":"integer","format":"int32","description":"Current rank"}}}}}}
```

## Get all contests categorized by status

> Retrieves all non-deleted contests categorized into active, upcoming, and ended lists. Includes participant count and top return for each contest.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Public Contest","description":"Public endpoints for contest information"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contest":{"get":{"tags":["Public Contest"],"summary":"Get all contests categorized by status","description":"Retrieves all non-deleted contests categorized into active, upcoming, and ended lists. Includes participant count and top return for each contest.","operationId":"getContests","responses":{"200":{"description":"Successfully retrieved contests","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContestsResult"}}}},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"ContestsResult":{"type":"object","description":"DTO representing categorized lists of contests for an account.","properties":{"active":{"type":"array","description":"List of active contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}},"upcomming":{"type":"array","description":"List of upcoming contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}},"ended":{"type":"array","description":"List of ended contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}}}},"ContestInfoDto":{"type":"object","description":"DTO containing information about a contest.","properties":{"id":{"type":"integer","format":"int64","description":"Unique identifier of the contest"},"status":{"type":"string","description":"Current status of the contest (e.g., active, ended, upcoming)"},"pricePool":{"type":"string","description":"Prize pool for the contest"},"name":{"type":"string","description":"Name of the contest"},"currency":{"type":"string","description":"Currency used in the contest"},"startTime":{"type":"string","format":"date-time","description":"Start time of the contest in ISO format"},"endTime":{"type":"string","format":"date-time","description":"End time of the contest in ISO format"},"lastJoinTime":{"type":"string","format":"date-time","description":"Last allowed join time in ISO format"},"topReturn":{"type":"string","description":"Top return achieved in the contest"},"participants":{"type":"integer","format":"int32","description":"Number of participants in the contest"},"enabled":{"type":"boolean","description":"Whether the contest is enabled"},"initialDeposit":{"type":"number","description":"Initial deposit amount for participants"},"prizeDistributionBuckets":{"type":"array","description":"Prize distribution buckets (prize amounts)","items":{"type":"number"}},"minTotalTrades":{"type":"integer","format":"int32","description":"Minimum number of total trades required"},"minActiveTradingDays":{"type":"integer","format":"int32","description":"Minimum number of active trading days required"},"minNetPerformancePercent":{"type":"number","description":"Minimum net performance percentage required"},"maxTotalDrawdownPercent":{"type":"number","description":"Maximum allowed total drawdown percentage"},"maxDailyDrawdownPercent":{"type":"number","description":"Maximum allowed daily drawdown percentage"},"maxSingleTradePnlPercent":{"type":"number","description":"Maximum allowed single trade PnL percentage"},"profitRatioRuleEnabled":{"type":"boolean","description":"Whether profit ratio rule is enabled"},"minPremiumPercentPerTrade":{"type":"number","description":"Minimum premium percentage per trade"},"minTradeHoldMinutes":{"type":"integer","format":"int32","description":"Minimum time to hold a trade in minutes"},"minExpiryHoldPercent":{"type":"number","description":"Minimum expiry hold percentage"},"minExpiryHours":{"type":"integer","format":"int32","description":"Minimum number of hours until expiry"}}}}}}
```

## Get contest by ID

> Retrieves detailed information about a specific contest by its ID, including all metadata and statistics.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Public Contest","description":"Public endpoints for contest information"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contest/{id}":{"get":{"tags":["Public Contest"],"summary":"Get contest by ID","description":"Retrieves detailed information about a specific contest by its ID, including all metadata and statistics.","operationId":"getContestById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Successfully retrieved contest","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContestInfoDto"}}}},"404":{"description":"Contest not found"},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"ContestInfoDto":{"type":"object","description":"DTO containing information about a contest.","properties":{"id":{"type":"integer","format":"int64","description":"Unique identifier of the contest"},"status":{"type":"string","description":"Current status of the contest (e.g., active, ended, upcoming)"},"pricePool":{"type":"string","description":"Prize pool for the contest"},"name":{"type":"string","description":"Name of the contest"},"currency":{"type":"string","description":"Currency used in the contest"},"startTime":{"type":"string","format":"date-time","description":"Start time of the contest in ISO format"},"endTime":{"type":"string","format":"date-time","description":"End time of the contest in ISO format"},"lastJoinTime":{"type":"string","format":"date-time","description":"Last allowed join time in ISO format"},"topReturn":{"type":"string","description":"Top return achieved in the contest"},"participants":{"type":"integer","format":"int32","description":"Number of participants in the contest"},"enabled":{"type":"boolean","description":"Whether the contest is enabled"},"initialDeposit":{"type":"number","description":"Initial deposit amount for participants"},"prizeDistributionBuckets":{"type":"array","description":"Prize distribution buckets (prize amounts)","items":{"type":"number"}},"minTotalTrades":{"type":"integer","format":"int32","description":"Minimum number of total trades required"},"minActiveTradingDays":{"type":"integer","format":"int32","description":"Minimum number of active trading days required"},"minNetPerformancePercent":{"type":"number","description":"Minimum net performance percentage required"},"maxTotalDrawdownPercent":{"type":"number","description":"Maximum allowed total drawdown percentage"},"maxDailyDrawdownPercent":{"type":"number","description":"Maximum allowed daily drawdown percentage"},"maxSingleTradePnlPercent":{"type":"number","description":"Maximum allowed single trade PnL percentage"},"profitRatioRuleEnabled":{"type":"boolean","description":"Whether profit ratio rule is enabled"},"minPremiumPercentPerTrade":{"type":"number","description":"Minimum premium percentage per trade"},"minTradeHoldMinutes":{"type":"integer","format":"int32","description":"Minimum time to hold a trade in minutes"},"minExpiryHoldPercent":{"type":"number","description":"Minimum expiry hold percentage"},"minExpiryHours":{"type":"integer","format":"int32","description":"Minimum number of hours until expiry"}}}}}}
```

## Get contest leaderboard

> Retrieves the leaderboard for a specific contest with participant rankings and performance data. Supports pagination with optional page and size parameters.

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Public Contest","description":"Public endpoints for contest information"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contest/{contestId}/leaderboard":{"get":{"tags":["Public Contest"],"summary":"Get contest leaderboard","description":"Retrieves the leaderboard for a specific contest with participant rankings and performance data. Supports pagination with optional page and size parameters.","operationId":"getContestLeaderboard","parameters":[{"name":"contestId","in":"path","description":"Contest ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page number (0-indexed)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"Page size (number of entries per page)","required":false,"schema":{"type":"integer","format":"int32","default":100}}],"responses":{"200":{"description":"Successfully retrieved leaderboard","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContestLeaderboardEntryDto"}}}},"404":{"description":"Contest not found"},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"ContestLeaderboardEntryDto":{"type":"object","description":"Contest leaderboard entry with participant performance data","properties":{"id":{"type":"integer","format":"int64","description":"Contest account info ID"},"rank":{"type":"integer","format":"int32","description":"Current rank in the contest"},"nickname":{"type":"string","description":"Participant's nickname or display name"},"netPerformance":{"type":"number","description":"Net performance percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"joinTime":{"type":"string","format":"date-time","description":"Join time in ISO format"},"contestStatus":{"type":"string","description":"Contest participation status"}}}}}}
```

## Get contest account information for authenticated user

> Retrieves the authenticated user's contest account information including current performance, latest snapshot data, and historical snapshots for charting (up to 30 most recent snapshots).

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"tags":[{"name":"Public Contest","description":"Public endpoints for contest information"}],"servers":[{"url":"https://api.clickoptions.ai/api","description":"Generated server url"}],"paths":{"/v1/contest/{contestId}/account-info":{"get":{"tags":["Public Contest"],"summary":"Get contest account information for authenticated user","description":"Retrieves the authenticated user's contest account information including current performance, latest snapshot data, and historical snapshots for charting (up to 30 most recent snapshots).","operationId":"getContestAccountInfo","parameters":[{"name":"contestId","in":"path","description":"Contest ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Successfully retrieved contest account information","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ContestAccountInfoResponseDto"}}}},"401":{"description":"Unauthorized - authentication required"},"404":{"description":"Contest or account not found"},"500":{"description":"Internal server error"}}}}},"components":{"schemas":{"ContestAccountInfoResponseDto":{"type":"object","description":"Complete contest account information with current state and historical snapshots","properties":{"id":{"type":"integer","format":"int64","description":"Contest account info ID"},"contestId":{"type":"integer","format":"int64","description":"Contest ID"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"fundedAccountId":{"type":"integer","format":"int64","description":"Funded account ID"},"userId":{"type":"integer","format":"int32","description":"User ID"},"demoContestAccountId":{"type":"integer","format":"int64","description":"Demo contest account ID"},"initialBalance":{"type":"number","description":"Initial balance for the contest account"},"joinTime":{"type":"string","format":"date-time","description":"Join time in ISO format"},"nickname":{"type":"string","description":"Participant's nickname or display name"},"contestStatus":{"type":"string","description":"Contest participation status"},"disqualificationReason":{"type":"string","description":"Reason for disqualification"},"currentRank":{"type":"integer","format":"int32","description":"Current rank in contest"},"currentNetPerformance":{"type":"number","description":"Current net performance percentage"},"currentEquity":{"type":"number","description":"Current equity"},"currentBalance":{"type":"number","description":"Current balance"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"currentMaxDrawdown":{"type":"number","description":"Current maximum drawdown percentage"},"currentMaxDayDrawdown":{"type":"number","description":"Current maximum daily drawdown percentage"},"lastSnapshotTime":{"type":"string","format":"date-time","description":"Latest snapshot time in ISO format"},"profitRatioViolated":{"type":"boolean","description":"Indicates if the profit ratio rule was violated"},"snapshotHistory":{"type":"array","description":"Historical snapshots for charting (ordered by time descending, max 30 entries)","items":{"$ref":"#/components/schemas/ContestAccountSnapshotHistoryDto"}}}},"ContestAccountSnapshotHistoryDto":{"type":"object","description":"Contest account snapshot data for historical charts","properties":{"snapshotTime":{"type":"string","format":"date-time","description":"Snapshot time in ISO format"},"equity":{"type":"number","description":"Current equity"},"balance":{"type":"number","description":"Current balance"},"netPerformance":{"type":"number","description":"Net performance percentage"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"rank":{"type":"integer","format":"int32","description":"Current rank"}}}}}}
```


# Models

## The CreateOrderRequestV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"CreateOrderRequestV1":{"type":"object","description":"Request DTO for creating orders in v1 API","properties":{"idempotencyKey":{"type":"string","description":"Idempotency key for the order","minLength":1},"symbol":{"type":"string","description":"Trading symbol","minLength":1},"price":{"type":"string","description":"Order price as a decimal string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$"},"size":{"type":"string","description":"Order size as a decimal string","minLength":1,"pattern":"^\\d+(\\.\\d+)?$"},"side":{"type":"string","description":"Order side","enum":["BUY","SELL"],"pattern":"^(BUY|SELL)$"},"orderType":{"type":"string","default":"LIMIT","description":"Order type","enum":["LIMIT"],"pattern":"^LIMIT$"},"positionId":{"type":"integer","format":"int64","description":"Position ID (optional)"}},"required":["idempotencyKey","price","side","size","symbol"]}}}}
```

## The OrderResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OrderResponseV1":{"type":"object","description":"Response DTO for order operations in v1 API","properties":{"orderId":{"type":"string","description":"Unique identifier of the order"},"positionId":{"type":"integer","format":"int64","description":"Identifier of the related position, if available"},"symbol":{"type":"string","description":"Trading symbol"},"price":{"type":"string","description":"Order price"},"size":{"type":"string","description":"Order size"},"side":{"type":"string","description":"Order side (BUY/SELL)"},"orderType":{"type":"string","description":"Order type (LIMIT/MARKET)"},"status":{"type":"string","description":"Order status"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type (CALL/PUT)"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Order size in USDT"},"sizeContracts":{"type":"string","description":"Order size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"fee":{"type":"string","description":"Fee paid"},"timestamp":{"type":"integer","format":"int64","description":"Order creation timestamp as epoch millis"}}}}}}
```

## The ApiErrorV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ApiErrorV1":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{"type":"object","additionalProperties":{}}}}}}}
```

## The TradeDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"TradeDto":{"type":"object","properties":{"symbol":{"type":"string","minLength":1},"amount":{"type":"number"},"price":{"type":"number"},"side":{"type":"string","minLength":1},"positionId":{"type":"integer","format":"int64"},"orderType":{"type":"string"}},"required":["amount","side","symbol"]}}}}
```

## The OptionOrderDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OptionOrderDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"clientOrderId":{"type":"string"},"accno":{"type":"integer","format":"int64"},"sellerAccountId":{"type":"integer","format":"int64"},"positionId":{"type":"integer","format":"int64"},"symbol":{"type":"string"},"tradeSide":{"type":"string"},"optionSide":{"type":"string"},"orderState":{"type":"string"},"orderQty":{"type":"number"},"price":{"type":"number"},"executedQty":{"type":"number"},"executedPrice":{"type":"number"},"closeQty":{"type":"number"},"fee":{"type":"number"},"feeAsset":{"type":"string"},"expire":{"type":"integer","format":"int64"},"strikePrice":{"type":"number"},"createTime":{"type":"integer","format":"int64"},"updateTime":{"type":"integer","format":"int64"},"triggerTime":{"type":"integer","format":"int64"},"bookedQty":{"type":"number"},"bookedCcy":{"type":"string"},"bookedMargin":{"type":"number"},"bookedMarginCcy":{"type":"string"},"indexPrice":{"type":"number"},"orderType":{"type":"string"}}}}}}
```

## The OpenEasyOptionRequest object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OpenEasyOptionRequest":{"type":"object","properties":{"cardId":{"type":"integer","format":"int64"},"investmentAmount":{"type":"number"}},"required":["cardId","investmentAmount"]}}}}
```

## The JoinContestDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"JoinContestDto":{"type":"object","description":"Request body for joining a contest","properties":{"nickname":{"type":"string","description":"Nickname to display on the leaderboard","maxLength":255,"minLength":0}}}}}}
```

## The ContestAccountInfoResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ContestAccountInfoResponseDto":{"type":"object","description":"Complete contest account information with current state and historical snapshots","properties":{"id":{"type":"integer","format":"int64","description":"Contest account info ID"},"contestId":{"type":"integer","format":"int64","description":"Contest ID"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"fundedAccountId":{"type":"integer","format":"int64","description":"Funded account ID"},"userId":{"type":"integer","format":"int32","description":"User ID"},"demoContestAccountId":{"type":"integer","format":"int64","description":"Demo contest account ID"},"initialBalance":{"type":"number","description":"Initial balance for the contest account"},"joinTime":{"type":"string","format":"date-time","description":"Join time in ISO format"},"nickname":{"type":"string","description":"Participant's nickname or display name"},"contestStatus":{"type":"string","description":"Contest participation status"},"disqualificationReason":{"type":"string","description":"Reason for disqualification"},"currentRank":{"type":"integer","format":"int32","description":"Current rank in contest"},"currentNetPerformance":{"type":"number","description":"Current net performance percentage"},"currentEquity":{"type":"number","description":"Current equity"},"currentBalance":{"type":"number","description":"Current balance"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"currentMaxDrawdown":{"type":"number","description":"Current maximum drawdown percentage"},"currentMaxDayDrawdown":{"type":"number","description":"Current maximum daily drawdown percentage"},"lastSnapshotTime":{"type":"string","format":"date-time","description":"Latest snapshot time in ISO format"},"profitRatioViolated":{"type":"boolean","description":"Indicates if the profit ratio rule was violated"},"snapshotHistory":{"type":"array","description":"Historical snapshots for charting (ordered by time descending, max 30 entries)","items":{"$ref":"#/components/schemas/ContestAccountSnapshotHistoryDto"}}}},"ContestAccountSnapshotHistoryDto":{"type":"object","description":"Contest account snapshot data for historical charts","properties":{"snapshotTime":{"type":"string","format":"date-time","description":"Snapshot time in ISO format"},"equity":{"type":"number","description":"Current equity"},"balance":{"type":"number","description":"Current balance"},"netPerformance":{"type":"number","description":"Net performance percentage"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"rank":{"type":"integer","format":"int32","description":"Current rank"}}}}}}
```

## The ContestAccountSnapshotHistoryDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ContestAccountSnapshotHistoryDto":{"type":"object","description":"Contest account snapshot data for historical charts","properties":{"snapshotTime":{"type":"string","format":"date-time","description":"Snapshot time in ISO format"},"equity":{"type":"number","description":"Current equity"},"balance":{"type":"number","description":"Current balance"},"netPerformance":{"type":"number","description":"Net performance percentage"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"rank":{"type":"integer","format":"int32","description":"Current rank"}}}}}}
```

## The PagedResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"PagedResponseV1":{"type":"object","description":"Generic paged response for v1 API following trading standards","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{}}}}}}}
```

## The TradeResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"TradeResponseV1":{"type":"object","properties":{"tradeId":{"type":"integer","format":"int64","description":"Unique trade identifier"},"orderId":{"type":"integer","format":"int64","description":"Order identifier"},"positionId":{"type":"integer","format":"int64","description":"Position identifier"},"asset":{"type":"string","description":"Asset symbol"},"type":{"type":"string","description":"Option type: CALL or PUT"},"fillType":{"type":"string","description":"Fill type: FILL or PARTIAL_FILL"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date (timestamp)"},"filledSizeUsdt":{"type":"string","description":"Filled size in USDT"},"filledSizeContracts":{"type":"string","description":"Filled size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price"},"openDate":{"type":"integer","format":"int64","description":"Open date (timestamp)"},"fee":{"type":"string","description":"Trade fee"},"tradeSide":{"type":"string","description":"Trade side: BUY or SELL"},"maker":{"type":"boolean","description":"Is maker trade"}}}}}}
```

## The PagedResponseV1PositionResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"PagedResponseV1PositionResponseV1":{"type":"object","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{"$ref":"#/components/schemas/PositionResponseV1"}}}},"PositionResponseV1":{"type":"object","description":"Response DTO for position operations in v1 API","properties":{"positionId":{"type":"string","description":"Unique identifier of the position"},"parentPositionId":{"type":"string","description":"Parent position, form which this positionw as created"},"symbol":{"type":"string","description":"Trading symbol"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Position size in USDT"},"size":{"type":"string","description":"Position size"},"sizeContracts":{"type":"string","description":"Position size in contracts"},"sizeUsdtClosed":{"type":"string","description":"Position closed size in USDT"},"sizeClosed":{"type":"string","description":"Position closed size"},"sizeContractsClosed":{"type":"string","description":"Position closed size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"status":{"type":"string","description":"Position status"},"fee":{"type":"string","description":"Fee paid"},"premiumTotal":{"type":"string","description":"Total collected premium"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"},"contractQty":{"type":"string","description":"Contract quantity"},"tradeSide":{"type":"string","description":"Trade side"},"excercisePlClosed":{"type":"string","description":"Closed exercise P/L"},"excercisePlFloating":{"type":"string","description":"Floating exercise P/L"},"curIdxPrice":{"type":"string","description":"Current index price, used for calculation of floating excercise P/L"},"settlementPrice":{"type":"string","description":"Settlement price for exercise"},"easyOptionId":{"type":"string","description":"Id of easy option"}}}}}}
```

## The PositionResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"PositionResponseV1":{"type":"object","description":"Response DTO for position operations in v1 API","properties":{"positionId":{"type":"string","description":"Unique identifier of the position"},"parentPositionId":{"type":"string","description":"Parent position, form which this positionw as created"},"symbol":{"type":"string","description":"Trading symbol"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Position size in USDT"},"size":{"type":"string","description":"Position size"},"sizeContracts":{"type":"string","description":"Position size in contracts"},"sizeUsdtClosed":{"type":"string","description":"Position closed size in USDT"},"sizeClosed":{"type":"string","description":"Position closed size"},"sizeContractsClosed":{"type":"string","description":"Position closed size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"status":{"type":"string","description":"Position status"},"fee":{"type":"string","description":"Fee paid"},"premiumTotal":{"type":"string","description":"Total collected premium"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"},"contractQty":{"type":"string","description":"Contract quantity"},"tradeSide":{"type":"string","description":"Trade side"},"excercisePlClosed":{"type":"string","description":"Closed exercise P/L"},"excercisePlFloating":{"type":"string","description":"Floating exercise P/L"},"curIdxPrice":{"type":"string","description":"Current index price, used for calculation of floating excercise P/L"},"settlementPrice":{"type":"string","description":"Settlement price for exercise"},"easyOptionId":{"type":"string","description":"Id of easy option"}}}}}}
```

## The PagedResponseV1OrderResponseV1 object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"PagedResponseV1OrderResponseV1":{"type":"object","properties":{"total":{"type":"integer","format":"int32","description":"Total number of items"},"page":{"type":"integer","format":"int32","description":"Current page number"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"items":{"type":"array","description":"List of items for the current page","items":{"$ref":"#/components/schemas/OrderResponseV1"}}}},"OrderResponseV1":{"type":"object","description":"Response DTO for order operations in v1 API","properties":{"orderId":{"type":"string","description":"Unique identifier of the order"},"positionId":{"type":"integer","format":"int64","description":"Identifier of the related position, if available"},"symbol":{"type":"string","description":"Trading symbol"},"price":{"type":"string","description":"Order price"},"size":{"type":"string","description":"Order size"},"side":{"type":"string","description":"Order side (BUY/SELL)"},"orderType":{"type":"string","description":"Order type (LIMIT/MARKET)"},"status":{"type":"string","description":"Order status"},"asset":{"type":"string","description":"Underlaying asset name"},"type":{"type":"string","description":"Option type (CALL/PUT)"},"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"sizeUsdt":{"type":"string","description":"Order size in USDT"},"sizeContracts":{"type":"string","description":"Order size in contracts"},"strikePrice":{"type":"string","description":"Strike price"},"openPrice":{"type":"string","description":"Open price (VWAP)"},"openDate":{"type":"integer","format":"int64","description":"Open date as epoch millis"},"fee":{"type":"string","description":"Fee paid"},"timestamp":{"type":"integer","format":"int64","description":"Order creation timestamp as epoch millis"}}}}}}
```

## The CmcOrderBookDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"CmcOrderBookDto":{"type":"object","description":"CoinMarketCap order book data transfer object","properties":{"ticker_id":{"type":"string","description":"Option contract symbol"},"timestamp":{"type":"integer","format":"int64","description":"Order book timestamp as epoch millis"},"bids":{"type":"array","description":"Bid levels as [price, qty] pairs","items":{"type":"array","items":{"type":"string"}}},"asks":{"type":"array","description":"Ask levels as [price, qty] pairs","items":{"type":"array","items":{"type":"string"}}}}}}}}
```

## The OptionPositionDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OptionPositionDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"parentId":{"type":"integer","format":"int64"},"accountId":{"type":"integer","format":"int64"},"sellerAccountId":{"type":"integer","format":"int64"},"parentPositionId":{"type":"integer","format":"int64"},"symbol":{"type":"string"},"optionSide":{"type":"string"},"tradeSide":{"type":"string"},"strikePrice":{"type":"number"},"expiration":{"type":"integer","format":"int64"},"openQty":{"type":"number"},"closeQty":{"type":"number"},"openQtyNotional":{"type":"number"},"closeQtyNotional":{"type":"number"},"openPrice":{"type":"number"},"closePrice":{"type":"number"},"openTime":{"type":"integer","format":"int64"},"closeTime":{"type":"integer","format":"int64"},"fee":{"type":"number"},"feeAsset":{"type":"string"},"positionType":{"type":"string"},"positionState":{"type":"string"},"pl":{"type":"number"},"indexPrice":{"type":"number"},"excercisePl":{"type":"number"},"quoteAsset":{"type":"string"},"bookedMargin":{"type":"number"},"bookedMarginCcy":{"type":"string"},"underlying":{"type":"string"},"premiumTotal":{"type":"number"},"easyOptionId":{"type":"integer","format":"int64"}}}}}}
```

## The OptionPositionSearchDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OptionPositionSearchDto":{"type":"object","description":"DTO for OptionPosition search form parameters.","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"id":{"type":"integer","format":"int64","description":"Unique identifier of the option position"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"parentPositionId":{"type":"integer","format":"int64","description":"Parent position ID"},"easyOptionId":{"type":"integer","format":"int64","description":"Easy Option ID"},"symbol":{"type":"string","description":"Symbol of the option"},"optionSide":{"type":"string","description":"Option side (CALL/PUT)"},"tradeSide":{"type":"string","description":"Trade side (BUY/SELL)"},"positionType":{"type":"string","description":"Type of the position"},"positionState":{"type":"string","description":"State of the position"},"feeAsset":{"type":"string","description":"Fee asset"},"quoteAsset":{"type":"string","description":"Quote asset"},"symbolContains":{"type":"string","description":"Symbol pattern for search"},"strikePriceMin":{"type":"number","description":"Minimum strike price"},"strikePriceMax":{"type":"number","description":"Maximum strike price"},"openQtyMin":{"type":"number","description":"Minimum open quantity"},"openQtyMax":{"type":"number","description":"Maximum open quantity"},"closeQtyMin":{"type":"number","description":"Minimum close quantity"},"closeQtyMax":{"type":"number","description":"Maximum close quantity"},"openPriceMin":{"type":"number","description":"Minimum open price"},"openPriceMax":{"type":"number","description":"Maximum open price"},"closePriceMin":{"type":"number","description":"Minimum close price"},"closePriceMax":{"type":"number","description":"Maximum close price"},"feeMin":{"type":"number","description":"Minimum fee"},"feeMax":{"type":"number","description":"Maximum fee"},"plMin":{"type":"number","description":"Minimum profit/loss"},"plMax":{"type":"number","description":"Maximum profit/loss"},"openTimeFrom":{"type":"string","format":"date-time","description":"Open time from (ISO 8601)"},"openTimeTo":{"type":"string","format":"date-time","description":"Open time to (ISO 8601)"},"closeTimeFrom":{"type":"string","format":"date-time","description":"Close time from (ISO 8601)"},"closeTimeTo":{"type":"string","format":"date-time","description":"Close time to (ISO 8601)"},"expirationFrom":{"type":"string","format":"date-time","description":"Expiration from (ISO 8601)"},"expirationTo":{"type":"string","format":"date-time","description":"Expiration to (ISO 8601)"}}}}}}
```

## The InstrumentSearchDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"InstrumentSearchDto":{"type":"object","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"symbol":{"type":"string"},"name":{"type":"string"},"baseCurrency":{"type":"string"},"quoteCurrency":{"type":"string"},"instrumentType":{"type":"string"},"isActive":{"type":"boolean"},"isTradable":{"type":"boolean"}}}}}}
```

## The InstrumentOptionDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"InstrumentOptionDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"symbol":{"type":"string","maxLength":2147483647,"minLength":3},"name":{"type":"string","maxLength":2147483647,"minLength":3},"baseCurrencyCode":{"type":"string","minLength":1},"quoteCurrencyCode":{"type":"string","minLength":1},"priceScale":{"type":"integer","format":"int32","maximum":8,"minimum":0},"amountScale":{"type":"integer","format":"int32","maximum":8,"minimum":0},"active":{"type":"boolean"},"tradable":{"type":"boolean"},"instrumentType":{"type":"string"},"description":{"type":"string"},"wl":{"type":"integer","format":"int32"},"lotAmountMult":{"type":"number","maximum":100000,"minimum":0.0001},"source":{"type":"string"},"contractAmount":{"type":"number","maximum":1000000,"minimum":0.0001},"makerFeeRate":{"type":"number","maximum":1,"minimum":0},"takerFeeRate":{"type":"number","maximum":1,"minimum":0},"liquidationFeeRate":{"type":"number","maximum":1,"minimum":0},"minQty":{"type":"number","minimum":0},"maxQty":{"type":"number","minimum":0},"stepQty":{"type":"number","minimum":0},"initialMargin":{"type":"number","minimum":0},"maintenanceMargin":{"type":"number","minimum":0},"commissionPolicyId":{"type":"string","maxLength":50,"minLength":0},"iconUrl":{"type":"string","maxLength":255,"minLength":0}},"required":["amountScale","baseCurrencyCode","contractAmount","instrumentType","name","priceScale","quoteCurrencyCode","symbol"]}}}}
```

## The OrderBook object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OrderBook":{"type":"object","properties":{"i":{"type":"string"},"T":{"type":"integer","format":"int64"},"u":{"type":"integer","format":"int64"},"bids":{"type":"array","items":{"type":"array","items":{"type":"string"}}},"asks":{"type":"array","items":{"type":"array","items":{"type":"string"}}}}}}}}
```

## The OptionExchangeSearchDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OptionExchangeSearchDto":{"type":"object","description":"Search criteria for option exchange queries","properties":{"searchString":{"type":"string","description":"Free text search string"},"pageNumber":{"type":"integer","format":"int32","description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","description":"Number of items per page"},"sortBy":{"type":"array","description":"Sorting criteria list","items":{"$ref":"#/components/schemas/SortingDto"}},"symbol":{"type":"string","description":"Option symbol"},"expiryDateFrom":{"type":"string","format":"date-time","description":"Start of expiry date range (yyyy-MM-dd)"},"expiryDateTo":{"type":"string","format":"date-time","description":"End of expiry date range (yyyy-MM-dd)"},"side":{"type":"string","description":"Option side (CALL or PUT)","pattern":"CALL|PUT"},"strikePriceFrom":{"type":"number","description":"Minimum strike price"},"strikePriceTo":{"type":"number","description":"Maximum strike price"}}},"SortingDto":{"type":"object","description":"Sorting criteria for search results","properties":{"field":{"type":"string","description":"Field name to sort by"},"direction":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]}}}}}}
```

## The SortingDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"SortingDto":{"type":"object","description":"Sorting criteria for search results","properties":{"field":{"type":"string","description":"Field name to sort by"},"direction":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]}}}}}}
```

## The ExchangeInfoDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ExchangeInfoDto":{"type":"object","description":"Exchange information data transfer object","properties":{"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"createdAt":{"type":"integer","format":"int64","description":"Creation date as epoch millis"},"symbol":{"type":"string","description":"Trading symbol"},"side":{"type":"string","description":"Option side (CALL/PUT)","enum":["PUT","CALL"]},"strikePrice":{"type":"string","description":"Strike price"},"underlying":{"type":"string","description":"Underlying asset"},"minQty":{"type":"string","description":"Minimum order quantity"},"maxQty":{"type":"string","description":"Maximum order quantity"},"stepQty":{"type":"string","description":"Order quantity step"},"priceScale":{"type":"integer","format":"int32","description":"Number of decimal places for price"},"quantityScale":{"type":"integer","format":"int32","description":"Number of decimal places for quantity"},"quoteAsset":{"type":"string","description":"Quote asset"},"bid":{"$ref":"#/components/schemas/QuoteDto","description":"Best bid quote"},"ask":{"$ref":"#/components/schemas/QuoteDto","description":"Best ask quote"},"indexPrice":{"type":"string","description":"Current index price"},"deleted":{"type":"boolean","description":"Whether the exchange info is deleted"}}},"QuoteDto":{"type":"object","description":"Quote data transfer object","properties":{"price":{"type":"string","description":"Quote price"},"qty":{"type":"string","description":"Quote quantity"}}}}}}
```

## The OptionsExchangesCollectionDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"OptionsExchangesCollectionDto":{"type":"object","properties":{"call":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeInfoDto"}},"put":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeInfoDto"}}}},"ExchangeInfoDto":{"type":"object","description":"Exchange information data transfer object","properties":{"expiryDate":{"type":"integer","format":"int64","description":"Expiry date as epoch millis"},"createdAt":{"type":"integer","format":"int64","description":"Creation date as epoch millis"},"symbol":{"type":"string","description":"Trading symbol"},"side":{"type":"string","description":"Option side (CALL/PUT)","enum":["PUT","CALL"]},"strikePrice":{"type":"string","description":"Strike price"},"underlying":{"type":"string","description":"Underlying asset"},"minQty":{"type":"string","description":"Minimum order quantity"},"maxQty":{"type":"string","description":"Maximum order quantity"},"stepQty":{"type":"string","description":"Order quantity step"},"priceScale":{"type":"integer","format":"int32","description":"Number of decimal places for price"},"quantityScale":{"type":"integer","format":"int32","description":"Number of decimal places for quantity"},"quoteAsset":{"type":"string","description":"Quote asset"},"bid":{"$ref":"#/components/schemas/QuoteDto","description":"Best bid quote"},"ask":{"$ref":"#/components/schemas/QuoteDto","description":"Best ask quote"},"indexPrice":{"type":"string","description":"Current index price"},"deleted":{"type":"boolean","description":"Whether the exchange info is deleted"}}},"QuoteDto":{"type":"object","description":"Quote data transfer object","properties":{"price":{"type":"string","description":"Quote price"},"qty":{"type":"string","description":"Quote quantity"}}}}}}
```

## The QuoteDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"QuoteDto":{"type":"object","description":"Quote data transfer object","properties":{"price":{"type":"string","description":"Quote price"},"qty":{"type":"string","description":"Quote quantity"}}}}}}
```

## The InstrumentTypeDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"InstrumentTypeDto":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"}}}}}}
```

## The EasyOptionSearchDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"EasyOptionSearchDto":{"type":"object","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"id":{"type":"integer","format":"int64","description":"Option ID"},"accountId":{"type":"integer","format":"int64","description":"Account ID"},"cardId":{"type":"integer","format":"int64","description":"Card ID"},"positionId":{"type":"integer","format":"int64","description":"Position ID"},"orderId":{"type":"integer","format":"int64","description":"Order ID"},"type":{"type":"string","description":"Option type (UP_DOWN, TOUCH)"},"status":{"type":"string","description":"Option status (ACTIVE, CLOSED)"},"direction":{"type":"string","description":"Direction (UP, DOWN)"},"investmentCurrency":{"type":"string","description":"Investment currency"},"optionSymbol":{"type":"string","description":"Option symbol"},"optionSymbolContains":{"type":"string","description":"Option symbol contains (pattern match)"},"investmentAmountMin":{"type":"number","description":"Minimum investment amount"},"investmentAmountMax":{"type":"number","description":"Maximum investment amount"},"targetPriceMin":{"type":"number","description":"Minimum target price"},"targetPriceMax":{"type":"number","description":"Maximum target price"},"triggerPriceMin":{"type":"number","description":"Minimum trigger price"},"triggerPriceMax":{"type":"number","description":"Maximum trigger price"},"qtyMin":{"type":"number","description":"Minimum quantity"},"qtyMax":{"type":"number","description":"Maximum quantity"},"entryPriceMin":{"type":"number","description":"Minimum entry price"},"entryPriceMax":{"type":"number","description":"Maximum entry price"},"openTimeFrom":{"type":"string","format":"date-time","description":"Open time from"},"openTimeTo":{"type":"string","format":"date-time","description":"Open time to"},"closeTimeFrom":{"type":"string","format":"date-time","description":"Close time from"},"closeTimeTo":{"type":"string","format":"date-time","description":"Close time to"},"triggerTimeFrom":{"type":"string","format":"date-time","description":"Trigger time from"},"triggerTimeTo":{"type":"string","format":"date-time","description":"Trigger time to"}}}}}}
```

## The EasyOptionDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"EasyOptionDto":{"type":"object","properties":{"id":{"type":"string","description":"Option unique identifier"},"accountId":{"type":"integer","format":"int64","description":"Account ID associated with the option"},"cardId":{"type":"integer","format":"int64","description":"Card ID associated with the option"},"type":{"type":"string","description":"Type of the option","enum":["UP_DOWN","TOUCH"]},"status":{"type":"string","description":"Status of the option","enum":["PENDING","ACTIVE","TRIGGERED","CLOSING","CLOSED","EXPIRED"]},"direction":{"type":"string","description":"Direction of the option","enum":["UP","DOWN"]},"investmentAmount":{"type":"number","description":"Investment amount"},"investmentCurrency":{"type":"string","description":"Currency of the investment"},"targetPrice":{"type":"number","description":"Target price for the option"},"triggerPrice":{"type":"number","description":"Trigger price for the option"},"optionSymbol":{"type":"string","description":"Symbol of the option"},"positionId":{"type":"string","description":"Position ID related to the option"},"orderId":{"type":"string","description":"Order ID related to the option"},"qty":{"type":"number","description":"Quantity of the option"},"entryPrice":{"type":"number","description":"Entry price of the option"},"openTime":{"type":"integer","format":"int64","description":"Open time (epoch millis)"},"closeTime":{"type":"integer","format":"int64","description":"Close time (epoch millis)"},"triggerTime":{"type":"integer","format":"int64","description":"Trigger time (epoch millis)"},"cardName":{"type":"string","description":"Card name associated with the option"},"fee":{"type":"string","description":"Fee paid"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"}}}}}}
```

## The PagedResultEasyOptionDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"PagedResultEasyOptionDto":{"type":"object","properties":{"content":{"type":"array","items":{"$ref":"#/components/schemas/EasyOptionDto"}},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"empty":{"type":"boolean"},"numberOfElements":{"type":"integer","format":"int32"}}},"EasyOptionDto":{"type":"object","properties":{"id":{"type":"string","description":"Option unique identifier"},"accountId":{"type":"integer","format":"int64","description":"Account ID associated with the option"},"cardId":{"type":"integer","format":"int64","description":"Card ID associated with the option"},"type":{"type":"string","description":"Type of the option","enum":["UP_DOWN","TOUCH"]},"status":{"type":"string","description":"Status of the option","enum":["PENDING","ACTIVE","TRIGGERED","CLOSING","CLOSED","EXPIRED"]},"direction":{"type":"string","description":"Direction of the option","enum":["UP","DOWN"]},"investmentAmount":{"type":"number","description":"Investment amount"},"investmentCurrency":{"type":"string","description":"Currency of the investment"},"targetPrice":{"type":"number","description":"Target price for the option"},"triggerPrice":{"type":"number","description":"Trigger price for the option"},"optionSymbol":{"type":"string","description":"Symbol of the option"},"positionId":{"type":"string","description":"Position ID related to the option"},"orderId":{"type":"string","description":"Order ID related to the option"},"qty":{"type":"number","description":"Quantity of the option"},"entryPrice":{"type":"number","description":"Entry price of the option"},"openTime":{"type":"integer","format":"int64","description":"Open time (epoch millis)"},"closeTime":{"type":"integer","format":"int64","description":"Close time (epoch millis)"},"triggerTime":{"type":"integer","format":"int64","description":"Trigger time (epoch millis)"},"cardName":{"type":"string","description":"Card name associated with the option"},"fee":{"type":"string","description":"Fee paid"},"closePrice":{"type":"string","description":"Close price"},"pl":{"type":"string","description":"Trade Profit/Loss"},"plClosed":{"type":"string","description":"Trade Profit/Loss closed"}}}}}}
```

## The EasyOptionCardSearchDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"EasyOptionCardSearchDto":{"type":"object","properties":{"search":{"type":"string","description":"Search query string"},"pageNumber":{"type":"integer","format":"int32","default":0,"description":"Page number (zero-based)"},"pageSize":{"type":"integer","format":"int32","default":40,"description":"Page size (number of items per page)"},"wl":{"type":"integer","format":"int32","description":"Whitelist filter value"},"sortByField":{"type":"string","description":"Field to sort by"},"sortByDirection":{"type":"string","description":"Sort direction (ASC or DESC)","enum":["ASC","DESC"]},"type":{"type":"string"},"direction":{"type":"string"},"active":{"type":"string"},"underlying":{"type":"string"},"underlyingContains":{"type":"string"},"titleContains":{"type":"string"}}}}}}
```

## The EasyOptionCardDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"EasyOptionCardDto":{"type":"object","description":"Easy Option Card data transfer object","properties":{"id":{"type":"integer","format":"int64","description":"Card unique identifier"},"type":{"type":"string","description":"Option type","enum":["UP_DOWN","TOUCH"]},"underlying":{"type":"string","description":"Underlying asset symbol","maxLength":2147483647,"minLength":3},"direction":{"type":"string","description":"Trade direction","enum":["UP","DOWN"]},"targetPrice":{"type":"number","description":"Target price for the option","minimum":0},"triggerPrice":{"type":"number","description":"Trigger price for the option"},"optionSymbol":{"type":"string","description":"Option symbol"},"expiryDate":{"type":"string","format":"date-time","description":"Expiry date in ISO 8601 format"},"tradingIdea":{"type":"string","description":"Trading idea or rationale","maxLength":255,"minLength":0},"autoGenerated":{"type":"boolean","description":"Whether the card was auto-generated"},"active":{"type":"boolean","description":"Whether the card is active"},"title":{"type":"string","description":"Card title","maxLength":100,"minLength":0},"description":{"type":"string","description":"Card description","maxLength":255,"minLength":0},"currentAskPrice":{"type":"number","description":"Current ask price for the option"},"currentOptionSymbol":{"type":"string","description":"Current option symbol being traded"}},"required":["direction","expiryDate","targetPrice","title","type","underlying"]}}}}
```

## The CmcContractDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"CmcContractDto":{"type":"object","description":"CoinMarketCap option contract data transfer object","properties":{"ticker_id":{"type":"string","description":"Option contract symbol"},"base_currency":{"type":"string","description":"Base currency of the underlying"},"quote_currency":{"type":"string","description":"Quote currency"},"product_type":{"type":"string","description":"Product type"},"contract_type":{"type":"string","description":"Contract type"},"contract_price":{"type":"number","description":"Contract price = contract amount x last premium"},"contract_price_currency":{"type":"string","description":"Currency of the contract price"},"last_price":{"type":"number","description":"Last traded premium price"},"base_volume":{"type":"number","description":"24h traded volume in base currency"},"quote_volume":{"type":"number","description":"24h traded volume in quote currency"},"high":{"type":"number","description":"24h high premium price"},"low":{"type":"number","description":"24h low premium price"},"bid":{"type":"number","description":"Best bid premium price"},"ask":{"type":"number","description":"Best ask premium price"},"index_price":{"type":"number","description":"Current index price of the underlying"},"open_interest":{"type":"number","description":"Open interest in contracts"},"open_interest_usd":{"type":"number","description":"Open interest value in USD"},"creation_timestamp":{"type":"integer","format":"int64","description":"Contract creation date as epoch millis"},"expiry_timestamp":{"type":"integer","format":"int64","description":"Contract expiry date as epoch millis"}}}}}}
```

## The ContestInfoDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ContestInfoDto":{"type":"object","description":"DTO containing information about a contest.","properties":{"id":{"type":"integer","format":"int64","description":"Unique identifier of the contest"},"status":{"type":"string","description":"Current status of the contest (e.g., active, ended, upcoming)"},"pricePool":{"type":"string","description":"Prize pool for the contest"},"name":{"type":"string","description":"Name of the contest"},"currency":{"type":"string","description":"Currency used in the contest"},"startTime":{"type":"string","format":"date-time","description":"Start time of the contest in ISO format"},"endTime":{"type":"string","format":"date-time","description":"End time of the contest in ISO format"},"lastJoinTime":{"type":"string","format":"date-time","description":"Last allowed join time in ISO format"},"topReturn":{"type":"string","description":"Top return achieved in the contest"},"participants":{"type":"integer","format":"int32","description":"Number of participants in the contest"},"enabled":{"type":"boolean","description":"Whether the contest is enabled"},"initialDeposit":{"type":"number","description":"Initial deposit amount for participants"},"prizeDistributionBuckets":{"type":"array","description":"Prize distribution buckets (prize amounts)","items":{"type":"number"}},"minTotalTrades":{"type":"integer","format":"int32","description":"Minimum number of total trades required"},"minActiveTradingDays":{"type":"integer","format":"int32","description":"Minimum number of active trading days required"},"minNetPerformancePercent":{"type":"number","description":"Minimum net performance percentage required"},"maxTotalDrawdownPercent":{"type":"number","description":"Maximum allowed total drawdown percentage"},"maxDailyDrawdownPercent":{"type":"number","description":"Maximum allowed daily drawdown percentage"},"maxSingleTradePnlPercent":{"type":"number","description":"Maximum allowed single trade PnL percentage"},"profitRatioRuleEnabled":{"type":"boolean","description":"Whether profit ratio rule is enabled"},"minPremiumPercentPerTrade":{"type":"number","description":"Minimum premium percentage per trade"},"minTradeHoldMinutes":{"type":"integer","format":"int32","description":"Minimum time to hold a trade in minutes"},"minExpiryHoldPercent":{"type":"number","description":"Minimum expiry hold percentage"},"minExpiryHours":{"type":"integer","format":"int32","description":"Minimum number of hours until expiry"}}}}}}
```

## The ContestsResult object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ContestsResult":{"type":"object","description":"DTO representing categorized lists of contests for an account.","properties":{"active":{"type":"array","description":"List of active contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}},"upcomming":{"type":"array","description":"List of upcoming contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}},"ended":{"type":"array","description":"List of ended contests","items":{"$ref":"#/components/schemas/ContestInfoDto"}}}},"ContestInfoDto":{"type":"object","description":"DTO containing information about a contest.","properties":{"id":{"type":"integer","format":"int64","description":"Unique identifier of the contest"},"status":{"type":"string","description":"Current status of the contest (e.g., active, ended, upcoming)"},"pricePool":{"type":"string","description":"Prize pool for the contest"},"name":{"type":"string","description":"Name of the contest"},"currency":{"type":"string","description":"Currency used in the contest"},"startTime":{"type":"string","format":"date-time","description":"Start time of the contest in ISO format"},"endTime":{"type":"string","format":"date-time","description":"End time of the contest in ISO format"},"lastJoinTime":{"type":"string","format":"date-time","description":"Last allowed join time in ISO format"},"topReturn":{"type":"string","description":"Top return achieved in the contest"},"participants":{"type":"integer","format":"int32","description":"Number of participants in the contest"},"enabled":{"type":"boolean","description":"Whether the contest is enabled"},"initialDeposit":{"type":"number","description":"Initial deposit amount for participants"},"prizeDistributionBuckets":{"type":"array","description":"Prize distribution buckets (prize amounts)","items":{"type":"number"}},"minTotalTrades":{"type":"integer","format":"int32","description":"Minimum number of total trades required"},"minActiveTradingDays":{"type":"integer","format":"int32","description":"Minimum number of active trading days required"},"minNetPerformancePercent":{"type":"number","description":"Minimum net performance percentage required"},"maxTotalDrawdownPercent":{"type":"number","description":"Maximum allowed total drawdown percentage"},"maxDailyDrawdownPercent":{"type":"number","description":"Maximum allowed daily drawdown percentage"},"maxSingleTradePnlPercent":{"type":"number","description":"Maximum allowed single trade PnL percentage"},"profitRatioRuleEnabled":{"type":"boolean","description":"Whether profit ratio rule is enabled"},"minPremiumPercentPerTrade":{"type":"number","description":"Minimum premium percentage per trade"},"minTradeHoldMinutes":{"type":"integer","format":"int32","description":"Minimum time to hold a trade in minutes"},"minExpiryHoldPercent":{"type":"number","description":"Minimum expiry hold percentage"},"minExpiryHours":{"type":"integer","format":"int32","description":"Minimum number of hours until expiry"}}}}}}
```

## The ContestLeaderboardEntryDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"ContestLeaderboardEntryDto":{"type":"object","description":"Contest leaderboard entry with participant performance data","properties":{"id":{"type":"integer","format":"int64","description":"Contest account info ID"},"rank":{"type":"integer","format":"int32","description":"Current rank in the contest"},"nickname":{"type":"string","description":"Participant's nickname or display name"},"netPerformance":{"type":"number","description":"Net performance percentage"},"totalTradesCount":{"type":"integer","format":"int32","description":"Total number of trades"},"tradingDaysCount":{"type":"integer","format":"int32","description":"Number of active trading days"},"maxDrawdown":{"type":"number","description":"Maximum drawdown percentage"},"maxDayDrawdown":{"type":"number","description":"Maximum daily drawdown percentage"},"joinTime":{"type":"string","format":"date-time","description":"Join time in ISO format"},"contestStatus":{"type":"string","description":"Contest participation status"}}}}}}
```

## The AccountDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"AccountDto":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int32"},"commonName":{"type":"string","maxLength":255,"minLength":2},"currency":{"type":"string","maxLength":6,"minLength":3},"balance":{"type":"number","readOnly":true},"blockedBalance":{"type":"number","readOnly":true},"accountType":{"type":"string","minLength":1},"accountStatus":{"type":"string","minLength":1},"positionType":{"type":"string","minLength":1},"wl":{"type":"integer","format":"int32"},"level":{"type":"integer","format":"int32"},"internal":{"type":"boolean"},"inOutStatus":{"type":"string"},"mmBookingAccountId":{"type":"integer","format":"int64"},"equity":{"type":"number"},"tradingFeeRate":{"type":"number"},"totalPositionsCost":{"type":"number"},"balances":{"type":"array","items":{"$ref":"#/components/schemas/CcyBalanceDto"},"readOnly":true}},"required":["accountStatus","accountType","commonName","currency","positionType","userId"]},"CcyBalanceDto":{"type":"object","properties":{"curency":{"type":"string"},"balance":{"type":"number"},"blockedBalance":{"type":"number"}}}}}}
```

## The CcyBalanceDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"CcyBalanceDto":{"type":"object","properties":{"curency":{"type":"string"},"balance":{"type":"number"},"blockedBalance":{"type":"number"}}}}}}
```

## The AccountTotalPnLDto object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"AccountTotalPnLDto":{"type":"object","description":"Total PnL data for a specific account across all closed/exercised positions","properties":{"totalPremium":{"type":"string","description":"Sum of premium totals for all positions (received/paid premiums)"},"totalExercisePl":{"type":"string","description":"Sum of exercise P&L for all positions"},"totalRealizedPnl":{"type":"string","description":"Total realized P&L (premiumTotal + exercisePl)"},"totalFee":{"type":"string","description":"Total fees paid for all positions"},"positionCount":{"type":"integer","format":"int64","description":"Count of closed/exercised positions for this account"},"averagePnlPerPosition":{"type":"string","description":"Average PnL per position (computed)"}}}}}}
```

## The SwaggerCredentials object

```json
{"openapi":"3.1.0","info":{"title":"fintp-public-api","version":"0.0.1"},"components":{"schemas":{"SwaggerCredentials":{"type":"object","properties":{"clientId":{"type":"string"},"privateKey":{"type":"string"}}}}}}
```


