החוק של קוואנט: אם PnL לאחר שינוי עולה, זה היה השינוי; אם PnL לאחר שינוי יורד, זה היה השוק. החוק של קוואנט: אם PnL לאחר שינוי עולה, זה היה השינוי; אם PnL לאחר שינוי יורד, זה היה השוק. אני עובד במסחר כמותי ובונה סביבות מחקר אוטומטיות לחלוטין ומערכות מסחר שיעזרו לי לעבור נתוני שוק אסטרטגיות מסחר ייצור לניתוח ביצועים אחת הדרישות העיקריות של מערכות כאלה היא לאפשר לי לבדוק במהירות את הרעיונות שלי ו iterate במהירות כדי לשפר את הביצועים הכלליים של המסחר. זהו מדד ברור מאוד כדי לומר אם אני עושה טוב יותר מבעבר או לא. PnL אם אי פעם פעלת אסטרטגיית מסחר חי, תדעו את הטקס היומי הזה: פתחו לוח זמנים כדי לבדוק מילויים, עיכובים, מלאי ו - בלתי נמנעים - תסתכלו על PnL. תרשים זה מפתה כי הוא לוח התוצאות האולטימטיבי שמסכם כמה מוצלח העסק עושה. השווקים אינם יציבים, קבוצות המלאות, משטרי התנודתיות מתהפכים, שינויים במיקרו-מבנה, והפצה של התוצאות היא שולית שומן. fool yourself הפוסט הזה נותן a ראה כיצד להחליף PnL-Chasing עם - כך מעגל האיטרה שלך מקבל יותר אות ליחידה של זמן. practical statistical hypothesis testing מדוע PnL היא מטריקה רועשת PnL הוא של מרכיבים רבים אקראי: אגרסיבי התפשטות PnL היומית שלך יכולה להיות כפולה ביום חדשות, גם אם המערכת שלך היא ללא שינוי. תזמון מיקרו-שנייה, מיקום שורה, רמות תשלום, אינטראקציה מוסתרת מול אור - כל הזרקת אקראיות לתוצאות המסחר. כמה ניצחונות מוקדמים מתמזגים לתחושת החשיפה הגדולה יותר מאוחר יותר (או להיפך), מה שהופך את הקו נשמע משכנע מבלי לשנות את התוצאה הממוצעת הבסיסית לכל מסחר. שינויים בקופות המלאי, רוחב הציטוט, מעבר פנימי או מסלול יכולים להזיז את PnL בכיוונים מנוגדים ולהבטל או להרחיב אחד את השני. PnL הוא יעד נהדר לעקוב אחר העסק, אבל לא בהכרח מדד מתאים לקבל / לדחות שינויים במחקר על חלונות קצרים. מה אנחנו רוצה לדעת דה דה כאשר אנו שולחים שינוי (לדוגמה, תכונה חדשה בסימן, לוגיקה אחרת של ציטוט, חוק ביצוע שונה), אנו רוצים לענות: האם השיפור שנצפה צפוי להימשך, או שזה משהו שראינו במקרה? Is the observed improvement likely to persist, or is it something we saw by chance? זה מביא אותנו לעולם של בדיקות ההיפותזה הסטטיסטית, שם אנו מתלוננים על החשיבות הסטטיסטית של התוצאות שנצפו. הסיכוי הזה הוא ערכי p קטנים פירושו "זה יהיה נדיר אם לא תהיה השפעה אמיתית". Under a world where the change to the true mean outcome, how often would we see a difference at least as large as what we observed? לא עושה כלום p-value לא עושה כלום דוגמה: שתי אסטרטגיות שונה אבל לא צפו צפו בואו להעמיד פנים ששלחנו שינוי וקיבלנו כמה עסקאות על אסטרטגיה לפני ואחרי השינוי (או מ-backtest או מ-live trading). אסטרטגיה א: לפני השינוי אסטרטגיה ב: אחרי השינוי למטה יצרתי שתי סדרות PnL סינתטיות לכל מסחר. האם אנחנו באמת יכולים לסמוך על מה שאנחנו רואים ולקבל מסקנות בהתבסס על זה?אחרי הכל, האם PnL אינו המטרה הסופית של אסטרטגיה מסחר?אנו נבדוק אם הממוצע של PnL לכל מסחר באמת שונה על ידי ביצוע מבחן סטטיסטי נפוץ להלן. diverge visibly הקוד שהשתמשתי בו כדי לייצר את הקלעים ולהפעיל מבחן סטטיסטי הוא למטה: import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy import stats import seaborn as sns sns.set(); rng = np.random.default_rng(49) # generate PnLs per trade n = 1200 pnl_A = rng.normal(loc=0.0, scale=1.0, size=n) pnl_B = rng.normal(loc=0.0, scale=1.0, size=n) # generate cumulative PnLs cum_A = pnl_A.cumsum() cum_B = pnl_B.cumsum() # run a statistical test t_stat, p_value = stats.ttest_ind(pnl_A, pnl_B, equal_var=False) print(f"mean_A={pnl_A.mean():.4f}, mean_B={pnl_B.mean():.4f}") print(f"Welch t-statistic={t_stat:.3f}, p-value={p_value:.3f}") plt.figure(figsize=(12,7)) plt.plot(np.arange(1, n+1), cum_A, label="Strategy A") plt.plot(np.arange(1, n+1), cum_B, label="Strategy B") plt.ylabel("Cumulative PnL", fontsize=15); plt.xlabel("Trade #", fontsize=15); plt.legend(["Cumulative PnL — Strategy A", "Cumulative PnL — Strategy B"], fontsize=15) plt.tight_layout(); plt.savefig("cumulative_pnl_A_vs_B.png", dpi=160); plt.show(); הנה המספרים שהוא מוציא: mean_A=0.0611, mean_B=0.0037 Welch t-statistic=1.380, p-value=0.168 אנו רואים את שתי התוצאות הסטנדרטיות של מבחן סטטיסטי — ערך t סטטיסטי וערך p. אספר עליהם עוד בהמשך הסיפור. כדי לומר את הממוצע per-trade PnL שונה. עם זאת, שני הקווים מצטברים נראים די רחוק. there is not enough evidence מה בדיוק קרה? (מבחן ההיפוטנציאל המפתיע) באופן אישי, לא אהבתי את הגישה הזו הרבה בפעם הראשונה שהלכתי ללמוד על בדיקות ההיפותזה הסטטיסטית, כי רוב הדרכות אינן מסבירות את הרעיון מאחורי זה ורק מאפשרות לך לזכור טון של דברים. 1) השאלה שאנחנו שואלים הנחה אפס (H0): הממוצע האמיתי לכל מסחר PnL הוא זהה לפני ואחרי השינוי. אלטרנטיבי (H1): הם שונים (שני צדדים), או אחד גדול יותר (צד אחד), בהתאם לשאלה שלך. 2) הסטטיסטיקה שאנו מחושבים במרכזו, The זה : t-statistic הבדל במדגם פירושו מחולק על ידי שגיאה סטנדרטית של ההבדל. הבדל במדגם פירושו מחולק על ידי שגיאה סטנדרטית של ההבדל. אם שני הדוגמאות משמעותיות רחוקות אם הם קרובים ביחס לרעש, t-stat הוא קטן. לגבי כמה רעשים הם 3) מאיפה מגיע ערך p תחת H0 (אין הבדל אמיתי), הסטטיסטיקה t עוקבת אחר חלוקה ידועה (a עם כמה רמות של חופש). זה פשוט : t-distribution p-value הסיכוי, תחת H0, של תצפית t-stat לפחות קיצוני (ערך גדול של t-stat) כמו אחד שאתה מקבל. the probability, under H₀, of observing a t-stat at least as extreme (large value of a t-stat) as the one you got. זה כל השולחנות האלה (שהייתכן שאתה נתקל בהנחיות בדיקה שונות) עושים - ערך p קטן פירושו שההבדל שנצפה היה נדיר אם לא הייתה השפעה אמיתית. looking up a quantile 4) כיצד לקרוא את המספרים האמיתיים שנוצרו על ידי קוד Python לעיל הנה מה המספרים האלה אומרים לכם: t ≈ 1.380 אומר: ההבדל שנצפה בממוצע per-trade PnL בין A ו- B הוא 1.380 שגיאות סטנדרטיות רחוק מאפס. p ≈ 0.168 (שני צדדים) אומר: אם לא היה באמת שום הבדל בממוצע, היית רואה הבדל לפחות גדול זה על 16-17% מהזמן במקרה. 5) מדוע המפה משקרת אותנו PnL מצטבר הוא a סביב הממוצע הבסיסי.עם אלפי עסקאות, צעדים אקראיים נפרדים באופן קבוע על ידי סכומים מדהימים - גם אם האמצעים זהים.המוח שלנו מותאם לזיהוי גבולות והפרידה, אבל לא יותר מדי כדי לשלב את ההבדל כראוי. . random walk against the per-trade dispersion 6) מה היה "חשוב" כאן? באופן מעשי, היית רואה p-ערך ב 0.05 אם המוחלט של t-סטטיסטי הוא 1.96 (רק 5% של ערכים t-סטטיסטיים אפשריים הם מעבר לזה). שמירה על ההפרש ואת מבנה גודל המדגם זהה, היית צריך בערך 42% הבדל ממוצע גדול יותר (כי 1.96 / 1.38 ≈ 1.42) כדי להשיג את 5% הבר משני צדדים. "אבל PnL הוא זה שמשלם את החשבונות." אנחנו לא מורידים את PnL, אנחנו : separating roles PnL אומר לך אם העסק כולו עובד. בדיקות היפותזה אומרות לך אם השינוי הספציפי הזה עשוי לעזור מחוץ לדוגמה שראית. כששניהם לא מסכימים, למדת משהו: אולי הסביבה הייתה חיובית באופן יוצא דופן, אולי התאמה לדרכה, חשיפה משופרת, אולי שלחת כמה שינויים. ההשפעה הגדלת דפוס יישום שאני ממליץ (איטציה מהירה ללא הונאה עצמית) Per-trade PnL הוא בסדר, באסטרטגיות של תדירות גבוהה / יצירת השוק, זה נפוץ להשתמש בסכומים כגון per-interval PnL (למשל, 1 דקה, 5 דקות) כדי לשקף את המלאי, תשלום, ו aggregation סיכון - ולהפחית את הקורלציה הסורית. For a mean-effect question, Welch’s t-test is a good default. If tails are very heavy or serial correlation is strong, switch to: Choose the statistic. (cluster by day, by venue, by symbol group), or Cluster-robust tests (label-shuffling), or Randomization / permutation tests (resample blocks to respect autocorrelation). Bootstrap הפסקת אופציונלית ("אנו נסתכל כל שעה ומשלוח כאשר p < 0.05") דופקת חיוביות שווא. להחליט על האופק או את מספר העסקאות לפני הפעלת הניסוי. טיפול בהשוואות מרובות.אם תנסו 20 כפתורים, אחד יזכה בהצלחה.השתמש בקצב גילוי שווא (בנג'מין-הוהברג) או בונפרוני בהקשר של הימורים גבוהים.שמור יומן מרכזי של כל המבחנים שאתם מבצעים. היזהרו מפני דליפה ובדיקת אחורית.חלקו את השווקים או את הזמן, אל תטפסו פעמיים בתכונות בכל רכבת/בדיקת, ותהיו ברורים לגבי תאריכי הקפאה. ערך p יכול להיות קטן עבור מיליון עסקאות אבל ההשפעה היא חסרת משמעות מבחינה כלכלית לאחר תשלומים וסיכון. מעקב על יציבות. קצה אמיתי צריך לשרוד חלקיקים: על ידי קופסת נזילות סמל, על ידי זמן-של-יום, על ידי משטר יציבות. אם "הניצחון" שלך קיים רק בחתיכת דק, להיות זהיר. חזרה לדוגמא שלנו: מה אתה צריך להסיק בהתחשב במספרים לעיל (t ≈ 1.380, p ≈ 0.168): אין מספיק ראיות לכך ש- PnL הממוצע של אסטרטגיה B שונה מ- אסטרטגיה A. ההפרדה הנפוצה ב- PnL מצטבר תואמת לאקראיות בתהליכים בינוניים שווים. או לאסוף יותר נתונים (להגדיר מראש דגימה גדולה יותר), לחזק את ההשערה (תכונות טובות יותר, שליטה על סיכונים), או להפעיל A / B נקי יותר (בודדים מבולבלים). בגלל מלכודות נפוצות (אני עשיתי אותם כל כך שאתה לא צריך) השתמש בשיטות קבועות או רצופות שמחשבות על השתלמות, אחרת אתה מעלה חיוביות שווא. אתה חושב שיש לך 100k דגימות, אבל יכול להיות שיש לך באמת 2k אירועים עצמאיים. השוואת קווים מצטברים בין תקופות עם נפח / נוזל שונה וקרא לזה ניצחון. שווה "משמעות סטטיסטית" עם "ערך כלכלי."קצה קטן יכול להימחק על ידי תשלומים, דחיסת עיכוב, או סיכון מלאי. אם תתאים 20 תכונות ולשמור על הטוב ביותר, ערך p שלך חייב להיות מתוקן עבור הבחירה הזאת. Mnemonic עבור הבדיקה t אשר למעשה עוקב כאשר אתה מרגיש מפתה לגלול גלגל עיניים PnL תרשים, לזכור: t = "כמה רחוק הם שני אמצעי הדגימה" ÷ "כמה לא בטוחים הם אמצעים אלה". t = “how far the two sample means are” ÷ “how uncertain those means are.” אם אתה מכפיל את גודל המדגם שלך, המכנה (חוסר ודאות) מתכווץ; הבדלים טריוויאליים מפסיקים להיראות "חשובים". סיום הערות אני מקווה שיש לך קצת אינטואיציה מאחורי מדוע זה לא ברור לשפוט את השינויים באסטרטגיית המסחר שלך על ידי הסתכלות רק על ההבדל PnL, אילו כלים סטטיסטיים ניתן להשתמש כדי להפוך את תהליך המחקר חזק יותר, ואולי קצת בהירות על מה עומד מאחורי כל המונחים האלה המשמשים בדיקות ההיפותזה הסטטיסטית וכיצד למעשה להסיק אותם מבלי לעקוב עיוור בעקבות הוראות הספרים. קבוצות מחקר רבות כי הם טועים מזל לשיפור. הם מסתובבים באמצעות תיקונים המונעים על ידי לוח התקנים עד שהגרף נראה טוב, משלוח אותו, ולאחר מכן לבלות חודשים לפרוק את הנזק. אתה לא צריך סטטיסטיקה כבדה כדי לעשות טוב יותר. אתה רק צריך להגדיר את ההשערה, לבחור יחידה הגיונית של ניתוח, להשתמש במבחן המדידת אות ביחס לחוסר ודאות, לכבד חוקים רבים של בדיקה וחיסכון ולהחליט בהתבסס על שני סטטיסטיקות צוותים בונים מסגרות מורכבות יותר שמתאימות למטרה שלהם, אבל זה מקום טוב להתחיל. fail to iterate ו עשה זאת, ואת מעגל האיטרה שלך הופך רגוע יותר, מהיר יותר, ומורכב. פרסום זה משתמש רק במידע זמין לציבור ומשמש למטרות חינוכיות, לא לייעוץ השקעות.כל הדעות והדעות המוצגות הן שלי ואינן מייצגות את הדעות של אף אחד מהעובדי לשעבר / הנוכחי שלי או כל צד אחר.