Closed arealclimber closed 10 months ago
API 回傳資料
https://api.tidebit-defi.com/balance-sheet?date=2023-09-05
{
"success": true,
"code": "00000000",
"reason": "ERROR_MESSAGE.SUCCESS",
"data": {
"id": "balance_sheet-1693872000_1693958399",
"date": "2023-09-04T16:00:00.000Z",
"assets": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"details": {
"accountsReceivable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cryptocurrency": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"liabilities": {
"totalAmountFairValue": 23917.334354212664,
"weightedAverageCost": 23917.334354212664,
"details": {
"accountsPayable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"userDeposit": {
"totalAmountFairValue": 23917.334354212664,
"weightedAverageCost": 23917.334354212664,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "23917.3343542126655739394",
"fairValue": "23917.3343542126655739394"
}
}
}
}
},
"equity": {
"totalAmountFairValue": 5099.574867777336,
"weightedAverageCost": 5099.574867777336,
"details": {
"retainedEarnings": {
"totalAmountFairValue": 5099.574867777336,
"weightedAverageCost": 5099.574867777336,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "5099.574867777335984981",
"fairValue": "5099.574867777335984981"
}
}
},
"capital": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
}
}
}
(exchange snapshot 每個用戶的金額變化)
從區塊鏈上拿資料驗證,現階段先不驗證
user deposit: 用戶在平台上的錢=有史以來的入金-出金+CFD利潤-CFD損失
其中 CFD 的獲利與損失來自已經關倉的單,而已經關倉的單子可以透過 referenceId 找到 openPrice, closePrice, amount, typeOfPosition 來找到這個單子獲利或損失的數字
資料在 bolttransactions 上
retained earning: 累積的未分配盈餘
盈餘都未分配,數字應為所有收入的加總,其中收入包含加密貨幣的數量乘以財報結算時的匯率:
Trading fee: 手續費率乘以標的資產數量=0
Spread Fee: 開倉價格、關倉價格跟市價(當下的價格)的差距乘以標的資產數量
Withdrawal fee: 出金手續費乘以標的資產數量=0
Deposit fee: 入金手續費乘以標的資產數量
Liquidation fee: 強制平倉手續費率乘以標的資產數量
Guaranteed stop loss fee: bolttransactions上的 guaranteedStopFee
spreadFee 折衷的估算辦法
const spreadFee = +SafeMath.plus(
Math.abs(
+SafeMath.mult(
SafeMath.mult(cfd.openPrice, cfd.amount),
this.STOP_FEE_BASE,
),
),
cfd.closePrice && SafeMath.gt(cfd.closePrice, 0)
? Math.abs(
+SafeMath.mult(
SafeMath.mult(cfd.closePrice, cfd.amount),
this.STOP_FEE_BASE,
),
)
: 0,
);
taking 0.5 hr 用 Python 整理 balance snapshot 資料
import json
import csv
from datetime import datetime
# 讀取 JSON 檔案
with open("./origin/bolttransactions_8:5-9:5.json", "r") as file:
data = json.load(file)
# 指定要取得的欄位名稱
fields = ["_id", "apply_data", "created_at", "order_type", "receipt", "user_address"]
# 提取所需的資料
extracted_data = [{field: item.get(field) for field in fields} for item in data]
print(extracted_data)
# 提取所有的 balanceSnapshot
balance_snapshots = [
json.loads(item.get("receipt", "{}")).get("balanceSnapshot", [])[0]
for item in data
if "balanceSnapshot" in item.get("receipt", "{}")
]
# 將 userAddress 轉換為字符串
for snapshot in balance_snapshots:
snapshot["userAddress"] = str(snapshot.get("userAddress", ""))
# 獲取當前的日期和時間
current_time = datetime.now().strftime("%m-%d_%H:%M")
# 將 balance_snapshots 儲存到 CSV 檔案中,並在檔名中加入當前的日期和時間
with open(
f"./outcome/raw_balance_snapshot_{current_time}.csv", "w", newline=""
) as csvfile:
fieldnames = [
"id",
"userAddress",
"currency",
"available",
"locked",
"blockNumber",
"createdAt",
"updatedAt",
]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for snapshot in balance_snapshots:
writer.writerow(snapshot)
remaining 3 hrs
none
taking 6 hrs 整理資料 remaining 3 hrs
後續產生 excel 跟 Python 記錄在 https://github.com/CAFECA-IO/BAIFA/issues/211
0x8fe6df252cac7e29219c754941a86a20
0x489c45286bb6b02422ed5b03717ad38f
0xe3baf1c17c4cb545c7732cf33da888f9
0x776b78bf74896e615ab6b89a87090f27
0x79c5c0070c225103229e7a5c67bba01d
0xce7893a8b04a98318efd1f505cfae200
0x8e35534fc45a390067165f6a3f02c031
0xfd09f18e886a9d9bec2336b7502d5580
0xc5169e31967fe66aa84f9fa0a3205950
0xd201f4de68d05936b919ccdc392fea1a
0x17045238850c57c61a0f9e4595caf9d0
0xec48d225cfe58a19cd256bb7caf14ce7
db_userDepositsAmount 跟 API 的 liabilities userDeposit totalAmountFairValue 不一致
db_retainedEarningsAmount 跟 API 的 equity retainedEarnings totalAmountFairValue 不一致
remaining
API 回傳資料
https://api.tidebit-defi.com/balance-sheet?date=2023-09-05
{
"success": true,
"code": "00000000",
"reason": "ERROR_MESSAGE.SUCCESS",
"data": {
"id": "balance_sheet-1693872000_1693958399",
"date": "2023-09-04T16:00:00.000Z",
"assets": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"details": {
"accountsReceivable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cryptocurrency": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"liabilities": {
"totalAmountFairValue": 29380.45962,
"weightedAverageCost": 29380.45962,
"details": {
"accountsPayable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"userDeposit": {
"totalAmountFairValue": 29380.45962,
"weightedAverageCost": 29380.45962,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "29380.45961999999999963",
"fairValue": "29380.45961999999999963"
}
}
}
}
},
"equity": {
"totalAmountFairValue": 1645.56418,
"weightedAverageCost": 1645.56418,
"details": {
"retainedEarnings": {
"totalAmountFairValue": 1645.56418,
"weightedAverageCost": 1645.56418,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "1645.56418000000000037",
"fairValue": "1645.56418000000000037"
}
}
},
"capital": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
}
}
}
將spread fee 不一致以及 close/open price 跟 quotation price資訊標注在 remarks 欄位
有出入的資料
balance sheet
spread fee 不一致的資料
- referenceId:
0x8fe6df252cac7e29219c754941a86a20
- referenceId:
0x489c45286bb6b02422ed5b03717ad38f
referenceId:
0xe3baf1c17c4cb545c7732cf33da888f9
- 關倉時沒有拿到quotation spotPrice,所以我這邊依照開倉的spotPrice 算出來spread_fee 為 0.04*(26050.3-26042.82)=0.3,從DB拿來的 spreadFee 則為1.084
開倉
apply_data
{"instId":"BTC-USDT","targetAsset":"BTC","unitAsset":"USDT","amount":0.04,"leverage":5,"margin":{"asset":"USDT","amount":208.47},"liquidationTime":1693276399,"orderType":"CFD","operation":"CREATE","typeOfPosition":"SELL","quotation":{"instId":"BTC-USDT","targetAsset":"BTC","unitAsset":"USDT","typeOfPosition":"SELL","price":"26042.82","spotPrice":"26050.3","deadline":1692671599,"signature":"0x1331e7c559952fab8c1905f664805957"},"price":"26042.82","liquidationPrice":31251.39,"fee":"0","guaranteedStop":false,"guaranteedStopFee":0,"createTimestamp":1692671539}
關倉
apply_data
{"orderType":"CFD","operation":"CLOSE","referenceId":"0xe3baf1c17c4cb545c7732cf33da888f9","quotation":{"instId":"BTC-USDT","targetAsset":"BTC","unitAsset":"USDT","typeOfPosition":"BUY","price":"25966.92"},"closePrice":"25966.92","closedType":"BY_USER"}
receipt
{….., "orderSnapshot":{"orderType":"CFD","id":"0xe3baf1c17c4cb545c7732cf33da888f9","txhash":"0x9a54e1bcd2cbeacfbd7ed960d979d27b","orderStatus":"PROCESSING","state":"CLOSED","instId":"BTC-USDT","userAddress":"0x73…524A","targetAsset":"BTC","unitAsset":"USDT","margin":{"amount":"208.47","asset":"USDT"},"spotPrice":"26050.3","openPrice":"26042.82","amount":"0.04","fee":"0","typeOfPosition":"SELL","leverage":5,"guaranteedStop":false,"liquidationPrice":"31251.39","liquidationTime":1693276399,"share":false,"updatedTimestamp":1693205870,"createTimestamp":1692671547,"guaranteedStopFee":"0","closePrice":"25966.92","closedType":"BY_USER","closeTimestamp":1693205870,"forcedClose":false,"pnl":{"type":"PROFIT","value":"3.04"},"spreadFee":"1.084"}}
- referenceId:
0x776b78bf74896e615ab6b89a87090f27
- referenceId:
0x79c5c0070c225103229e7a5c67bba01d
- referenceId:
0xce7893a8b04a98318efd1f505cfae200
- referenceId:
0x8e35534fc45a390067165f6a3f02c031
openPrice and closePrice vs quotation price
- openPrice 應該與開倉時 quotation 的 price 一致,closePrice 應該與關倉時 quotaion 的 price 一致
- referenceId:
0xfd09f18e886a9d9bec2336b7502d5580
- closePrice 跟 quotation 有出入
0xc5169e31967fe66aa84f9fa0a3205950
- closePrice 跟 quotation 有出入
0xd201f4de68d05936b919ccdc392fea1a
- closePrice 跟 quotation 有出入
0x17045238850c57c61a0f9e4595caf9d0
- openPrice 跟 quotation 有出入
0xec48d225cfe58a19cd256bb7caf14ce7
- closePrice 跟 quotation 有出入
balance sheet 的 userDeposit 有出入 (驗算以 USDT 匯率為1來計算)
db_userDepositsAmount 跟 API 的 liabilities userDeposit totalAmountFairValue 不一致
balance sheet 的 retainedEarnings 有出入 (驗算以 USDT 匯率為1來計算)
db_retainedEarningsAmount 跟 API 的 equity retainedEarnings totalAmountFairValue 不一致
{
"success": true,
"code": "00000000",
"reason": "ERROR_MESSAGE.SUCCESS",
"data": {
"id": "balance_sheet-1693872000_1693958399",
"date": "2023-09-04T16:00:00.000Z",
"assets": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"details": {
"accountsReceivable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cryptocurrency": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"nonAssets": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"details": {
"accountsReceivable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"liabilities": {
"totalAmountFairValue": 515.624737074,
"weightedAverageCost": 515.624737074,
"details": {
"accountsPayable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"userDeposit": {
"totalAmountFairValue": 515.624737074,
"weightedAverageCost": 515.624737074,
"breakdown": {
"ETH": {
"name": "ETH",
"amount": "3.56",
"fairValue": "5749.2398"
},
"USDT": {
"name": "USDT",
"amount": "-4185.32906292599999",
"fairValue": "-4185.32906292599999"
},
"BTC": {
"name": "BTC",
"amount": "-0.04",
"fairValue": "-1048.286"
}
}
}
}
},
"equity": {
"totalAmountFairValue": 27.9951,
"weightedAverageCost": 27.9951,
"details": {
"retainedEarnings": {
"totalAmountFairValue": 27.9951,
"weightedAverageCost": 27.9951,
"breakdown": {
"ETH": {
"name": "ETH",
"amount": "0",
"fairValue": "0"
},
"USDT": {
"name": "USDT",
"amount": "27.9951",
"fairValue": "27.9951"
},
"BTC": {
"name": "BTC",
"amount": "0",
"fairValue": "0"
}
}
},
"capital": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
}
}
}
userDeposit 相差57倍 retainedEarnings 相差27倍
Item | from API | from DB |
---|---|---|
userDeposit | 515.624737074 | 29470.56572199 |
retainedEarnings | 27.9951 | 781.556499999999 |
買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 * exchange rate USDT (unit asset),匯率用quotation price accountPayable(以後拆分科目): 20 USDT+1ETH,匯率用 quotation price
買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH (targeted asset),匯率用quotation price accountPayable(以後拆分科目): 20 USDT+1ETH,匯率用 quotation price
買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 USDT,匯率用quotation price accountPayable(以後拆分科目): 20USDT+1ETH,匯率用 quotation price 的
買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH,匯率用quotation price accountPayable(以後拆分科目): 20USDT+1ETH,匯率用 quotation price 的
這裡是不是需要分開討論 Create CFD 跟 Close CFD 的情況: 買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 USDT,匯率用quotation price accountPayable(以後拆分科目): (Create: +20 USDT| Close: -20 USDT) + 1ETH,匯率用 quotation price 的
買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH,匯率用quotation price accountPayable(以後拆分科目): (Create: +20 USDT| Close: -20 USDT) + 100 USDT [這裡應該是 100 USDT 而不是 1 ETH],匯率用 quotation price 的
買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 USDT,匯率用quotation price accountPayable(以後拆分科目): 20USDT+1ETH,匯率用 quotation price 的 買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH,匯率用quotation price accountPayable(以後拆分科目): 20USDT+1ETH,匯率用 quotation price 的
這裡是不是需要分開討論 Create CFD 跟 Close CFD 的情況: 買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 USDT,匯率用quotation price accountPayable(以後拆分科目): (Create: +20 USDT| Close: -20 USDT) + 1ETH,匯率用 quotation price 的
買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH,匯率用quotation price accountPayable(以後拆分科目): (Create: +20 USDT| Close: -20 USDT) + 100 USDT [這裡應該是 100 USDT 而不是 1 ETH],匯率用 quotation price 的
重新整理將情況分成 create CFD 跟 close CFD,並算上匯率,create 跟 close 應該要能夠對消
買漲1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 100 * exchange rate USDT (unit asset),匯率用quotation price accountPayable(以後拆分科目): 20 USDT+1ETH,匯率用 quotation price
買漲1 ETH | Create | Close |
---|---|---|
accountReceivable | +100 USDT | -100 USDT |
accountPayable | +20 USDT +1 ETH | -20 USDT -1 ETH |
買跌1 ETH(價值 100 USDT), 保證金 20 USDT accountReceivable: 1 ETH (targeted asset),匯率用quotation price accountPayable(以後拆分科目): 20 USDT+100 * exchange rate USDT,匯率用 quotation price
買跌1 ETH | Create | Close |
---|---|---|
accountReceivable | 1 ETH | -1 ETH |
accountPayable | +20 USDT + 100 USDT | -20 USDT - 100 USDT |
在期貨或槓桿交易中,"開倉"意味著進入一個新的交易,而"關倉"意味著退出或抵消之前的開倉交易。
對於情況一:
對於情況二:
根據上述分析,提供下列對於情況一和情況二的表格中。
情況一 | 買漲1 ETH Create | 買跌1 ETH Close |
---|---|---|
accountReceivable | +100 USDT | +1 ETH |
accountPayable | +20 USDT +1 ETH | -20 USDT +100 USDT |
情況二 | 買跌 1 ETH Create | 買漲1 ETH Close |
---|---|---|
accountReceivable | 1 ETH | + 100 USDT |
accountPayable | +20 USDT + 100 USDT | -20 USDT + 1ETH |
- 情況一:開倉時做多(買漲)ETH,關倉時做空(買跌)以抵消開倉的倉位。
- 情況二:開倉時做空(買跌)ETH,關倉時做多(買漲)以抵消開倉的倉位。
在期貨或槓桿交易中,"開倉"意味著進入一個新的交易,而"關倉"意味著退出或抵消之前的開倉交易。
對於情況一:
- 開倉時做多1 ETH,相當於借款購買1 ETH,所以應付帳款增加1 ETH。同時,按照當時的報價價格,我們應該收到相應的USDT,所以應收帳款增加100 USDT。
- 關倉時,用戶做空1 ETH以抵消開倉的多頭倉位,這意味著用戶售出之前購買的1 ETH,並獲得等價的USDT,所以應收帳款增加1 ETH,並且因為我們要將之前的保證金返回,應付帳款減少20 USDT。
對於情況二:
- 開倉時做空1 ETH,相當於用戶賣出1 ETH並獲得100 USDT的貨幣,所以應收帳款增加1 ETH。
- 關倉時,用戶做多1 ETH以抵消開倉的空頭倉位,這意味著用戶購買1 ETH以還原您之前售出的ETH,並支付相應的USDT,所以應收帳款增加100 USDT。
根據上述分析,提供下列對於情況一和情況二的表格中。
情況一 買漲1 ETH Create 買跌1 ETH Close accountReceivable +100 USDT +1 ETH accountPayable +20 USDT +1 ETH -20 USDT +100 USDT 情況二 買跌 1 ETH Create 買漲1 ETH Close accountReceivable 1 ETH + 100 USDT accountPayable +20 USDT + 100 USDT -20 USDT + 1ETH
我這個應該不對,這樣會隨著交易增加,accountReceivable 跟 accountPayable 都持續增加沒有衝銷
- 情況一:開倉時做多(買漲)ETH,關倉時做空(買跌)以抵消開倉的倉位。
- 情況二:開倉時做空(買跌)ETH,關倉時做多(買漲)以抵消開倉的倉位。
在期貨或槓桿交易中,"開倉"意味著進入一個新的交易,而"關倉"意味著退出或抵消之前的開倉交易。 對於情況一:
- 開倉時做多1 ETH,相當於借款購買1 ETH,所以應付帳款增加1 ETH。同時,按照當時的報價價格,我們應該收到相應的USDT,所以應收帳款增加100 USDT。
- 關倉時,用戶做空1 ETH以抵消開倉的多頭倉位,這意味著用戶售出之前購買的1 ETH,並獲得等價的USDT,所以應收帳款增加1 ETH,並且因為我們要將之前的保證金返回,應付帳款減少20 USDT。
對於情況二:
- 開倉時做空1 ETH,相當於用戶賣出1 ETH並獲得100 USDT的貨幣,所以應收帳款增加1 ETH。
- 關倉時,用戶做多1 ETH以抵消開倉的空頭倉位,這意味著用戶購買1 ETH以還原您之前售出的ETH,並支付相應的USDT,所以應收帳款增加100 USDT。
根據上述分析,提供下列對於情況一和情況二的表格中。 情況一 買漲1 ETH Create 買跌1 ETH Close accountReceivable +100 USDT +1 ETH accountPayable +20 USDT +1 ETH -20 USDT +100 USDT 情況二 買跌 1 ETH Create 買漲1 ETH Close accountReceivable 1 ETH + 100 USDT accountPayable +20 USDT + 100 USDT -20 USDT + 1ETH
我這個應該不對,這樣會隨著交易增加,accountReceivable 跟 accountPayable 都持續增加沒有衝銷
應收帳款跟應付帳款在 close 的時候應該就結清了,我們要給用戶的錢以及用戶應該還我們的錢都在關倉的時候還給對方,不會隨著交易增加,結清之後除了 accountReceivable 跟 accountPayable 被沖銷(其實不一定會完全沖銷,因為 create 跟 close 時的 exchange rate 不一樣),userDeposits 在 create 跟 close 也會有 margin 跟 PNL 的變化,以下補充對應表格跟 balance sheet 樣板
買漲1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 100 * exchange rate USDT (unit asset)
accountPayable(以後拆分科目): 20 USDT+1ETH
買漲1 ETH | Create | Close |
---|---|---|
accountReceivable | +100 USDT | -100 USDT |
accountPayable | +20 USDT +1 ETH | -20 USDT -1 ETH |
userDeposits | -100 USDT | +100 USDT + PNL |
買跌1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 1 ETH (targeted asset)
accountPayable(以後拆分科目): 20 USDT+100 * exchange rate USDT
買跌1 ETH | Create | Close |
---|---|---|
accountReceivable | 1 ETH | -1 ETH |
accountPayable | +20 USDT + 100 USDT | -20 USDT - 100 USDT |
userDeposits | -100 USDT | +100 USDT + PNL |
- 情況一:開倉時做多(買漲)ETH,關倉時做空(買跌)以抵消開倉的倉位。
- 情況二:開倉時做空(買跌)ETH,關倉時做多(買漲)以抵消開倉的倉位。
在期貨或槓桿交易中,"開倉"意味著進入一個新的交易,而"關倉"意味著退出或抵消之前的開倉交易。 對於情況一:
- 開倉時做多1 ETH,相當於借款購買1 ETH,所以應付帳款增加1 ETH。同時,按照當時的報價價格,我們應該收到相應的USDT,所以應收帳款增加100 USDT。
- 關倉時,用戶做空1 ETH以抵消開倉的多頭倉位,這意味著用戶售出之前購買的1 ETH,並獲得等價的USDT,所以應收帳款增加1 ETH,並且因為我們要將之前的保證金返回,應付帳款減少20 USDT。
對於情況二:
- 開倉時做空1 ETH,相當於用戶賣出1 ETH並獲得100 USDT的貨幣,所以應收帳款增加1 ETH。
- 關倉時,用戶做多1 ETH以抵消開倉的空頭倉位,這意味著用戶購買1 ETH以還原您之前售出的ETH,並支付相應的USDT,所以應收帳款增加100 USDT。
根據上述分析,提供下列對於情況一和情況二的表格中。 情況一 買漲1 ETH Create 買跌1 ETH Close accountReceivable +100 USDT +1 ETH accountPayable +20 USDT +1 ETH -20 USDT +100 USDT 情況二 買跌 1 ETH Create 買漲1 ETH Close accountReceivable 1 ETH + 100 USDT accountPayable +20 USDT + 100 USDT -20 USDT + 1ETH
我這個應該不對,這樣會隨著交易增加,accountReceivable 跟 accountPayable 都持續增加沒有衝銷
應收帳款跟應付帳款在 close 的時候應該就結清了,我們要給用戶的錢以及用戶應該還我們的錢都在關倉的時候還給對方,不會隨著交易增加,結清之後除了 accountReceivable 跟 accountPayable 被沖銷(其實不一定會完全沖銷,因為 create 跟 close 時的 exchange rate 不一樣),userDeposits 在 create 跟 close 也會有 margin 跟 PNL 的變化,以下補充對應表格跟 balance sheet 樣板
買漲1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 100 * exchange rate USDT (unit asset)
accountPayable(以後拆分科目): 20 USDT+1ETH
買漲1 ETH Create Close accountReceivable +100 USDT -100 USDT accountPayable +20 USDT +1 ETH -20 USDT -1 ETH userDeposits -100 USDT +100 USDT + PNL 買跌1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 1 ETH (targeted asset)
accountPayable(以後拆分科目): 20 USDT+100 * exchange rate USDT
買跌1 ETH Create Close accountReceivable 1 ETH -1 ETH accountPayable +20 USDT + 100 USDT -20 USDT - 100 USDT userDeposits -100 USDT +100 USDT + PNL
我這邊敘述有誤,locked 的值不會影響 userDeposits,下一版再實作 所以刪掉 userDeposit 的表格如以下
買漲1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 100 * exchange rate USDT (unit asset)
accountPayable(以後拆分科目): 20 USDT+1ETH
買漲1 ETH | Create | Close |
---|---|---|
accountReceivable 應收帳款 | +100 USDT | -100 USDT |
accountPayable 應付帳款 | +20 USDT +1 ETH | -20 USDT -1 ETH |
買跌1 ETH(價值 100 USDT), 保證金 20 USDT,匯率用quotation price
accountReceivable: 1 ETH (targeted asset)
accountPayable(以後拆分科目): 20 USDT+100 * exchange rate USDT
買跌1 ETH | Create | Close |
---|---|---|
accountReceivable 應收帳款 | 1 ETH | -1 ETH |
accountPayable 應付帳款 | +20 USDT + 100 USDT | -20 USDT - 100 USDT |
https://api.tidebit-defi.com/balance-sheet?date=2023-09-05
{
"success": true,
"code": "00000000",
"reason": "ERROR_MESSAGE.SUCCESS",
"data": {
"id": "balance_sheet-1693872000_1693958399",
"date": "2023-09-04T16:00:00.000Z",
"assets": {
"totalAmountFairValue": -2464.337454738,
"weightedAverageCost": -2464.337454738,
"details": {
"accountsReceivable": {
"totalAmountFairValue": -2464.337454738,
"weightedAverageCost": -2464.337454738,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "1726.57194526199999",
"fairValue": "1726.57194526199999"
},
"ETH": {
"name": "ETH",
"amount": "-2.24",
"fairValue": "-3658.1104"
},
"BTC": {
"name": "BTC",
"amount": "-0.02",
"fairValue": "-532.799"
}
}
},
"cryptocurrency": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"nonAssets": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"details": {
"accountsReceivable": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
},
"cashAndCashEquivalent": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
},
"liabilities": {
"totalAmountFairValue": -2572.547157664,
"weightedAverageCost": -2572.547157664,
"details": {
"accountsPayable": {
"totalAmountFairValue": -4039.707157664,
"weightedAverageCost": -4039.707157664,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "-4596.982357664",
"fairValue": "-4596.982357664"
},
"ETH": {
"name": "ETH",
"amount": "1.32",
"fairValue": "2155.6722"
},
"BTC": {
"name": "BTC",
"amount": "-0.06",
"fairValue": "-1598.397"
}
}
},
"userDeposit": {
"totalAmountFairValue": 1467.16,
"weightedAverageCost": 1467.16,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "1467.16",
"fairValue": "1467.16"
},
"ETH": {
"name": "ETH",
"amount": "0",
"fairValue": "0"
},
"BTC": {
"name": "BTC",
"amount": "0",
"fairValue": "0"
}
}
}
}
},
"equity": {
"totalAmountFairValue": 27.9951,
"weightedAverageCost": 27.9951,
"details": {
"retainedEarnings": {
"totalAmountFairValue": 27.9951,
"weightedAverageCost": 27.9951,
"breakdown": {
"USDT": {
"name": "USDT",
"amount": "27.9951",
"fairValue": "27.9951"
},
"ETH": {
"name": "ETH",
"amount": "0",
"fairValue": "0"
},
"BTC": {
"name": "BTC",
"amount": "0",
"fairValue": "0"
}
}
},
"capital": {
"totalAmountFairValue": 0,
"weightedAverageCost": 0,
"breakdown": {}
}
}
}
}
}
retained earnings 驗算方法更新
抽樣檢查
Ref: db