Skip to content

tlepk/market_index_analysis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 

Repository files navigation

Mini-Project : การศึกษาเกี่ยวกับความผันผวนของดัชนีตลาดหุ้นในช่วง 20 ปี

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

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

อีกตัวอย่างคือ ความผันผวนที่เกิดขึ้นในช่วงโควิด-19 ที่เริ่มต้นในปี 2019 และแพร่กระจายไปยังทั่วโลกในปี 2020 สถานการณ์โรคระบาดที่รุนแรงเกิดขึ้นทำให้ดัชนีตลาดหุ้นลดลงอย่างสูงสุดในระยะเวลาสั้น ๆ ในปี 2020 แต่ในปี 2021 ดัชนีตลาดหุ้นกลับฟื้นตัวและเพิ่มขึ้นอีกครั้ง

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

Introduction

S&P 500 Index (US) - GSPC:

  • รายละเอียด: S&P 500 เป็นดัชนีที่วัดผลกระทบของบริษัทใหญ่ที่มีการซื้อขายในตลาดหลักทรัพย์ของสหรัฐอเมริกา ประกอบด้วยบริษัทมากกว่า 500 บริษัท
  • การผันผวน: ช่วงเวลาดังกล่าวเป็นช่วงที่เกิดเหตุการณ์สำคัญอย่างสิ้นเชิง ทั้งวิกฤตการเงินในปี 2008 และโรคติดเชื้อโควิด-19 ในปี 2020 ทำให้เกิดความผันผวนในตลาดหลักทรัพย์ อย่างไรก็ตาม ดัชนี S&P 500 มีความเสถียรและเติบโตขึ้นในระยะยาว

NASDAQ Composite Index (US) - IXIC:

  • รายละเอียด: NASDAQ Composite เป็นดัชนีที่วัดผลกระทบของบริษัทเทคโนโลยีและบริษัทใหญ่ในตลาดหลักทรัพย์ของสหรัฐอเมริกา
  • การผันผวน: ดัชนี NASDAQ Composite เป็นที่รู้จักกันดีในการลงทุนในหลายกลุ่มอุตสาหกรรม เช่น เทคโนโลยีสารสนเทศ ดัชนีนี้มีความผันผวนที่สูงกว่า S&P 500 Index โดยเฉพาะในช่วงเวลาตอนท้ายทศวรรษที่ผ่านมา

FTSE 100 Index (EU) - FTSE:

  • รายละเอียด: FTSE 100 เป็นดัชนีที่วัดผลกระทบของบริษัทใหญ่ที่มีการซื้อขายในตลาดหลักของสหราชอาณาจักร ประกอบด้วยบริษัทที่มีส่วนแบ่งในตลาดสูงสุดในสหราชอาณาจักร
  • การผันผวน: ดัชนี FTSE 100 มีความผันผวนสูงกว่าดัชนี S&P 500 และ NASDAQ Composite และได้รับผลกระทบจากเหตุการณ์ทั่วโลกที่ส่งผลต่อเศรษฐกิจของยุโรป เช่น วิกฤตการเงินในยุโรปในปี 2008 และ Brexit (การออกจากสหภาพยุโรป) ในปี 2016

Nikkei 225 Index (JP) - N225:

  • รายละเอียด: Nikkei 225 เป็นดัชนีที่วัดผลกระทบของบริษัทใหญ่ที่มีการซื้อขายในตลาดหลักทรัพย์ของประเทศญี่ปุ่น
  • การผันผวน: ในช่วง 20 ปีที่กำหนด ดัชนี Nikkei 225 ได้รับผลกระทบจากวิกฤตการเงินในญี่ปุ่นในปี 2008 และโรคติดเชื้อโควิด-19 ในปี 2020 ดัชนีนี้มีความผันผวนสูงและมีการเคลื่อนไหวในระยะเวลาสั้นๆ

Hang Seng Index (HK) - HSI:

  • รายละเอียด: Hang Seng Index เป็นดัชนีที่วัดผลกระทบของบริษัทใหญ่ในตลาดหลักทรัพย์ของฮ่องกง
  • การผันผวน: ดัชนี Hang Seng Index ได้รับผลกระทบจากปัจจัยภายในและภายนอกฮ่องกง รวมถึงเหตุการณ์เศรษฐกิจโลกที่มีผลต่อฮ่องกง

