การทดสอบระบบกลยุทธ์เทรดย้อนหลัง (Backtesting) ใน Python: การพิจารณา และ Open Source Framework

ในบทความนี้ Frank Smetana  หนึ่งในผู้เชี่ยวชาญจะมาอธิบายถึงการใช้งาน Python เป็น Open Source ในการทดสอบ Backtesting บนซอฟต์แวร์ และ ให้คำแนะนำบนกระบวนการที่จะให้คุณนำไปใช้อย่างเหมาะสม

การ Backtest จัดว่าเป็นเนื้อหาที่สำคัญที่สุดของ กระบวนการทดสอบระบบกลยุทธ์ย้อนหลัง (STS) อยู่ระหว่าง การพัฒนากลยุทธ์ และการนำไปใช้เทรดจริง ( Live Trade)  หากกลยุทธ์มีความบกพร่อง การ Backtest อย่างจริงจังจะช่วยปกป้องไม่ให้เรานำไปปฏิบัติใช้จริง

มีตัวเลขหนึ่งที่ถูกนำมาทับซ้อนกับการ Backtest รวมถึงการเทรดจำลอง และการเทรดจริง การ Backtest จะนำข้อมูลสถิติเชิงมาหาจำนวนประสิทธิภาพ STS การเทรดจำลอง จะนำขั้นตอนของการ Backtest มาแสดงผลในแต่ละแท่งราคาจับสัญญานการเทรด การจำลอง/การเทรดจริง ถูกนำมาใช้ทดสอบ STS แบบ Real time: สัญญาณการเทรด , การส่งคำสั่ง , เส้นทางคำสั่งไปยังโบรกเกอร์ และดูแลสถานะของคำสั่งที่ถูกรันอยู่

Framework ส่วนใหญ่ เป็นมากกว่า การ Backtest รวมถึงความสามารในการ Live Trade จึงค่อนข้างสะดวกถ้าเราต้องการนำ Backtest framework ไปใช้งานกับโบรกเกอร์ที่เราชอบ และข้อมูลที่เราจะใช้ Quantopian/Zipline ได้ล้ำหน้าไปแล้ว มีกระบวนการพัฒนาเชื่อมโยง , ทดสอบย้อนหลัง และนำไปโซลูชันไปใช้งาน

ในคอมมูนิตี้ ของ Python ถูกเตรียมไว้อย่างดี , อย่างน้อยกว่า 6 Opensource Backtesting Framework ราย พร้อมให้ใช้งาน แม้ว่าพวกเขาจะมีขั้นตอนการพัฒนา และเอกสารที่ต่างกัน เราอาจจะสนุกกับการทำงานบน Opensource Backtest Framework ที่ถูกเตรียมเอาไว้แล้ว เช็คเอาท์ได้จาก Github repo ของพวกเขา

พึงละลึกถึง การกำหนดความต้องการที่ชัดเจนใน STS ของเรา ก่อนที่จะประเมินการทดสอบ Backtest Framework

อะไรเป็นข้อมูลสำคัญสำหรับการเทรดของเรา?  ในขณะที่ Framework ส่วนใหญ่ รองรับข้อมูลตราสารทุนในสหรัฐ ผ่าน YahooFinance , ถ้ากลยุทธ์ในอนุพันธ์ , ETFs หรือ EM Securities นั้น Data ต้องถูกนำมาใช้ Import หรือ ถูกเอามาใช้ใน Framework  Asset Class ครอบคลุมเหนือยิ่งกว่าข้อมูล มีคำถามว่า Framework สามารถจัดการกับผลิตภัณฑ์ที่มีวันหมดเวลา​ Future & Option และจัดการ Roll-over ข้ามซีรีย์ได้อย่างอัตโนมัติหรือไม่? อะไรคือการไหลของตลาด , จะตั้งสมมติฐานตามความเป็นจริงในการส่งคำสั่งจำนวนมากได้อย่างไร?

อะไรเป็นข้อมูลความถี่และรายละเอียดของเราในการสร้าง STS? ในระบบเทรดต้องการทุก Tick , Bid/Ask ซึ่งมีความแตกต่างอย่างมากกับประเด็นการจัดการข้อมูลที่มีระยะห่างมากกว่า 5 นาที หรือระดับชั่วโมง. กองทุนป้องกันความเสี่ยง & HFT Shop ลงทุนในการสร้าง Backtest Framework ที่มีความแข็งแรง ขยับขยายได้ เพื่อที่จัดการกับชุดข้อมูล และความถี่ บางแพล็ตฟอร์มมี ชุดข้อมูลที่สมบูรณ์ครบถ้วนสำหรับสินทรัพย์ต่างๆ อาทิเช่น S&P Stock, ในระดับหนึ่งนาที

