Price impact และ Slippage สิ่งที่ทำให้ swap ไม่เป็นอย่างที่ต้องการ

DEX (Decentralized Exchange) เช่น pancakeswap ที่เราเคยอธิบายไปแล้ว เป็นการทำงานแบบ AMM (Automated Market Maker) เราควรจะเข้าใจการทำงานเพื่อที่จะเข้าใจถึงผลกระทบที่อาจจะเกิดขึ้นในการที่เราจะทำ action ต่างๆ ซึ่งเป็นเรื่องที่สำคัญมากเพราะเราจะต้องรู้ว่าอะไรจะเกิดขึ้นกับเงินของเราบ้าง แต่เชื่อผมว่าเรื่องนี้ก็เป็นอีกเรื่องหนึ่งที่คนส่วนใหญ่ยังไม่เข้าใจ 

Automated Market Maker (AMM) คืออะไร

ย้อนกลับไปที่ระบบของตลาดหลักทรัพย์ตามปกติหรือใน Exchange ต่างๆเช่น Binance หรือ bitkub เราต่างจะเคยเห็น Order book กันมาแล้วทั้งนั้นก็คือการที่มีคนมาโพสราคาขายที่ตัวเองต้องการ หรือราคาซื้อที่ตัวเองต้องการทิ้งเอาไว้ (ก็คือราคาที่เราเห็นว่าตั้งซื้อหรือตั้งขายจำนวนเท่าไหร่ราคาเท่าไหร่นั่นแหละ เรียกว่า Order Book) และเมื่อมีคนที่ซื้อ ก็จะ match เข้าไปกับสิ่งที่คนอื่นได้โพสต์เอาไว้ก่อนหน้า นั่นก็คือ Order matched

แต่การแลกเปลี่ยนของ DEX แบบ AMM จะใช้การคำนวณทางคณิตศาสตร์เข้ามาเพื่อกำหนด token ที่จะได้รับ ซึ่ง เราจะไม่เคยเห็นการตั้งราคา ขายหรือซื้อ ใน pancakeswap เลย เพราะมันจะทำงานในตอนที่เกิด Action นั้นๆ ที่เราได้ดำเนินการลงไป แบบ ไม่มี order book นี่แหล่ะ คือ การแลกเปลี่ยนแบบ AMM จะเห็นได้ว่าแตกต่างจาก Exchange ตามปกติพอสมควร 

แล้วมันทำงานอย่างไร

เรื่องนี้ เกี่ยวพันกับเรื่องของ Impermanent loss ที่เคยอธิบายไปแล้ว ด้วยนะ ดังนั้นควรอ่านเรื่อง Impermanent loss ให้เข้าใจเสียก่อน เพราะตรงนี้จะไม่อธิบายซ้ำ 

เราจะยกตัวอย่างในกรณี pancakeswap ซึ่งสมการที่อยู่เบื้องหลังก็คือ x*y = k (อย่างที่บอกว่าตรงนี้จะไม่อธิบายซ้ำอยากให้กลับไปอ่านในเนื้อหา Impermanent loss ก่อน)

ดังนั้นในจังหวะที่เรากำลังเอา token หนึ่งแลกเข้าไปเพื่อเอาอีก token หนึ่งออกมา ก็หมายความว่ามันทำงาน X กับ Y มีอัตราส่วนที่เปลี่ยนไป และ จากสมการ x*y=k มันจึงต้อง Adjust ตัวเอง เพื่อให้เป็นจริง ตามสมการที่เขียนเอาไว้ วิธีง่ายที่สุดคือการ plot graph แล้วหาว่าจุดไหนที่ดีที่สุดนั่นแหล่ะ แต่ในเนื้อหานี้ผมจะไม่อธิบายว่าจุดไหนดีที่สุดแต่จะอธิบายไปตาม Ideal เลย เพื่อให้เห็นภาพชัด และไม่งง (ในเนื้อหา Impermanent loss อธิบายจุดที่ดีที่สุดให้แล้ว)

ทีนี้เมื่อเข้าใจเรื่องของ Dex AMM และ Impermanent loss แล้ว ก็จะกลับมาเข้าเรื่อง Price impact กับ slippage กันต่อ

Slippage เกิดขึ้นตามขนาดของ order

เริ่มต้น อยากให้เข้าใจ graph x*y=k โดยให้ K = 10000 ก่อน (สมมุติตัวเลขขึ้นมา)
ผมจิ้มที่จุดหนึ่ง x = 66.5 และ y = 150.376
มันคืออะไร?
มันคือตัวแทนจำนวน token ในระบบครับ เพื่อให้สมการเป็นจริง (ลองคูณกันสิเป็นจริงมั้ย)

