• התכנים בפורום אינם מהווים ייעוץ מקצועי מכל סוג, לרבות ייעוץ השקעות המתחשב בצרכיו המיוחדים של כל אדם.
    השימוש בפורום כפוף לתנאי השימוש. עצם השימוש בפורום מהווה הסכמה מלאה לתנאים אלה.

Retrolyzer + BQL

  • פותח הנושא פותח הנושא adamshalev
  • פורסם בתאריך פורסם בתאריך
@avshi
יש שתי דרישות עיקריות לצורך ניתוח אסטרטגיות כאלו:
1. מקור מידע אמין, רחב, עם היסטוריה ארוכה וללא survivorship bias. מקורות כאלו בחינם כמעט ואין. החדשות הטובות הן שהמידע הזה נגיש בצורה מאד נוחה דרך Quandl אבל הוא בתשלום. אין בעיה להוסיף תמיכה ברטרולייזר כך שמי שיש לו מנוי בתשלום של quandl יוכל לתשאל את המקורות הללו עם רטרולייזר, אבל לי אין מנוי כזה ולא מתכוון לשלם על אחד בקרוב (מאות דולרים בחודש).
2. תמיכה בסינון מניות לפי קריטריונים. זה עדיין לא קיים אבל ב-TODO list אי שם בסוף.
 
אשמח אם תסביר מה עשית,
מה תפקיד הפונקציות addMonths, takeN, skip?
השדה CAGR כנראה מקבל בכל שורה את הפלט של הקוד בשורה הרביעית data / first(data) זה מבטא תשואה שנתית או משהו אחר?
ומה זה 0..135, הבנתי שזה לולאה אבל מה התחביר הזה?
 
@מתכנת
skip - מחזירה סדרה שלא כוללת את n האיברים הראשונים.
take - לוקחת את n האיברים הראשונים.
addMonths - עושה הסטה של כל התאריכים בסדרה n חודשים קדימה (או אחורה אם שלילי).
החלוקה של התוצאה בערך הראשון של התוצאה פשוט מנרמלת את כל הסדרות להתחיל מ-1.
0..135 זאת איטרציה של לולאה. לזה דווקא יש הסבר בדוגמאות. זה סינטקס קומפקטי יותר. כל השורה רצה בלולאה, והטווח כולו מוחלף במשתנה האיטרציה.

*שים לב שלפונק' קוראים takeN כי כבר יש פונק' שנקראית take שעושה משהו אחר למדי וצריך לקרוא לה בשם אחר, כי skip / take זה שמות מקובלים שעושים את מה שתיארתי.
 
שפה פונקציונאלית :
אתה מתכוון דקלרטיבית (כמו SQL) ?
skip - מחזירה סדרה שלא כוללת את n האיברים הראשונים.
take - לוקחת את n האיברים הראשונים...
כי skip / take זה שמות מקובלים שעושים את מה שתיארתי.
כן, כמו למשל (או בהשראת) MS.NET LINQ... שברתי את הראש להבין למה לעזעזל ה-N ואיזה סוד הוא טומן בחובו . . .

טוב, הבלבול שלי נבע ממחשבה שהמידע מייצג מחיר יומי, לא הבנתי מה הקטע של ה-*12 והיה נראה כאילו פספסת eom...., הרצתי את המדד בלי מניפולציות ואז ראיתי שהמידע מייצג מחיר חודשי.
addMonths - עושה הסטה של כל התאריכים בסדרה n חודשים קדימה (או אחורה אם שלילי).
תכלס אתה מריץ הרבה תיקים יחד, על ציר הזמן מופיעות השנים הראשונות בסדרה 1870-1910, זה ממש מגניב הטריק הזה שמאפשר להתוצאות "לעלות" אחת על השניה כביכול באותה תקופה, אכן תצוגה אידאלית במטרה להציג גרפים אחד על השני..
מעניין איך נראה הניתוח כשמשקיעים 50٪ מניות 50٪ אגח (ממשלתי)
@adamshalev
נסיתי את זה, אני תוהה אם זה באג במערכת או באג שלי ;)

בקצב הזה, מה תעשה כאשר השאילתות יחצו את מקסימום האורך האפשרי ל-URL :) ? תעביר את השאילתה לאחר ה-#
 
נערך לאחרונה ב:
בקצב הזה, מה תעשה כאשר השאילתות יחצו את מקסימום האורך האפשרי ל-URL :) ? תעביר את השאילתה לאחר ה-#
חצה מזמן מזמן. הסרתי כל מגבלה שיכולתי ברמת השרת. עד כה לא נתקלתי בשאילתה שנפלה על אורך ה URL.

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

השרת כתוב ב C# אז חלק מההשראה אכן מגיע מlinq.
 