อะไรคือแบบการส่งคำสั่ง ( Order Type) ที่ STS ของเราต้องนำมาใช้?  ขั้นต่ำ คือ Limit , Stop และ OCO ควรจะถูกรองรับ โดย Framework

(ผู้แปล: OCO order เป็นออร์เดอร์ที่รวม limit and / or stop-loss order ไว้ด้วยกัน)

ระดับของการซัพพอร์ต และเอกสาร เป็นสิ่งจำเป็น ในตอนต้นนี้ Framework ยังมีเอกสารที่น้อย และในคอมมูนิตี้ก็ยังมีการซัพพอร์ตน้อยกว่าคอมมูนิตี้อื่นๆ

องค์ประกอบของการ Backtest Framework

ข้อมูล และ STS ที่มีอยู่:  องค์ประกอบที่ได้รับมานั้น ต้องใช้ STS Script/Definition File และให้ข้อมูลที่จำเป็นสำหรับทดสอบ ถ้า Framework ต้องใช้ STS ใดๆ เพื่อที่จะบันทึกผลหลังจากทดสอบ ตัวของ Framework นั้นควรจะรองรับ Canned Function ซึ่งเป็นเทคนิคอลอินดิเคเตอร์ที่นิยมสูงสุด เพื่อให้การทดสอบ STS รวดเร็ว ผู้ใช้กำหนดระยะเวลา Historical period เพื่อที่จะ Backtest บน Framework ที่อยู่ หรืออะไรก็ตามที่ถูก Import เข้ามาได้

การทดสอบประสิทธิภาพ ปรับใช้ให้เข้ากับตรรกะ STS โดยต้องการ Historic Data และคำนวณกรอบช่วงของความเสี่ยง และ Performance Metric รวมถึง Max drawdown , Sharpe & Sortino ratios โดยส่วนมากแล้ว Framework ทุกอันจะรองรับจำนวนความสามารถมองเห็นอย่างเหมาะสม รวมถึง equity curves และ deciled-statistics

การ Optimization มีแนวโน้มที่จะต้องใช้ทรัพยากรการคำนวณร่วมกันในกระบวนการ STS ถ้าหากเราจำเป็นต้องเพิ่มประสิทธิภาพใน STS ของเราแล้ว ขอให้โฟกัสกับ Framework ที่รองรับการขยาย การกระจาย และ ประมวลผลแบบ Parallel ได้

ในบริบทของการพัฒนากลยุทธ์เพื่อพัฒนาเทคนิคอลอินดิเคเตอร์ นักพัฒนาระบบต้องพยายามหาให้ได้ว่า Optimal Set ของ Parameter ในแต่ละอินดิเคเตอร์  มาปรับให้เหมาะสมที่สุด เราอาจพบว่า เส้นค่าเฉลี่ย Moving Average 6 และ 10 วัน ตัดกันนั้น ให้ผลลัพธ์เชิงทดสอบสถิตที่ดีกว่าค่าเฉลี่ย อื่นๆ ตัดกัน ระหว่างค่า 1-20 ตามตัวอย่างดังกล่าว 20 คูณ​ 20 = 400 Parameter ทุกค่าจะถูกคำนวณทั้งหมด และถูกนำมาจัดอันดับ

ใน Portfolio Context, การ Optimization ค้นหา เพื่อที่จะเจอว่าควรจะให้น้ำหนักสินทรัพย์ใดใน Portfolio รวมถึงการ Short และเลือกตราสารที่มี Leverage บนช่วงที่กำหนด , Portfolio ถูกปรับให้สมดุล ผลลัพธ์ของการซื้อ และการขายใน Portfolio ที่ถืออยู่ ถูกปรับให้สอดคล้องกับการให้น้ำหนักตามที่ Optimize

ขนาดของออเดอร์ที่ถือครอง เป็นการเพิ่มเติมจากการใช้ Optimization , ช่วยให้นักพัฒนาจำลอง และวิเคราะห์ผลกระทบของ Leverage , Dynamic Position sizing ใน STS และประสิทธิภาพใน Portfolio

6 Backtest Framework สำหรับ Python

ความสามารถมาตรฐานของ แพลต์ฟอร์ม Open source Python backtesting ครอบคลุมถึง

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

PyAlgoTrade

PyAlgoTrade มีการเติบโต , เอกสารสมบูรณ์ Backtest Framework พร้อมด้วย Paper และความสามารถ Live Trade มี Data Support สมบูรณ์จากทั้ง Yahoo! Finance , Google Finance , NinjaTrader และ CSV หลากหลายรูปแบบจาก Based time series เช่นเดียวกับ Quandl รองรับ Order แบบต่างๆ รวมถึง Market , Limit , Stop และ StopLimit

PyAlgoTrade รองรับการเทรด Bitcoin ผ่าน Bitstamp และข้อมูล Real time Twitter event handling

Project Page: github.

Amibroker AFL: สอนขั้นตอนแบบ Step By Step ตอนที่ 1

