okex合约算法

2023-10-21 17:40
文章标签 算法 合约 okex

本文主要是介绍okex合约算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

全仓保证金率=账户权益 /(仓位大小+挂单冻结保证金杠杆)
账户权益=客户存入金额+已实现盈亏+未实现盈亏。
可用保证金=账户权益-持仓张数
面值/(最新标记价格*杠杆)-挂单冻结保证金
收益率 = 收益 / 开仓时所需保证金。

收益公式
多单:合约收益=(合约面值/开仓均价-合约面值/平仓均价)*张数。
空单:合约收益=(合约面值/平仓价格-合约面值/开仓均价)*张数。

未实现盈亏
多单:合约收益=(合约面值/结算基准价-合约面值/标记价格)*张数。
空单:合约收益=(合约面值/标记价格-合约面值/计算基准价)*张数。

多仓收益= (合约面值/开仓价-合约面值/平仓价)*张数,然后用这个公式,开仓价直接改成结算价格

资金费用=仓位价值*资金费率

资金费率=Clamp(MA(((合约买一价+合约卖一价)/2-现货指数价格)/现货指数价格 - Interest), a, b)
Clamp 代表超过a取a 超过b取b
MA 这个代表上一分钟的移动平均值
Interest 代表0

已实现盈亏:上一次结算(每天香港时间16:00)至当前,用户已平仓仓位产生的盈亏,在合约结算后该合约所产生的已实现盈亏才可以提出至交易账户。

未实现盈亏:上一次结算(每天香港时间16:00)至当前,用户当前所持仓位产生的盈亏,也称浮动盈亏

平仓已实现盈亏是已经扣除过手续费 收益没有扣除手续费

合约交易最低的开仓限制:一张合约,不足一张无法下单。
币本位合约可开张数=可用保证金最新成交价格杠杆倍数/合约面值
USDT合约开仓张数=可用保证金杠杆倍数/(面值最新成交价格)
平台是有仓位档位限制,不同的合约开仓时选择的杠杆倍数不同,可开仓张数限制不同,可参照仓位档位说明。
页面显示的最大可开数量是使用最新行情价格计算的,和用户本身的委托价格有区别,所以使用页面中的张数开仓会提示风险率过高或者下单失败。

亏损大于保证金就是穿仓
标记价格达到预估强平价就会爆仓

全仓预估强平价=【(维持保证金率+对应等级合约吃单手续费率)*总开仓张数+(开多张数-开空张数)】/(总亏损/面值+开多张数/开多均价-开空张数/开空均价)

逐仓多预估强平价=(1+维持保证金率)/(1/开仓均价+固定保证金/面值/张数)
逐仓空预估强平价=(1-维持保证金率)/(1/开仓均价-固定保证金/面值/张数)

当用户触发强平后,系统强平引擎以破产价格接管平仓,产生的平仓盈余会注入风险准备金。
当用户触发强平后,如果产生穿仓损失则优先从风险准备金中抵扣,如果无法完全抵扣,则由当日所有净盈利用户参与分摊。

全仓做多破产价=多仓持仓均价-(余额+已实现盈亏)/多仓张数/面值
全仓做空破产价=空仓持仓均价+(余额+已实现盈亏)/空仓张数/面值

逐仓做多破产价=多仓持仓均价-固定保证金/多仓张数/面值
逐仓做空破产价=空仓持仓均价+固定保证金/空仓张数/面值

当用户触发强平后,系统强平引擎以破产价格接管平仓,产生的平仓盈余会注入风险准备金。
当用户触发强平后,如果产生穿仓损失则优先从风险准备金中抵扣,如果无法完全抵扣,则由当日所有净盈利用户参与分摊。

标记价格

标记价格

=现货指数价格+基差移动平均值

基差移动平均值

基差移动平均值
=移动平均值(合约中间价 - 现货指数价格)
=移动平均值((合约卖一价 + 合约买一价)/2 - 现货指数价格)

未实现盈亏计算

多仓:未实现盈亏=面值张数/开仓均价-面值张数/最新标记价格
空仓:未实现盈亏=面值张数/最新标记价格-面值张数/开仓均价

永续合约于每日香港时间16:00结算,结算价为当时的最新标记价格

平均价格

平均价格 = 合约面值 * ( 原持仓数 + 新开仓数 ) / ( 合约面值 * 原持仓数 / 原持仓均价 + 合约面值 * 新开仓数 / 新开仓成交均价 )

