สร้าง Report หุ้นบนไฟล์ Excel ด้วย Python

Investic
investic
Published in
2 min readJun 22, 2022

การใช้งาน Excel เป็นพื้นฐานที่เรียนกันมาตั้งแต่เด็กๆ ทั้งการจัดการข้อมูล ทำรายงาน และ Report ต่างๆ โดยในบทความนี้จะมีการสอนสร้างไฟล์ Excel ด้วย Python สร้าง Sheet ใหม่พร้อมเพิ่ม Report หุ้นเข้าไปใน Excel ด้วย

จะมี Library ที่ต้องทำการติดตั้งคือ xlwings เพื่อให้สามารถสร้างไฟล์ Excel และใส่ข้อมูลลงในไฟล์ได้ รวมถึง yfinance เพื่อดึงข้อมูลมาใช้ รวมถึงการสร้าง Report ด้วย Quantstats

แต่! เราจะไม่สามารถใช้บน Colab ได้นะ จะใช้ได้เฉพาะ jupyter หรือ IDLE ทั่วไปเช่น vscode เท่านั้น

เริ่มด้วยการ improt lib ที่สำคัญกันก่อน

import quantstats as qs
import xlwings as xw
from pathlib import Path
import yfinance as yf

แต่ละ Lib ก็จะเอามาใช้งานแตกต่างกัน

xlwing — จะใช้สำหรับการสร้างตัว excel ทั้งการสร้างไฟล์และการเพิ่ม sheet

quantstats — ใช้เพื่อสร้าง report

yfinance — ใช้เป็นแหล่งข้อมูลของหุ้นต่างๆ

เริ่มด้วยการดึงข้อมูลหุ้นมาก่อน

stock_data = yf.download('META', start='2020-01-01')

ในที่นี้เราเลือกเป็นหุ้น Meta (Facebook) แต่ใครอยากใช้หุ้นอะไรก็ลองไปเลือกกันเอง ของ yfinance ก็จะมีทั้งหุ้น forex crypto หรือใครอยากใช้ Data Source อื่นๆก็ได้นะ

ต่อมาจะเป็นการสร้าง workbook หรือไฟล์ Excel นั้นแหละด้วยคำสั่ง

wb = xw.Book()

หลังจากสร้าง workbook เรียบร้อยแล้วเราก็จะ Add ข้อมูลเข้าไป แต่เมื่อเราสร้าง workbook เสร็จจะมี sheet1 เกิดขึ้นมาให้เป็น Defualt ดังนั้น การที่เราจะ Add ข้อมูลเข้าไปได้จำเป็นต้องเรียก sheet นั้นขึ้นมาก่อนด้วยคำสั่ง wb.sheet[‘Sheet1’] แล้วค่อย Add สิ่งที่ต้องการเข้าไปด้วย sheet.range(‘A1’).value = สิ่งที่ต้องการ Add

sheet = wb.sheets['Sheet1']
sheet.range('A1').value = stock_data

เสร็จแล้วเราก็จะได้ข้อมูลราคาเข้าไปใน sheet1

เสร็จแล้วเราก็จะได้ข้อมูลราคาเข้าไปใน sheet1

ต่อมาเราจำเป็นต้องตั้งชื่อและ Save ไฟล์ ด้วยคำสั่ง wb.save หลังจากที่ Save แล้วตัวไฟล์จะอยู่ใน Folder ที่เราสร้างไฟล์

wb.save("stock_data.xlsx")
wb.close()

ต่อมาจะเป็นการสร้างชีทใหม่โดยใช้คำสั่ง wb.sheets.add(‘ชื่อ sheet ที่อยากสร้าง’)

wb.sheets.add('Report')

เเล้วก็ทำการสร้าง sheet ให้อยู่ในตัวแปรของ Python

sheet2 = wb.sheets['Report']

ส่วนสุดท้ายอาจจะยาวหน่อย คือการสร้าง function สร้าง Report และจะมีการใช้ quantstats เข้ามาช่วยในส่วนนี้สำหรับใครที่ยังไม่รู้จักอ่านได้ตามลิ้งนี้ : quantstats

จะเริ่มตั้งแต่การดึงข้อมูลมาก่อน ด้วยคำสั่ง qs.utils.download_returns(‘ใส่ ticker หุ้น’)

ในส่วน snapshot จะเป็นการสร้างรูปภาพ report

ส่วนที่สำคัญที่สุดคือการสร้าง Report ของหุ้นตัวนั้น โดยคำสั่ง qs.plots.snapshot () ส่วนนี้ถ้าอยากอ่านเพิ่มให้ไปดูใน quantstats นะ

ส่วนสุดท้ายคือการใส่รูปใช้ pictures.add()

def generate_report(ticker):
stock_data = qs.utils.download_returns(ticker)

snapshot_path = Path('snapshot.png')

title = f"{ticker} Performance"

stock_snapshot = qs.plots.snapshot(stock_data,
title=title,
savefig=snapshot_path,
show=False)

sheet2.pictures.add(snapshot_path.absolute(),
name='snapshot',
update=True)

wb.to_pdf(ticker + ' Stock Rport')

หลังจากเขียน Function เสร็จก็มาเรียกใช้กัน

ticker ='META'
sheet2.range('C10').value = ticker
wb.save('stock_data.xlsx')
generate_report(ticker)

เมื่อรันเราก็จะได้ Report ออกมาทั้งในรูปแบบของรูป pdf และ Excel

คอร์สสุดคุ้ม FullBundle ที่จะสอนให้คุณเขียน Python เพื่อการลงทุนได้อย่างมืออาชีพ https://www.facebook.com/113461060228582/posts/558330185741665/

Investic

--

--