Amibroker ถูกพิจารณาว่าเป็นหนึ่งในเครื่องมือที่ดีที่สุดสำหรับเทรดเดอร์ เป็นที่รู้จักอย่างกว้างขวางในโลก และสำหรับทุกสาย ไม่ว่าจะเป็นสาย Discretionary และ System Traders โดยเครื่องมือมาพร้อมด้วยเครื่องมือที่จัดว่า มีพลังในการ Backtest และ สามารถ Optimization engine แยกออกจากฟังก์ชันของชาร์ตที่ใช้ปกติ มีส่วนของเขียน Custom Indicator เอง และสร้าง Automate Trading system อย่างสมบูรณ์ ออกจาก Amibroker

ในการสร้างระบบเทรดผ่าน Amibroker  เราต้องมีความคุ้นเคยกับภาษาของ Amibroker เราเรียกว่า Amibroker  AFL โดยเป็นโปรแกรมมิงขั้นสูง และง่ายมากๆที่เราจะทำความเข้าใจ และเริ่มเขียนพื้นฐานต่างๆ ไม่ว่าจะเป็ใครก็ตามที่ไม่มีความรู้ทางด้านโปรแกรมเลยสามารถเลย ก็สามารถเรียน AFL และไม่จำเป็นต้องเสียค่าใช้จ่ายราคาแพงเพื่อซื้อ AFL ที่ถูกพัฒนามาแล้ว

ในโพสต์นี้ เราจะมาลองเรียนรู้ Amibroker  AFL แบบว่าไม่รู้อะไรเกี่ยวกับมันมาก่อนเลย ด้วยตัวอย่าง และ Code ที่สามารถดาวน์โหลดได้ เรารู้ว่าคุณเตรียมลงโปรแกรมเรียบร้อย และสามารถไปดึง Data จาก Live หรือ Historical Data Feed ได้แล้ว รวมถึงมีความรู้พื้นฐานของเทคนิคอลวิเคราะห์หุ้นมาพอสมควรแล้ว และ ทราบถึงการส่งคำสั่งซื้อขาย เพราะเป็น Pre-requisite สำหรับการเขียน Amibroker Coding

ใน Code นี้ มีคำอธิบาย และสามารถนำไป Copy &Pasted ได้เลย จึงค่อนข้างตรงไปตรงมา และจะเพิ่มความซับซ้อนขึ้นเรื่อยๆในขั้นตอน โดยสามารถ Comment หากมีข้อสงสัยได้ในแต่ละจุด

My First Amibroker AFL: Plotting a line chart

//------------------------------------------------------

//  Formula Name:    Basic Line Chart

//  Author/Uploader: Trading Tuitions

//  E-mail: [email protected]

การสับเปลี่ยนระหว่าง Design Thinking, Lean Startup และ Agile

Shifting gears between design thinking, lean startup, and agile
การสับเปลี่ยนระหว่าง Design Thinking, Lean Startup และ Agile
แม้คำว่า “นวัตกรรม” จะฟังดูน่าตื่นเต้นเร้าใจ แต่งานหลักของเหล่าที่ปรึกษาให้กับผู้สร้างนวัตกรรม คือการลดความเสี่ยงในกระบวนการสร้างนวัตกรรม เพื่อให้สามารถดำเนินธุรกิจได้ อย่างมีประสิทธิภาพ ความเสี่ยงจำเป็นต้องถูกลดให้ต่ำมากที่สุดเท่าที่เป็นไปได้

(more…)

ภาษาอังกฤษสำหรับคนทำงานด้าน IT ตอนที่ 1 : Introducing Yourself

ภาษาอังกฤษสำหรับคนทำงานด้าน IT ตอนที่ 1 : Introducing Yourself
 

แม้ชื่อหัวข้อจะเป็น “ภาษาอังกฤษสำหรับคนทำงานด้าน IT” แต่เนื้อหาในตอนนี้ก็สามารถนำไปใช้ได้กับทุกสายงาน เพราะไม่ว่าจะเป็นที่ไหน การแนะนำตัวให้เป็นก็ถือเป็นสิ่งสำคัญ

 
มาเริ่มกันที่ Personal Information and Background
Personal Information and Background คือข้อมูลส่วนตัวและความเป็นมาของเราค่ะ ตัวอย่างเช่น
Hello, my name is Jim Thomson and now I work as a software developer at Google.

ภาษาโปรแกรมมิ่งที่ดีที่สุดสำหรับงานวิเคราะห์ด้านสถิติเพื่อการลงทุน

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

MATLAB :