חצה מזמן מזמן.
עד כמה שזכור לי המגבלה היא 2000 תווים, הרף הזה נחצה?
סתם סקרנות מה המוטיבציה שזה יהיה פרמטר, אם למטרת תיעוד הרי את השאילתה עצמה אתה מקבל ל-end point שאחראי על החישוב, ובלי קשר אתה מעדכן את הכתובת תכנותית בלקוח בלי לשלוח לשרת את ה-URL המלא.
לא מכיר מקור נתונים למחירי אגח כל כך רחוק אחורה.
מה הכי רחוק שיש?
 
עד כמה שזכור לי המגבלה היא 2000 תווים, הרף הזה נחצה?
בבקשה, 10,000 ועוד קצת עודף. הכל קונפיגורבילי ברמת השרת.
עריכה: קבל תיקון. השרת שלי אוכל 10,000 בלי בעיה (מוזמן לנסות) אבל האתר עצמו (ה-HTML) עובר דרך CloudFlare עם קצת caching ונראה שהשרת caching שלהם מתעצבן על URL כזה ארוך (Varnish cache server). שוב, זאת מגבלה שבחרו לאכוף בשרת שלהם, זה לא חסם הכרחי. אחד הדברים שאני מתכנן זה URL-ים קצרים, אבל זה יהפוך את השרת להיות statefull ואם ה-state יאבד כל הקישורים ישברו. אני לא אוהב את זה. כיום הוא stateless.
סתם סקרנות מה המוטיבציה שזה יהיה פרמטר, אם למטרת תיעוד הרי את השאילתה עצמה אתה מקבל ל-end point שאחראי על החישוב, ובלי קשר אתה מעדכן את הכתובת תכנותית בלקוח בלי לשלוח לשרת את ה-URL המלא.
אני עושה את זה כדי שה-URL יתעדכן בלחיצה על Go (כדי שאפשר יהיה להעתיק אותו) מבלי לבצע refresh מלא לדף.

מה הכי רחוק שיש?
יש את VFITX, אבל זה לא קרוב אפילו למידע של סנופי. אני בטוח שיש את המידע, לא טרחתי לחפור מספיק בשביל למצוא אותו. המידע על התשואות קיים והוא חשוב יותר.
 
אני עושה את זה כדי שה-URL יתעדכן בלחיצה על Go (כדי שאפשר יהיה להעתיק אותו) מבלי לבצע refresh מלא לדף.
את זה הבנתי וזה נהדר, שאלתי האם יש סיבה מיוחדת למה זה פרמטר אחרי ה-? ולא אחרי ה-# ? (מה שיחסוך את הקריאה הארוכה לשרת)
מבחינת הקריאה וכתיבה ב-JS זה פשוט באותה מידה..
 
אבל הקריאה חייבת לצאת לשרת.
אבל היא יוצאת ב POST לכתובת https://webapplication26631.azurewebsites.net/api/Test/execute
אני שואל למה צריך לפנות לדף עצמו כך https://retrolyzer.com/?input=SPY
ולא כך: https://retrolyzer.com/#input=SPY
הרי את ה URL אתה מעדכן ידנית בקליינט לצורך שימושיות בלבד, זה לא באמת תשובה שחוזרת מהכתובת https://retrolyzer.com/?input=SPY אלא AJAX לכתובת אחרת..
אחד הדברים שאני מתכנן זה URL-ים קצרים, אבל זה יהפוך את השרת להיות statefull ואם ה-state יאבד כל הקישורים ישברו. אני לא אוהב את זה. כיום הוא stateless.
עדיף stateless.
 
הרי את ה URL אתה מעדכן ידנית בקליינט לצורך שימושיות בלבד, זה לא באמת תשובה שחוזרת מהכתובת https://retrolyzer.com/?input=SPY אלא AJAX לכתובת אחרת..
מה ההבדל אם זה יהיה עם query arg או hash? בכל מקרה זה שומר את כל השאילתה ב-URL.

עדיף stateless.
שמת לב לזה?
 
שמת לב לזה?
כן, לכן כתבתי שעדיף stateless, הלינק שרשמת יישבר לאחר שה-state יימחק, לא?!
מה ההבדל אם זה יהיה עם query arg או hash? בכל מקרה זה שומר את כל השאילתה ב-URL.
נכון,
ההבדל הוא האם השאילתה תישלח לשרת רק ב- AJAX או גם ב- URL
אם תעביר את הפרמטר לאחר ה- hash השרת לא יקבל אותו בבקשת ה-GET של הדף הסטטי, רק ב- AJAX של המנוע חישוב, שגם ככה מתבצע כיום.
אל מה שנמצא ב-hash משמש את הדפדפן בלבד, לא עובר אפילו ב- referrer header.
זה קלאסי להעתקת לינקים stateless ומצמצם תעבורה באופן דרסטי, גם הגודל של הבקשות ל- webapplication26631.azurewebsites.net יקטן בגלל ה-referrer header שיכיל פחות טקסט.

