פיתוח בוט למסחר אוטומטי באופציות

מסחר ידני באופציות ב-Deribit דורש ניטור מתמיד של ה-Greeks ותגובה מיידית לשינויי שוק—זה מורכב ומסוכן. אנחנו מפתחים בוטים למסחר שמבצעים אוטומציה של אסטרטגיות תוך התחשבות ב-Delta, Gamma, Theta ו-Vega, כולל גידור דלתא. הצוות שלנו מספק פרויקטים מסוף לסוף, מהקונספט ועד לתמיכה, ומבטיח פעילות אמינה וסקאלביליות לצד התיק שלך.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

אופציות קריפטו הן השוק המורכב והפחות מובן בתחום הקריפטו. Deribit נותרת הפלטפורמה המרכזית לאופציות BTC ו-ETH. מסחר אוטומטי באופציות דורש הבנה של Greeks (דלתא, גמא, תטא, וגה) ותשתית מיוחדת לניהול פוזיציות אופציות. לצוות שלנו ניסיון של 7+ שנים בפיתוח בוטים למסחר ויישמנו 10+ פרויקטים ללקוחות מוסדיים. אנו יוצרים פתרונות סוהר: מאנליטיקה ועד תמיכה בייצור.

התפקיד הקריטי של ניהול Greeks

Greeks הם מדדים נגזרים המתארים את רגישות מחיר האופציה לגורמים שונים. ללא מעקב אוטומטי, אסטרטגיה רווחית היא בלתי אפשרית. דלתא (0.5 משמעותו: עבור עלייה של 100$ ב-BTC, מחיר האופציה משתנה ב-50$), גמא (קצב השינוי של דלתא — סיכון ליצרני שוק), תטא (ריקבון זמן — האופציה מאבדת ערך בכל יום), וגה (רגישות לתנודתיות מרומזת — IV גבוה יותר מעלה את הפרמיה). הבוט חייב לנטר ברציפות את כל ארבעת הפרמטרים ולהתאים פוזיציות. פרמיה אופיינית לאופציית OTM ב-Deribit היא כ-0.006 BTC, וחיסכון בעמלות באמצעות אוטומציה יכול להגיע ל-2,000$ לחודש עבור תיק פעיל. הבוטים שלנו מבצעים עסקאות פי 3 מהר יותר ממסחר ידני, ומפחיתים החלקה (slippage) בעד 60%.

גידור דלתא: נטרול סיכון כיווני

בעת מכירת אופציות, הסיכון הכיווני (דלתא) מנוטרל באמצעות חוזים עתידיים תמידיים (perpetual futures). אם סך הדלתא של התיק חורג מסף של 0.05 BTC, הבוט פותח אוטומטית פוזיציית גידור: מוכר חוזים עתידיים כאשר הדלתא חיובית וקונה כאשר היא שלילית. תהליך זה מתרחש בזמן אמת באמצעות חיבור WebSocket לבורסה. דוגמת יישום של מחלקת גידור מובאת להלן. Deribit עולה על OKX בשלמות ה-Greeks פי 2 — יש לנו תטא ווגה, לא רק דלתא וגמא.

יישום טכני: Deribit API ואסטרטגיית ריקבון תטא

החיבור ל-Deribit הוא דרך WebSocket (גרסת API v2). הלקוח משתמש באימות OAuth ובשיטות לשליפת מכשירים, ספרי הזמנות והצבת הזמנות. אסטרטגיית ריקבון התטא מתמקדת במכירת אופציות מחוץ לכסף (OTM) עם דלתא של ~0.15 ו-7 ימים לפקיעה. רווח ננעל ב-50% מריקבון הפרמיה, והפסד מוגבל ל-200%.

לפי תיעוד Deribit API, WebSocket מספק זמן השהיה מתחת ל-10 אלפיות השנייה.

import websockets
import json
import asyncio
from decimal import Decimal