新开仓成交均价 = 合约面值 * 新开仓数 / ( 合约面值 * 成交价格1的合约数 / 成交价格1 + 合约面值 * 成交价格2的合约数 / 成交价格2 + … )

新开仓数 = 成交价格1的合约数 + 成交价格2的合约数 + …

保证金

全仓模式

开仓保证金=面值*张数/最新标记价格/杠杆,用户的开仓保证金将随价格变化而变动。

逐仓模式

开仓保证金=面值*张数/开仓均价/杠杆,开仓保证金固定不变。

保证金和杠杆的关系

所需保证金=仓位价值/所选杠杆倍数

初始保证金率

初始保证金率 = 1/杠杆倍数

维持保证金率

用户维持当前仓位所需的最低保证金率,当保证金率小于等于用户当前所需维持保证金率+平仓手续费率,即触发爆仓。

逐仓:保证金率
=(固定保证金+未实现盈亏)/仓位价值,
仓位价值=面值张数/最新标记价格
全仓:保证金率
=(余额+已实现盈亏+未实现盈亏)/(仓位价值+挂单冻结保证金
杠杆倍数)
仓位价值 =面值*张数/最新标记价格

保证金率

逐仓

保证金率
=(固定保证金+未实现盈亏)/仓位价值
=(固定保证金+未实现盈亏)/(面值*张数/最新标记价格)

全仓

保证金率
=(余额+已实现盈亏+未实现盈亏)/(仓位价值+挂单冻结保证金杠杆倍数)
=(余额+已实现盈亏+未实现盈亏)/(面值
张数/最新标记价格+挂单冻结保证金*杠杆倍数)

持仓杠杆倍数调整

逐仓

开仓所需保证金=面值张数/(开仓均价杠杆);

全仓

开仓所需保证金=面值张数/(最新标记价格杠杆);

盈亏计算

合约已实现盈亏

买单方向:
合约已实现盈亏 = (合约面值 / 结算基准价 – 合约面值 / 平均平仓价格) * 平仓数量
例如某用户以结算基准价500 USD/BTC 买入开多2张BTC合约,然后以价格 1000 USD/BTC卖出平多1张合约,则合约已实现盈亏 = (100 / 500 - 100 / 1000) * 1 = 0.1 BTC。

卖单方向:
合约已实现盈亏 = (合约面值 / 平均平仓价格 - 合约面值 /结算基准价) * 平仓数量
例如某用户以结算基准价500 USD/BTC 卖出开空10张BTC合约,然后以价格 1000 USD/BTC买入平空8张合约,则合约已实现盈亏 = (100 / 1000 - 100 / 500) * 8 = - 0.8 BTC。

合约未实现盈亏:

买入:
合约未实现盈亏 = (合约价值 / 结算基准价 – 合约价值 / 最新标记价格) * 持仓量例如某用户以结算基准价500 USD/BTC 买入开多6张BTC合约,现在最新成交价为600 USD/BTC,则合约未实现盈亏 = (100 / 500 - 100 / 600 ) * 6 = 0.2 BTC。

卖出:
合约未实现盈亏 = ( 合约价值 / 最新标记价格 - 合约价值 / 结算基准价) * 持仓量

在这里插入图片描述
在这里插入图片描述

逐仓保证金模式

逐仓模式下,每个用户都会有一个单独的“合约账户”和逐仓“子账户”。“合约账户”由账户余额组成,“子账户”由“子账户余额”、“已实现盈亏”、“冻结”,“未实现盈亏”组成。

只有合约“账户余额”和“资金账户、交易账户、其他账户”随时可以互转。而“子账户”下的子“账户余额”与“已实现盈亏”将不能转入“资金账户、交易账户、其他账户”。“子账户余额”,只有逐仓仓位下持仓全部平仓转入合约“账户余额”后,才能转入“资金账户、交易账户、其他账户”;“已实现盈亏”,也只有逐仓仓位结算转入合约“账户余额”后,才能转入“资金账户、交易账户、其他账户”。

账户余额:合约账户中的担保物数量,可用于转入逐仓子账户,追加保证金。

子账户余额:子账户中的担保物数量,与“已实现盈亏”一起为“固定保证金”提供担保。

子账户可用:可用于开新仓的可用保证金数量。

已实现盈亏:逐仓仓位结算前,用户已平仓仓位产生的盈亏。可以为逐仓持仓所需的“固定保证金”与挂新开仓单所需的“冻结”提供担保。