The Stock Exchange of Thailand Index (TH) - SET.BK:

  • รายละเอียด: ดัชนี The Stock Exchange of Thailand (SET) เป็นดัชนีที่วัดผลกระทบของบริษัทในตลาดหลักทรัพย์ของประเทศไทย
  • การผันผวน: ช่วงเวลาดังกล่าวเป็นช่วงที่ตลาดหลักของไทยมีการเติบโตและความผันผวน โดยเฉพาะในช่วงหลังวิกฤตการเงินในยุโรปในปี 2008 และความเสี่ยงทางการเมืองในประเทศ

Average True Range

  • ATR (Average True Range) เป็นตัวบ่งชี้ความผันผวนของการวิเคราะห์ทางเทคนิคที่พัฒนาโดย J. Welles Wilder ซึ่งเราจะนำมาใช้ในการหาค่าความผันผวนในการศึกษาครั้งนี้

Calculation

Untitled (5)

ตัวอย่าง A : ราคาสูงสุดปัจจุบัน > ราคาสูงสุดวันก่อนหน้า และ ราคาต่ำสุดปัจจุบัน < ราคาต่ำสุดวันก่อนหน้า … ใช้ High-Low ระหว่างแท่งปัจจุบัน เป็น True range

ตัวอย่าง B : ราคาสูงสุดปัจจุบัน > ราคาสูงสุดวันก่อนหน้า และ ราคาต่ำสุดปัจจุบัน > ราคาต่ำสุดวันก่อนหน้า ให้ใช้ Current High – Previous Close (Absolute value) เป็น True range

ตัวอย่าง C : ราคาสูงสุดปัจจุบัน < ราคาสูงสุดวันก่อนหน้า และ ราคาต่ำสุดปัจจุบัน < ราคาต่ำสุดวันก่อนหน้า ให้ใช้ Current Low – Previous Close (Absolute value) เป็น True range

TR (True range)

  • ขอบเขตของราคาที่มีช่วงกว้างที่สุด
  • ค่าสูงสุดของงวดล่าสุดลบค่าต่ำสุดของงวดล่าสุด
  • ค่าสัมบูรณ์ของค่าสูงสุดของช่วงเวลาล่าสุดลบด้วยค่าปิดก่อนหน้า
  • ค่าสัมบูรณ์ของจุดต่ำสุดของงวดล่าสุดลบด้วยค่าปิดก่อนหน้า

สูตรการคำนวณ TR (True range)

Untitled (6)

สูตรการคำนวณ ATR (Average true range)

  • เมื่อเราได้ค่า True range แล้ว จากนั้นก็มีเข้าสูตรการคำนวณ ATR โดยปกติจะใช้ค่าเฉลี่ย (Average) อยู่ที่ระดับ 14 วัน ในการคำนวณ

Untitled (7)

Source: https://www.lucid-trader.com/average-true-range-indicator/

Source: https://en.wikipedia.org/wiki/Average_true_range

1.Instillation and Import

!pip install seaborn
!pip install matplotlib
!pip install yfinance
!pip install numpy
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import yfinance as yf

2.Preparing Data