สำหรับการแก้ปัญหาเชิงตัวเลขและสถิติ MATLAB สามารถทำได้อย่างยอดเยี่ยม MATLAB เป็นภาษาที่มีกระบวนทัศน์หลากหลาย และเป็นภาษาการเขียนโปรแกรมรุ่นที่สี่ ภาษานี้มีสภาพแวดล้อมการคำนวณเชิงตัวเลข มีไว้สำหรับการแก้ปัญหาทางคณิตศาสตร์และปัญหาเชิงปริมาณ ตัวเลข และสถิติ การใช้ MATLAB เขียนโปรแกรมจะทำให้สามารถรวม desktop environment เพื่อใช้สำหรับการวิเคราะห์ซ้ำและออกแบบกระบวนการที่แตกต่างได้ ซึ่งจะแทนด้วย matrix และ array ทางคณิตศาสตร์ ในภาษา MATLAB คุณสามารถทำการดำเนินการทางเมตริกซ์ได้ สามารถสร้างฟังก์ชันและสร้างเป็นกราฟได้ สามารถสร้างอัลกอริทึมต่างๆ และยังสามารถเชื่อมต่อกับโปรแกรมต่างๆที่เขียนในภาษาอื่น ๆ เช่น C, C ++ และ Python ได้อีกด้วย วิศวกรและนักวิทยาศาสตร์ใช้ MATLAB ในด้านต่าง ๆ เช่นการประมวลผลภาพและสัญญาณระบบการควบคุมสำหรับอุตสาหกรรมการสื่อสารและการคำนวณทางการเงิน

Python :

ภาษา Python เป็นภาษาระดับสูงที่ใช้กันอย่างแพร่หลาย เนื่องจาก Python เป็นภาษาที่มีความยืดหยุ่นสูงทำให้ง่ายต่อการอ่านและไวยากรณ์ของภาษายังช่วยให้โปรแกรมเมอร์สามารถเขียนโค้ดได้ง่ายขึ้นอีกด้วย ในความเป็นจริงแล้ว Python ยังไม่สามารถแก้ปัญหาด้านการวิเคราะห์เชิงตัวเลขและสถิติได้อย่างสมบูรณ์แบบ แต่เมื่อพูดถึงการเขียนโปรแกรมทั่วไปแล้ว ภาษา Python มีบทบาทที่ดีเยี่ยม ภาษา Python มีไลบรารี่สนับสนุนด้านการวิเคราะห์เชิงตัวเลขและสถิติที่ยอดเยี่ยม เช่น numpy, scipy, scikit-learn นอกจากนี้ยังสนับสนุนวิธีการเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมในรูปแบบ imperative programming การเขียนโปรแกรมในรูปแบบ functional programming รวมถึงการเขียนโปรแกรมในรูปแบบ procedural อีกด้วย Python เป็นภาษาที่มีการจัดการหน่วยความจำโดยอัตโนมัติและมีรูปแบบภาษาในเชิงพลวัต คุณสามารถจ้างฟรีแลนซ์ที่มีความรู้และประสบการณ์ในการเขียนโปรแกรมภาษา Python ได้อย่างง่ายดาย

Haskell :

Haskell เป็นภาษาโปรแกรมที่ใช้งานง่ายและใช้สำหรับวัตถุประสงค์ทั่วไป มีความไม่ตายตัวและคงทนต่อความเสียหายได้ดี ภาษา Haskell ไม่สามารถใช้ร่วมกับภาษาโปรแกรมอื่นเช่น C และ C ++ ได้ แต่ภาษานี้ก็สามารถแก้ปัญหารูปแบบเดียวกันได้เช่นเดียวกับภาษาอื่นๆด้วยการเขียนแค่ไม่กี่บรรทัด ภาษา Haskell มีการเขียนที่มีรูปแบบไวยากรณ์ที่ใช้งานง่ายและการเขียนโปรแกรมนั้นยากต่อการพบเจอบัคและปัญหาต่างๆ นอกจากนี้ภาษา Haskell นั้นมีไลบรารี่จำนวนมาก โปรแกรมเมอร์จึงมีความสะดวกที่จะใช้ภาษานี้พัฒนาแอพพลิเคชั่นและแก้ปัญหาเชิงตัวเลขและสถิติ ข้อดีที่โดดเด่นของภาษา Haskell คือภาษานี้มีการทำงานที่มีประสิทธิภาพสูงและง่ายต่อการเข้าใจ ซึ่งมีส่วนช่วยอย่างมากในการสร้างแบบจำลองปัญหาทางคณิตศาสตร์ และภาษา Haskell ก็เป็นภาษาที่ดีที่สุดที่ใช้จัดการปัญหาและงานวิจัยประเภทต่างๆในด้านทฤษฎีทางภาษาโปรแกรมมิ่งอีกด้วย

Julia :

