Niwara · Options Income Desk

User guide

คู่มือการใช้งาน

For invited beta testers. All seven chapters are here. You do not have to read them in order — but chapter 4 changes how every screen after it is read, so it is worth the five minutes before the tour.

สำหรับผู้ทดสอบรุ่นเบต้าที่ได้รับเชิญ ทั้งเจ็ดบทเขียนครบแล้ว คุณไม่จำเป็นต้องอ่านเรียงตามลำดับ — แต่บทที่ 4 เปลี่ยนวิธีที่คุณอ่านทุกหน้าจอหลังจากนั้น จึงคุ้มค่ากับเวลาห้านาที ก่อนจะไปดูการพาชมแท็บ

Contents

สารบัญ

  1. What this is, and what it will not do
  2. Getting your book in — without an API key
  3. Connecting exchange keys
  4. Reading the numbers: measured, modelled, or inferred
  5. The tour: nine tabs
  6. Three venues, three sets of rules
  7. When something looks wrong
  1. นี่คืออะไร และมันจะไม่ทำอะไรให้คุณ
  2. นำพอร์ตของคุณเข้าระบบ — โดยไม่ต้องใช้ API key
  3. การเชื่อมต่อ API key ของ exchange
  4. การอ่านตัวเลข: วัดได้ คำนวณจากโมเดล หรืออนุมาน
  5. พาชมทั้งเก้าแท็บ
  6. สาม venue สามชุดกติกา
  7. เมื่อบางอย่างดูผิดปกติ

1. What this is, and what it will not do 1. นี่คืออะไร และมันจะไม่ทำอะไรให้คุณ

Niwara reads an options book — yours — alongside live public market data, and shows you what you are holding, what it is worth, and what it risks. It works on Bybit, Deribit and Binance options.

Niwara อ่านพอร์ต options ของคุณควบคู่กับข้อมูลตลาดสาธารณะแบบสด แล้วแสดงให้เห็นว่าคุณถืออะไรอยู่ มูลค่าเท่าไร และมีความเสี่ยงอะไรบ้าง รองรับ options ของ Bybit, Deribit และ Binance

1.1 What it will not do 1.1 สิ่งที่มันจะไม่ทำ

These are not limitations waiting to be lifted. They are what the software is, and each one is enforced by something you can check.

นี่ไม่ใช่ข้อจำกัดที่รอวันปลดล็อก แต่คือตัวตนของซอฟต์แวร์นี้ และแต่ละข้อมีกลไกที่ตรวจสอบได้รองรับอยู่

It will not…มันจะไม่… Why, and how you can checkทำไม และคุณตรวจสอบได้อย่างไร
Place, cancel or modify any order ส่ง ยกเลิก หรือแก้ไขคำสั่งซื้อขายใดๆ There is no order-placement code in the exchange clients at all, and the test suite asserts its absence structurally rather than trusting a promise. Every trade you make, you make yourself, on the exchange. ในโค้ดที่ติดต่อ exchange ไม่มีส่วนส่งคำสั่งซื้อขายอยู่เลย และชุดทดสอบตรวจสอบการไม่มีอยู่นั้นในเชิงโครงสร้าง ไม่ใช่แค่รับปากไว้ ทุกคำสั่งที่คุณเทรด คุณต้องส่งเองบน exchange
Tell you what to trade บอกคุณว่าควรเทรดอะไร It ranks candidates against rules you can read, and it does not know your situation, your tax position or your other commitments. Nothing here is personalised financial advice. มันจัดอันดับตัวเลือกตามกฎที่คุณอ่านได้ และมันไม่รู้จักสถานการณ์ ภาระภาษี หรือภาระผูกพันอื่นของคุณ ไม่มีอะไรในนี้เป็นคำแนะนำการลงทุนเฉพาะบุคคล
Watch your book while you are away เฝ้าพอร์ตของคุณตอนที่คุณไม่อยู่ No overnight email saying a short put went in the money. Sending one would mean reading your exchange key while you are not there, which is exactly what the custody design forecloses. See 3.1. ไม่มีอีเมลกลางดึกบอกว่า short put ของคุณเข้า ITM แล้ว การส่งได้แปลว่าต้องอ่าน key ของคุณตอนคุณไม่อยู่ ซึ่งเป็นสิ่งที่การออกแบบการเก็บรักษา key ปิดตายไว้ ดูหัวข้อ 3.1
Withdraw or move funds ถอนหรือโอนเงิน Chapter 3 has you create a read-only key. Even if you mis-scope one, there is no withdrawal code to call it with. บทที่ 3 จะให้คุณสร้าง key แบบอ่านอย่างเดียว และต่อให้คุณตั้งสิทธิ์ผิด ก็ไม่มีโค้ดสำหรับถอนเงินที่จะเรียกใช้มันได้

Not financial advice. Probability-of-profit, yield and margin figures are model estimates built from live market data. They are not predictions, they are not guarantees, and they are not a recommendation to trade. You are responsible for every position you open.

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

1.2 This is beta, and the paperwork says so 1.2 นี่คือรุ่นเบต้า และเอกสารก็ระบุไว้เช่นนั้น

When you created your account you accepted a consent document, version 2026-08-beta.2. That document is still marked draft, and so are the terms of service — the governing jurisdiction is deliberately left blank rather than guessed at. When it is filled in, that counts as a material change and you will be asked to accept again.

ตอนสร้างบัญชี คุณได้ยอมรับเอกสารความยินยอมเวอร์ชัน 2026-08-beta.2 เอกสารนั้นยังมีสถานะเป็น ฉบับร่าง (draft) เช่นเดียวกับข้อกำหนดการให้บริการ — เขตอำนาจศาลที่ใช้บังคับถูกเว้นว่างไว้โดยตั้งใจ แทนที่จะเดาเอา เมื่อใดที่เติมข้อความนั้นลงไป จะถือเป็นการเปลี่ยนแปลงสาระสำคัญ และคุณจะถูกขอให้ยอมรับใหม่อีกครั้ง

The privacy notice is not a summary of the consent document — it is the same bytes, and the page tells you so. You can read both before deciding anything.

ประกาศความเป็นส่วนตัว ไม่ใช่บทสรุปของเอกสารความยินยอม — แต่เป็นข้อความชุดเดียวกันทุกไบต์ และหน้านั้นก็บอกคุณไว้ คุณอ่านทั้งสองฉบับได้ก่อนตัดสินใจอะไรก็ตาม

2. Getting your book in — without an API key 2. นำพอร์ตของคุณเข้าระบบ — โดยไม่ต้องใช้ API key

Keys come third, on purpose. Most of this product — the market read, the expected moves, the strike ladder, the chain matrix, the arbitrage screens, the calculator — needs no credential at all. Handing an exchange key to software you opened five minutes ago is the largest commitment on the list, so it is offered after you have seen the thing work. This chapter is the cheaper path. Chapter 3 is there when you want the book to stay in sync by itself.

เรื่อง key อยู่ลำดับที่สาม โดยตั้งใจ ฟีเจอร์ส่วนใหญ่ของโปรแกรมนี้ — การอ่านสภาพตลาด ช่วงการเคลื่อนไหวที่คาดการณ์ ตาราง strike ladder, chain matrix, หน้าจอหา arbitrage และเครื่องคิดเลข — ไม่ต้องใช้ credential ใดๆ เลย การมอบ API key ของ exchange ให้ซอฟต์แวร์ที่คุณเพิ่งเปิดเมื่อห้านาทีก่อน คือการผูกมัดที่หนักที่สุดในรายการ เราจึงเสนอมันหลังจากคุณได้เห็นแล้วว่าโปรแกรมทำงานได้จริง บทนี้คือเส้นทางที่ต้นทุนต่ำกว่า ส่วนบทที่ 3 มีไว้เมื่อคุณอยากให้พอร์ตซิงค์เองอัตโนมัติ

2.1 First: create an account, and pick its exchange 2.1 ขั้นแรก: สร้างบัญชี และเลือก exchange ของมัน

  1. In the tab bar, open the account menu at the right and click + Add account.
  2. Give it a name, pick a colour, and — the part that matters — choose the exchange from the dropdown.
  3. Click Create.
  1. ที่แถบแท็บ เปิดเมนูบัญชีทางขวา แล้วคลิก + Add account
  2. ตั้งชื่อ เลือกสี และ — ส่วนที่สำคัญที่สุด — เลือก exchange จากช่องดรอปดาวน์
  3. คลิก Create

The exchange cannot be changed afterwards. An account's money is denominated in its venue's settlement currency, so re-pointing it would silently redenominate every position already in it. If you trade two exchanges, make two accounts.

เปลี่ยน exchange ทีหลังไม่ได้ เงินในแต่ละบัญชีถูกกำหนดสกุลตามสกุลเงินที่ venue นั้นใช้ชำระราคา การย้าย venue จึงเท่ากับเปลี่ยนสกุลเงินของทุกสถานะที่มีอยู่แล้วแบบเงียบๆ ถ้าคุณเทรดสอง exchange ให้สร้างสองบัญชี

2.2 Way in #1 — import a CSV 2.2 วิธีที่ 1 — นำเข้าไฟล์ CSV

  1. Go to ⚙ Settings.
  2. Click Download template. That file is generated from the parser itself, so it is always the format the importer actually accepts.
  3. Fill it in from your exchange's export (see the per-exchange notes below), choose the file, and click Preview.
  4. Read the preview. It reports how many open and closed rows it would import and lists every row it could not parse, with its line number. An unreadable row is skipped; the rest still import.
  5. If it looks right, click Import.
  1. ไปที่ ⚙ Settings
  2. คลิก Download template ไฟล์นี้ถูกสร้างจากตัวอ่านไฟล์เอง จึงเป็นรูปแบบที่ตัวนำเข้ารับจริงเสมอ
  3. กรอกข้อมูลจากไฟล์ที่ export มาจาก exchange (ดูหมายเหตุแยกตาม exchange ด้านล่าง) เลือกไฟล์ แล้วคลิก Preview
  4. อ่านผลพรีวิว มันจะบอกว่าจะนำเข้าแถวที่เปิดอยู่และที่ปิดแล้วอย่างละกี่แถว และแสดงทุกแถวที่อ่านไม่ได้พร้อมเลขบรรทัด แถวที่อ่านไม่ได้จะถูกข้าม ส่วนแถวที่เหลือยังนำเข้าตามปกติ
  5. ถ้าถูกต้องแล้ว คลิก Import

