ขั้นตอนแรกเรียนรู้การทำนายไทม์ทางการเงินโดยใช้การเรียนรู้ของเครื่อง


12

ฉันพยายามเข้าใจวิธีใช้การเรียนรู้ของเครื่องเพื่อทำนายไทม์ทางการเงิน 1 ขั้นตอนหรือมากกว่าในอนาคต

ฉันมีช่วงเวลาทางการเงินพร้อมข้อมูลเชิงพรรณนาและฉันต้องการจัดทำแบบจำลองจากนั้นใช้แบบจำลองเพื่อทำนายขั้นตอนล่วงหน้า

สิ่งที่ฉันได้ทำไปคือ:

getSymbols("GOOG")

GOOG$sma <- SMA(Cl(GOOG))
GOOG$range <- GOOG$GOOG.High-GOOG$GOOG.Low

tail(GOOG)

           GOOG.Open GOOG.High GOOG.Low GOOG.Close GOOG.Volume GOOG.Adjusted     sma range
2013-05-07    863.01    863.87   850.67     857.23     1959000        857.23 828.214 13.20
2013-05-08    857.00    873.88   852.91     873.63     2468300        873.63 834.232 20.97
2013-05-09    870.84    879.66   868.23     871.48     2200600        871.48 840.470 11.43
2013-05-10    875.31    880.54   872.16     880.23     1897700        880.23 848.351  8.38
2013-05-13    878.89    882.47   873.38     877.53     1448500        877.53 854.198  9.09
2013-05-14    877.50    888.69   877.14     887.10     1579300        887.10 860.451 11.55

จากนั้นฉันติดตั้งโมเดลฟอเรสต์แบบสุ่มกับข้อมูลนี้

fit <- randomForest(GOOG$GOOG.Close ~ GOOG$sma + GOOG$range, GOOG)

ซึ่งดูเหมือนว่าจะพอดีกับที่น่าแปลกใจ:

> fit

Call:
 randomForest(formula = GOOG$GOOG.Close ~ GOOG$sma + GOOG$range,      data = GOOG) 
               Type of random forest: regression
                     Number of trees: 500
No. of variables tried at each split: 1

          Mean of squared residuals: 353.9844
                    % Var explained: 97.28

และพยายามใช้มันเพื่อทำนาย:

predict(fit, GOOG, n.ahead=2)

แต่คำทำนายของนี้ไม่ได้ผล

ฉันพยายามทำนายการปิดฉันควรทำให้ตัวแปรอื่นช้าลงตามขั้นตอนมากที่สุดเท่าที่ฉันต้องการการคาดการณ์ก่อนที่จะปรับโมเดลให้เหมาะสมหรือไม่?

อาจเป็นเรื่องอื่น ๆ อีกมากมายที่ฉันควรคำนึงถึงเช่นกัน แต่สิ่งเหล่านี้เป็นขั้นตอนแรกของฉันที่พยายามเรียนรู้จากเครื่อง

คำตอบ:


16

การสังเกตครั้งแรกของฉันคือคุณไม่ได้หน่วงอินพุตที่สัมพันธ์กับราคาปิดและนั่นคือเหตุผลที่คุณสังเกตเห็นว่าเหมาะสม SMA (ค่าเฉลี่ยเคลื่อนที่อย่างง่าย) ใช้ราคาปิดในการคำนวณและช่วงต่ำที่สูงนั้นจะรวมราคาปิดดังนั้นจึงใช้เพื่อคาดการณ์ราคาปิดที่ทำให้เกิดอคติข้างหน้า ความคิดเห็นของฉันคือถ้าคุณพยายามทำนายราคาปิดสองวันข้างหน้าคุณควรสร้างแบบจำลองของคุณด้วยปัจจัยการผลิตที่ล่าช้าจากราคาปิดอย่างน้อยสองวัน อินพุตบางส่วนอาจล่าช้ากว่าสองวัน แต่ฉันจะเริ่มต้นง่ายและลองใช้เพียงไม่กี่อินพุต

เท่าที่วัตถุประสงค์ของคุณคาดการณ์ราคาปิดฉันคิดว่าราคาปิดมีเสียงดังเกินไปที่จะใช้เป็นตัวแปรเป้าหมายและการใช้มันจะนำไปสู่การเกินกำลังหรือการเพิ่มประสิทธิภาพของวัตถุประสงค์ที่ไม่ถูกต้อง แต่ฉันจะเริ่มต้นด้วยการทำให้ราคาปิดเรียบด้วยค่าเฉลี่ยเคลื่อนที่แล้วคาดการณ์ทิศทางของการเปลี่ยนแปลงราคาในอีกสองวันถัดไป ตัวอย่างเช่นฉันอาจแทนที่การปิดด้วย SMA 5 วันของการปิดและจากนั้นให้รหัสการเปลี่ยนแปลงราคาของ SMA เป็น 1 ถ้ามันเป็นบวกในอีกสองวันถัดไปและ 0 เป็นอย่างอื่น เนื่องจากตัวแปรเอาต์พุตถูกโค้ดเป็น 1 หรือ 0 นี่เป็นปัญหาที่ดีในการลองและแก้ไขด้วยฟังก์ชันฟอเรสต์แบบสุ่มที่คุณใช้ นอกจากนี้คุณยังสามารถลองใช้ algoritms การจำแนกประเภทอื่น ๆ เช่นการถดถอยโลจิสติกเครือข่ายประสาทและ SVM และอาจรวมกันไม่กี่อย่างในชุดเพื่อปรับปรุงประสิทธิภาพของคุณ นี่ยังคงเป็นปัญหาที่ยากที่จะแก้ไขโดยไม่ให้มากเกินไป แต่มันเป็นขั้นตอนในทิศทางที่ถูกต้อง คำเตือนอีกประการคือรุ่นสุดท้ายของคุณอาจมีความแม่นยำอย่างน่าอัศจรรย์ในการจำแนกสองวันถัดไปว่าเป็นบวกหรือลบ แต่ก็ยังเสียเงินเพราะจัดประเภทการเคลื่อนไหวขนาดใหญ่ไม่กี่อย่างไม่ถูกต้อง