Import data จาก Yahoo Finance เพื่อดาวน์โหลดข้อมูลในอดีตย้อนหลัง 20 ปี สำหรับดัชนีตลาดหลักต่างๆ จากนั้นจะทำการคำนวณค่าของข้อมูล และสร้าง DataFrame ด้วยค่าที่คำนวณได้ ขั้นตอนการสร้าง DataFrame มีดังนี้

  • กำหนดฟังก์ชัน create_df ที่รับพารามิเตอร์ต่อไปนี้
  • index name เป็น สัญลักษณ์หรือชื่อของดัชนีหรือทรัพย์สิน
  • period (ตัวเลือก): ระยะเวลาที่ใช้คำนวณช่วงเวลาเฉลี่ยจริง ค่าเริ่มต้นคือ 14 วัน
  • start และ end (ตัวเลือก): วันที่เริ่มต้นและสิ้นสุดของข้อมูลในอดีต.
  • ในฟังก์ชัน create_df เราจะทำการดาวน์โหลดข้อมูลย้อนหลัง 20 ปี จาก Yahoo Finance ด้วยคำสั่ง download (index_name, start=start, end=end) และเก็บข้อมูลในรูปแบบของ DataFrame
  • จากนั้นจะทำการคำนวณค่าต่างๆ บนข้อมูล และเพิ่มคอลัมน์ใน DataFrame ดังนี้
  • Price_Change: คำนวณการเปลี่ยนแปลงราคาวันละหุ้น
  • Price_Change_Percentage: คำนวณเปอร์เซ็นต์การเปลี่ยนแปลงราคาวันละหุ้น
  • Volume
  • high-low: คำนวณความต่างระหว่างราคาสูงสุดและราคาต่ำสุดในแต่ละวัน
  • high-pc: คำนวณความต่างระหว่างราคาสูงสุดปัจจุบันและราคาปิดก่อนหน้า
  • low-pc: คำนวณความต่างระหว่างราคาต่ำสุดปัจจุบันและราคาปิดก่อนหน้า
  • TR: คำนวณค่า true range โดยเลือกค่าสูงสุดจากค่า high-low, high-pc, low-pc
  • ATR: คำนวณค่า average true range โดยใช้ค่า TR และคำสั่ง .rolling(period).mean() เพื่อคำนวณค่าเฉลี่ยของ TR ในระยะเวลาที่กำหนด
  • ATR_Change: คำนวณการเปลี่ยนแปลงของ ATR
  • ATR_Change_Percentage: คำนวณเปอร์เซ็นต์การเปลี่ยนแปลงของ ATR
  • สุดท้ายฟังก์ชัน create_df จะสร้าง DataFrame ใหม่จากข้อมูลที่คำนวณได้ โดยกำหนดคอลัมน์ที่เกี่ยวข้อง เช่น 'Index', 'Datetime', 'Price', 'Price_Change', 'Price_Change_Percentage', 'Volume', 'Volume_Change', 'Volume_Change_Percentage', 'ATR', 'ATR_Percentage', 'ATR_Change', 'ATR_Change_Percentage'
  • ในส่วนสุดท้ายของโค้ด กำหนดรายชื่อดัชนีและทรัพย์สินต่าง ๆ ที่ต้องการวิเคราะห์ในรูปแบบของลิสต์ index_list
  • จากนั้น จะทำการสร้าง DataFrame สำหรับแต่ละดัชนีโดยใช้ฟังก์ชัน create_df และเก็บ DataFrame เหล่านี้ในลิสต์ dataframes_index_list
  • ใช้ฟังก์ชัน concat() เพื่อรวม DataFrame ทั้งหมดใน `dataframes_index_list
def create_df(index_name, period=14, start='2003-01-20', end='2023-06-20'):
    data = yf.download(index_name, start=start, end=end)
    data['Price_Change'] = data['Close'].diff()
    data['Price_Change_Percentage'] = data['Price_Change'] / data['Close'].shift(1) * 100
    data['high-low'] = data['High'] - data['Low']
    data['high-pc'] = abs(data['High'] - data['Close'].shift(1))
    data['low-pc'] = abs(data['Low'] - data['Close'].shift(1))
    TR = data[['high-low', 'high-pc', 'low-pc']].max(axis=1)
    ATR = TR.rolling(period).mean()
    data['ATR_Change'] = ATR.diff()
    data['ATR_Change_Percentage'] = data['ATR_Change'] / ATR.shift(1) * 100
    result = pd.DataFrame({
        'Index': index_name,
        'Datetime': data.index,
        'Price': data['Close'],
        'Price_Change': data['Price_Change'],
        'Price_Change_Percentage': data['Price_Change_Percentage'],
        'Volume': data['Volume'],
        'ATR': ATR,
        'ATR_Percentage': ATR / data['Close'] * 100,
        'ATR_Change': data['ATR_Change'],
        'ATR_Change_Percentage': data['ATR_Change_Percentage']})
    return result

index_list = [
    ('^GSPC', 'S&P 500 Index (US)'),
    ('^IXIC', 'NASDAQ Composite Index (US)'),
    ('^FTSE', 'FTSE 100 Index (EU)'),
    ('^N225', 'Nikkei 225 Index (JP)'),
    ('^HSI', 'Hang Seng Index (HK)'),
    ('^SET.BK', 'The Stock Exchange of Thailand Index (TH)')]


dataframes_index_list = [create_df(index[0]) for index in index_list]

all_dataframes = pd.concat(dataframes_index_list)
all_dataframes.info()
all_dataframes

3.Cleaning Data

ทำการ Clean Dataframe ทั้งหมดและลบค่า Null ออกจาก DataFrame เรียงลำดับข้อมูลใน DataFrame ตามคอลัมน์ 'Datetime' จากน้อยไปหามาก

all_dataframes.info()
all_dataframes.isna().sum()

Untitled

all_dataframes = all_dataframes.sort_values(by='Datetime', ascending=True)
all_dataframes = all_dataframes.dropna()
all_dataframes.info()
all_dataframes.isna().sum()

Untitled (1)

all_dataframes

Untitled (2)

for i in range(len(dataframes_index_list)):
  print(dataframes_index_list[i].isna().sum())

Untitled (3)

for i in range(len(dataframes_index_list)):
  dataframes_index_list[i].dropna(inplace=True)
  print(index_list[i])
  print(dataframes_index_list[i].isna().sum())
  print(dataframes_index_list[i].info())

Untitled (4)

4.Data Visualization

Data visualization 1 : Correlation Heatmap

image

  • ภาพที่ 1 แสดงความสัมพันธ์ในรูปแบบของข้อมูลทั้งหมด ซึ่งเป็นข้อมูลของดัชนีตลาดทั้ง 6 ตัว ประกอบไปด้วย GSPC(S&P 500 Index), SET.BK(The Stock Exchange of Thailand Index), IXIC(NASDAQ Composite Index), FTSE(FTSE 100 Index), N225(Nikkei 225 Index) และ HSI(Hang Seng Index) โดยเราหาความสัมพันธ์ของราคาปิดในแต่ละวัน กับค่าอื่นๆในชุดข้อมูล

Insight

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


Data visualization 2 : Line plot

image

  • ภาพที่ 2 แสดงค่าข้อมูลในรูปแบบกราฟเส้นโดยเส้นประสีแดงจะแสดงค่าเฉลี่ยของค่าเปอเซ็นต์ความผันผวน (ATR Percentage) และเส้นสีน้ำเงินจะแสดงค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ในรอบ 14 วัน

Insight

จากภาพที่ 2 จะเห็นได้ว่าในปี 2008 และ 2020 มีค่าเปอเซ็นต์ความผันผวน (ATR Percentage) พุ่งสูงขึ้นอย่างมีนัยสำคัญ ซึ่งช่วงเวลาดังกล่าวเป็นช่วงที่เกิด สภาวะวิกฤติเศรษฐกิจซับไพร์ม ในปี 2008 และ วิกฤตโรคระบาด โควิด-19 ในปี 2020 ซึ่งในสภาวะปกติจะมีค่าเปอเซ็นต์ความผันผวน (ATR Percentage) อยู่ในช่วงระหว่าง 1-2% เท่านั้น


Data visualization 3 : Line plot

image

  • ภาพที่ 3 แสดงค่าข้อมูลในรูปแบบกราฟเส้นของค่าเปอเซ็นต์ความผันผวน (ATR Percentage) เปรียบเทียบกับ ราคาของดัชนีตลาด (Price) ของทั้ง 6 ตัว

Insight

จากภาพที่ 3 จะเห็นได้ว่าในปี 2008 และ ปี 2020 มีการลดลงของราคาอย่างรุนแรงเนื่องจากสภาวะวิกฤติ และในเวลาเดียวกันค่าเปอเซ็นต์ความผันผวน (ATR Percentage) พุ่งสูงขึ้นอย่างมีนัยสำคัญ


Data visualization 4 : Distribution and Histogram

image

  • ภาพที่ 4 เปรียบเทียบสัดส่วนค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ของแต่ละดัชนีตลาด ที่มีค่าอยู่ในช่วง -1sd ถึง 1sd และเส้นประสีแดงคือค่าเฉลี่ยของค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ของแต่ละดัชนีตลาด

Insight

จากภาพที่ 4 เราจะเห็นว่าค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ส่วนใหญ่จะมีค่าอยู่ในช่วง -1sd ถึง 1sd และส่วนใหญ่จะมีค่าอยู่ที่ระหว่าง 1-2%


Data visualization 5 : Pie Chart

image

  • ภาพที่ 5 เปรียบเทียบสัดส่วนค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ของแต่ละดัชนีตลาด ที่มีค่าอยู่ในช่วง -1sd ถึง 1sd ในรูปแบบ Pie Chart

Insight

จากภาพที่ 5 เราจะเห็นว่าค่าเปอเซ็นต์ความผันผวน (ATR Percentage) ส่วนใหญ่จะมีค่าอยู่ในช่วง -1sd ถึง 1sd โดยมีสัดส่วนมากกว่า 85 % ของข้อมูลทั้งหมด


Data visualization 6 : Scatter Plot

image

  • ภาพที่ 6 แสดงความสัมพันธ์ระหว่าง ค่าเปอเซ็นต์ค่าความผันผวน (ATR Percentage) กับ ค่าการเปลี่ยนแปลงของราคาต่อวัน (Price Change Percentage)
    • น้อยกว่า 1sd คือ สีน้ำเงิน (ช่วงสภาวะปกติของตลาด)
    • มากกว่า 1sd ถึง 3sd คือ สีส้ม (ช่วงสภาวะที่มีความเสี่ยงที่จะเกิดวิกฤติ หรือเกิดตลาดกระทิง)
    • มากกว่า 3sd คือ สีแดง (ช่วงที่เข้าสู่ภาวะวิกฤตหรือตลาดกระทิงแล้ว)

Insight

จากภาพที่ 6 จะเห็นรูปแบบการกระจายตัวของชุดข้อมูล ดังนี้

  • เมื่อเปอเซ็นต์ค่าความผันผวน อยู่ในช่วง น้อยกว่า 1sd อาจถือได้ว่าตลาดอยู่ในช่วงสภาวะปกติของตลาด เราจะเห็นการกระจายตัวของเปอเซ็นต์ค่าความผันผวน (ATR Percentage) อยู่ในช่วง 1 % ถึง 2 % และค่าการเปลี่ยนแปลงของราคาต่อวันอยู่ในช่วง +5 % ถึง -5 %
  • เมื่อเปอเซ็นต์ค่าความผันผวน อยู่ในช่วง มากกว่า 1sd ถึง 3sd อาจถือได้ว่าตลาดกำลังเข้าสู่ช่วงที่มีความเสี่ยงที่จะเกิดวิกฤติ หรือเกิดตลาดกระทิง เราจะเห็นการกระจายตัวของค่าเปอเซ็นต์ความผันผวน (ATR Percentage) อยู่ในช่วง 2 % ถึง 4 % และค่าการเปลี่ยนแปลงของราคาต่อวัน อยู่ในช่วง +5 % ถึง -5 %
  • เมื่อเปอเซ็นต์ค่าความผันผวน เพิ่มขึ้นเกิน 3sd อาจถือได้ว่าตลาดอยู่ในภาวะวิกฤตหรือตลาดกระทิงแล้ว และจะเห็นการกระจายตัวของค่าเปอเซ็นต์ความผันผวน (ATR Percentage) มากกว่า 4 % ขึ้นไป และค่าการเปลี่ยนแปลงของราคาต่อวันอยู่ในช่วง +10 % ถึง -10 %

Conclusion

  • ช่วงที่มีค่าเปอเซ็นต์ความผันผวนสูงที่สุด คือช่วงที่เกิดวิกฤติในปี 2008 และ 2020 ซึ่งมีค่าเปอเซ็นต์ความผันผวนมากถึง 4 เท่าของช่วงภาวะปกติของตลาด
  • ค่าเปอเซ็นต์ความผันผวน (ATR Percentage) สามารถบ่งบอกสภาวะของตลาดได้ ดังนี้
    • สภาวะปกติของตลาด มีค่าเปอเซ็นต์ความผันผวนอยู่ในช่วง 1 % ถึง 2 %
    • สภาวะที่มีความเสี่ยงที่จะเกิดวิกฤต มีค่าเปอเซ็นต์ความผันผวนอยู่ในช่วง 2 % ถึง 4 %
    • ช่วงที่เข้าสู่ภาวะวิกฤต มีค่าเปอเซ็นต์ความผันผวนมากกว่า 4 % ขึ้นไป
  • เมื่อเราทราบถึงช่วงของความผันผวนของแต่ละตลาด หรือแต่ละสินทรัพย์ ทำให้เราสามารถเลือกกลยุทธ์การลงทุนที่เหมาะสมได้ เช่น
    • ในสภาวะที่ตลาดมีความผันผวนสูง ควรจะเลือกกลยุทธ์ที่ได้เปรียบ เช่น กลยุทธ์การลงทุนที่เน้นการเก็บระยะทาง โดยการเก็งกำไรทิศทางตามเทรนของราคา หรือการเก็งกำไรค่าความผันผวน เป็นต้น
    • ในสภาวะที่ตลาดมีความผันผวนต่ำ ควรจะเลือกกลยุทธ์ที่ได้เปรียบ เช่น กลยุทธ์การลงทุนที่เน้นการทำรอบในกรอบราคาสั้นๆ หรือการ short option เป็นต้น
  • เมื่อเราทราบถึงช่วงของความผันผวนของสภาวะปกติของตลาด สภาวะที่มีความเสี่ยงที่จะเกิดวิกฤต และช่วงที่เข้าสู่ภาวะวิกฤต ทำให้เราสามารถเห็นสัญญาณความผิดปกติของตลาด และวางแผนรับมือล่วงหน้าก่อนที่จะเกิดวิกฤติได้ ถ้าหากเรามีการวางแผนรับมือความผันผวนในตลาดได้ดี ย่อมส่งผลให้การลงทุนของเราสามารถหลีกเลี่ยงความเสียหายที่จะเกิดจากวิกฤติได้

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published