The seven columns every row needs:

เจ็ดคอลัมน์ที่ทุกแถวต้องมี:

underlying,expiry,strike,type,side,qty,entry_price

Imported rows carry no entry context, and none is invented. The market conditions at the moment you entered a trade existed at a moment that has passed and cannot be reconstructed from a CSV. Rows are marked as imported and left without context, rather than being stamped with today's regime — a fabricated context is worse than a missing one, because the calibration would consume it as real.

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

The one that catches everyone: qty is a coin amount, not a contract count จุดที่พลาดกันทุกคน: qty คือปริมาณเหรียญ ไม่ใช่จำนวนสัญญา

Write qty as the amount of the underlying coin. The contract count is derived from it, and the contract size is different on every exchange:

ให้กรอก qty เป็นปริมาณเหรียญของสินทรัพย์อ้างอิง จำนวนสัญญาจะคำนวณจากค่านี้ และขนาดสัญญาของแต่ละ exchange ไม่เท่ากัน:

ExchangeExchange BTCETHSOL qty 0.1 BTC means… qty 0.1 BTC หมายถึง…
Bybit 0.01 0.1 1.0 10 contracts10 สัญญา
Deribit 1.0 1.0 0.1 contracts0.1 สัญญา
Binance 1.0 1.0 0.1 contracts0.1 สัญญา

And write entry_price as the premium the exchange showed you — the per-coin price, the number on the order ticket. Total premium is entry_price × qty, so the template's 0.1 at 320 is 32 USDT on Bybit.

และให้กรอก entry_price เป็นค่าพรีเมียมตามที่ exchange แสดงให้คุณเห็น — คือราคาต่อหนึ่งเหรียญ ตัวเลขที่อยู่บนใบคำสั่ง พรีเมียมรวมคือ entry_price × qty ดังนั้นในไฟล์ตัวอย่าง 0.1 ที่ราคา 320 เท่ากับ 32 USDT บน Bybit

Per exchange แยกตาม exchange

Bybit

Deribit

Binance

If a row names an asset the account's exchange does not list — a SOL row in a Deribit account — the import refuses that row by name and imports the rest. That message is a fact about the exchange, not a bug.

ถ้ามีแถวที่ระบุสินทรัพย์ซึ่ง exchange ของบัญชีนั้นไม่มี — เช่นแถว SOL ในบัญชี Deribit — ระบบจะปฏิเสธแถวนั้นพร้อมระบุชื่อ และนำเข้าแถวที่เหลือตามปกติ ข้อความนั้นคือข้อเท็จจริงเกี่ยวกับ exchange ไม่ใช่บั๊ก

2.3 Way in #2 — type the legs in by hand 2.3 วิธีที่ 2 — พิมพ์ขาสถานะเข้าไปเอง

Fine for a handful of legs, and the fastest way to try the analysis against a real position. On the Portfolio tab, the left panel is Add leg:

เหมาะกับสถานะไม่กี่ขา และเป็นวิธีที่เร็วที่สุดในการทดลองใช้เครื่องมือวิเคราะห์ กับสถานะจริง ที่แท็บ Portfolio แผงด้านซ้ายคือ Add leg:

  1. Asset, Side and Option type are chips — click one in each row. The asset chips show only what the account's exchange lists.
  2. Expiry date, Strike.
  3. Qty — the coin amount again, exactly as in 2.2. The field defaults to 1; on Bybit that is 100 contracts, not one.
  4. Entry price — the premium per coin, in the account's own currency (USDT on Bybit and Binance, the coin on Deribit).
  5. Rationale is optional and worth filling in. It is the one input the exchange cannot give you back later, and it is what makes the post-trade review say something.
  6. Click Add leg.
  1. Asset, Side และ Option type เป็นปุ่มชิป — คลิกเลือกอย่างละหนึ่งปุ่มในแต่ละแถว ชิปสินทรัพย์จะแสดงเฉพาะที่ exchange ของบัญชีนั้นมีเท่านั้น
  2. Expiry date (วันหมดอายุ) และ Strike
  3. Qty — เป็นปริมาณเหรียญเช่นเดิม เหมือนในหัวข้อ 2.2 ช่องนี้มีค่าเริ่มต้นเป็น 1 ซึ่งบน Bybit เท่ากับ 100 สัญญา ไม่ใช่ 1 สัญญา
  4. Entry price — พรีเมียมต่อหนึ่งเหรียญ ในสกุลเงินของบัญชีนั้น (USDT บน Bybit และ Binance ส่วน Deribit เป็นสกุลเหรียญ)
  5. Rationale (เหตุผล) ใส่หรือไม่ใส่ก็ได้ แต่ควรใส่ เพราะเป็นข้อมูลเดียวที่ exchange ย้อนกลับไปให้คุณไม่ได้ และเป็นสิ่งที่ทำให้การทบทวนหลังปิดสถานะมีอะไรให้พูดถึง
  6. คลิก Add leg

You now have a book. Every tab has something to show, and you have not created a key.

ตอนนี้คุณมีพอร์ตแล้ว ทุกแท็บมีข้อมูลให้ดู โดยที่คุณยังไม่ได้สร้าง API key เลย

3. Connecting exchange keys 3. การเชื่อมต่อ API key ของ exchange

A read-only key keeps the book in sync by itself, so you stop re-importing. This chapter is the one that can cost you something if you read it carelessly, so it says the costs before the steps.

API key แบบอ่านอย่างเดียวจะทำให้พอร์ตซิงค์เองโดยอัตโนมัติ คุณจะไม่ต้องนำเข้าไฟล์ซ้ำอีก บทนี้เป็นบทที่อาจทำให้คุณเสียหายได้ถ้าอ่านแบบผ่านๆ เราจึงบอกต้นทุนก่อนบอกขั้นตอน

3.1 Where your key is kept, and what that costs you 3.1 key ของคุณถูกเก็บไว้ที่ไหน และคุณต้องแลกด้วยอะไร

Your key is encrypted in your browser, with a passphrase that is never sent to the server. The server stores a blob it cannot read: there is no decrypt function in the vault code, no passphrase, no key derivation, and the test suite asserts that structurally rather than taking it on trust. The answer to "can the operator read every user's exchange keys?" is no, and it is no because there is no code that could.

key ของคุณถูกเข้ารหัสในเบราว์เซอร์ของคุณ ด้วยรหัสผ่านที่ไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์เก็บเพียงก้อนข้อมูลที่มันอ่านไม่ออก: ในโค้ดส่วนเก็บ key ไม่มีฟังก์ชันถอดรหัส ไม่มีรหัสผ่าน ไม่มีการสร้างกุญแจ และชุดทดสอบตรวจสอบสิ่งนี้ในเชิงโครงสร้าง ไม่ใช่แค่เชื่อใจ คำตอบของคำถามที่ว่า "ผู้ดูแลระบบอ่าน API key ของผู้ใช้ทุกคนได้ไหม" คือไม่ได้ และที่ไม่ได้ก็เพราะไม่มีโค้ดที่จะทำอย่างนั้นได้

Two things this costs, said here rather than discovered later:

สองสิ่งที่คุณต้องแลก บอกไว้ตรงนี้ ไม่ใช่ให้ไปเจอเอาทีหลัง:

"Read-only, so it does not matter" is the wrong mental model. A read-only key cannot withdraw, and it does expose your entire position and balance history. That is real information about you, and it is what the encryption above is protecting.

"อ่านอย่างเดียว ก็คงไม่เป็นไร" เป็นความเข้าใจที่ผิด key แบบอ่านอย่างเดียวถอนเงินไม่ได้ก็จริง แต่มันเปิดเผยประวัติสถานะและยอดคงเหลือทั้งหมดของคุณ นั่นคือข้อมูลจริงเกี่ยวกับตัวคุณ และเป็นสิ่งที่การเข้ารหัสข้างต้นปกป้องอยู่

3.2 Create the key on the exchange 3.2 สร้าง key ที่ exchange

Do this on the exchange's own website, not here. The rule is the same everywhere — grant reading, grant nothing else, and never grant withdrawal — but the three exchanges do not use the same words for it, and two of them do not even call the credential the same thing.

ทำขั้นตอนนี้บนเว็บไซต์ของ exchange เอง ไม่ใช่ที่นี่ หลักการเหมือนกันทุกที่ — ให้สิทธิ์อ่าน ไม่ให้สิทธิ์อื่น และห้ามให้สิทธิ์ถอนเงินเด็ดขาด — แต่ทั้งสาม exchange ใช้คำเรียกไม่เหมือนกัน และสองในสามแห่งเรียกตัว credential คนละชื่อกันด้วย

Exchange key pages get redesigned. The permission names below are the vocabulary each venue used when this was written; if a screen does not match, follow the principle — the narrowest read permission that covers options — rather than hunting for an exact label. Section 3.4 tells you how to find out whether you got it right, and it does not involve guessing.

หน้าจัดการ key ของ exchange มีการปรับปรุงอยู่เรื่อยๆ ชื่อสิทธิ์ด้านล่างคือคำที่แต่ละแห่งใช้ ณ ตอนที่เขียนคู่มือนี้ ถ้าหน้าจอไม่ตรงกับที่เขียนไว้ ให้ยึดหลักการ — เลือกสิทธิ์อ่านที่แคบที่สุดที่ครอบคลุม options — แทนที่จะไล่หาข้อความให้ตรงเป๊ะ หัวข้อ 3.4 จะบอกวิธีตรวจว่าคุณตั้งถูกหรือไม่ โดยไม่ต้องเดา

