Time Series Overview

Time Series Data คือ ข้อมูลที่ประกอบด้วยข้อมูลย่อยหลายข้อมูล (หลายตัวอย่าง) แต่ละข้อมูลย่อยกำกับด้วยวันเวลา โดยข้อมูลทั้งหมดเรียงลำดับตามวันเวลา ตัวอย่างเช่น ข้อมูลราคาหุ้น, ข้อมูลพยากรณ์อากาศ, ข้อมูลจากเซ็นเซอร์, ข้อมูล log, ข้อมูลทรานแซกชั่น ประเภทข้อมูล time series มักแบ่งตามคุณลักษณะ ซึ่งคุณลักษณะที่เกี่ยวกับการลงทุนที่มักมีการกล่าวถึงบ่อยครั้งคือ ข้อมูลประเภท stationary กับ non-stationary การทำนายข้อมูล time series ที่ให้ความแม่นยำสูงมักเป็นประเภท stationary ซึ่งหมายถึงข้อมูลที่มีวัฏจักรสม่ำเสมอ เช่น ฤดูกาล, การออกดอก/ผลตามฤดูกาลของพืชผลทางการเกษตร, การจ่ายปันผลประจำปี, ค่าน้ำ/ค่าไฟ ข้อมูลลักษณะแบบนี้มักคาดการณ์ได้ง่าย เช่น หากเดือนที่แล้วมีค่าไฟ 1,000 บาท หากเดือนนี้ใช้ไฟใกล้เคียงกับเดือนที่แล้ว เดือนนี้ก็อาจมีค่าไฟใกล้เคียง 1,000 บาท…

Time series feature engineering

search อากู๋คำว่า ‘time series feature engineering for stock market’ เจอผลลัพธ์เจ๋งๆ มากมาย (การทำโมเดล จะ รวย/จน, แม่น/ไม่แม่น, เวิร์ก/ไม่เวิร์ก สำคัญที่สุดอยู่ที่ feature engineering และ model architecture นะครับ) ผลลัพธ์เจ๋งๆ เช่น https://towardsdatascience.com/the-importance-of-feature-engineering-for-financial-time-series-forecasting-a1163efe8b8a https://www.analyticsvidhya.com/blog/2019/12/6-powerful-feature-engineering-techniques-time-series/ https://towardsdatascience.com/top-4-time-series-feature-engineering-lessons-from-kaggle-ca2d4c9cbbe7 https://www.kdnuggets.com/2017/11/automated-feature-engineering-time-series-data.html https://alphascientist.com/feature_engineering.html https://mdpi-res.com/d_attachment/entropy/entropy-22-01162/article_deploy/entropy-22-01162-v3.pdf ตัวอย่าง feature engineering แนว domain specific เช่นMACD กำหนดให้มี 4 ค่า1 = macd >=…

เหตุผลที่เลือกใช้ InfluxDB เก็บราคาและ time series data

เราใช้ influxdb (https://www.influxdata.com/products/influxdb-overview/) ในระบบเรา (รันอยู่ใน docker) ในการเก็บข้อมูลประเภท time series data เช่น ราคา, trade action, trade statistics, trade position ฯ

เครดิตรูปภาพจาก https://medium.com/analytics-vidhya/watch-your-stock-shares-with-grafana-and-influxdb-4df7a99c6d64

ส่วนเหตุผล (design rationale) ที่ผมเลือกใช้ InfluxDB คือ

  1. เป็น time series database อันดับต้นๆ เลย
  2. doc ดีมาก มีตัวอย่างเยอะ มี REST API
  3. คนใช้เยอะ benchmark ดี
  4. ผมถามเพื่อนๆ น้องๆ ที่รู้จัก ที่เค้าใช้ในสเกลใหญ่ๆ เค้าแนะนำ influxdb
  5. มันขึ้นชื่อเรื่องเร็วมาก
  6. คำสั่งเป็น SQL คล้าย SQL ใน RDBMS ทำให้เรียนรู้ไม่ยาก
  7. รองรับฟังก์ชั่น, การคำนวณ และการทำงานแบบ time series เช่น การ aggregate ตามเวลา, insert or update โดยเช็กจาก time ซึ่งอันนี้สะดวกมาก เหมาะกับงานเราสุดๆ เวลามีราคาใหม่ฟีดเข้ามา แต่แท่งยังไม่จบก็ update ทับ แต่ถ้าขึ้นแท่งราคาใหม่ก็ insert
  8. รูปแบบการตั้ง index (tag) ก็เหมาะกับงานเราดี
  9. มี official python library และอัพเดตบ่อยใช้ได้