פיתוח Weighted pool: היכן נשברים pools עם משקלים לא שווים
פיתוח Weighted pool מתחיל לא בקוד, אלא בתשובה כנה לשאלה: מה יקרה ל-pool כאשר נכס אחד ינוע במחיר פי כמה מהר מהאחרים.
Pool עם משקלים לא שווים מחזיק מחיר דרך מכפלת חזקות — ובדיוק המתמטיקה הזו הופכת אותו לנוח עבור תיקים עם תנודתיות שונה, אך בו בזמן הופכת כל עיוות חד בליקווידיות למבחן חוסן.
כל עוד המשקלים מאוזנים על ידי זרימות ארביטרז'רים, הכול נראה יציב; ברגע שהמחיר החיצוני מתרחק והפנימי לא מספיק, הארביטרז' ב-pool מתחיל systematically לשטוף את הנכס הזול, וה-pool מאבד בדיוק את אותה רזרבה שלשמה נאסף.
המקור השני לכאב — פער בין חישוב המחיר לבין הציפיות. נוסחת המשקלים נותנת עקומה חלקה רק כאשר שומרים בדיוק על האינווריאנט, ובפועל עיגולים, עמלות וסדר הפעולות בתוך אותה טרנזקציה מזיזים את התוצאה.
אם חישוב המחיר והוצאת הנכסים חיים במקומות שונים בקוד, ה-pool מתחיל לתת יותר ממה שהוא צריך, ואת הפער מכסים ספקי הליקווידיות — בשקט, במנות, עד למשיכה גדולה ראשונה.
השכבה השלישית — עמידות בפני מניפולציה ברגע נתון. Pool עם משקלים לא שווים ללא הגנה מפני פעולות מיידיות מאפשר בטרנזקציה אחת להזיז מחיר, לקחת את פער הארביטרז' ולהחזיר את המשקל חזרה, ולהשאיר את ההפסד ברזרבה.
זו אינה שגיאה של הנוסחה, אלא תוצאה של כך שחישוב המחיר, העמלות והמגבלות על שינוי המשקל אינם קשורים זה לזה.
אנחנו מפרקים את ה-pool כמערכת: אינווריאנט, סדר הפעולות, גבולות שינוי המשקלים, התנהגות תחת ארביטרז' חיצוני. להלן — כיצד זה נסגר ברמת הארכיטקטורה ואיפה בדיוק עוברות נקודות הכשל.
מה נותן מאגר מתוכנן נכון עם משקלים
האפקט המרכזי של weighted pool — עמידות בפני עיוותי נזילות. בשונה ממאגר עם חלקים שווים, שבו משיכה של פוזיציה גדולה מזיזה את המחיר בחדות, כאן המשקל של כל נכס נקבע מראש וקובע כיצד בדיוק העקומה מחלקת את ההשפעה של העסקה.
ככל שהמשקל של הנכס גבוה יותר, כך הוא זז פחות בהינתן כל השאר — המאגר מחליש פרצי ביקוש והיצע חד-צדדיים, ולא מגביר אותם.
מכאן נובעת התוצאה השנייה — מחיר החלפה צפוי מראש. נוסחת החישוב מחדש ידועה מראש, ולכן מחיר העסקה אינו תלוי במי ובאיזה סדר סוחר: הוא נקבע רק לפי היתרות והמשקלים הנוכחיים. עבור ארביטראז'רים ועושי שוק זה מסיר אי-ודאות, ועבור ספקי נזילות — מסיר הפתעות בתשואה.
החלקה (slippage) במקרה זה ניתנת לניהול, ולא "מה שיצא". משקלים שנבחרו נכון ועומק הרזרבות קובעים עד כמה המחיר מתרחק בהינתן נפח עסקה נתון: הזמנה גדולה עוברת עם סטייה קטנה יותר, והזמנות קטנות כמעט אינן משפיעות על הקוטב.
זה בא לידי ביטוי ישירות בתשואה של הספקים — העמלות מצטברות בצורה יציבה יותר, מכיוון שזרימת העסקאות אינה מאיצה את המאגר לכיוון אחד.
תשואה מבוקרת של ספקים — זה לא על הבטחת אחוזים, אלא על שליטה בסיכונים: חלק ברור של כל נכס, היעדר עיוותים נסתרים והתנהגות צפויה של המאגר בתקופות תנודתיות. מאגר כזה שורד תזוזות שוק ללא כיוונון ידני של משקלים ונשאר אטרקטיבי לנזילות בטווח ארוך.
מצבי עבודה של פול: משקלים קבועים, דינמיים והיברידיים
מצב משקלים הוא לא הגדרה קוסמטית, אלא חוזה בין הפול לספקי הנזילות שלו. ממנו תלוי כיצד מחושבת מחיר ההחלפה, האם ניתן לשנות את הרכב הסל לאחר ההשקה ואילו תרחישים בכלל נשארים קבילים. להלן שלושה מצבים שביניהם באמת בוחרים בעת תכנון weighted pool.
| מצב | מתי מתאים | מגבלות |
|---|---|---|
| משקלים קבועים | סל עם מבנה יציב: למשל, 80/20 על צמד נכסים, שבו הפרופורציה היא חלק מרעיון ההשקעה | המשקלים אינם משתנים לאחר האתחול; איזון מחדש רק באמצעות החלפות או פעולות נזילות חיצוניות |
| משקלים דינמיים | משימות שבהן ההרכב צריך לעקוב אחרי השוק: מדדים, אסטרטגיות עם רוטציה מתוכננת של חלקים | נדרש מקור נתונים וכלל חישוב מחדש; בעת שינוי משקל משתנה מחיר ההחלפה, ספקי הנזילות צריכים להבין את המכניקה מראש |
| משקלים היברידיים | פול עם מבנה בסיסי וחלון שינויים מוגבל: מסדרון שבתוכו המשקלים נעים | ביקורת ובדיקת גבולות מורכבות יותר; נדרשת מדיניות מפורשת מי ומתי יוזם את השינוי |
כיצד המצב משפיע על ההחלפה
במשקלים קבועים נוסחת ההחלפה צפויה: ככל שהעסקה מרחיקה את היתרה מהפרופורציה היעד, כך כל יחידה נוספת יקרה יותר. זה מספק הגנה פשוטה מפני התרוקנות של צד אחד של הפול ועקומת החלקה מובנת שקל להסביר למשתמש.
משקלים דינמיים מוסיפים מעגל שליטה שני: המחיר תלוי גם ביתרה הנוכחית וגם במשקל היעד שנקבע. אם כלל החישוב מחדש מנוסח בצורה לא ברורה, ספק הנזילות לא יכול להעריך את הסיכון מראש — לכן מצבים כאלה מתכננים יחד עם תקנון עדכון שקוף.
מה זה אומר לניהול נזילות
המצב ההיברידי הוא פשרה: הפרופורציה הבסיסית מגנה על הפול מפני עיוותים חדים, והמסדרון מאפשר להסתגל ללא הרכבה מחדש מלאה של הסל. המחיר של הגמישות — יותר בדיקות בגבולות וכיסוי חובה בבדיקות של תרחישים שבהם המשקל נתקע במגבלה.
אנחנו מתכננים את המצב בהתאם למשימה: תחילה קובעים אילו תרחישי החלפה ואיזון מחדש נדרשים, לאחר מכן בוחרים משקלים וכללים לשינוים. תארו את המשימה — נחזור עם הערכה ותוכנית.
כיצד אנו מתכננים ומטמיעים weighted pool: שלבי העבודה
תכנון weighted pool מתחיל לא בקוד, אלא בניתוח הכלכלה של הבריכה: אילו נכסים נכללים, כיצד מתחלקות היחסות, מי ולשם מה יבצע המרה. מכך נגזרת סכמת המשקלות והלוגיקה של תמחור — טעות בשלב זה אינה ניתנת לתיקון באמצעות הגדרות לאחר ההשקה.
- אבחון המשימה והנכסים. מקבעים את הרכב הסל, היחסים הרצויים ותרחישי ההמרה: ארביטראז', איזון מחדש, נזילות עבור מוצר מסוים. בתוצר — מודל בריכה מוסכם ורשימת מגבלות.
- תכנון סכמת המשקלות. מגדירים את משקלות הנכסים ואת הגבולות המותרים שלהם, כדי שהבריכה לא תסטה לחוסר איזון בביקוש חד-צדדי. מחשבים כיצד שינוי משקל משפיע על מחיר ההמרה ועל ההכנסה של ספקי הנזילות.
- הגדרת ההמרה והעמלות. קובעים את נוסחת חישוב השער, את גובה העמלה ואת חלוקתה, ואת המגבלות על נפח פעולה בודדת. בודקים שההמרה נשארת צפויה גם בתנודות חדות.
- בדיקת עמידות בעיוותים. מריצים תרחישים: המרה חד-צדדית גדולה, משיכת חלק גדול מהנזילות, סדרת עסקאות ארביטראז'. בוחנים היכן הבריכה מאבדת איזון וכיצד היא מתאוששת במהירות.
- הגנה ובקרת גישה. מגדירים תפקידים, השהיה בעת אנומליות, ומגבלות על שינוי פרמטרים. פעולות מפתח — רק באמצעות תפקידים מאושרים.
- בדיקות והשקה. בודקים את החוזים ברשת בדיקה עם תרחישים אמיתיים, ולאחר מכן מעבירים לרשת הראשית עם נפח נזילות מוגבל.
- מסירת תיעוד. מוסרים את סכמת המשקלות, פרמטרי ההמרה, הוראות ניהול ותוכנית פעולה במקרה של סטיות.
כל שלב מסתיים בארטיפקט שניתן לבדוק לפני המעבר הלאה. תארו את המשימה שלכם — נחזור עם הערכה ותוכנית עבודה.
מה הלקוח מקבל לידיו: קונפיגורציות, תרשימים, נהלים
פיתוח weighted pool מסתיים לא בהשקת החוזה, אלא בהעברת חבילה שלמה שלפיה הצוות שלכם יוכל להפעיל את הבריכה בלעדינו. להלן מה בדיוק מתועד בקונפיגורציות ובמסמכים, כדי שלא יהיה צורך לשחזר את הפרמטרים מהתכתבות.
- קונפיגורציות הבריכה: קבצים עם הרכב הנכסים, המשקולות ההתחלתיות, עמלת ההמרה, מגבלות על חלקו של נכס בודד ופרמטרים של הנפקת טוקנים של הבריכה.
- תרשימי משקולות: טבלאות של משקולות יעד ומשקולות גבול לכל נכס, כללי איזון מחדש וטריגרים שבהם המשקולות משתנות אוטומטית.
- מדיניות גישה: תפקידי מנהל, מפעיל ועצירה, מטריצת הרשאות לשינוי משקולות, עמלות ורשימת נכסים, סדר ריבוי חתימות לפעולות קריטיות.
- תרשימי אינטראקציה: דיאגרמות של זרימות כספים בין הבריכה, פלטפורמות חיצוניות והקופה, נקודות שבהן ייתכנו עיכובים במשיכה.
- נהלי תחזוקה: לוח זמנים של בדיקות מתוכננות, סדר התגובה לסטייה במשקולות, תרחישי עצירת הבריכה ונסיגה מדורגת למצב הקודם.
- הוראות ניטור: אילו מדדים לאסוף, ספי התראות לפי נזילות וחלק הנכסים, ולמי נשלח האות.
- תיעוד פריסה: תיאור הסביבות, סדר הפצת עדכוני החוזים והבדיקות לאחר כל שינוי.
כל ארטיפקט קשור לפעולה konkretית: מהקונפיגורציה רואים מה לשנות בעת הוספת נכס, ממדיניות הגישה — מי ואיך מאשר זאת, מהנהלים — מה לעשות בעת סטייה. את תרשימי המשקולות ומדיניות הגישה נתאם איתכם לפני ההשקה, ולא אחרי הפעולות הראשונות.
תארו את המשימה — נחזור עם הערכה ותוכנית, כולל הרכב החבילה הזו עבור הבריכה שלכם.
מקרה בוחן: כיצד מאגר עם משקלים לא שווים הפסיק לאבד נזילות
מה היה לפני
מאגר עם משקלים לא שווים הורכב בתחילה לפי תבנית טיפוסית: המשקלים הוגדרו פעם אחת בעת האתחול ומכאן ואילך לא חושבו מחדש. כל עוד היחס בין הנכסים בשוק נשמר קרוב ליחס ההתחלתי, הכול פעל כשורה.
ברגע שנכס אחד ירד ביחס לאחר, האינווריאנט של המאגר החל לסטות מהיעד — וכל פעולה משמעותית של משתמש החלה להזיז את המחיר חזק יותר מכפי שתוכנן בחישוב.
החלקה בעסקאות בגודל בינוני גדלה פי כמה, והארביטרז'יסטים החלו לנקות את העיוות לפני שספקי הנזילות עשו זאת. מבחינתם זה נראה כך: התשואה יורדת, הסיכון עולה, והסיבה אינה נראית מתוך הממשק.
הראשונים שעזבו היו אלה שהחזיקו במאגר את הנתח העיקרי — והמאגר איבד עומק בדיוק במקום שבו היה נחוץ לעסקאות גדולות.
מה שינו
כתבנו מחדש את לוגיקת המשקלים: במקום יחס קבוע — התאמה דינמית עם מגביל מהירות, כדי שהמאגר לא יזדעזע בכל עסקה. הוספנו בדיקת אינווריאנט לפני ביצוע הפעולה: אם הפעולה מוציאה את המאגר מגבול העיוות המותר, העסקה נדחית עם סיבה ברורה, במקום לעבור עם הרעת מחיר לכל שאר המשתתפים. בנפרד סגרנו מחלקת כשלים בעת עיוות חד — קודם לכן במצב זה חלק מהפעולות עברו במחיר שגוי.
מה נהיה
ההחלקה בהיקפים דומים ירדה, שיעור הפעולות שנדחו בגלל האינווריאנט נשאר בטווח הצפוי — כלומר ההגנה אינה מפריעה למסחר תקין. ספקי הנזילות הפסיקו לצאת מהמאגר בעת עיוות: קודם לכן זו הייתה הסיבה העיקרית לזרימת הון החוצה, כעת העומק נשמר, ושיעור ההון הפעיל במאגר עלה.
מחלקת הכשלים שהובילה לביצוע שגוי אינה משוחזרת עוד — זאת אושש בהרצות על נתונים היסטוריים וברשת בדיקה.
חלק מההחלטות בנוגע לארכיטקטורה הצלבנו עם המודל הפתוח Balancer — לקחנו לא את הקוד, אלא את הגישה למתמטיקה של המשקלים ולגבולות הבטיחות.
במה נבדל weighted pool מ-pool עם משקלים שווים?
ב-pool עם משקלים שווים, חלקיהם של כל הנכסים זהים, ולכן הוא עובד היטב כצמד מטבעות: ניתן להחליף נכס אחד באחר במינימום החלקה, כל עוד הרזרבות מאוזנות. אך ברגע שמתחילים לה�וציא נכס אחד באופן פעיל, חלקו יורד, ומכאן ואילך כל עסקה נוספת מתבצעת במחיר פחות ופחות משתלם. pool עם משקלים שווים משרת למעשה צמד אחד ומתקשה להתמודד עם ביקוש חד-כיווני.
weighted pool מגדיר לכל נכס משקל משלו — לדוגמה, 80/20 או 60/20/20. מחיר ההחלפה מחושב לפי נוסחה שבה המשקל קובע עד כמה משתנה שווי הנכס כאשר חלקו ב-pool משתנה.
ככל שהמשקל גבוה יותר, כך המחיר עולה בצורה מתונה יותר בעת ההוצאה, וה-pool יציב יותר לעיוותים: נכס במשקל 80% ניתן להוציא בכמויות גדולות פי כמה מנכס במשקל 20%, לפני שהמחיר מתחיל לסטות. זהו ההבדל המרכזי — המשקלים קובעים לא רק את המבנה, אלא גם את פרופיל היציבות.
בפועל הדבר מאפשר תרחישי שימוש שונים. pool עם משקלים שווים נבחר כאשר נדרש מחיר החלפה צפוי ככל האפשר בין שני נכסים בעלי נזילות דומה. weighted pool נבחר כאשר ב-pool שכנים נכסים בעלי תנודתיות שונה או ביקוש שונה — לדוגמה, נכס סליקה עיקרי וטוקן משני של הפרויקט. את המשקלים ניתן לשנות באמצעות חוזה ניהולי, ולהתאים את מבנה ה-pool לביקוש שהשתנה.
יש לשקול בנפרד את מחיר ההחלפה. ב-weighted pool הוא תלוי בשילוב המשקלים, ולכן עבור עסקאות גדולות ההחלקה הסופית עשויה להיות נמוכה יותר או גבוהה יותר מאשר ב-pool עם משקלים שווים — הכול נקבע לפי העיוות הנוכחי של הרזרבות.
לכן לפני ההשקה אנו מדמים את התנהגות ה-pool על נתונים היסטוריים ומתאימים את המשקלים לזרימות נזילות אמיתיות, ולא לסימטריה מופשטת.
ספקות טכניים בפיתוח weighted pool
ספקות טכניים בנוגע ל-weighted pool מותאם אישית מסתכמים בדרך כלל בארבעה: תאימות לתשתית קיימת, הגירת נזילות, ביקורת מתמטית והתנהגות תחת עומס. להלן — תשובות ישירות ללא שיווק.
עד כמה weighted pool מותאם אישית תואם לחוזים וממשקים שכבר פועלים?
הפול מיישם ממשק סטנדרטי להחלפה ולפול נזילות, ולכן ראוטרים, אגרגטורים וארנקים רואים בו מקור נזילות רגיל. המשקלות נקבעות בעת האתחול ויכולות להיות קבועות או ניתנות לניהול — הדבר משפיע רק על לוגיקת חישוב המחירים, ולא על הממשק החיצוני. אם נדרשת אינטגרציה עם השירותים הפנימיים שלכם, נוסיף שכבת אדפטר כדי לא לשנות את הקוד הקורא.
כיצד להעביר נזילות מפול קיים ללא השבתה?
ההגירה מתבצעת בשני שלבים: תחילה פורסים פול חדש וממלאים אותו בנזילות לבדיקה, לאחר מכן מעבירים את הפוזיציות של הספקים — либо דרך משיכה והפקדה מחדש, либо דרך חוזה הגירה שמקבל LP-טוקנים של הפול הישן ומנפיק חדשים.
המסלול השני שומר על הפוזיציות של המשתמשים ומפחית את הסיכון שהם יעברו למתחרים. הסדר ונקודות החזרה נקבעים בתוכנית לפני ההשקה.
מה בדיוק בודקת הביקורת של weighted pool?
הביקורת מכסה את המתמטיקה של המשקלות ואת האינווריאנט של הפול, מקרי קצה עם משקלות קיצוניים, הגנה מפני מניפולציה במחיר ונכונות חישוב העמלות. בנפרד נבדקות הרשאות המנהל: מי יכול לשנות משקלות, להשהות החלפות, למשוך כספים. התוצאה — דוח עם סיווג הממצאים ותיקונים, ולא חתימה פורמלית.
כיצד הפול מתנהג בעומסים גבוהים?
צוואר הבקבוק — לא מספר הטרנזקציות, אלא עלות הגז על חישוב מחדש במספר רב של נכסים. שומרים על מספר טוקנים בגבולות סבירים, שומרים ערכי ביניים במטמון ומוציאים חישובים כבדים מהמסלול החם.
בתנועות מחיר חדות האינווריאנט מגן על הפול מפני התרוקנות, אך ארביטראז'רים ראשונים לוקחים את הרווח — זוהי התנהגות צפויה, ולא שגיאה.
אם השאלה שלכם אינה כאן — תארו את המשימה, נחזור עם הערכה ותוכנית.
בואו נדון במשימה שלכם בפיתוח weighted pool
כדי שההערכה תהיה ריאלית ולא "ממוצע שוק", עלינו להבין את המשימה שלכם ברמת המכניקה של הבריכה: אילו נכסים ומשקלים, האם נדרשת דינמיקה של משקלים, כיצד בנויה הגישה לנזילות ומי משמש כספק. ככל שהנתונים הראשוניים מדויקים יותר, כך התוכנית מדויקת יותר והתיקונים בשלב היישום מועטים יותר.
מה כדאי להכין לשיחה הראשונה:
- הרכב הבריכה: רשימת נכסים, משקלי יעד וגבולות סטייה מותרים;
- תרחיש שימוש: החלפה, צבירת תשואה, פונקציית גזברות או שילוב שלהם;
- דרישות לניהול: מי וכיצד משנה משקלים, האם נדרשים תפקידים ומגבלות על פעולות;
- עומס צפוי: כמה פעולות בשיא ואיזו תגובה נחשבת מקובלת;
- רשת ותאימות: היכן אנו פורסים ועם אילו שירותים הבריכה צריכה להשתלב;
- עבודות קיימות: חוזים, סכמות, תיעוד — אם משהו קיים, נבחן ונעשה בו שימוש חוזר;
- מגבלות: רגולטוריות, בנוגע לגישות, בנוגע למועדי העלייה לאוויר.
לאחר מכן אנו מנתחים את הנתונים הראשוניים, מבהירים נקודות מעורפלות וחוזרים עם הערכה ותוכנית: שלבים, הרכב העבודה, מה יידרש מצדכם ובאיזה סדר. תארו את המשימה בצורה הנוחה לכם — נחזור עם חישוב והצעה ללוחות זמנים.







