פיתוח אלגוריתם Market Making מאפס
אנו מפתחים אלגוריתמי market making מאפס — מניתוח נזילות ועד פריסת שרת. בקריפטו, market making נשאר רווחי מאוד עבור נכסי נישה: altcoins בעלי שווי שוק בינוני, חוזים עתידיים תמידיים עם נזילות נמוכה. עם כוונון נכון, התשואה היומית הממוצעת היא 0.15–0.3% מהמלאי, ושיעור הביצוע מגיע ל-70–85%. אנו משתמשים במודל Avellaneda-Stoikov ובספרד דינמי כדי למזער סיכון מלאי ולמקסם רווח והפסד (P&L).
ההבטחה שלנו: זמינות הצעות מחיר של 95%+ ועמידות בפני סיכוני מלאי גם בתנודתיות גבוהה. ניסיון של 5+ שנים ו-20+ פרויקטים בתחום זה.
כיצד אנו מבטיחים יציבות?
אנו משתמשים בארכיטקטורה עמידה לתקלות עם גיבוי חם, ניטור השהיה (<10ms), והתראות אוטומטיות כאשר חריגים מגבלות סיכון. כל אלגוריתם עובר בדיקות עמידות על נתונים היסטוריים ומותאם אישית לנכס הספציפי. מהנדסים מוסמכים מספקים תמיכה 24/7.מודל Market Making בסיסי
Market making נאיבי — הצעת קנייה X% מתחת למחיר האמצע והצעת מכירה X% מעל. בעיה: סיכון מלאי. אם המחיר זז בחדות לכיוון אחד, ה-market maker צובר פוזיציה לא חיובית. הפסדים יכולים להגיע ל-50% מההון בסשן אחד אם לא מנהלים סיכונים.
מודל Avellaneda-Stoikov — אסטרטגיית market making אופטימלית מתמטית. הוא מתחשב בסיכון מלאי ובאופק זמן:
bid_price = mid - δ/2 - γσ²(T-t)q
ask_price = mid + δ/2 - γσ²(T-t)q
где:
δ = spread (оптимальный)
γ = risk aversion coefficient
σ = волатильность актива
q = текущий inventory (в единицах актива)
T = конец торгового периода
t = текущее времяנקודה מרכזית: עם מלאי חיובי (נצברו נכסים רבים), האלגוריתם מזיז הצעות מחיר כלפי מטה כדי למכור עודפים מהר יותר. עם מלאי שלילי, הוא מזיז כלפי מעלה כדי לקנות.
כיצד להגדיר את מודל Avellaneda-Stoikov?
- איסוף נתונים היסטוריים: מחירים, נפחים, ספרד, תנודתיות (σ).
- בחירת מקדם סלידת סיכון (γ) — בפועל 0.01–0.1.
- אופטימיזציה של מלאי יעד (q_target) ואופק זמן (T).
- הרצת backtest על 30 הימים האחרונים של נתונים.
- הגדרת מגבלות קשות/רכות: לדוגמה, מלאי מקסימלי = 10% מההון.
אנו מכוונים פרמטרים באופן אישי באמצעות אלגוריתמים גנטיים וחיפוש רשת (grid search).
כיצד פועל מודל Avellaneda-Stoikov?
מודל Avellaneda-Stoikov הוא גישה סטוכסטית שמתאימה הצעות מחיר דינמית בהתבסס על מלאי נוכחי וזמן שנותר. מקדם סלידת הסיכון γ קובע באיזו אגרסיביות האלגוריתם סוגר פוזיציות. בפועל, אנו מכוונים את γ על נתונים היסטוריים כדי לאזן רווחיות ספרד וסיכון מלאי.
מהו סיכון מלאי וכיצד למזער אותו?
סיכון מלאי הוא האויב העיקרי של market maker. אם הפוזיציה חורגת מהמגבלות המותרות, אנו מיישמים מספר שיטות:
- מגבלה קשה: כאשר מלאי > MAX_INVENTORY — הפסקת הצבת הזמנות בצד זה. המתנה לביצועים.
- מגבלה רכה עם הטיה (skewing): הזזה הדרגתית של הצעות מחיר נגד כיוון המלאי שנצבר. ככל שהמלאי גדול יותר, כך ההטיה חזקה יותר.
- גידור (Hedging): פתיחת פוזיציית גידור בבורסה אחרת או בחוזים עתידיים תמידיים. אם צברנו הרבה BTC ספוט, אנו מוכרים BTC-PERP.
עבור כל פרויקט, אנו בוחרים שילוב של שיטות בהתבסס על תנודתיות הנכס ונפח המסחר. אנו מבטיחים שהירידה מסיכון מלאי לא תחרוג מהסף המוגדר מראש (בדרך כלל 5% מההון).
ניהול ספרד
הספרד לא צריך להיות קבוע — הוא מתאים את עצמו לתנאי השוק:
- ספרד מבוסס תנודתיות:
bid_price = mid - δ/2 - γσ²(T-t)q ask_price = mid + δ/2 - γσ²(T-t)q где: δ = spread (оптимальный) γ = risk aversion coefficient σ = волатильность актива q = текущий inventory (в единицах актива) T = конец торгового периода t = текущее время. כאשר התנודתיות גבוהה, הספרד מתרחב — סיכון המלאי עולה. - עומק ספר ההזמנות: אם הנזילות בספר ההזמנות נמוכה, סיכון הבחירה השלילית גבוה יותר, הספרד מתרחב.
- שעה ביום: בתקופות פעילות נמוכה, הספרד מתרחב.
- זרימה רעילה: אם N העסקאות האחרונות היו בעיקר בצד אחד, זה עשוי להצביע על מסחר מודע. האלגוריתם מרחיב את הספרד או מסיר הצעות מחיר זמנית.
הצעות מחיר מרובות רמות
במקום זוג הזמנות יחיד (הצעת קנייה אחת + הצעת מכירה אחת), אנו מציבים מספר רמות:
Bid 3: mid - 0.5% × 1000 USDT
Bid 2: mid - 0.3% × 500 USDT
Bid 1: mid - 0.15% × 200 USDT
--- MID PRICE ---
Ask 1: mid + 0.15% × 200 USDT
Ask 2: mid + 0.3% × 500 USDT
Ask 3: mid + 0.5% × 1000 USDTהזמנות קרובות למחיר האמצע מתבצעות לעתים קרובות יותר ומרוויחות החזרים מהבורסה. הזמנות רחוקות מגנות מפני תנועות חדות.
ביטול הזמנות והצעת מחיר מחדש
יש לעדכן הזמנות באופן קבוע כאשר מחיר האמצע משתנה:
- הצעת מחיר מחדש מבוססת סף: אם מחיר האמצע זז ביותר מ-N%, בטל הזמנות ישנות והצב חדשות.
- הצעת מחיר מחדש מבוססת זמן: עדכון כפוי כל T שניות.
- מבוסס אירועים: הצעת מחיר מחדש בכל שינוי בהצעה/בדרישה הטובה ביותר בספר ההזמנות.
ביטולי הזמנות תכופים צורכים מכסת בקשות API. בורסות מטילות מגבלות קצב. עבור Binance: 1200 בקשות/דקה HTTP, מגבלות נפרדות ל-WebSocket. אופטימיזציה של תדירות העדכון היא קריטית.
תוכניות Market Making בבורסות
בורסות גדולות משלמות עבור מתן נזילות:
| בורסה | תוכנית | תנאים |
|---|---|---|
| Binance | ספק נזילות | החזר עד -0.005% |
| Bybit | Market Maker | עמלת יוצר אפסית או שלילית |
| OKX | Market Maker | תנאי עמלה מיוחדים |
| Kraken | Market Maker | החזר יוצר לפי בקשה |
כדי לזכות בתנאים אלה, יש לשמור על זמינות הצעות מחיר מינימלית (>80% מהזמן הצעה/דרישה בטווח מסוים מהאמצע) ונפח מינימלי.
שלבי פיתוח
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח נזילות | 2–5 ימים | דוח עם מודל אופטימלי ופרמטרי סיכון |
| יישום אלגוריתם | 2–4 שבועות | מודולים: תמחור, ניהול הזמנות, בקרת סיכון |
| אינטגרציה עם בורסה | 3–7 ימים | חיבור WebSocket + REST יציב |
| בדיקות (backtest + paper) | 1–2 שבועות | דוח על Sharpe, ירידה, שיעור ביצוע |
| פריסה וניטור | 3–5 ימים | שרת עם Grafana, התראות ב-Telegram |
ניטור ומדדים
פירוט P&L: הכנסה מספרד - הפסדי סיכון מלאי - עמלות.
שיעור ביצוע: אחוז ההזמנות שבוצעו. נמוך מדי (<50%) → ספרד רחב מדי. גבוה מדי (>90%) → ספרד צר מדי, בחירה שלילית מוגזמת.
חשיפת מלאי: פוזיציה נוכחית בדולרים, מקסימום לסשן, ממוצע. זמינות: אחוז הזמן שבו מוצבות הצעות מחיר (יעד >99.5%). השהיה: זמן מעדכון שוק ועד הצבת/עדכון הזמנות (יעד <10ms).
ערימת טכנולוגיות
שפה: Python (asyncio + aiohttp/websockets) לאסטרטגיות עם השהיה > 50ms. C++ או Rust לרכיבים קריטיים להשהיה.
מחברי בורסה: CCXT Pro (Python) מספק API אחיד ל-WebSocket. לייצור, אנו בונים מחברים מותאמים אישית לכל בורסה.
אחסון: PostgreSQL לעסקאות, הזמנות, פוזיציות. InfluxDB או TimescaleDB למדדי ביצועים.
ניטור: לוחות מחוונים של Grafana ל-P&L בזמן אמת, מלאי, השהיה. התראות ב-Telegram כאשר חריגים מגבלות סיכון.
צור קשר כדי להעריך את הפרויקט שלך תוך יומיים. קבל ייעוץ מארכיטקט — דון בפרטים.