Bybit

Deribit

Binance

3.3 Put the key in 3.3 ใส่ key เข้าระบบ

  1. Switch to the account for that exchange — the credential is stored per account, and pasting a Deribit client secret into a Bybit account produces an authentication error that was never ambiguous.
  2. Go to ⚙ SettingsAPI Credentials.
  3. Set a Vault passphrase — at least 12 characters, and not your login password. Read 3.1 again before you choose it; there is no reset.
  4. Paste the key and secret, then click Encrypt & store keys. The encryption happens in this browser before anything is sent.
  5. On a later visit the status reads Locked until you enter the passphrase and click Unlock. A wrong passphrase fails in the browser, at the decryption step; it never reaches the server.
  6. To remove the stored key entirely, click Forget.
  1. สลับไปยังบัญชีของ exchange นั้นก่อน — credential ถูกเก็บแยกรายบัญชี การวาง client secret ของ Deribit ลงในบัญชี Bybit จะทำให้เกิด error การยืนยันตัวตนที่ไม่เคยกำกวมตั้งแต่แรก
  2. ไปที่ ⚙ SettingsAPI Credentials
  3. ตั้ง Vault passphrase — อย่างน้อย 12 ตัวอักษร และต้องไม่ใช่รหัสผ่านที่ใช้เข้าสู่ระบบ อ่านหัวข้อ 3.1 อีกครั้งก่อนตั้ง เพราะไม่มีทางรีเซ็ต
  4. วาง key และ secret แล้วคลิก Encrypt & store keys การเข้ารหัสเกิดขึ้นในเบราว์เซอร์นี้ก่อนที่ข้อมูลจะถูกส่งออกไป
  5. เมื่อกลับเข้ามาครั้งต่อไป สถานะจะขึ้นว่า Locked จนกว่าคุณจะกรอกรหัสผ่านแล้วคลิก Unlock ถ้ารหัสผ่านผิด จะล้มเหลวในเบราว์เซอร์ตั้งแต่ขั้นถอดรหัส ไม่มีการส่งไปถึงเซิร์ฟเวอร์เลย
  6. ถ้าต้องการลบ key ที่เก็บไว้ทั้งหมด ให้คลิก Forget

3.4 Check it worked — and read the exchange's own answer 3.4 ตรวจว่าใช้งานได้จริง — และอ่านคำตอบจากปาก exchange เอง

  1. Go to the Portfolio tab and click ↓ Import from … — the button names your account's exchange.
  2. If it works, your open positions appear.
  3. If the exchange refuses the key, Settings shows a Venue said row containing the exchange's own error message, not our paraphrase of it. That text is what tells you whether the problem is a missing permission, an IP restriction, a mistyped secret or a key pasted into the wrong account.
  1. ไปที่แท็บ Portfolio แล้วคลิก ↓ Import from … — ปุ่มนี้จะระบุชื่อ exchange ของบัญชีคุณ
  2. ถ้าสำเร็จ สถานะที่เปิดอยู่ของคุณจะปรากฏขึ้น
  3. ถ้า exchange ปฏิเสธ key หน้า Settings จะแสดงแถว Venue said ที่มีข้อความ error จาก exchange เอง ไม่ใช่คำอธิบายที่เราเรียบเรียงใหม่ ข้อความนั้นคือสิ่งที่บอกคุณว่าปัญหาคือ สิทธิ์ที่ขาดไป ข้อจำกัดเรื่อง IP การพิมพ์ secret ผิด หรือการวาง key ผิดบัญชี

Nothing in chapter 2 stops working once you connect a key. You can keep importing CSVs, keep adding legs by hand, and click Forget at any time. The key buys convenience; it is not the price of admission.

การเชื่อมต่อ key ไม่ได้ทำให้อะไรในบทที่ 2 ใช้ไม่ได้ คุณยังนำเข้าไฟล์ CSV ได้ ยังเพิ่มขาสถานะเองได้ และคลิก Forget เมื่อไรก็ได้ key ซื้อความสะดวก ไม่ใช่ค่าผ่านประตู

4. Reading the numbers: measured, modelled, or inferred 4. การอ่านตัวเลข: วัดได้ คำนวณจากโมเดล หรืออนุมาน

This chapter comes before the tour because it changes how every screen after it is read. Every number in this dashboard is one of three things, and the difference is not cosmetic — it is the difference between a figure you can size a position from and a figure you should sanity-check against the exchange first.

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

4.1 The three labels 4.1 ป้ายกำกับสามแบบ

Labelป้ายกำกับ What it meansความหมาย Examplesตัวอย่าง
measured Read from the exchange. Nothing here computed it. อ่านมาจาก exchange โดยตรง ไม่มีการคำนวณใดๆ ตรงนี้ Mark price, bid, ask, open interest, contract size, the greeks the venue reports ราคา mark, bid, ask, open interest, ขนาดสัญญา และค่ากรีกที่ venue รายงานมา
modelled Computed here, from a formula the venue publishes. คำนวณที่นี่ จากสูตรที่ venue เผยแพร่ไว้ Bybit initial margin, Deribit Standard Margin, POP, breakeven, annualised yield initial margin ของ Bybit, Standard Margin ของ Deribit, POP, จุดคุ้มทุน, ผลตอบแทนต่อปี
inferred Computed here from a formula the venue does not publish. Deliberately an upper bound, not a best guess. คำนวณที่นี่จากสูตรที่ venue ไม่ได้เผยแพร่ และตั้งใจให้เป็นขอบบน ไม่ใช่ค่าที่เดาว่าน่าจะใกล้เคียงที่สุด Binance margin — the payload literally says formula: "inferred" มาร์จิ้นของ Binance — ในข้อมูลที่ส่งกลับมาเขียนไว้ตรงๆ ว่า formula: "inferred"

"Modelled" is not one thing, and the split is not the one people expect. Bybit and Deribit publish the formula and not the parameters — the margin factors come off a documentation page and are listed as unverified. Binance is the mirror image: its parameters sit on a public endpoint and get re-derived live, and the formula they feed is stated nowhere. Same word, opposite gap.

คำว่า "คำนวณจากโมเดล" ไม่ได้มีความหมายเดียว และเส้นแบ่งก็ไม่ใช่แบบที่คนส่วนใหญ่คิด Bybit กับ Deribit เผยแพร่สูตร แต่ไม่เผยแพร่ค่าพารามิเตอร์ — ตัวเลขปัจจัยมาร์จิ้นมาจากหน้าเอกสาร และถูกระบุไว้ว่ายังไม่ได้ตรวจสอบ ส่วน Binance กลับด้านกันพอดี: พารามิเตอร์อยู่บน endpoint สาธารณะและถูกดึงมาตรวจสดได้ แต่สูตรที่ใช้พารามิเตอร์เหล่านั้นไม่มีเขียนไว้ที่ไหนเลย คำเดียวกัน แต่ช่องโหว่อยู่คนละด้าน

4.2 POP is a model estimate — and there are two of them 4.2 POP เป็นค่าประมาณจากโมเดล — และมีอยู่สองแบบ

POP is modelled. It is P(price ends beyond your strike) at expiry under a lognormal model, computed from implied volatility. Two things follow, and both matter more to a seller than the number itself:

POP เป็นค่าที่ คำนวณจากโมเดล มันคือ ความน่าจะเป็นที่ราคาจะไปจบเลย strike ของคุณ ณ วันหมดอายุ ภายใต้โมเดล lognormal คำนวณจากค่าความผันผวนแฝง (implied volatility) สองสิ่งตามมาจากนิยามนี้ และทั้งคู่สำคัญกับคนขาย option มากกว่าตัวเลขเอง:

The same word, two different calculations. If you compare the POP on a held leg with the POP the screener showed for the same strike, they will not match, and neither is broken:

คำเดียวกัน แต่คำนวณคนละแบบ ถ้าคุณเอา POP ของขาที่ถืออยู่ไปเทียบกับ POP ที่หน้า screener แสดงไว้สำหรับ strike เดียวกัน ตัวเลขจะไม่ตรงกัน และไม่มีอันไหนผิด:

4.3 Margin is per leg, so it reads high 4.3 มาร์จิ้นคิดแยกรายขา ตัวเลขจึงสูงกว่าจริง

Every margin figure here is computed per leg and then added up. Your exchange does not do that — it nets the position set, so a strangle margins for less than the sum of its two legs, and Portfolio Margin is a different model again and smaller still.

ตัวเลขมาร์จิ้นทุกตัวที่นี่คำนวณแยกทีละขา แล้วค่อยเอามาบวกกัน ซึ่ง exchange ของคุณไม่ได้ทำแบบนั้น — มันหักลบสถานะทั้งชุดให้ strangle จึงใช้มาร์จิ้นน้อยกว่าผลบวกของสองขา และถ้าเป็น Portfolio Margin ก็เป็นอีกโมเดลหนึ่งที่ยิ่งน้อยลงไปอีก

So the dashboard's number is deliberately larger than the exchange's. That is the direction to be wrong in on a book whose losses are not capped, and it is stated rather than left for you to discover while reconciling two screens and assuming one of them is broken.

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

When the number carries a ? เมื่อตัวเลขมีเครื่องหมาย ? ต่อท้าย

A margin figure shown greyed out with an amber ? means not modelled for this venue: what you are looking at is Bybit's formula applied to another exchange's leg. It is a placeholder. Size from the exchange's own margin panel, not from that cell. Hover it and the tooltip says so.

ตัวเลขมาร์จิ้นที่แสดงเป็นสีเทาพร้อมเครื่องหมาย ? สีเหลืองอำพัน หมายถึง ยังไม่ได้ทำโมเดลสำหรับ venue นี้: สิ่งที่คุณเห็นคือสูตรของ Bybit ที่เอาไปใช้กับขาสถานะของ exchange อื่น มันเป็นแค่ตัวเลขชั่วคราว ให้กำหนดขนาดสถานะจากหน้าจอมาร์จิ้นของ exchange เอง ไม่ใช่จากช่องนั้น เอาเมาส์ไปชี้แล้วคำอธิบายจะบอกไว้