Julia เป็นภาษาที่มีความเป็นพลวัตสำหรับการคำนวณทางเทคนิค โดยภาษา Julia เป็นภาษาการเขียนโปรแกรมระดับสูงที่มีประสิทธิภาพมาก นับว่าเป็นภาษาที่เหมาะกับการคำนวณเชิงตัวเลขและการแก้ปัญหาทางวิทยาศาสตร์ ภาษานี้มีคอมไพเลอร์ที่ซับซ้อน มีการคำนวณเชิงตัวเลขที่แม่นยำ มีไลบรารี่ที่เข้าถึงง่ายและหลากหลาย อีกทั้งยังมีไลบรารีทางคณิตศาสตร์ที่มีประโยชน์ต่อการใช้งาน ภาษานี้มี multiple dispatch ซึ่งสามารถกำหนดลักษณะการทำงานของฟังก์ชันได้ในหลายรูปแบบอาร์กิวเมนต์ ภาษา Julia เป็นภาษาที่ทำงานด้านการคำนวณตัวเลขขั้นสูงที่มีความคล้ายคลึงกับภาษาโปรแกรมมิ่งอื่นๆ เช่น R, MATLAB และ Python ไลบรารี่มาตรฐานของภาษา Julia มีการดำเนินการทางตัวเลขขั้นพื้นฐานต่างๆ เช่น การคำนวณเลขจำนวนเต็มทั่วไป โปรแกรมเมอร์ในแวดวงภาษา Julia นั้นได้สร้างโปรแกรม notebook สำหรับเขียนภาษานี้ซึ่งทำงานบนเบราว์เซอร์ไว้อีกด้วย

Prolog :

Prolog เป็นภาษาการเขียนโปรแกรมที่อิงกับตรรกะเป็นหลัก ภาษานี้เป็นภาษาที่ใช้กันอย่างแพร่หลายในด้านปัญญาประดิษฐ์และภาษาศาสตร์คอมพิวเตอร์ Prolog เป็นภาษาที่คนส่วนมากนิยมใช้สำหรับแก้สูตรตรรกศาสตร์ หลักของโปรแกรมภาษา Prolog นั้นคือการเขียนโปรแกรมเกี่ยวกับความสัมพันธ์ที่แสดงถึงค่าความจริงและเงื่อนไขต่างๆทางด้านตรรกศาสตร์ ภาษา Prolog สามารถอธิบายถึงสิ่งที่ซับซ้อนได้ในไม่กี่บรรทัด หากคุณมีไอเดียที่ดีในการเขียนโปรแกรมและต้องการเติมเต็มไอเดียนั้น ภาษา Prolog เป็นทางเลือกที่ดีให้คุณได้  และภาษานี้ยังเป็นทางเลือกที่ดีสำหรับการเขียนโปรแกรมที่ต้องการความรวดเร็วในการเขียนอีกด้วย ภาษา prolog สามารถดึงเอาเงื่อนไขหรือข้อมูลจาก database มาพัฒนาต่อหรือลดทอนได้ หากใช้ภาษา Prolog ได้ คุณจะสามารถหางานฟรีแลนซ์ออนไลน์ได้อย่างง่ายดาย

ภาษา R :

R เป็นภาษาสคริปต์แบบโอเพนซอร์สสำหรับการแนะเสนอภาพข้อมูล (data visualization) ภาษา R เป็นภาษาโปรแกรมมิ่งที่ใช้สำหรับการคำนวณทางสถิติ การวิเคราะห์ข้อมูล และการวิจัยทางวิทยาศาสตร์เป็นส่วนใหญ่ ภาษา R มีอินเตอร์เฟซที่ใช้งานง่ายและมีไวยากรณ์ที่เข้าใจได้ไม่ยาก ภาษานี้เป็นภาษาที่ได้รับความนิยมมากที่สุด สำหรับนักทำเหมืองข้อมูล (data minning) นักวิจัย นักวิเคราะห์ข้อมูล และ นักสถิติ ภาษา R เป็นภาษาที่ใช้ command line scripting ซึ่งส่วนใหญ่จะใช้สำหรับการวิเคราะห์ข้อมูลที่ซับซ้อนและการนำข้อมูลมาวิเคราะห์ซ้ำ ภาษา R เป็นภาษาโปรแกรมมิ่งแบบโอเพนซอร์ส ดังนั้นภาษานี้สามารถถูกนำมาพัฒนาและแจกจ่ายใหม่ได้ง่าย ภาษา R สามารถทำงานบนแพลตฟอร์มที่แตกต่างกันได้อย่างหลากหลาย เช่น UNIX Windows และ MacOS และภาษานี้ยังอนุญาตให้เหล่าโปรแกรมเมอร์เพิ่มเติมการทำงานที่นอกเหนือจากที่มีอยู่โดยการประกาศฟังก์ชันใหม่ได้อย่างง่ายดายอีกด้วย

สรุป :

