Why Python for Finance/Machine Learning?

  • Open Source : “ฟรี” ครับ “ฟรี” เหตุผลง่ายๆ เลยครับ และเมื่อมันฟรีจึงถูกนำไปใช้หลายด้านหลายงานมาก บริษัทต่างๆ ในหลายๆ ภาคอุตสหกรรมก็ใช้ Python กัน อีกทั้งพลังของ Python ไม่ได้ด้อยไปกว่า Matlab SAS ที่ใช้งานกันในสายวิเคราะห์ข้อมูลและไฟแนนซ์ ราคาแพงเลยส่วนตัวผมให้คะแนนมันมากกว่าด้วยซ้ำเพราะเหตุผลต่อไปนี้

open-source-software-industry.jpg

  • Community :  เนื่องจากเป็น Open Source จึงมี Community ที่ใหญ่มาก มีผู้ใช้ทั่วโลก จึงทำให้มีสังคมนักพัฒนาแทบทุกภาคส่วน ตั้งแต่นักพัฒนาแอฟฟลิเคชั่น นักเขียนเวปไซต์ นักวิเคราะห์ข้อมูล นักวิยาศาสตร์ข้อมูล หรือแม้กระทั่งในส่วนของไฟแนนซ์ (ด้านนี้อาจจะเป็นรอง R อยู่บ้างแต่ไม่มากหรอกครับ ในอนาคตอาจจะแซง R ก็ได้) ฉะนั้นไม่ว่าเราจะทำโปรเจ็คอะไร ติดปัญหาอะไรก็ลองไปถาม google ดูจะมีคนทำกับเราเสมอครับไม่เหงาแน่นอน ยกตัวอย่างเช่น “stackoverflow” นี่เป็นอีกหนึ่ง community ที่ดีมากในสอบถามปัญหาที่เราพบเจอเวลาพัฒนาครับ
  • Fast developement ขับเคลื่อนด้วย Community ขนาดใหญ่ ไม่ได้มาจากทีมงานของภาษาใดภาษาหนึ่งจึงทำให้พัฒนาไปเร็วมากครับ

tumblr_static_pycon_header.jpg

มีคนขับเคลื่อนเรามหาศาล(รูปจากงาน Pycom)ข้อนี้จะต่างกับภาษาที่เป็นระบบปิดเช่น Matlab SAS

  • ระดับสูง? (High-level) : ผมเคยได้ยินว่า Python คือภาษาสำหรับคนอยากวิเคราะห์ข้อมูลในระดับสูง อย่าเพิ่งตกใจไปกับคำนั้นครับ ผมขออธิบายหน่อยนึงในจุดนี้นะครับ คำว่า “ระดับสูง” ในภาษาคอมพิวเตอร์มันไม่ใช่แบบนั้น ระดับสูงในทางคอมพิวเตอร์ คือ “การที่ใช้งานง่าย เขียนในภาษาที่มนุษย์อ่านรู้เรื่อง เค้าเลยเลยมันว่า  high leve หรือ ระดับสูง (ที่มนุษย์เข้าใจได้ง่าย) นั่นเองครับ “ เช่น print(“Hello World”) ทุกคนมาอ่านก็เข้าใจว่าเป็นคำสั่งให้มันทำการพริ้นหรือแสดงผลออกมา จึงถูกเรียกว่าระดับสูงตอนเขียนเราอ่านเข้าใจแต่เมื่อถึงเวลาจะไปทำงานจริงมันต้องแปลงเป็นภาษาที่เครื่องเข้าใจอีกทีหนึงครับซึ่งต้องกินเวลาหน่อย (แต่เราไม่รู้สึกหรอกครับมันหน่อยมากๆเลยล่ะ เสี้ยววิก็ไม่ถึง ฮา)

Python3-powered_hello-world.svg

  •  ถ้าระดับต่ำคือภาษาที่มนุษย์ไม่อาจอ่านรู้เรื่องได้ง่ายๆ แต่คอมพิวเตอร์จะเข้าใจเป็นอย่างดี ข้อดีของพวกภาษาระดับต่ำก็คือ ทำงานเร็วกว่าแต่เราก็จะพัฒนาอัลกอริทึ่มที่ละเอียดมากๆลำบากครับ ภาษาในระดับนี้ก็พวก Assembly เป็นต้น ฉะนั้นจงอย่าตกใจถ้ามีใครบอกว่ามันเป็นภาษาระดับสูง สมัยนี้มหาลัยดังๆ ต่างประเทศเค้าเอา Python มาเป็นภาษา Introduction to programming สำหรับคนไม่เคยเขียนโปรแกรมมาก่อนซักกระผีก กันหมดแล้ว มันจะเป็นระดับสูงจริงๆก็เพราะมันง่ายนี่แหละครับ 555PROG-LAN
  • Plenty of Libraries : Python อาจจะมี Library ไม่มากเท่า R แต่ก็ถือว่ามีเยอะมากทีเดียว แต่ละ Library นั้นค่อนข้างมีประโยชน์ระดับสากลเลยครับ ตัวอย่างเช่น ในทาง Finance นั้นมี Pandas ที่มีไว้จัดการ data อย่าง Data frame ซึ่งข้อมูลทาง Finance เราก็เป็นแบบนี้ซะมาก, Numpy สำหรับการทำ operation ทางคณิตศาสตร์, Scikit-Learn ที่รวมรวมอัลกอพื้นฐาน Machine Learning ไว้ครบครัน, Matplotlib&Seaborn ที่ช่วยเราในการ Visualize ข้อมูลออกมาได้อย่างดีและสวยงาม ทำให้เป็น Environment ที่ๆเหมาะสำหรับการทำวิจัยพัฒนาอัลกอริทึ่มสำหรับ Trading with Machine Learning ที่ว่ามานี้ยังไม่ได้นับรวม Package ที่สร้างมาเพื่อ Algorithmic Trading โดยเฉพาะอีกหลายตัว แต่จุดหนึงเมื่อ blog ของเราก้าวไปถึงจุดนั้นผมจะเขียนเปรียบเทียบอันที่น่าสนใจ เช่น Zipline, PyAlgoTrade, pybacktest พวกนี้นะครับ

cb3d5ca4-7282-648c-4436-acdee67e0a0c.png

  • Machine Learning : Python เป็นภาษายอดฮิตในการทำ Machine Learning ในยุคใหม่นี้มาก เนื่องด้วยมันฟรีอย่างที่บอกมาจึงมี Community ใหญ่ ตรงนี้แหละครับที่ทำให้ มหาลัยดังๆ หรือองค์กรใหญ่ๆระดับเวลาเค้าสร้าง Library สำหรับด้าน Machine Learning เค้าจะมองมาที่ Python ก่อนเป็นประจำ เช่น Tensorflow ของกูเกิล ที่กำลังฮอตในยุคหลังๆ มานี้ กับ Theano ของมหาลัยระดับโลกทางด้าน Machine/Deep Learning ของแคนนาดา เป็นต้นframeworks
  • Cross platform : ใช้ได้แทบจะทุกระบบปฎิบัติการไม่ว่าจะเป็น Window OSX Linux ฉะนั้นไม่ต้องห่วงว่าคุณจะใช้เครื่องอะไร มันก็พัฒนาไฟทันได้ทั้งนั้นแหละครับ
  • 07

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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s