Binance margin is an upper bound, not a prediction. Binance publishes the parameters and not the formula, so the floor term has two defensible readings. Rather than pick one and be quietly wrong, this charges the larger of the two on a short put. The real requirement will be that number or less — never more. Treat the gap as capital the sizing limits are holding back until somebody reconciles it against a live Binance account.

มาร์จิ้นของ Binance คือขอบบน ไม่ใช่ค่าพยากรณ์ Binance เผยแพร่พารามิเตอร์แต่ไม่เผยแพร่สูตร เทอมพื้นจึงตีความได้สองแบบที่ต่างมีเหตุผล แทนที่จะเลือกข้างหนึ่งแล้วผิดแบบเงียบๆ ระบบนี้เลือกคิดค่าที่สูงกว่าสำหรับ short put ความต้องการมาร์จิ้นจริงจะเท่ากับตัวเลขนั้นหรือน้อยกว่า — ไม่มีทางมากกว่า ให้มองส่วนต่างนั้นเป็นเงินทุนที่ระบบจำกัดขนาดกันไว้ก่อน จนกว่าจะมีใครเอาไปกระทบยอดกับบัญชี Binance จริง

4.4 Money has a currency, and BTC is never added to USDT 4.4 เงินมีสกุลของมัน และ BTC จะไม่ถูกเอาไปบวกกับ USDT

On Bybit and Binance your book is denominated in USDT. On Deribit it is denominated in the coin — a BTC option's premium, P&L and margin are all in BTC, and an ETH option's are in ETH.

บน Bybit และ Binance พอร์ตของคุณคิดเป็นสกุล USDT แต่บน Deribit คิดเป็นสกุลเหรียญ — พรีเมียม กำไรขาดทุน และมาร์จิ้นของ option BTC เป็น BTC ทั้งหมด ส่วนของ option ETH ก็เป็น ETH

Where a book holds more than one currency, the dashboard refuses to show a single total and shows the per-currency figures instead. A blank where you expected a grand total is that refusal, not a failure — the alternative is one number that silently converted at some rate nobody chose, on a screen you size positions from.

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

One exception, and it is deliberate: strike and notional are in USD on every venue, because a strike is a dollar price even where the premium settles in coin. Notional is sent with its own currency label (notional_ccy: "USD") so the display cannot inherit the premium's.

มีข้อยกเว้นหนึ่งข้อ และเป็นความตั้งใจ: strike และมูลค่าตามสัญญา (notional) เป็น USD บนทุก venue เพราะ strike คือราคาในหน่วยดอลลาร์ ถึงแม้พรีเมียมจะชำระเป็นเหรียญก็ตาม ค่า notional ถูกส่งมาพร้อมป้ายสกุลเงินของตัวเอง (notional_ccy: "USD") เพื่อไม่ให้หน้าจอไปหยิบสกุลของพรีเมียมมาใช้

4.5 "personalized from N trades" — what N is, and is not 4.5 "personalized from N trades" — N คืออะไร และไม่ใช่อะไร

Once you have enough closed trades, the strategy ranking is nudged by your own record and a green chip says so. Three things about that chip are worth knowing before you lean on it:

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

  1. Below 6 matching closed trades, nothing is personalised and the chip is simply absent. That absence is the honest state, not a missing feature. Four trades is not evidence, and a number computed from four would look exactly as confident as one computed from four hundred.
  2. The N on the chip is your whole closed book, not the matched subset. The nudge itself is attributed by the short leg's side — your put-selling record, or your call-selling record — and the per-strategy reason string names the actual record it used (7-2 (78%) is nine trades, not N).
  3. The nudge is capped at 6 points, so the market signals still dominate the ranking. Your own history informs it; it does not override it. Structures that sell both sides — iron condors, strangles, calendars — get no personal nudge at all, because a leg-level record cannot be attributed to them honestly.
  1. ถ้ามีรายการที่ปิดแล้วเข้าเงื่อนไขน้อยกว่า 6 รายการ จะไม่มีการปรับตามสถิติส่วนตัวเลย และชิปจะไม่ขึ้นเลย การไม่ขึ้นนั้นคือสถานะที่ซื่อสัตย์ ไม่ใช่ฟีเจอร์ที่หายไป สี่รายการไม่ใช่หลักฐาน และตัวเลขที่คำนวณจากสี่รายการ จะดูมั่นใจพอๆ กับตัวเลขที่คำนวณจากสี่ร้อยรายการ
  2. ตัวเลข N บนชิปคือจำนวนรายการที่ปิดแล้วทั้งหมดของคุณ ไม่ใช่เฉพาะกลุ่มที่เข้าเงื่อนไข ตัวการปรับคะแนนจริงๆ แยกตามด้านของขา short — สถิติการขาย put หรือสถิติการขาย call — และข้อความเหตุผลรายกลยุทธ์จะระบุสถิติชุดที่ใช้จริงไว้ (7-2 (78%) คือเก้ารายการ ไม่ใช่ N)
  3. การปรับคะแนนถูกจำกัดไว้ที่ 6 คะแนน สัญญาณจากตลาดจึงยังมีน้ำหนักเหนือกว่าในการจัดอันดับ ประวัติของคุณเป็นข้อมูลประกอบ ไม่ใช่ตัวตัดสินแทน ส่วนโครงสร้างที่ขายทั้งสองฝั่ง — iron condor, strangle, calendar — จะไม่ถูกปรับตามสถิติส่วนตัวเลย เพราะสถิติระดับรายขาไม่สามารถนำมาระบุให้โครงสร้างเหล่านั้นได้อย่างซื่อสัตย์

The same discipline applies to imported trades: a CSV row carries no entry context (§2.2), so it counts toward your record but adds nothing to the regime-matching that decides whether the edge is measured "in conditions like today" or over all history. The reason string says which it used.

หลักการเดียวกันใช้กับรายการที่นำเข้าด้วย: แถวใน CSV ไม่มีบริบทตอนเปิดสถานะ (ดูหัวข้อ 2.2) มันจึงถูกนับรวมในสถิติของคุณ แต่ไม่ได้ช่วยอะไรกับการจับคู่สภาวะตลาด ที่ใช้ตัดสินว่า edge นั้นวัดจาก "สภาพแบบวันนี้" หรือวัดจากประวัติทั้งหมด ข้อความเหตุผลจะบอกว่าใช้แบบไหน

4.6 How to check any of this yourself 4.6 วิธีตรวจสอบเรื่องพวกนี้ด้วยตัวเอง

The venue facts this dashboard relies on — contract sizes, fee rates, margin parameters where they are public — are measured against the exchange's own instrument list rather than transcribed once and trusted. What cannot be checked that way is named as unverified rather than quietly assumed. For Binance the unverified list is fee_premium_cap, delivery_cap, margin_formula.

ข้อเท็จจริงเกี่ยวกับ venue ที่แดชบอร์ดนี้ใช้ — ขนาดสัญญา อัตราค่าธรรมเนียม และพารามิเตอร์มาร์จิ้นเท่าที่เปิดเผย — ถูกวัดเทียบกับ รายการสินค้าจริงของ exchange ไม่ใช่คัดลอกมาครั้งเดียวแล้วเชื่อไปตลอด ส่วนที่ตรวจแบบนั้นไม่ได้ จะถูกระบุชื่อไว้ว่ายังไม่ได้ตรวจสอบ แทนที่จะสมมติเอาเงียบๆ สำหรับ Binance รายการที่ยังไม่ได้ตรวจสอบคือ fee_premium_cap, delivery_cap, margin_formula

That check happened once because a hand-copied contract size was wrong by a factor of ten and nothing in the codebase could notice — every calculation "worked", because both sides of every comparison used the same wrong constant. It is worth knowing that the numbers you are reading have that history behind them.

การตรวจแบบนี้เกิดขึ้นเพราะเคยมีขนาดสัญญาที่คัดลอกมาด้วยมือแล้วผิดไปสิบเท่า และไม่มีอะไรในโค้ดจับได้เลย — ทุกการคำนวณ "ทำงานได้ปกติ" เพราะทั้งสองฝั่งของทุกการเปรียบเทียบใช้ค่าคงที่ที่ผิดตัวเดียวกัน ควรรู้ไว้ว่าตัวเลขที่คุณกำลังอ่านอยู่มีประวัติแบบนี้อยู่เบื้องหลัง

5. The tour — nine tabs 5. พาชม — ทั้งเก้าแท็บ

Every tab below gets the same four parts in the same order, so you learn the shape once and afterwards read only the part you came for: what it answers, how to use it, how to read the output, and when it is wrong or blank. That last part is not padding — most of what gets reported as a bug in this dashboard is one of the honest blanks listed there.

ทุกแท็บด้านล่างมีสี่ส่วนเหมือนกัน เรียงลำดับเหมือนกัน คุณจึงเรียนรู้รูปแบบครั้งเดียว แล้วหลังจากนั้นอ่านเฉพาะส่วนที่ต้องการ: ตอบคำถามอะไร, ใช้อย่างไร, อ่านผลลัพธ์อย่างไร และเมื่อไรที่มันผิดหรือว่างเปล่า ส่วนสุดท้ายไม่ใช่ส่วนเกิน — สิ่งที่ถูกแจ้งว่าเป็นบั๊กในแดชบอร์ดนี้ส่วนใหญ่ คือช่องว่างที่ซื่อสัตย์ซึ่งอยู่ในส่วนนั้น

🧠 Coach

What it answers
ตอบคำถามอะไร

What should I do about the book I already have, today?

วันนี้ฉันควรทำอะไรกับพอร์ตที่ถืออยู่แล้ว?

How to use it
ใช้อย่างไร