บทความนี้ได้ให้ความรู้เกี่ยวกับภาษาโปรแกรมมิ่งที่ดีที่สุดที่จะช่วยคุณทำงานด้านการวิเคราะห์เชิงตัวเลขและสถิติ ภาษาต่างๆในบทความนี้ต่างเป็นภาษาที่มีไลบรารี่อยู่ในตัวของมันเอง ดังนั้นการสร้างแอพพลิเคชั่นในด้านการวิเคราะห์เชิงตัวเลขและสถิติจึงเป็นเรื่องที่ง่ายขึ้นกว่าเดิม ภาษาเหล่านี้ยังช่วยนักพัฒนาในเรื่องของการทำ data visualization และการคำนวณทางด้านสถิติอีกด้วย

ห้ามพลาด!!

คอร์ส FINANCIAL ENGINEERING BOOTCAMP ที่จบมาสร้างระบบเทรดหุ้นได้จริง
"Boothcamp สำหรับคลาส Financial Engineering ครั้งแรกในเมืองไทย ใครอยากรู้เรื่อง Quant ที่ผู้เรียนจะได้ คำแนะนำวินัยการลงทุนที่เคร่งครัด, ไม่ต้องเฝ้าหน้าจอหลายจอ เพื่อดูหุ้นหลายตัวให้เหมื่อย และ การกระจายความเสี่ยง จากการเลือกลงทุนได้หลายกลยุทธ์

รายละเอียดเพิ่มเติมและสมัครที่นี่

หลักสูตรนี้เรียนกันทั้งหมด 10 ครั้ง รวม 30 ชั่วโมง จบมาทำงานได้จริง!!! สอบถามเพิ่มเติมได้ที่เพจ LEAN upskill

อันดับภาษาโปรแกรมมิ่งที่มีความต้องการมากที่สุดในเทคโนโลยีด้านธนาคาร

เป็นเรื่องยากที่นักพัฒนาโปรแกรมด้านธนาคารจะใช้ภาษาโปรแกรมมิ่งแค่เพียงภาษาเดียวในการทำงาน ในปัจจุบัน ตลาดมีความต้องการนักพัฒนาที่มีความรู้แบบ ‘ครบวงจร’ (full-stack) ซึ่งเป็นบุคคลที่มีทักษะด้านการใช้ภาษาโปรแกรมมิ่งได้หลากหลาย ไม่เพียงแค่นั้น ฝ่ายบุคคลของบริษัทเอง ก่อนที่จะส่งเรซูเม่ของผู้สมัครไปให้กับนายจ้าง ก็มักจะสแกนหาคนที่มีทักษะที่เฉพาะเจาะจงหนึ่งหรือสองทักษะขึ้นไป

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

ในปีนี้ จะเห็นว่าที่ธนาคารหลายๆแห่งต้องการคนที่มีฝีมือและทักษะ และในขณะเดียวกัน ตลาดเองก็เกิดการแข่งขันมากยิ่งขึ้น และเป็นเหตุการเช่นนี้ก็เป็นแบบเดียวกันเมื่อลองเปรียบเทียบระหว่างปี 2017 กับปีก่อนๆ แม้ว่าจะมีอาชีพที่หลากหลายเพิ่มขึ้นเป็นจำนวนมาก แต่การแข่งขันเพื่อแย่งชิงตำแหน่งในอาชีพที่ต้องใช้ความรู้ด้านภาษาทางโปรแกรมมิ่งก็เพิ่มมากขึ้นไม่ต่างกัน และนั่นอาจเป็นเพราะในปัจจุบัน ธนาคารกำลังจ้างวิศวกรซอฟต์แวร์อาวุโสและนักเทคโนโลยีจากอุตสาหกรรมอื่นๆมากกว่าปีก่อนๆ ยกตัวอย่างเช่น ในสัปดาห์นี้ บริษัท J.P. Morgan เปิดเผยว่าพนักงานอาวุโสด้านเทคโนโลยีในบริษัทของตนกว่า 40 เปอร์เซ็นต์ได้ถูกทาบทามให้ไปทำงานในบริษัทของธนาคารคู่แข่งแทน

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

C++ : ผู้สมัครงาน 15.5 คน ต่องานทั้งหมด

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

ดังนั้นนักพัฒนาโปรแกรมที่ใช้ภาษา C++ จึงรู้ว่าทักษะภาษานี้สร้างประโยชน์ได้มากกว่าที่พวกเขาคิดหลายปีที่ผ่านมา

Python : ผู้สมัครงาน 26 คน ต่องานทั้งหมด