冻结:为逐仓仓位下未成交的开仓委托单所需要的保证金。委托单成交后,所需的保证金才增加至“固定保证金”。由合约“账户余额”与“已实现盈亏”提供担保。

固定保证金:为逐仓仓位的保证金,可以在持仓处手动增加,否则平仓或开新仓前固定不变。

在这里插入图片描述
在这里插入图片描述

资金费用

资金费用每8小时收取一次,收取时间在每天的08:00、16:00和24:00(HKT)。只有在该时刻持有仓位时,用户才需要支付或收取资金费用。如果在费用收取之前平仓,则不需要支付资金费用。

1.理论资金费用

资金费用=持仓仓位价值*当期资金费率,当资金费率为正数时,多头支付空头;当资金费率为负数时,空头支付多头。
资金费率=Clamp(MA(((合约买一价+合约卖一价)/2-现货指数价格)/现货指数价格 - Interest), a, b)
*Interest当前为0
*所有币种永续合约:a=-0.3%,b=0.3%
【以上数据及指标内容可能会根据市场行情而进行实时调整,调整将不会进行另行通知。】
资金费率每分钟计算一次,在资金费用收取时刻将取07:59、15:59和23:59(HKT)计算出的资金费率进行资金费用收取。
2.实际资金费用
全仓模式下:资金费用收取时,将直接从用户的已实现盈亏上扣除,至多扣除至用户保证金率等于维持保证金率+平仓手续费率,多余部分不再收取。
逐仓模式下:资金费用收取时,将优先从用户的已实现盈亏上扣除,如果已实现盈亏不足,多余部分从用户持仓仓位的固定保证金上扣除,至多扣除至用户保证金率等于维持保证金率+平仓手续费率,多余部分不再收取。
用户所能收取的实际资金费用也取决于系统从对手方账户上扣除的总额。

结算

永续合约在每天16:00(香港时间)会进行一次结算,结算的流程如下:

盈亏结算

a. 未实现盈亏结转到已实现盈亏

系统将当日的未实现盈亏转到已实现盈亏,未实现盈亏清零,且仓位上的“已结算收益”也相应增加本次结转的金额。当合约结算完成后,仓位的未实现盈亏将按照新的结算基准价进行计算。结转当日的“未实现盈亏”计算公式如下:结转的未实现盈亏=(合约面值张数/结算基准价)-(合约面值张数/上次结算基准价)

结算基准价:当您的仓位未经过每天16:00(香港时间)结算时,结算基准价=开仓均价。如果您的仓位经过了结算,则结算基准价为4点结算时刻的最新标记价格

b. 已实现盈亏结转到余额

将当日最后剩余的已实现盈亏结转到用户的现金余额资产。逐仓模式下,将已实现盈亏结转到持仓仓位的固定保证金;全仓模式下,将已实现盈亏结转到永续合约账户的现金余额。

资金费用收取

-系统计算所有用户的资金费用,由多方和空方互相支付,资金费用的变动将体现在用户的现金余额上。

-资金费用规则详见资金费用部分。

如果交割和结算时间前后出现操纵市场或者市场异常,导致指数大幅波动,或者出现分摊比例异常,我们将有可能根据具体情况选择提前或延时交割和结算,具体规则会发公告说明。

分摊

统计系统账户穿仓损失,如果存在穿仓损失,进行风险准备金抵扣。当风险准备金无法全额抵扣时,由当日所有净盈利用户一起分摊。

分摊比例=(穿仓损失-风险准备金)/所有盈利用户净盈利之和,用户所需分摊金额=净盈利*分摊比例,分摊金额将从用户已实现盈亏上扣除。

挂单与吃单

挂单指的是你指定的价格下单时不会立即与深度列表里的其他订单成交,而是进入深度列表等待对方主动来跟你的订单成交,这样的行为叫挂单。比如现在卖一价是1000 USD,你以999 USD的价格下了一个买单,这时候不满足成交条件,那么你的订单会进入深度列表里的买单列表等待别人出999 USD的卖价跟你成交,这个时候你的单子被成交即支付挂单手续费。反之你要支付吃单手续费。

爆仓

爆仓手续费按照用户当前所处等级的taker费率收取。

这篇关于okex合约算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255903

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

最大公因数:欧几里得算法

简述         求两个数字 m和n 的最大公因数,假设r是m%n的余数,只要n不等于0,就一直执行 m=n,n=r 举例 以18和12为例 m n r18 % 12 = 612 % 6 = 06 0所以最大公因数为:6 代码实现 #include<iostream>using namespace std;/