This is a workbook guide for GoQuant. It is used to validate that an exchange integration is bug-free and ready for client use.
- Purpose
- Expectations
- Instructions
- Exchange Testing Table
4.1 Workbook - Options Strategy Testing
5.1 Definitions
5.2 Strategies Workbook
Testing is the final line of defense before the product is shipped. If we do not test every single aspect thoroughly, the product will fail. This is the most important job in the development cycle. This guide ensures that every exchange integration and trading feature is verified before it reaches clients. Thorough testing ensures not only GoQuant’s success, but our individual success as well. If it's not tested here, it will likely break when clients use it.
- All testing must be screen recorded. No screen recording = it did not happen.
- The results must exactly match the described behavior.
- If a test fails it must be marked clearly.
- Bugs must be able to be reproduced every time
- Complete the workbook for your assigned exchange.
- For every test row:
- Mark as ✅ if behavior matches expectations
- Mark as ❌ if anything fails, stalls, or renders incorrectly
- Use the Notes column to describe any differences from what was expected.
- If there is a Bug it must be able to be reproduced, be clear with your notes
This workbook includes everything except strategies, which are documented separately due to their more technical nature from a trading perspective.
Exchange: ___________ | ||||
---|---|---|---|---|
Section | Feature | Testing Instructions | Status (✅/❌) | Notes (if not working why?) |
Authentication | Login | Confirm successful login with valid credentials. | ✅ | |
Status | Confirm exchange is operational and available in UI. | ✅ | ||
Trade — Native Trading (Spot) | Market Order | Place a BUY market order for quantity (qt) 1. Check order history, check all values are correct especially fill/order value | ✅ | No order History |
Limit Order | Place a Limit order to BUY (Set the price much lower than the market price so the order does not fill. This allows you to test the Open Orders display) | ✅ | But, Rejected order shows order placed | |
Open Order/Modify Limit order Quantity | Check Open Orders page is showing limit order correctly. Modify quantity and confirm it does so | ✅ | Still some fields are empty | |
Cancel Order | Try cancel individual order on open orders action. Also try cancel all orders | ✅ | ||
TWAP Order | Place a TWAP Order to BUY qt 20, duration: 10s, interval 2 (modify values to test other cases) | ❌ | ||
Market-Edge | Place a Market-Edge Order to BUY qt 20, duration: 20s (same thing, change values up) | ❌ | There some issuse, as order takes exponentially more time than specified during sell | |
Limit-Edge | Place a Limit-Edge Order to BUY qt 20, interval 2 | ❌ | sell order not working correctly | |
TWAP-Edge | Place a TWAP-Edge Order to BUY qt 20, duration: 20s, interval 2 | ❌ | 'error': "'<' not supported between instances of 'float' and 'NoneType'" | |
Assets Add/Clear | Go to assets tab, try the add and clear buttons make sure they work properly. (Does 100% clear actually 100% clear?) | ❌ | Can't find how to clear | |
Trade — Native Trading (Swap) | Market Order | Place a LONG market order for quantity 1, do the same for SHORT make sure that works | ||
Limit Order | Place a Limit order to LONG (Set the price much lower than the market price so the order does not fill. This allows you to test the Open Orders display) | |||
Open Order/Modify Limit order Quantity | Check Open Orders page is showing limit order correctly. Modify quantity and confirm it does so | |||
Cancel Order | Try cancel individual order on open orders action. Also try cancel all orders | |||
TWAP Order | Place a TWAP Order to LONG qt 20, duration: 10s, interval 2 | |||
Market-Edge | Place a Market-Edge Order to LONG qt 20, duration: 20s | |||
Limit-Edge | Place a Limit-Edge Order to LONG qt 20, interval 2 | |||
TWAP-Edge | Place a TWAP-Edge Order to LONG qt 20, duration: 20s, interval 2 | |||
Trade — Native Trading (Futures) | Market Order | Place a LONG market order for quantity 1 | ||
Limit Order | Place a Limit order to LONG (Set the price much lower than the market price so the order does not fill. This allows you to test the Open Orders display) | |||
Open Order/Modify Limit order Quantity | Check Open Orders page is showing limit order correctly. Modify quantity and confirm it does so | |||
Cancel Order | Try cancel individual order on open orders action. Also try cancel all orders | |||
TWAP Order | Place a TWAP Order to LONG qt 20, duration: 10s, interval 2 | |||
Market-Edge | Place a Market-Edge Order to LONG qt 20, duration: 20s | |||
Limit-Edge | Place a Limit-Edge Order to LONG qt 20, interval 2 | |||
TWAP-Edge | Place a TWAP-Edge Order to LONG qt 20, duration: 20s, interval 2 | |||
Trade — Native Trading (Options) | Market Order | Place a LONG market order for quantity 1 | ||
Limit Order | Place a Limit order to LONG (Set the price much lower than the market price so the order does not fill. This allows you to test the Open Orders display) | |||
Open Order/Modify Limit order Quantity | Check Open Orders page is showing limit order correctly. Modify quantity and confirm it does so | |||
Cancel Order | Try cancel individual order on open orders action. Also try cancel all orders | |||
TWAP Order | Place a TWAP Order to LONG qt 20, duration: 10s, interval 2 | |||
Market-Edge | Place a Market-Edge Order to LONG qt 20, duration: 20s | |||
Limit-Edge | Place a Limit-Edge Order to LONG qt 20, interval 2 | |||
Trade | Metrics | Verify that Net Asset Value, Assets Under Utilization, 24h Turnover, and 24h PnL values are accurate. | ✅ | |
Mirror Trade | Ensure the Mirror Trade button functions properly and displays all connected accounts. | |||
Ratio Trade | Select two symbols. Ensure the order type is Market or Limit. Place a BUY/LONG order and confirm successful execution. | ❌ | ||
TP/SL | Set a Take Profit (TP) slightly higher and a Stop Loss (SL) slightly lower so one will execute. Confirm execution. Also test with both $ and % values, and with wider gaps to ensure they do not execute prematurely. | ✅ | ||
Execute Optimally | Click the Selected Account button. Confirm it functions and displays valid values. | ❌ | ||
Portfolio – Portfolio | Chart | Change all timeframes, metric types, and individual metrics. Ensure the chart updates correctly for each combination. | ✅ | |
Selected Account | Click the Selected Account button and confirm it displays accurate account data. | ✅ | ||
Metrics | Verify that the ⓘ tooltip for metrics works. Confirm each metric value is accurate (refer to the metrics table if unsure). | ✅ | Some data are missing like slippage. | |
Portfolio – Holdings | Assets | Confirm that displayed assets are accurate. Test “Hide Small Balances” toggle. Use Add/Clear. Verify that “100% Clear” truly clears everything. | ❌ | No clear option |
Assets / Derivatives | Interact with both the Assets and Derivatives charts. Ensure values update accurately. | ✅ | ||
Open Positions | Open Positions tab should reflect all live positions with accurate values. | ✅ | ||
Liquidate Positions | Ensure an open position exists. Then click “Liquidate Positions” and confirm all positions are successfully closed. | ❌ | No actions | |
Position History | Confirm historical position values are correct, especially the Close value. | ✅ | ||
Portfolio – Post Trade Analytics | Dropdowns | Test every dropdown: Timeframe, Asset Type, Venue, Algorithm Type, and Time Window. Confirm correct filtering and result display. | ✅ | |
Charts | Ensure all charts display correct data. Switch between Avg Slippage, Avg Spread, and Avg Fill Rate. Validate values change correctly. | ❌ | No algorithm data. | |
Analysis | Test the Algorithm Analysis, Account Analysis, and Exchange Analysis tabs. Confirm each displays the correct data. | ❌ | ||
Export | Test Export for PDF and XLSX. Open exported files and confirm content is accurate and complete. | ❌ | ||
Portfolio – Wallet | Assets | Confirm chart displays accurate assets and their values. | ||
Transfers | Verify the Transfers tab is functional. | |||
Settlements | Ensure the Settlements tab loads and displays settlement history correctly. | |||
Wallets | Confirm correct symbols, wallet names, and balances are displayed. | |||
Wallets – Action | Test Details, Deposit, Withdraw, and Transfer buttons. Confirm available balance is correct for each action. Click “All” and check that the total matches the displayed balance. | |||
Orderbook | Verify the Orderbook works for multiple symbols. Enable consolidated mode and confirm it reflects data from all selected exchanges. | |||
Data | Data Charts | Confirm charts update when changing symbol or timeframe. Add another symbol and verify chart updates accordingly. | ||
Trade – Multi-Leg Trading | Execution across legs | Submit a two-leg strategy. Confirm both legs execute. Also test 1-leg and 3-leg combinations using various symbols and conditions. |
In the Trade-Strategies section, each strategy must be evaluated across three criteria:
- Is the payoff chart correct, and does it respond when values are changed?
- Is the heatmap correct, and does it respond when values are changed?
- Does the strategy execute the order (does the order go through)?
While testing:
- Change inputs such as strike prices, quantities, expiration dates, and whether it's a call or put
- Switch between BTC and ETH symbols using the symbol selector
- Try strike prices both above and below the current market price to see how the chart and heatmap react
- Use different expiry dates and confirm the chart adjusts correctly
Symbol: BTC-USD-250510-106000-C
This breaks down as:
BTC
: The underlying asset (Bitcoin)USD
: The quote currency250510
: Expiry date in YYMMDD format → May 10, 2025106000
: Strike price (see below)C
: Call option (useP
for a Put)
Price:
This is the amount you are willing to pay per contract. In most cases, this is also called the premium. It is not the market price of BTC, it’s how much the option costs.
Example: If you enter Price = 1
, you're paying 1 unit of quote currency (e.g. $1) per contract.
Strike Price: The price at which you have the right to buy or sell the asset in the future.
- For a Call, it’s the price you can buy at
- For a Put, it’s the price you can sell at
This value is fixed per option and chosen when selecting the option symbol.
Max Loss:
The most money you can lose on the strategy. In simple strategies (like Long Call or Long Put), this is just the premium paid (price × quantity).
If Max Loss shows as -100%, it means you could lose your entire premium.
Break-even:
The price the asset needs to reach at expiry for you to not lose money.
- For a Call, it’s: Strike + Premium
- For a Put, it’s: Strike – Premium
You need to test whether this value updates correctly when you change inputs.
Strategies | Payoff Chart(✅/❌) | Heatmap(✅/❌) | Execution(✅/❌) | Notes |
---|---|---|---|---|
Long Call | ||||
Long Put | ||||
Bull Call Spread | ||||
Bear Call Spread | ||||
Bull Put Spread | ||||
Bear Put Spread | ||||
Long Straddle | ||||
Short Straddle | ||||
Long Strangle | ||||
Short Strangle | ||||
Bullish Risk Reversal | ||||
Bearish Risk Reversal | ||||
Iron Condor (Credit Spread) | ||||
Iron Condor (Debit Spread) | ||||
Long Calendar Spread | ||||
Long Put Calendar Spread | ||||
Short Calendar Spread | ||||
Short Put Calendar Spread |