ภาษา Python เป็นภาษาที่หลักๆแล้วใช้ทำงานในด้าน การกำหนดราคา การจัดการความเสี่ยง และแพลตฟอร์มการจัดการการค้า ภาษา Python ได้กลายไปเป็นหนึ่งในภาษาที่ใช้ในการเขียนโปรแกรมให้กับธนาคารเพื่อการลงทุนและกองทุนป้องกันความเสี่ยงแทนที่ภาษา Java ในหลายๆด้านแล้ว จำนวนงานที่ต้องการทักษะด้านภาษา Python มีจำนวนเพิ่มขึ้นเกือบสามเท่าตัวเมื่อเทียบจากระยะเวลาครึ่งปีที่ผ่านมา ตัวเลขความต้องการผู้มีทักษะขยับจาก 270 ขึ้นไปจนถึง 800 กว่าๆ และในขณะเดียวกันตัวเลขจำนวนผู้สมัครที่มีประสบการณ์และการใช้ทักษะภาษา Python ก็ได้พุ่งสูงขึ้นในช่วงเวลานั้นไม่ต่างกัน

ครั้งล่าสุดที่เราทำงานวิจัยนี้คือในเดือนธันวาคมปี 2016 ภาษา Python มีจำนวนผู้สมัครเพียง 14 คนสำหรับทุกงาน แต่ในตอนนี้มีผู้สมัคร 24 คน ในตอนนั้นมีคนบอกว่าอุปทานไม่ได้มีเท่าความต้องการ แต่ขณะนี้งานต่างๆได้เพิ่มระดับสกิลมากขึ้น ดังนั้นจำนวนผู้มีทักษะภาษา Python ที่มีเปอร์เซนต์มากขึ้นจึงไม่ได้ถือเป็นเรื่องที่ต้องแข่งขันแต่อย่างใด

Gina Schiller กรรมการผู้จัดการ บริษัท Jay Gaines & Company ในนิวยอร์ก กล่าวว่า Python เหมาะสำหรับการสร้างเครื่องมือวิเคราะห์และแบบจำลองเชิงตัวเลข ความสามารถในการสร้างแบบจำลองที่เป็นเอกลักษณ์นี้เองที่ทำให้นักวิเคราะห์ นักลงทุน และนักวิจัยเห็นว่า Python เป็นเครื่องมือที่มีประโยชน์ในขอบเขตของตัวเอง จะว่าไปแล้ว Citigroup เองก็เพิ่งเริ่มให้บริการชั้นเรียนการเขียนโปรแกรม Python ให้แก่นักวิเคราะห์และนักการธนาคาร และเป็นส่วนหนึ่งของโครงการการศึกษาต่อเนื่อง ความคิดนี้ไม่ได้มาจากธนาคาร แต่มาจากตัวพนักงานเองที่ให้ความสนใจ

แม้ว่าจะเป็นเรื่องยากที่เราจะหาข้อมูลภาษา R จากฐานข้อมูล แต่ก็พบว่า ภาษา R มักใช้ร่วมกับ Python และดูจะเป็นที่นิยมมากแม้ว่าจะไม่ค่อยแพร่หลายซักเท่าไหร่ กองทุนการค้าที่มีการเทรดแบบ High Frequency/low latency ใช้ภาษา R เพื่อคำนวณทางสถิติเพื่อใช้การจำลองและการวิเคราะห์เชิงคาดการณ์ หากต้องการสแกนหาโพสต์งานให้ได้รวดเร็ว มักจะต้องเป็นโพสต์ที่บอกทักษะภาษา Python ควบคู่ไปกับภาษา R

Java : ผู้สมัครงาน 29.8 คน ต่องานทั้งหมด

Java แตกต่างจากภาษา Python และ C++ จำนวนงานที่ต้องใช้ภาษา Java นั้นลดลงในช่วง 18 เดือนที่ผ่านมาจาก 460 งานเป็น 346 งาน แม้ว่าธนาคารจะให้ความสำคัญกับการจ้างผู้เชี่ยวชาญด้านเทคโนโลยี จากเดิมที่ธนาคารจะลงทุนไปกับภาษา Java ก็หันไปลงทุนกับภาษา Python และภาษา R ซึ่งใช้ทำงานได้เร็วกว่ามีความยืดหยุ่นมากกว่าและใช้งานง่ายสำหรับโครงการปัจจุบัน และเนื่องจาก Java ได้รับความนิยมในไม่กี่ปีที่ผ่านมา Java จึงมีจำนวนคนที่มีทักษะในภาษานี้จำนวนมาก

C # : ผู้สมัครงาน 37.6 คน ต่องานทั้งหมด

Christian Glover Wilson รองประธานฝ่ายเทคโนโลยีและกลยุทธ์ของ Tigerspike กล่าวว่าภาษา C# ก็เป็นอีกหนึ่งภาษาที่ได้รับความนิยมในจำนวนที่ลดลงเล็กน้อย เนื่องจากปัจจุบันเกิดความนิยมใหม่ใน trading landscape แต่ถึงอย่างนั้น C# ก็ยังคงถูกใช้ในงานด้านการวิเคราะห์เชิงสถิติและงานแบบ low latency อยู่ ข้อดีหนึ่งข้อของภาษา C# คือ ตลาดไม่ได้มีผู้เชี่ยวชาญภาษา C# มากมายนัก จึงทดแทนความต้องการของตลาดไม่ได้ทั้งหมด