The brief loads by itself and stays open — it is the answer the tab exists to give. ↻ Refresh re-runs it. Everything below folds: 👀 On radar, New-setup ideas, 💬 Ask the coach, 🔄 Roll analyzer, 📌 Expiry-week focus, 🧪 Scenario stress test, 📈 Scorecard, ⛓️ Roll chains and 📊 Regime timeline.

สรุปภาพรวมจะโหลดขึ้นมาเองและเปิดค้างไว้ — เพราะมันคือคำตอบที่แท็บนี้มีไว้ให้ ↻ Refresh คือการรันใหม่ ส่วนที่เหลือด้านล่างเป็นแบบพับเก็บได้: 👀 On radar, New-setup ideas, 💬 Ask the coach, 🔄 Roll analyzer, 📌 Expiry-week focus, 🧪 Scenario stress test, 📈 Scorecard, ⛓️ Roll chains และ 📊 Regime timeline

How to read it
อ่านผลลัพธ์อย่างไร

All of it is modelled — your book's greeks and the market regime run through rules, not an opinion. Action items are split by urgency on purpose: what needs doing today stays on screen, the rest folds. The stress test is a what-if (Run stress test after picking a shock); it moves nothing.

ทั้งหมดเป็นสิ่งที่ คำนวณจากโมเดล — ค่ากรีกของพอร์ตคุณกับสภาวะตลาดผ่านชุดกฎ ไม่ใช่ความคิดเห็น รายการที่ต้องทำถูกแยกตามความเร่งด่วนโดยตั้งใจ: สิ่งที่ต้องทำวันนี้จะค้างอยู่บนหน้าจอ ที่เหลือพับเก็บ ส่วน stress test เป็นการจำลอง (เลือกสถานการณ์แล้วกด Run stress test) มันไม่ได้ขยับอะไรจริง

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

With no positions the brief says so and stays thin — it is about a book, and you do not have one yet. Ask the coach needs your own AI key, set in 🤖 AI Q&A under Settings, and has a daily cap you set yourself; without a key the panel says so rather than failing.

ถ้ายังไม่มีสถานะเปิดอยู่ สรุปจะบอกไว้และมีเนื้อหาน้อย — เพราะมันพูดถึงพอร์ต และคุณยังไม่มี ส่วน Ask the coach ต้องใช้ AI key ของคุณเอง ตั้งค่าที่ 🤖 AI Q&A ในหน้า Settings และมีโควตาต่อวันที่คุณกำหนดเอง ถ้าไม่ได้ใส่ key แผงนี้จะบอกไว้ ไม่ใช่ขึ้น error

Screener

What it answers
ตอบคำถามอะไร

Which trades that I do not yet have are worth a look right now?

ตอนนี้มีดีลไหนที่ฉันยังไม่ได้ถือ แล้วน่าดูบ้าง?

How to use it
ใช้อย่างไร

Set Asset, Strategy, DTE window, Delta range, Spread width and Sort by in the left rail, then Scan chain →. Reset filters puts the rail back.

ตั้งค่า Asset, Strategy, DTE window, Delta range, Spread width และ Sort by ที่แถบด้านซ้าย แล้วกด Scan chain → ส่วน Reset filters คือการคืนค่าแถบนั้นกลับไปเป็นค่าเดิม

How to read it
อ่านผลลัพธ์อย่างไร

Credit is what you actually keep: shorts sold at the bid, longs bought at the ask, entry fees deducted. The @mid line under it is what a mid-priced screener would have shown you instead. Keep is the share of that mid credit which survives the spread and the fees — a low number means the edge is going to the market maker, not to you. POP here is the blended one, so it will not equal the Portfolio's for the same strike (§4.2). Max Risk and Ann. Yield are modelled.

Credit คือสิ่งที่คุณได้เก็บจริง: ขา short ขายที่ราคา bid ขา long ซื้อที่ราคา ask และหักค่าธรรมเนียมเปิดแล้ว บรรทัด @mid ใต้มันคือตัวเลขที่ screener ซึ่งใช้ราคากลางจะแสดงให้คุณเห็นแทน Keep คือสัดส่วนของ credit ที่ราคากลางซึ่งรอดจากส่วนต่างราคาและค่าธรรมเนียม — ตัวเลขต่ำแปลว่า edge กำลังตกไปอยู่กับผู้ดูแลสภาพคล่อง ไม่ใช่กับคุณ ส่วน POP ตรงนี้เป็นแบบผสม จึงไม่เท่ากับของหน้า Portfolio สำหรับ strike เดียวกัน (ดู 4.2) ส่วน Max Risk และ Ann. Yield เป็นค่าที่ คำนวณจากโมเดล

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

No rows means one of two different things, and the screen tells you which. Either your filters are too tight — widen the DTE window or the delta range — or the exchange does not permit that structure on that asset, in which case a badge says so. The second is a fact about the venue, not a failure here, and it is why the absence is explained rather than silent.

การไม่มีแถวเลยหมายถึงสองอย่างที่ต่างกัน และหน้าจอจะบอกว่าเป็นแบบไหน ไม่ก็ตัวกรองของคุณแคบเกินไป — ให้ขยาย DTE window หรือช่วง delta — หรือ exchange ไม่อนุญาตโครงสร้างนั้นกับสินทรัพย์นั้น ซึ่งกรณีนี้จะมีป้ายบอกไว้ อย่างที่สองเป็นข้อเท็จจริงของ venue ไม่ใช่ความผิดพลาดของที่นี่ และนั่นคือเหตุผลที่การไม่มีข้อมูลถูกอธิบายไว้ แทนที่จะเงียบ

Ladder

What it answers
ตอบคำถามอะไร

For one expiry, which strike?

สำหรับวันหมดอายุหนึ่งวัน ควรเลือก strike ไหน?

How to use it
ใช้อย่างไร

Pick Asset, Type (Put or Call), an Expiry and a Strike range, then Scan strikes →. A row's sell button opens a quick-add dialog pre-filled with the current mark; Add SELL leg books it.

เลือก Asset, Type (Put หรือ Call), Expiry และ Strike range แล้วกด Scan strikes → ปุ่มขายในแต่ละแถวจะเปิดกล่องเพิ่มสถานะแบบเร็ว โดยกรอกราคา mark ปัจจุบันไว้ให้แล้ว กด Add SELL leg เพื่อบันทึก

How to read it
อ่านผลลัพธ์อย่างไร

One expiry across many strikes, which is the comparison the Screener cannot show you. The pre-filled entry price is the mark — change it to the mid or to the limit you actually intend, because that number becomes your book's entry price and every P&L after it.

วันหมดอายุเดียว เทียบข้ามหลาย strike ซึ่งเป็นการเปรียบเทียบที่หน้า Screener แสดงให้ไม่ได้ ราคาที่กรอกไว้ให้คือราคา mark — ให้แก้เป็นราคากลางหรือราคาที่คุณตั้งใจจะตั้งจริง เพราะตัวเลขนั้นจะกลายเป็นราคาเข้าของพอร์ตคุณ และเป็นฐานของกำไรขาดทุนทุกตัวหลังจากนั้น

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

An empty ladder usually means the strike range excluded everything the exchange lists for that expiry. Setting the range to 0 removes the limit.

ตารางที่ว่างเปล่ามักหมายความว่าช่วง strike ตัดทุกอย่างที่ exchange มีสำหรับวันหมดอายุนั้นออกไปหมด ตั้งค่าช่วงเป็น 0 เพื่อยกเลิกข้อจำกัด

Matrix

What it answers
ตอบคำถามอะไร

What does the whole chain look like at once — every strike against every expiry?

ทั้ง chain หน้าตาเป็นอย่างไรเมื่อดูพร้อมกัน — ทุก strike เทียบทุกวันหมดอายุ?

How to use it
ใช้อย่างไร

Choose Asset, Puts / Calls / Both, an OTM filter, Strikes from ATM and a Heat map of either IV or Yield, then Scan matrix →. Selected cells go into the book with Import selected.

เลือก Asset, Puts / Calls / Both, OTM filter, Strikes from ATM และ Heat map ว่าจะดู IV หรือ Yield แล้วกด Scan matrix → ช่องที่เลือกไว้จะเข้าพอร์ตด้วยปุ่ม Import selected

How to read it
อ่านผลลัพธ์อย่างไร

The colours are relative within what is on screen, not on an absolute scale — change the filter and the same cell changes colour without anything in the market having moved. IV is measured; yield is modelled.

สีเป็นค่าเปรียบเทียบภายในสิ่งที่อยู่บนหน้าจอเท่านั้น ไม่ใช่มาตราส่วนสัมบูรณ์ — เปลี่ยนตัวกรอง ช่องเดิมก็เปลี่ยนสีได้ ทั้งที่ตลาดไม่ได้ขยับเลย ค่า IV เป็นค่าที่ วัดได้ ส่วน yield เป็นค่าที่ คำนวณจากโมเดล

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

A sparse grid is usually the OTM filter or the strikes-from-ATM limit rather than a thin chain; widen them before concluding the exchange has nothing listed.

ตารางที่มีข้อมูลบางตา มักเกิดจาก OTM filter หรือค่าจำกัด strikes-from-ATM มากกว่าจะเป็นเพราะ chain มีของน้อย ให้ลองขยายค่าพวกนั้นก่อนจะสรุปว่า exchange ไม่มีของ

Arb Scanner

What it answers
ตอบคำถามอะไร

Is anything mispriced by enough to be worth executing?

มีอะไรราคาผิดเพี้ยนมากพอที่จะคุ้มค่าเข้าไปเทรดไหม?

How to use it
ใช้อย่างไร

Pick an Asset and press Scan now →. To have it run by itself, tick Enabled under Auto-scan, set the interval, and Save. Three screens fold below: Synthetic fwd vs perp, Put-call parity and Box spreads.