שוב, אהבתי את הגישה שלך לגבי ה-stateless וגם לעשות הכל ברקע ורק לעדכן את ה-URL בשביל העתקה נוחה, מה שהצעתי להעביר את הפרמטר ל-hash כדי לייעל בלבד. חוץ מזה הכל יעבוד אותו דבר.
 
@מתכנת הבנתי. רעיון טוב.

בכל אופן אני רוצה שיהיו לינקים קצרים, הלינקים הארוכים הם בעיתיים לא רק במובן של פרוטוקול HTTP אלא גם ברמה השימושית של לשלוח אותם ולשמור אותם לשימוש עתידי.
התמיכה בלינקים הקצרים מתבססת על managed redis db עם רפליקציה, ולא ע"ב ה-state של השרת, כך שהסיכוי לאובדן הקישורים נמוך מאד. בהמשך אוסיף גיבוי למקום בלתי תלוי.
הוספתי גם לינק עם הקישור המלא בתחתית הדף ככה שתמיד אפשר לשמור את הקישור ה-stateless אם רוצים.
 
אתה מדבר על זה מן הסתם redis.io
ראיתי שהרצה חוזרת של מנגון למניעת כפילויות, כלומר ה-KEY יישאר זהה את אותה שאילתה תרוץ שוב.
זה מימוש מובנה ב-redis ?
הוספתי גם לינק עם הקישור המלא בתחתית הדף ככה שתמיד אפשר לשמור את הקישור ה-stateless אם רוצים.
+1
 
אתה מדבר על זה מן הסתם redis.io
כן, רק שאני משתמש בשירות ה-Hosted של redislabs.com
ראיתי שהרצה חוזרת של מנגון למניעת כפילויות, כלומר ה-KEY יישאר זהה את אותה שאילתה תרוץ שוב.
זה מימוש מובנה ב-redis ?
לא זה מימוש שאני הוספתי, עקביות נראה לי דבר טוב.
 
@מתכנת
חייב לציין שזאת פעם ראשונה שהשתמשתי בredis, ואהבתי מאד מאד. שורה אחת לזרוק ערך, שורה אחת לשלוף ערך, ושורות בודדות לאתחול החיבור ל-DB.
כל השאר, hosted/managed.
 

פתחו חשבון למסחר עצמאי

פסגות טרייד

ישראל: 0.06% מעסקה (מינימום ₪2 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה)
דמי ניהול: ללא דמי ניהול
מינימום: ₪10,000
פתיחת חשבון

מיטב טרייד

ישראל: 0.08% מעסקה (מינימום ₪4.65 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה או $5 ב-IBKR)
דמי ניהול: פטור לשנתיים, אח״כ ₪15
מינימום: ₪5,000
פתיחת חשבון

אקסלנס טרייד

ישראל: 0.07% מעסקה (מינימום ₪3 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה או $5 ב-IBKR)
דמי ניהול: פטור לשלוש שנים, אח״כ ₪15
מינימום: ₪10,000
פתיחת חשבון
פסגות טרייד
מינימום לפתיחת חשבון: ₪10,000
⌄
ישראל: 0.06% מעסקה (מינימום ₪2 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה)
דמי ניהול: ללא דמי ניהול
פתיחת חשבון
מיטב טרייד
מינימום לפתיחת חשבון: ₪5,000
⌄
ישראל: 0.08% מעסקה (מינימום ₪4.65 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה או $5 ב-IBKR)
דמי ניהול: פטור לשנתיים, אח״כ ₪15
פתיחת חשבון
אקסלנס טרייד
מינימום לפתיחת חשבון: ₪10,000
⌄
ישראל: 0.07% מעסקה (מינימום ₪3 לפעולה)
ארה"ב: 1¢ למניה (מינימום $6 לפעולה או $5 ב-IBKR)
דמי ניהול: פטור לשלוש שנים, אח״כ ₪15
פתיחת חשבון
גילוי נאות: האתר מקבל תגמול בגין פתיחת חשבון דרך הקישורים. אין באמור משום ייעוץ השקעות או שיווק השקעות.
אתה מתכוון דקלרטיבית (כמו SQL) ?
לא. אני מתכוון לפונקציונלית כמו:
F#
Scala
Clujure
Erlang
Haskell
אתה יודע שפות של מתכנתים אמיתיים :lol:
מכיוון שאתה מכיר C# אני ממליץ בחום על F# , שהיא שפת תכנות הרבה יותר טובה, וכיפית, הייתי מתחיל מהאתר הזה, ומהספר הזה שאגב יש לי איפשהו בPDF
אגב, הספר מעניין גם מעבר... למדתי ממנו הרבה דברים שרלוונטיים לC#...
 
נושאים דומים
פותח הנושא כותרת פורום תגובות תאריך
adamshalev Backtesting עם Retrolyzer שוק ההון 38

נושאים דומים

Back
למעלה