class DeribitClient:
    WS_URL = "wss://www.deribit.com/ws/api/v2"

    def __init__(self, client_id: str, client_secret: str):
        self.client_id = client_id
        self.client_secret = client_secret
        self.ws = None
        self.request_id = 0

    async def connect(self):
        self.ws = await websockets.connect(self.WS_URL)
        await self.authenticate()

    async def authenticate(self):
        await self.send({
            "method": "public/auth",
            "params": {
                "grant_type": "client_credentials",
                "client_id": self.client_id,
                "client_secret": self.client_secret,
            }
        })

    async def send(self, message: dict) -> dict:
        self.request_id += 1
        message['id'] = self.request_id
        message['jsonrpc'] = '2.0'
        await self.ws.send(json.dumps(message))
        response = json.loads(await self.ws.recv())
        return response.get('result', {})

    async def get_instruments(self, currency: str = 'BTC', kind: str = 'option') -> list:
        return await self.send({
            "method": "public/get_instruments",
            "params": {"currency": currency, "kind": kind, "expired": False}
        })

    async def get_order_book(self, instrument: str) -> dict:
        return await self.send({
            "method": "public/get_order_book",
            "params": {"instrument_name": instrument, "depth": 5}
        })

    async def place_order(self, instrument: str, amount: float, order_type: str = 'market', price: float = None) -> dict:
        params = {
            "instrument_name": instrument,
            "amount": amount,
            "type": order_type,
        }
        if price:
            params["price"] = price
        return await self.send({
            "method": "private/buy" if 'C' in instrument.split('-')[-1] or True else "private/sell",
            "params": params
        })

    async def get_portfolio_greeks(self) -> dict:
        """Суммарные Greeks по всему портфелю"""
        return await self.send({
            "method": "private/get_account_summary",
            "params": {"currency": "BTC", "extended": True}
        })

אסטרטגיית חיפוש האופציות בוחרת מכשירים עם DTE ודלתא נדרשים, ובוחרת את הטוב ביותר על בסיס מחיר אמצע. דוגמת יישום של מחלקת import websockets import json import asyncio from decimal import Decimal class DeribitClient: WS_URL = "wss://www.deribit.com/ws/api/v2" def __init__(self, client_id: str, client_secret: str): self.client_id = client_id self.client_secret = client_secret self.ws = None self.request_id = 0 async def connect(self): self.ws = await websockets.connect(self.WS_URL) await self.authenticate() async def authenticate(self): await self.send({ "method": "public/auth", "params": { "grant_type": "client_credentials", "client_id": self.client_id, "client_secret": self.client_secret, } }) async def send(self, message: dict) -> dict: self.request_id += 1 message['id'] = self.request_id message['jsonrpc'] = '2.0' await self.ws.send(json.dumps(message)) response = json.loads(await self.ws.recv()) return response.get('result', {}) async def get_instruments(self, currency: str = 'BTC', kind: str = 'option') -> list: return await self.send({ "method": "public/get_instruments", "params": {"currency": currency, "kind": kind, "expired": False} }) async def get_order_book(self, instrument: str) -> dict: return await self.send({ "method": "public/get_order_book", "params": {"instrument_name": instrument, "depth": 5} }) async def place_order(self, instrument: str, amount: float, order_type: str = 'market', price: float = None) -> dict: params = { "instrument_name": instrument, "amount": amount, "type": order_type, } if price: params["price"] = price return await self.send({ "method": "private/buy" if 'C' in instrument.split('-')[-1] or True else "private/sell", "params": params }) async def get_portfolio_greeks(self) -> dict: """Суммарные Greeks по всему портфелю""" return await self.send({ "method": "private/get_account_summary", "params": {"currency": "BTC", "extended": True} }) :