เลือก Asset แล้วกด Scan now → ถ้าอยากให้มันรันเอง ให้ติ๊ก Enabled ใต้ Auto-scan ตั้งช่วงเวลา แล้วกด Save ด้านล่างมีสามหน้าจอแบบพับเก็บได้: Synthetic fwd vs perp, Put-call parity และ Box spreads

How to read it
อ่านผลลัพธ์อย่างไร

Each fold's header carries how many rows survived execution cost, and that count is the verdict — a row that looks profitable at mid usually is not once the spread and the fees are paid. Read the three screens one at a time; they answer different questions and are not meant to be compared side by side.

หัวข้อของแต่ละส่วนพับจะบอกว่ามีกี่แถวที่รอดจากต้นทุนการเข้าออก และตัวเลขนั้นแหละคือคำตัดสิน — แถวที่ดูเหมือนมีกำไรที่ราคากลาง มักไม่เหลือกำไรเมื่อจ่ายส่วนต่างราคาและค่าธรรมเนียมแล้ว ให้อ่านทั้งสามหน้าจอทีละอัน เพราะมันตอบคนละคำถาม และไม่ได้ตั้งใจให้เอามาเทียบกันข้างๆ กัน

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

Zero tradeable rows is the normal state, not a failure. These markets are arbitraged by people with lower costs than yours; a screen that regularly found free money would be a screen with a bug in its cost model.

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

Intelligence

What it answers
ตอบคำถามอะไร

What is the market doing, before I decide anything? This is where a visitor with no key and no book is sent first.

ตลาดกำลังเป็นอย่างไร ก่อนที่ฉันจะตัดสินใจอะไร? นี่คือหน้าแรกที่ผู้เข้าชมซึ่งยังไม่มี key และไม่มีพอร์ตจะถูกพามา

How to use it
ใช้อย่างไร

Pick an Asset, press Analyse market →, then choose an Expiry and a chart: OI & Volume, GEX, IV Skew, Term, or ⊞ All 4. Two backtests sit at the bottom behind their own Run buttons.

เลือก Asset กด Analyse market → จากนั้นเลือก Expiry และกราฟที่ต้องการ: OI & Volume, GEX, IV Skew, Term หรือ ⊞ All 4 ด้านล่างมี backtest สองชุด อยู่หลังปุ่ม Run ของตัวเอง

How to read it
อ่านผลลัพธ์อย่างไร

Spot, open interest and IV are measured. Expected moves, gamma exposure, max pain and IV rank are modelled — they are a reading of the market, not a forecast of it. Everything on this tab works with no exchange key at all.

ราคาสปอต open interest และ IV เป็นค่าที่ วัดได้ ส่วนช่วงการเคลื่อนไหวที่คาดการณ์ gamma exposure จุด max pain และ IV rank เป็นค่าที่ คำนวณจากโมเดล — มันคือการอ่านสภาพตลาด ไม่ใช่การพยากรณ์ตลาด ทุกอย่างในแท็บนี้ใช้งานได้โดยไม่ต้องมี API key เลย

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

A backtest that has not been run says not run rather than showing a stale result. But a backtest result belongs to the asset it was run for and does not clear when you switch assets — the panel header names that asset, and that name is the thing to check before believing the numbers under it.

backtest ที่ยังไม่ได้รันจะขึ้นว่า not run แทนที่จะแสดงผลเก่า แต่ผล backtest เป็นของสินทรัพย์ที่ถูกรันมา และจะไม่ถูกล้างเมื่อคุณสลับสินทรัพย์ — หัวข้อของแผงจะระบุชื่อสินทรัพย์นั้นไว้ และชื่อนั้นแหละคือสิ่งที่ต้องเช็คก่อนจะเชื่อตัวเลขใต้มัน

Portfolio

What it answers
ตอบคำถามอะไร

What am I holding, what is it worth, and what does it risk?

ฉันถืออะไรอยู่ มูลค่าเท่าไร และเสี่ยงแค่ไหน?

How to use it
ใช้อย่างไร

Add positions on the left with Add leg (§2.3), or pull them in with ↓ Import from …. Wheel-style campaigns get grouped under ⛓ New Cycle. The open legs table stays visible; the history folds beneath it — Payoff at expiry, Premium volume, Closed legs, Monthly cash flow, Withdrawal & tail, Roll cadence and Cycles.

เพิ่มสถานะที่แถบซ้ายด้วย Add leg (ดู 2.3) หรือดึงเข้ามาด้วย ↓ Import from … ส่วนแคมเปญแบบ wheel จัดกลุ่มได้ด้วย ⛓ New Cycle ตารางขาที่เปิดอยู่จะแสดงค้างไว้เสมอ ส่วนประวัติจะพับอยู่ด้านล่าง — Payoff at expiry, Premium volume, Closed legs, Monthly cash flow, Withdrawal & tail, Roll cadence และ Cycles

How to read it
อ่านผลลัพธ์อย่างไร

Entry is yours; Mark and Close @ are measuredClose @ is the side you would actually pay to get out, so it says whether you can, and at what slippage against mark. Capture%, Profit%, θ/day, Unr.P&L, Margin, POP and B/E dist are modelled. Margin is per leg and therefore higher than your exchange's netted figure (§4.3), and POP here uses implied volatility alone (§4.2).

Entry เป็นตัวเลขของคุณเอง ส่วน Mark และ Close @ เป็นค่าที่ วัดได้Close @ คือฝั่งราคาที่คุณต้องจ่ายจริงเพื่อออกจากสถานะ มันจึงบอกว่าคุณออกได้ไหม และเสียส่วนต่างจากราคา mark เท่าไร ส่วน Capture%, Profit%, θ/day, Unr.P&L, Margin, POP และ B/E dist เป็นค่าที่ คำนวณจากโมเดล มาร์จิ้นคิดแยกรายขา จึงสูงกว่าตัวเลขที่ exchange หักลบให้แล้ว (ดู 4.3) และ POP ตรงนี้ใช้ความผันผวนแฝงอย่างเดียว (ดู 4.2)

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

An out of sync banner means your local book and the exchange disagree: a position opened on the exchange and not imported, or a leg closed there before expiry and not recorded here. Both are yours to resolve — nothing is written to your account. The exchange margin panel is hidden entirely when the account has no credentials, rather than showing zeros that would read as a flat book.

แถบ out of sync หมายความว่าพอร์ตในเครื่องกับที่ exchange ไม่ตรงกัน: มีสถานะที่เปิดบน exchange แต่ยังไม่ได้นำเข้ามา หรือมีขาที่ปิดไปที่นั่นก่อนหมดอายุแต่ยังไม่ได้บันทึกที่นี่ ทั้งสองกรณีคุณต้องจัดการเอง — ระบบไม่เขียนอะไรลงบัญชีของคุณ ส่วนแผงมาร์จิ้นของ exchange จะถูกซ่อนทั้งแผงเมื่อบัญชียังไม่มี credential แทนที่จะขึ้นเลขศูนย์ ซึ่งจะถูกอ่านว่าพอร์ตว่าง

🧮 Calculator

What it answers
ตอบคำถามอะไร

If I open this and buy it back, what do I actually keep after fees on both sides?

ถ้าฉันเปิดสถานะนี้แล้วซื้อคืน สุดท้ายฉันเหลือเท่าไรหลังหักค่าธรรมเนียมทั้งขาเปิดและขาปิด?

How to use it
ใช้อย่างไร

↧ Load my open book brings your real legs in; + Add leg types a hypothetical one; Clear empties it. A close price of 0 means "let it expire worthless". The Daily tick excludes the delivery fee, because daily options do not pay one.

↧ Load my open book ดึงขาสถานะจริงของคุณเข้ามา + Add leg คือพิมพ์สถานะสมมติเพิ่ม Clear คือล้างทั้งหมด ราคาปิดเท่ากับ 0 หมายถึง "ปล่อยให้หมดอายุแบบไร้ค่า" ส่วนช่องติ๊ก Daily คือการตัดค่าธรรมเนียมส่งมอบออก เพราะ option รายวันไม่ต้องจ่ายส่วนนั้น

How to read it
อ่านผลลัพธ์อย่างไร

Fees are charged on both the open and the close, which is the part a mental calculation usually misses. The fee itself is the smaller of a rate on the index and a cap on the premium — and on the cheap out-of-the-money legs this dashboard is built around, the cap is almost always the term that binds.

ค่าธรรมเนียมถูกคิดทั้งขาเปิดและขาปิด ซึ่งเป็นส่วนที่การคิดเลขในหัวมักลืม ตัวค่าธรรมเนียมคือค่าที่น้อยกว่าระหว่างอัตราคูณดัชนี กับเพดานคูณพรีเมียม — และสำหรับขา OTM ราคาถูกซึ่งเป็นสิ่งที่แดชบอร์ดนี้ออกแบบมารองรับ เพดานมักเป็นเทอมที่มีผลเสมอ

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

On a Deribit or Binance account this tab uses Bybit's fee model. The premium caps differ — 7% on Bybit, 12.5% on Deribit, 10% on Binance — so on a 20-premium leg at index 65,000 the real Deribit fee is about 2.5 and this shows 1.4. Treat the fee line as indicative on those venues; a real close in the Portfolio tab uses the correct venue's fees. The tab says so on screen when the account is not a Bybit one.

ในบัญชี Deribit หรือ Binance แท็บนี้ใช้โมเดลค่าธรรมเนียมของ Bybit เพดานพรีเมียมไม่เท่ากัน — Bybit 7%, Deribit 12.5%, Binance 10% — ดังนั้นขาที่พรีเมียม 20 ที่ดัชนี 65,000 ค่าธรรมเนียม Deribit จริงประมาณ 2.5 แต่ตรงนี้แสดง 1.4 บน venue เหล่านั้นให้ถือว่าบรรทัดค่าธรรมเนียมเป็นค่าประมาณ ส่วนการปิดสถานะจริงในแท็บ Portfolio ใช้ค่าธรรมเนียมของ venue ที่ถูกต้อง แท็บนี้จะขึ้นข้อความบอกไว้บนหน้าจอเมื่อบัญชีไม่ใช่ Bybit