เนื้อหาที่ซ่อนอยู่ อธิบายสมการ และ graph รวมทั้งยกตัวอย่างเลข token จริงๆ เพื่อให้เห็นภาพ จากการแลกผ่าน DEX AMM และการคำนวณด้วยมือถึงจำนวน token ที่ต้องได้รับจริงๆ รวมทั้งวิธีป้องกัน slippage สูงๆ และ เทคนิคการ swap ให้ได้ token จำนวนมากที่สุดออกมาด้วย

--------------------------------------------------------------

เนื้อหาพิเศษ ต้องแลกด้วย Reach เท่านั้น

เนื้อหาส่วนนี้เป็นเนื้อหาพิเศษ จะต้องใช้ reach ในการเข้าอ่านเนื้อหาจุดนี้ เมื่อแลกด้วย reach แล้วจะสามารถอ่านเนื้อหาที่ซ่อนอยู่เพิ่มเติมได้ หากมี reach แล้วกรุณา login ก่อน อ่านรายละเอียดเพิ่มเติมเรื่อง Reach

ถ้ามี liquidity เยอะๆดีกว่าจริงเหรอ

เหมือนเดิมเลย graph x*y=k โดยให้ K = 100,000 ก่อน (ใหญ่ขึ้นกว่าตัวอย่างก่อนหน้า 10 เท่า)
ผมจิ้มที่จุดหนึ่ง x = 665 และ y = 150.376

--------------------------------------------------------------

เนื้อหาพิเศษ ต้องแลกด้วย Reach เท่านั้น

เนื้อหาส่วนนี้เป็นเนื้อหาพิเศษ จะต้องใช้ reach ในการเข้าอ่านเนื้อหาจุดนี้ เมื่อแลกด้วย reach แล้วจะสามารถอ่านเนื้อหาที่ซ่อนอยู่เพิ่มเติมได้ หากมี reach แล้วกรุณา login ก่อน อ่านรายละเอียดเพิ่มเติมเรื่อง Reach

แล้ว Price impact คืออะไร

--------------------------------------------------------------

เนื้อหาพิเศษ ต้องแลกด้วย Reach เท่านั้น

เนื้อหาส่วนนี้เป็นเนื้อหาพิเศษ จะต้องใช้ reach ในการเข้าอ่านเนื้อหาจุดนี้ เมื่อแลกด้วย reach แล้วจะสามารถอ่านเนื้อหาที่ซ่อนอยู่เพิ่มเติมได้ หากมี reach แล้วกรุณา login ก่อน อ่านรายละเอียดเพิ่มเติมเรื่อง Reach

ตั้ง slippage tolerance ให้ดีมีประโยชน์นะ

อย่างที่เล่าไปแล้วข้างบน ว่าเวลาที่เรามี slippage อันเนื่องมาจาก price impact สูงๆ จะส่งผลให้เราได้ token ปลายทางน้อยลง จนอาจจะทำให้เราไม่ได้เลยก็ได้ ทีนี้ เราสามารถป้องกันเหตุการณ์นี้ได้ด้วยการตั้ง slippage tolerance ให้ต่ำๆ เพื่อเป็นการบอก DEX AMM ที่เรากำลังจะแลกว่า ถ้ามี slippage เกินกว่านี้ ให้ยกเลิก และ reject รายการนี้ซะ เดี๋ยวเราจะขาดทุน

ดังนั้น เราควรจะตั้ง slippage ให้เหมาะสม แต่ถ้าตั้งต่ำไป เราก็จะแลกไม่ได้ เนื่องจาก ผลลัพท์ slippage สูงเกินขั้นต่ำของ slippage ที่เรากำหนดไว้นี่เอง

คนส่วนใหญ่เลยตั้ง slippage ไว้สูงๆ เพื่อเพิ่มความสะดวกแทน (แต่ก็ต้องรับได้ว่าจะได้ Token น้อยลง จาก slippage ที่สูงขึ้น) ดังนั้นเราต้องตั้งให้เหมาะเองครับ ไม่มีตัวเลขที่เหมาะสม เพราะขึ้นอยู่กับ token ในมือและ liquidity TVL แต่ยิ่งน้อยยิ่งดี แต่ยิ่งน้อยก็จะทำให้แลกไม่ได้อีกที ดังนั้นเลือกเอาครับ

ลด slippage ได้อย่างไร

--------------------------------------------------------------

เนื้อหาพิเศษ ต้องแลกด้วย Reach เท่านั้น

เนื้อหาส่วนนี้เป็นเนื้อหาพิเศษ จะต้องใช้ reach ในการเข้าอ่านเนื้อหาจุดนี้ เมื่อแลกด้วย reach แล้วจะสามารถอ่านเนื้อหาที่ซ่อนอยู่เพิ่มเติมได้ หากมี reach แล้วกรุณา login ก่อน อ่านรายละเอียดเพิ่มเติมเรื่อง Reach

ก็น่าจะเข้าใจกันมากขึ้นแล้วนะครับ ว่า price impact กับ slippage คืออะไร และป้องกันได้อย่างไร