class ThetaDecayStrategy:
    """ Зарабатываем на временном распаде, продавая опционы вне денег (OTM).
    Стратегия: Cash-Secured Put + Covered Call = Iron Condor упрощённо.
    """
    TARGET_DELTA = 0.15
    TARGET_DTE = 7
    PROFIT_TARGET = 0.50
    MAX_LOSS = 2.0

    async def find_entry_options(self, client: DeribitClient, currency: str = 'BTC') -> dict:
        instruments = await client.get_instruments(currency, 'option')
        current_price = await self.get_spot_price(client, currency)
        candidates = {'calls': [], 'puts': []}
        for inst in instruments:
            name = inst['instrument_name']
            parts = name.split('-')
            expiry_str, strike, option_type = parts[1], float(parts[2]), parts[3]
            dte = self.calculate_dte(expiry_str)
            if dte < self.TARGET_DTE - 1 or dte > self.TARGET_DTE + 1:
                continue
            book = await client.get_order_book(name)
            if not book.get('greeks'):
                continue
            delta = abs(float(book['greeks']['delta']))
            if abs(delta - self.TARGET_DELTA) < 0.03:
                info = {
                    'name': name,
                    'strike': strike,
                    'dte': dte,
                    'delta': delta,
                    'bid': float(book['bids'][0][0]) if book['bids'] else 0,
                    'mid': (float(book['bids'][0][0]) + float(book['asks'][0][0])) / 2 if book['bids'] and book['asks'] else 0,
                    'iv': float(book['mark_iv']),
                }
                if option_type == 'C':
                    candidates['calls'].append(info)
                else:
                    candidates['puts'].append(info)
        best_put = max(candidates['puts'], key=lambda x: x['mid']) if candidates['puts'] else None
        best_call = max(candidates['calls'], key=lambda x: x['mid']) if candidates['calls'] else None
        return {'put': best_put, 'call': best_call}

אילו תכונות ניהול סיכונים כולל הבוט?

לאסטרטגיות מכירת אופציות יש פרופיל א-סימטרי: רווח מוגבל (פרמיה) והפסד פוטנציאלי בלתי מוגבל (עבור אופציות call חשופות). הכללים הבאים הם קריטיים:

  • גודל פוזיציה: לא יותר מ-5% מההון לכל עסקה.
  • וגה מקסימלית: וגת התיק אינה חורגת מהגבול — עבור תיק של 100,000$, וגה מוגבלת ל-500$.
  • מסנן IV: אין למכור אופציות כאשר IV נמוך מ-20% (יחס סיכון/תשואה גרוע).
  • הגנה מפני ברבור שחור: תיק קטן של אופציות put מחוץ לכסף כביטוח — בעלות של 0.5% מההון.

השוואת פלטפורמות אופציות:

פרמטר Deribit OKX
נזילות עבור BTC/ETH גבוהה (נפח יומי ממוצע 500 מיליון $) בינונית (50 מיליון $)
Greeks ב-API מלא (דלתא, גמא, תטא, וגה) רק דלתא, גמא
מכשירי גידור חוזים תמידיים, חוזים עתידיים חוזים עתידיים
ספר הזמנות WebSocket עד 100 רמות עד 200 רמות
עמלות יוצר/לוקח 0.03%/0.05% 0.02%/0.05%

פרמטרי תצורת אסטרטגיה:

פרמטר ערך הערה
דלתא יעד 0.15 אופציית OTM
DTE 7 ימים עד לפקיעה
יעד רווח 50% מהפרמיה לקיחת רווח
סטופ לוס 200% מהפרמיה הפסד מקסימלי
סף גידור 0.05 BTC סף דלתא

תהליך העבודה האוטומטי במסחר באופציות

  1. ניתוח שוק: איסוף ספר הזמנות ו-Greeks עבור כל המכשירים.
  2. בחירת אופציות: סינון לפי דלתא, DTE, נפח.
  3. הצבת הזמנות: הזמנות מגבלה בספר.
  4. ניטור תיק: כל שנייה, חישוב Greeks נוכחיים.
  5. גידור: כאשר סף הדלתא נחצה, מסחר עם חוזה תמידי.
  6. ניהול פוזיציה: לקיחת רווח חלקית וסטופ לוס.