⚙ Settings

What it answers
ตอบคำถามอะไร

Where is everything configured — and what did I agree to?

ตั้งค่าต่างๆ อยู่ตรงไหน — และฉันตกลงอะไรไปบ้าง?

How to use it
ใช้อย่างไร

Six cards: 🔒 Remote access, 👤 Your account (password, Privacy, and Create invite), 📄 Import a book from CSV (§2.2), API Credentials (§3.3), Risk management, and 🤖 AI Q&A.

มีหกการ์ด: 🔒 Remote access, 👤 Your account (รหัสผ่าน, Privacy และ Create invite), 📄 Import a book from CSV (ดู 2.2), API Credentials (ดู 3.3), Risk management และ 🤖 AI Q&A

How to read it
อ่านผลลัพธ์อย่างไร

Nothing on this tab is measured or modelled — it is your configuration. It is worth knowing that Risk management is not decoration: the capital and allocation limits you set here drive the Max qty shown in the Screener and the Ladder, and the risk bar on the Portfolio tab. Leave them empty and those stop telling you anything.

ไม่มีอะไรในแท็บนี้ที่วัดได้หรือคำนวณจากโมเดล — มันคือการตั้งค่าของคุณ แต่ควรรู้ไว้ว่า Risk management ไม่ใช่ของประดับ: เงินทุนและเพดานการจัดสรรที่คุณตั้งตรงนี้ เป็นตัวกำหนดค่า Max qty ที่แสดงในแท็บ Screener และ Ladder รวมถึงแถบความเสี่ยงในแท็บ Portfolio ถ้าปล่อยว่างไว้ ตัวเลขเหล่านั้นก็จะไม่บอกอะไรคุณเลย

When it is wrong or blank
เมื่อไรที่มันผิดหรือว่างเปล่า

The client-side custody panel appears only when this browser can do the encryption; the Venue said row appears only after the exchange has actually refused a key. Both absences are states, not errors.

แผงการเก็บรักษา key ฝั่งเบราว์เซอร์จะขึ้นเฉพาะเมื่อเบราว์เซอร์นี้ เข้ารหัสได้ ส่วนแถว Venue said จะขึ้นเฉพาะหลังจาก exchange ปฏิเสธ key จริงๆ แล้ว การไม่ปรากฏของทั้งสองอย่างเป็นสถานะ ไม่ใช่ error

6. Three venues, three sets of rules 6. สาม venue สามชุดกติกา

The same screen means different things depending on which exchange the account is pointed at. Most of the surprises in this dashboard live in this one table.

หน้าจอเดียวกันมีความหมายต่างกัน ขึ้นอยู่กับว่าบัญชีนั้นผูกกับ exchange ไหน เรื่องที่ทำให้คนประหลาดใจในแดชบอร์ดนี้ส่วนใหญ่ อยู่ในตารางเดียวนี้

BybitDeribitBinance
Money is inสกุลเงิน USDT the coinสกุลเหรียญ USDT
Coin-settled?ชำระเป็นเหรียญ? no yes no
Assets listed hereสินทรัพย์ที่มีในระบบนี้ BTC, ETH, SOL BTC, ETH BTC, ETH
Naked short allowed onขาย naked ได้กับ anything listed anything listed BTC, ETH
Margin modelโมเดลมาร์จิ้น bybit-im deribit-sm binance-im
Margin formula isสูตรมาร์จิ้น publishedเผยแพร่ไว้ publishedเผยแพร่ไว้ inferredอนุมานเอา
Fee cap, % of premiumเพดานค่าธรรมเนียม (% ของพรีเมียม) 7% 12.5% 10%
Reading your accountการอ่านบัญชีของคุณ worksใช้งานได้ worksใช้งานได้ built, never run against a real key เขียนไว้แล้ว แต่ยังไม่เคยรันกับ key จริง

Contract sizes differ too and are the single most common import mistake; they are in §2.2 rather than repeated here, because a number printed twice is a number that will eventually disagree with itself.

ขนาดสัญญาก็ต่างกันด้วย และเป็นความผิดพลาดในการนำเข้าที่พบบ่อยที่สุด ตัวเลขอยู่ในหัวข้อ 2.2 ไม่ได้เขียนซ้ำตรงนี้ เพราะตัวเลขที่พิมพ์ไว้สองที่ สุดท้ายจะขัดแย้งกันเอง

Two rows in that table are the ones that will actually catch you. Deribit's money is the coin — so a total that would mix BTC with USDT is shown per currency or not at all (§4.4). And Binance's margin formula is inferred, so its figure is an upper bound rather than a prediction (§4.3). Everything else you can read off the screen; those two change what the screen means.

มีสองแถวในตารางนั้นที่จะทำให้คุณสะดุดจริงๆ เงินของ Deribit เป็นสกุลเหรียญ — ยอดรวมที่จะต้องเอา BTC ไปผสมกับ USDT จึงถูกแสดงแยกตามสกุล หรือไม่แสดงเลย (ดู 4.4) และ สูตรมาร์จิ้นของ Binance เป็นการอนุมาน ตัวเลขของมันจึงเป็นขอบบน ไม่ใช่ค่าพยากรณ์ (ดู 4.3) เรื่องอื่นคุณอ่านจากหน้าจอได้ แต่สองข้อนี้เปลี่ยนความหมายของหน้าจอ

One account is pinned to one exchange for its whole life (§2.1). If you trade two, make two accounts and switch between them with the account menu — the header, the credential labels, the asset chips and the import button all re-point when you do.

หนึ่งบัญชีผูกกับหนึ่ง exchange ตลอดอายุของมัน (ดู 2.1) ถ้าคุณเทรดสองที่ ให้สร้างสองบัญชีแล้วสลับด้วยเมนูบัญชี — หัวเรื่อง ป้ายชื่อช่องกรอก credential ชิปสินทรัพย์ และปุ่มนำเข้า จะเปลี่ยนตามให้ทั้งหมด

7. When something looks wrong 7. เมื่อบางอย่างดูผิดปกติ

Every item below is something that has actually happened — found in testing, or a defect that was fixed, or a design decision that reads as a bug the first time you meet it. None of them is invented, and each says where it came from so you can check.

ทุกข้อด้านล่างคือสิ่งที่เกิดขึ้นจริง — เจอตอนทดสอบ หรือเป็นบั๊กที่แก้ไปแล้ว หรือเป็นการตัดสินใจเชิงออกแบบที่พอเจอครั้งแรกจะดูเหมือนบั๊ก ไม่มีข้อไหนที่แต่งขึ้น และแต่ละข้อบอกที่มาไว้ให้คุณตรวจสอบได้

7.1 A number looks wrong 7.1 ตัวเลขดูผิด

Margin is higher here than on my exchange. Expected. Every leg is margined on its own and then added up; your exchange nets the position set, so a strangle costs less there than the sum of its two legs, and Portfolio Margin less again. The direction is deliberate on a book whose losses are not capped.

มาร์จิ้นที่นี่สูงกว่าที่ exchange เป็นเรื่องปกติ ทุกขาถูกคิดมาร์จิ้นแยกกันแล้วเอามาบวกกัน แต่ exchange หักลบสถานะทั้งชุดให้ strangle จึงใช้เงินน้อยกว่าผลบวกของสองขา และถ้าเป็น Portfolio Margin ก็ยิ่งน้อยลงไปอีก ทิศทางนี้ตั้งใจ สำหรับพอร์ตที่ขาดทุนได้ไม่จำกัด

source: backend/app.py · margin_is_per_leg

A margin figure is grey with an amber ?. It is not modelled for that venue — you are looking at Bybit's formula applied to another exchange's leg, kept as a placeholder rather than a blank. Size from the exchange's own margin panel.

ตัวเลขมาร์จิ้นเป็นสีเทาพร้อม ? สีเหลืองอำพัน แปลว่ายังไม่ได้ทำโมเดลสำหรับ venue นั้น — สิ่งที่คุณเห็นคือสูตรของ Bybit ที่เอาไปใช้กับขาของ exchange อื่น เก็บไว้เป็นค่าชั่วคราวแทนที่จะปล่อยว่าง ให้กำหนดขนาดสถานะจากหน้าจอมาร์จิ้นของ exchange เอง

source: backend/margin.py · margin_modelled

POP is different on the Screener and the Portfolio for the same strike. They are computed from different volatility inputs: the Portfolio uses implied vol alone, the Screener blends realised vol in. When implied sits above realised — the usual state — the blend raises POP. See §4.2.

POP ของ strike เดียวกันไม่เท่ากันระหว่างหน้า Screener กับ Portfolio เพราะคำนวณจากค่าความผันผวนคนละชุด: หน้า Portfolio ใช้ความผันผวนแฝงอย่างเดียว ส่วน Screener ผสมความผันผวนที่เกิดขึ้นจริงเข้าไปด้วย เมื่อความผันผวนแฝงสูงกว่าที่เกิดขึ้นจริง ซึ่งเป็นสภาพปกติ การผสมจะทำให้ POP สูงขึ้น ดูหัวข้อ 4.2

source: backend/atr.py · blended_sigma

The Calculator's fee does not match what my exchange charged. On a Deribit or Binance account it will not: that tab computes Bybit's fee model on every venue, and the premium caps differ. This is a known open defect, not a rounding difference — the Portfolio's real closes use the correct venue's fees.

ค่าธรรมเนียมในหน้า Calculator ไม่ตรงกับที่ exchange เก็บจริง ในบัญชี Deribit หรือ Binance มันจะไม่ตรง: แท็บนั้นคำนวณด้วยโมเดลค่าธรรมเนียมของ Bybit บนทุก venue และเพดานพรีเมียมไม่เท่ากัน นี่เป็นบั๊กที่รู้อยู่และยังไม่ได้แก้ ไม่ใช่ความคลาดเคลื่อนจากการปัดเศษ — การปิดสถานะจริงในหน้า Portfolio ใช้ค่าธรรมเนียมของ venue ที่ถูกต้อง