Matlab : ผู้สมัครงาน 106 คน ต่องานทั้งหมด

ใช้สำหรับการวิจัยเชิงปริมาณเป็นหลัก Matlab ยังถูกแซงโดยภาษา R อีกด้วย มีงานเพียงประมาณ 150 ตำแหน่งที่ต้องการผู้สมัครที่มีทักษะภาษา Matlab แต่ผู้สมัครที่มีทักษะนี้กลับมีจำนวนหลายพันคน

ห้ามพลาด!!

คอร์ส FINANCIAL ENGINEERING BOOTCAMP ที่จบมาสร้างระบบเทรดหุ้นได้จริง
"Boothcamp สำหรับคลาส Financial Engineering ครั้งแรกในเมืองไทย ใครอยากรู้เรื่อง Quant ที่ผู้เรียนจะได้ คำแนะนำวินัยการลงทุนที่เคร่งครัด, ไม่ต้องเฝ้าหน้าจอหลายจอ เพื่อดูหุ้นหลายตัวให้เหมื่อย และ การกระจายความเสี่ยง จากการเลือกลงทุนได้หลายกลยุทธ์

รายละเอียดเพิ่มเติมและสมัครที่นี่

หลักสูตรนี้เรียนกันทั้งหมด 10 ครั้ง รวม 30 ชั่วโมง จบมาทำงานได้จริง!!! สอบถามเพิ่มเติมได้ที่เพจ LEAN upskill

ภาพรวมสตาร์ทอัพปัญญาประดิษฐ์ระดับท็อปในประเทศจีน

จากปี 2015 จนถึงปี 2017 ที่ผ่านมา สตาร์ทอัพด้านปัญญาประดิษฐ์มากกว่า 450 แห่งได้รับเงินระดมทุนเป็นมูลค่ากว่าสามหมื่นล้านหยวน (ราวๆ 4.8 พันล้านดอลลาร์ หรือ 154,344 ล้านบาทตามอัตราค่าเงินปี 2018) แม้ว่าในปี 2017 จะมีรอบการระดมทุนที่ลดลง แต่ยอดระดมทุนในปีนั้นก็ยังคงมีมูลค่ามากกว่าสองเท่าของยอดรวมการระดมทุนในปี 2015 และปี 2016 รวมกันเสียอีก ในการระดมทุน 64 ครั้ง สตาร์ทอัพสามารถรวบรวมเงินทุนได้ 15-150 ล้านเหรียญสหรัฐและมีห้าครั้งที่ระดมทุนได้สูงที่สุด รวบรวมได้ถึง 150 ล้านเหรียญสหรัฐ

(more…)

สตาร์ทอัพปัญญาประดิษฐ์ระดับพันล้าน 6 อันดับท็อปในโลก

ในปัจจุบัน ปัญญาประดิษฐ์ (Artificial intelligence) ได้ก้าวเข้ามาเป็นความสนใจในหลายๆพื้นที่ธุรกิจ นี่เป็นเพราะว่าในไม่กี่ปีที่ผ่านมา กระบวนการทางเทคโนโลยีได้ผสานนวัตกรรมและงานวิจัยเข้าด้วยกัน สิ่งที่เคยล้มเหลวในทศวรรษที่ 50 (ยุคเริ่มกำเนิดปัญญาประดิษฐ์) ในตอนนี้ถูกพัฒนาจนได้รับการยอมรับและได้ถูกใช้อย่างกว้างขวางในหลายๆด้าน

(more…)

อะไรคือ การเรียนรู้ของเครื่อง (Machine Learning)? (ฉบับมือใหม่)

Machine Learning คือระบบที่สามารถเรียนรู้ได้จากตัวอย่างด้วยตนเองโดยปราศจากการป้อนคำสั่งของโปรแกรมเมอร์ ความก้าวหน้าในครั้งนี้มาพร้อมกับความคิดที่ว่าเครื่องคอมพิวเตอร์สามารถเรียนรู้เพียงแค่จากข้อมูลอย่างเดียวเพื่อที่จะผลิตผลลัพธ์ที่แม่นยำออกมาได้ (more…)

การเรียนรู้ของเครื่อง(Machine Learning)และการเรียนรู้เชิงลึก(Deep Learning):ความแตกต่างระหว่างสองสิ่งนี้?

อะไรคือปัญญาประดิษฐ์(Artificial Intelligence : AI)

AI บ่งบอกไปถึงความสามารถทางปัญญาของเครื่องจักร(machine) โดยมาตรฐานของ AI ถูกวัดด้วยสติปัญญาของมนุษย์ คำนึงถึง ความมีเหตุผล,การพูดและการมองเห็น แต่มาตรฐานนี้ยังห่างไกลอยู่มากจากปัจจุบัน (more…)