כיצד בדיקת backtesting מאמתת את האסטרטגיה?

בדיקת backtesting מתבצעת על נתונים היסטוריים המכסים לפחות 100 עסקאות ומספר תנאי שוק. אנו משתמשים בספריית אימות המדמה מסחר עם תמונות ספר הזמנות אמיתיות ומתחשבת בהחלקה, עמלות וזמן השהיה. האסטרטגיה חייבת להשיג יחס שארפ מעל 1.5 וירידה מקסימלית מתחת ל-20% כדי להיחשב בת-קיימא. מסחר נייר (paper trading) מאשר לאחר מכן את הביצועים בשווקים חיים לפני פריסה מלאה.

תוצרי פיתוח סוהר

  • תוצרים מפורטים:
    • ניתוח דרישות ועיצוב ארכיטקטורת בוט (תיעוד).
    • יישום ב-Python באמצעות asyncio ו-WebSocket.
    • אינטגרציה עם Deribit API (או בורסה אחרת) — אימות, מסחר, Greeks.
    • יישום אסטרטגיית ריקבון תטא עם פרמטרים הניתנים להגדרה.
    • מודול ניהול סיכונים עם מגבלות וגידור אוטומטי.
    • בדיקת backtesting היסטורית על 100+ עסקאות ותוצאות מסחר נייר.
    • פריסה על שרת (VPS/Dedicated) עם הגדרת ניטור.
    • תיעוד קוד והוראות תפעול.
    • גישה למאגר Git פרטי.
    • הדרכה (שעתיים) לצוות שלך.
    • תמיכה למשך חודש לאחר ההשקה (תיקוני באגים, התאמות).

לוחות זמנים והערכת עלות

הפיתוח אורך בין 4 ל-8 שבועות בהתאם למורכבות. העלות מחושבת באופן אישי על פי היקף העבודה והאסטרטגיות הנדרשות. מחיר התחלתי אופייני הוא 15,000$, ולקוחות חוסכים לעיתים קרובות 2,000$/חודש בעמלות לאחר הפריסה, ומשיגים החזר השקעה תוך כ-7-8 חודשים. הערכת הפרויקט היא בחינם — צור קשר לייעוץ.

טעויות אופייניות בפיתוח בוטים לאופציות

  • התעלמות מסיכון גמא: עם גמא גבוהה, דלתא יכולה להשתנות תוך שניות, והגידור עלול שלא לעמוד בקצב. אנו משתמשים בניטור גמא בזמן אמת עם רזולוציה של 50 אלפיות השנייה.
  • גידור יתר: מוביל להפסדים בעמלות. האלגוריתם שלנו משתמש במאגר של 5% כדי להימנע מעסקאות תכופות, ומפחית את עלויות הגידור ב-40%.
  • אי התחשבות במרווחים (spreads): מרווחי Deribit צרים (0.01-0.05% עבור אופציות נזילות), אך בשבילים אקזוטיים הם יכולים להיות רחבים (עד 1%). אנו מסננים לפי מרווח, ודוחים אופציות עם מרווח מעל 0.5%.
  • חוסר בגיבוי (failover): אובדן חיבור WebSocket עלול להוביל לפוזיציה לא מגודרת. אנו מיישמים חיבור מחדש אוטומטי עם השהיה אקספוננציאלית ומתג כיבוי שסוגר פוזיציות אם החיבור נופל ליותר מ-5 שניות.

אנו מבטיחים יציבות בוט בעומס ומספקים תעודת בדיקה (כולל אימות פורמלי של האסטרטגיה). הזמינו פתרון סוהר כדי לקבל מוצר מוכן עם תיעוד ותמיכה. צרו קשר לייעוץ חינם והערכת פרויקט.