source: docs/BETA_TEST_REPORT.md §9

My contract count is 100× out after a CSV import. qty is a coin amount, not a contract count, and Bybit's contract is 0.01 BTC. An export that gave you contracts needs multiplying by the contract size first (§2.2). This exact class of mistake once printed a real 0.9-contract book as 90.

จำนวนสัญญาผิดไป 100 เท่าหลังนำเข้า CSV qty คือปริมาณเหรียญ ไม่ใช่จำนวนสัญญา และสัญญาของ Bybit เท่ากับ 0.01 BTC ถ้าไฟล์ที่ export มาให้เป็นจำนวนสัญญา ต้องคูณด้วยขนาดสัญญาก่อน (ดู 2.2) ความผิดพลาดประเภทนี้เคยทำให้พอร์ตที่มี 0.9 สัญญาจริง แสดงผลเป็น 90 มาแล้ว

source: backend/portfolio.py · _contracts

A per-contract figure looks 10× off on ETH. That was a real defect, once: a hand-copied contract size sat wrong for a long time and nothing could notice, because every calculation used the same wrong constant on both sides. The venue facts are now re-derived from each exchange's live instrument list. If you see it again, it is worth reporting — the check that would catch it exists.

ตัวเลขต่อสัญญาของ ETH ดูผิดไปสิบเท่า เคยเป็นบั๊กจริงมาแล้ว: ขนาดสัญญาที่คัดลอกมาด้วยมือผิดอยู่นาน และไม่มีอะไรจับได้ เพราะทุกการคำนวณใช้ค่าคงที่ที่ผิดตัวเดียวกันทั้งสองฝั่ง ตอนนี้ข้อเท็จจริงของ venue ถูกดึงมาตรวจใหม่จากรายการสินค้าจริงของแต่ละ exchange ถ้าเจออีกควรแจ้ง — เพราะกลไกที่จะจับมันมีอยู่แล้ว

source: backend/venue_check.py

7.2 A screen is empty when it should not be 7.2 หน้าจอว่างเปล่าทั้งที่ไม่ควรว่าง

The Screener returns nothing for a strategy I know is possible. Check for the badge. A chain can be visible and not shortable — Binance permits naked shorts on BTC and ETH only — and that is a fact about the exchange rather than a failure here. The other cause is filters: widen the DTE window or the delta range.

Screener ไม่แสดงอะไรเลยสำหรับกลยุทธ์ที่ฉันรู้ว่าทำได้ ให้ดูที่ป้ายกำกับ chain อาจมองเห็นได้แต่ขาย short ไม่ได้ — Binance อนุญาตให้ขาย naked เฉพาะ BTC และ ETH เท่านั้น — และนั่นคือข้อเท็จจริงของ exchange ไม่ใช่ความผิดพลาดของที่นี่ อีกสาเหตุคือตัวกรอง: ให้ขยาย DTE window หรือช่วง delta

source: backend/capability.py

The exchange margin panel is missing, or a call returns 403. That account has no credentials loaded — either none were saved, or the vault is locked and needs the passphrase. A 403 here is the correct answer to "read my account without a key"; it is not the dashboard being broken, and it is deliberately not a 500.

แผงมาร์จิ้นของ exchange หายไป หรือมีการเรียกที่ตอบ 403 บัญชีนั้นยังไม่มี credential โหลดอยู่ — อาจยังไม่ได้บันทึก หรือ vault ล็อกอยู่และต้องกรอกรหัสผ่าน 403 ตรงนี้คือคำตอบที่ถูกต้องของคำขอ "อ่านบัญชีฉันโดยไม่มี key" ไม่ใช่แดชบอร์ดพัง และตั้งใจไม่ให้เป็น 500

source: docs/BETA_TEST_REPORT.md §2

A Deribit total reads 0.00, or a grand total is blank. Two different things, both deliberate. A coin ledger rounded to two decimals prints a real 0.00039 BTC of turnover as nothing, so coin amounts get more decimals. And where a book holds more than one currency there is no single total to show, so it is left out rather than converted at a rate nobody chose (§4.4).

ยอดรวมของ Deribit ขึ้นเป็น 0.00 หรือยอดรวมใหญ่ว่างเปล่า เป็นคนละเรื่องกัน และตั้งใจทั้งคู่ บัญชีสกุลเหรียญที่ปัดเป็นทศนิยมสองตำแหน่ง จะทำให้ยอดจริง 0.00039 BTC กลายเป็นศูนย์ จำนวนเหรียญจึงแสดงทศนิยมมากกว่า ส่วนพอร์ตที่มีมากกว่าหนึ่งสกุลเงินนั้นไม่มียอดรวมเดียวให้แสดง จึงเว้นไว้ แทนที่จะแปลงค่าด้วยอัตราที่ไม่มีใครเลือก (ดู 4.4)

source: backend/portfolio.py · _premium_by_ccy

7.3 Something is showing the wrong thing, or nothing happens 7.3 บางอย่างแสดงผิด หรือไม่มีอะไรเกิดขึ้น

A backtest result looks like it is for the wrong asset. It probably is. A result is per-asset and the panel keeps its last one when you switch assets. The panel header names the asset the result belongs to — read that name before believing the numbers under it. Known, on the roadmap, not yet fixed.

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

source: ROADMAP.md

The app looks unchanged after an update. index.html is served without cache headers, so your browser can hold the previous bundle and show you old UI over new code. Hard-refresh before concluding the update did nothing.

แอปดูไม่เปลี่ยนเลยหลังอัปเดต ไฟล์ index.html ถูกส่งมาโดยไม่มี cache header เบราว์เซอร์ของคุณจึงอาจเก็บ bundle เดิมไว้ แล้วแสดง UI เก่าทับโค้ดใหม่ ให้กด hard-refresh ก่อนจะสรุปว่าการอัปเดตไม่ได้ทำอะไร

source: deploy/DIGITALOCEAN.md §12.4

I changed account and the header still names the old exchange. Switch accounts with the account menu rather than by reloading a URL. The menu re-points the header, the credential labels, the asset chips and the import button together; a reload that skips it can leave one of them behind. This was checked and recorded as not a defect, so it is worth knowing rather than re-reporting.

ฉันเปลี่ยนบัญชีแล้ว แต่หัวเรื่องยังขึ้นชื่อ exchange เดิม ให้สลับบัญชีด้วยเมนูบัญชี ไม่ใช่ด้วยการโหลด URL ใหม่ เมนูจะเปลี่ยนหัวเรื่อง ป้ายชื่อช่องกรอก credential ชิปสินทรัพย์ และปุ่มนำเข้าไปพร้อมกัน ส่วนการโหลดใหม่ที่ข้ามขั้นตอนนั้นอาจทิ้งบางอย่างไว้ข้างหลัง เรื่องนี้ตรวจแล้วและบันทึกไว้ว่าไม่ใช่บั๊ก จึงควรรู้ไว้ ไม่ใช่แจ้งซ้ำ

source: docs/BETA_TEST_REPORT.md §4

7.4 Things that will never happen, by design 7.4 สิ่งที่จะไม่เกิดขึ้นเลย โดยการออกแบบ

No alert arrived while I was away. None will. Serving one would mean reading your exchange key while you are not there, which is exactly what the custody design forecloses (§3.1). The absence is the feature, and it is the price of the server not being able to read your key.

ไม่มีการแจ้งเตือนมาเลยตอนที่ฉันไม่อยู่ และจะไม่มี การส่งแจ้งเตือนแปลว่าต้องอ่าน key ของคุณตอนคุณไม่อยู่ ซึ่งเป็นสิ่งที่การออกแบบการเก็บรักษา key ปิดตายไว้ (ดู 3.1) การไม่มีนั่นแหละคือฟีเจอร์ และเป็นราคาที่แลกมากับการที่เซิร์ฟเวอร์อ่าน key ของคุณไม่ได้

source: backend/vault.py

I forgot the vault passphrase. Enter the keys again. There is no recovery path and deliberately no code that could be one — nobody, including whoever runs the server, can reset it for you.

ฉันลืมรหัสผ่าน vault ให้กรอก key ใหม่ ไม่มีช่องทางกู้คืน และตั้งใจไม่มีโค้ดที่จะทำอย่างนั้นได้ — ไม่มีใคร รวมถึงคนที่ดูแลเซิร์ฟเวอร์ ที่รีเซ็ตให้คุณได้

source: backend/vault.py

Nothing I do here reaches my exchange as an order. There is no order-placement code in any of the exchange clients, and the test suite asserts that absence structurally. Adding a leg, closing a leg, running a stress test — all of it writes to this dashboard's own records only.

ไม่มีสิ่งใดที่คุณทำที่นี่แล้วจะไปถึง exchange ในรูปคำสั่งซื้อขาย ในโค้ดที่ติดต่อ exchange ไม่มีส่วนส่งคำสั่งซื้อขายอยู่เลย และชุดทดสอบตรวจสอบการไม่มีอยู่นั้นในเชิงโครงสร้าง การเพิ่มขา ปิดขา หรือรัน stress test — ทั้งหมดเขียนลงในบันทึกของแดชบอร์ดนี้เท่านั้น

source: backend/binance_private_client.py

If what you hit is not on this list, it is worth reporting. Say which exchange the account is on, which tab, and what the number or message was — the venue is the first thing that narrows it, and it is the thing most often left out.

ถ้าสิ่งที่คุณเจอไม่มีในรายการนี้ ควรแจ้ง ให้บอกว่าบัญชีอยู่บน exchange ไหน แท็บอะไร และตัวเลขหรือข้อความว่าอะไร — เพราะ venue คือสิ่งแรกที่ช่วยจำกัดขอบเขตปัญหา และเป็นสิ่งที่คนลืมบอกบ่อยที่สุด