ฉันขอแนะนำให้สร้างแบบจำลองของคุณด้วยการรักษาความปลอดภัยมากกว่าหนึ่งแบบเพื่อที่อัลกอริทึมการเรียนรู้ของเครื่องจะไม่ได้ตกอยู่ในความงี่เง่าของหนึ่งหุ้น ฉันจะเริ่มต้นด้วยอย่างน้อย 5 หุ้นที่ไม่ได้มีความสัมพันธ์สูงกับแต่ละคน

การซื้อขายบน Edge โดย Guido Deboeck เป็นจุดเริ่มต้นที่ดีสำหรับการสำรวจแอปพลิเคชันของการเรียนรู้ของเครื่องเพื่อการทำนายอนุกรมเวลา มันเป็นหนังสือเล่มเก่าดังนั้นมันจึงเป็นวิธีที่อยู่เบื้องหลังเทคโนโลยีที่เรามีให้ในวันนี้ แต่เป็นการเริ่มต้นที่ดี ฉันจะแนะนำระบบและวิธีการซื้อขายใหม่โดย Kaufman และระบบการซื้อขายแบบเชี่ยวชาญโดย John Wolberg


โอเคขอบคุณสำหรับคำตอบที่ดีนี้ ตัวอย่างมีมากขึ้นสำหรับฉันที่จะเข้าใจวิธีการตั้งค่าข้อมูลเพื่อสุ่มป่าสามารถใช้งานได้ แต่ตอนนี้ฉันรู้ว่าฉันต้องล่าช้าอินพุตเพื่อให้ทำงานได้ มันจะทำให้มีเหตุผลที่จะมีราคาของ SMA ในตัวอย่างของคุณเป็นตัวแปรเอาท์พุทหรือมันจะต้องเป็น 0 หรือ 1? \ n ขอบคุณสำหรับคำแนะนำหนังสือที่จะทำให้คุ้นเคยกับพวกเขา
นิกเก

คุณสามารถใช้ราคาของ SMA เป็นตัวแปรส่งออกได้อย่างแน่นอน ปัญหานั้นซับซ้อนมากขึ้น แทนที่จะคาดการณ์ทิศทางคุณกำลังพยายามคาดการณ์มูลค่าที่แน่นอน จากประสบการณ์ของฉันนี่เป็นสิ่งที่ยากมากสำหรับอัลกอริทึมของเครื่องจักรที่ทำได้ดีกว่าตัวอย่าง แต่ถ้าคุณเพิ่งทำความคุ้นเคยกับกระบวนการตั้งค่าข้อมูลอนุกรมเวลาสำหรับการคาดการณ์นี่อาจเป็นจุดเริ่มต้นที่ดีโดยเฉพาะอย่างยิ่งถ้าคุณเข้าใจได้ง่ายกว่าการทำนายทิศทาง คุณสามารถลองและทำนายราคาที่ค่าเฉลี่ยเคลื่อนที่สองค่าจะข้าม
CrossValidatedTrading

สวัสดีสร้างคุณลักษณะบางอย่างและสร้างแบบจำลอง: pastie.org/7958695ฉันคิดว่าฉันได้กลไกที่คิดออกแล้ว อย่างไรก็ตามโมเดลนี้โค้งเกินไป คุณเคยทำสิ่งที่คล้ายกันและมีการใช้งานจริงหรือไม่? คงจะเจ๋งกว่าที่จะพูดมากกว่านี้
nikke

ฉันเปิดรับการสนทนาที่มีรายละเอียดมากกว่าเสมอ ข้อมูลติดต่อของฉันอยู่ในโปรไฟล์ของฉัน ยิงอีเมลมาหาฉันหากคุณต้องการ
CrossValidatedTrading

ทำการถดถอยอย่างง่าย ๆ เพื่อคาดการณ์ผลตอบแทนที่ควรใช้งานได้หรือไม่เปรียบเทียบกับการทำนายราคา - ราคา นอกจากนี้การคาดการณ์ผลตอบแทนจะต้องคาดการณ์ผลตอบแทนที่มากพอที่จะเอาชนะสเปรด & คอมมิชชัน ฯลฯ มันยอดเยี่ยมที่จะพูดคุยเพิ่มเติมไม่พบอีเมลของคุณในโปรไฟล์ของคุณ ของฉันอยู่ในขนมอบที่ฉันโพสต์ในความคิดเห็นก่อนหน้า
nikke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.