手把手教你 DVOL

news2025/1/24 17:56:46

773182dadace7eaecf32020bfa756cd6.jpeg

分享本文在朋友圈的读者可获得本文数据和 Python 代码。留个言说已分享(不用截屏)我相信你,我会发给你百度盘下载链接。

本文长度为 6393,建议阅读 32 分钟

题图:SignalPlus Dashboard

0

引言


Deribit volatility (DVOL) 指数是 Deribit 制定的加密货币期权的波动率指数,它衡量的是 30 天的向前看 (forward-looking) 预期波动率 (implied volatility 从期权价格隐含计算出来),而不是向后看 (backward-looking) 实际波动率 (realized volatility 从标的价格时间序列计算)。

ea42e4a5efb9759f1f24775bfcea7f4e.jpeg

DVOL 是一个年化波动率的预期。粗略来讲,要获得 BTC 价格每日的预期变动,只需将 DVOL 值除以 19 (365 的平方根) 即可。 例如,DVOL 等于 57 (其实指的是 57%) 相当于 3% 的日波动。

和老规矩一样,在前戏王中我会介绍推导所需要的知识点;在理论皇中我会根据不同市场惯例给出不同的波动率指数表达式,如股票市场的 VIX 和币圈市场的 DVOL;在实践狼中我会讲解如何用 Python 来计算 DVOL。

LET'S GO!

1

前戏王


1.1

方差期望

假设标的资产的 SDE 和经过伊藤定理变形后的 SDE 如下:

97ef141e633372cb0d67080940c8548f.png

第 2 个公式减去第 1 个公式后,两边乘以 2 得到:

1ebba83bc6c014deaba7d6d2b1ef923a.png

两边从 0 到 T 求积分得到:

a9c27ad6ff43ef09d354bc412a88095f.png

两边求期望得到:

f56a442fc1905cf80f6bd605022afd89.png

上式中的 F0,T 是标的资产在 T 时到期的远期价格,而左边的期望值年化后 (除以 T) 就是方差,即

911c929dbe1d287ac03736733f4ef32f.png

1.2

Carr & Madan 公式

Carr & Madan 公式是本文证明需要的核心内容,公式如下:

661efa20e165b1ae7a419ce07d1bb403.png

该公式咋一看很复杂,实际上就是利用了泰勒展开。在实操时,可把 g(ST) 看成某个金融产品的支付函数,右边积分项里有 put 和 call 的支付函数,这样对于任何一个金融产品,其支付函数都可以用一系列的 put 和 call 来合成。 

为了推导波动率指数,我们选取对数合约作为这个金融产品。

推导见 https://gregorygundersen.com/blog/2023/01/26/carr-madan/。

1.3

对数合约

对数合约 (log contract) 是一种奇异期权 (exotic option),它根据其标的资产价格的对数进行支付。对数合约的收益是单一资产价格的非线性函数。这种类型的期权使投资者表达对未来波动的看法。

给定对数合约的支付函数 g(x) = ln(x/S*),其一阶导数和二阶导数为

3611ccac7f3ae1939286a146ac36e4fc.png

注意到小节 1.1 最后得到公式里红色那一项就是对数合约的期望,利用对数性质 ln(ab) = ln(a) + ln(b) 做以下的恒等变换:

d8d8c93fbee2f1e851fab7eb4c5117cf.png

代入 Carr & Madan 公式得到

7280f878d91dc1e7ebcb5fffdd66f9ce.png

两边求期望可计算出

6fd85c577d771a713c66eb10a2aa4a48.png

将上面结果代入对数合约得到,

81820ec963fde8924c149ff75edc383e.png

将对数合约推导结果代入方差表达式得到,

354eb9d3dac5119b04101e19cd4bc130.png

这个公式就是方差的期望的精确数学表达式。

2

理论皇

根据上节最后一个公式根据不同资产市场的惯例做一些调整就能得到股票市场上的 VIX 公式和加密货币市场的 DVOL 公式。

2.1

VIX 公式

上节最后一个公式的推导和模型无关 (model-independent)

15a64d84fdee54a6ce95e868025f4e7b.png

但是用在实操上,还需要做几个近似:

首先远期价格 F0,T 是通过先找到最接近价中 (at-the-money, ATM) 的看涨期权 c0 和看跌期权 p0,再用平价公式 (put-call parity) 计算出来的:

f0c4ab3868f1fe9f8633e5c90c5f5b27.png


红色的项可根据当 x ≈ 0 有 ln(1+x) ≈ x - 0.5x做进一步的化简

e43afc161198ba5c63d947e182f90ae5.png

在实操时,通常 S* 选一个离 F0,T 很近但是小于它的值,那么 1 - F0,T/S* 是一个很接近 0 的数,因此上面的近似关系成立。


绿色的项可用累加近似积分

42b89c2eace0a26d0772119e35715a0a.png

由于 S* ≈ F0,T ,那么上式中的看跌期权 p(Ki), Ki ≤ F0,T 和看涨期权 c(Kj), Kj ≥ F0,T  都是价外期权 (out-of-the-money, OTM)。这样可操作的 VIX 指数表达式为

84a175385d8cfd5431421af7a5370884.png


实际上 VIX 是衡量 30 天的波动率的指标,因此会根据离 30 天最近的两个到期日的期权计算出 σ2VIX(T1) 和 σ2VIX(T2),再做一个线性插值,

25436d505e2845f7a58e45b8f1ea0ef5.png

2.2

DVOL 公式

DVOL 是 Deribit 发布的关于加密货币的波动率指数,Deribit 上面的期权有两大特征:

    1. 期权是币本位而不是 U 本位

    2. 标的是期货价格而不是现货价格

根据上述两个特征我们需要更改两处地方

1. 计算远期价格 F0,T 的公式需要改,因为期权是币本位,因此需要用 F0,T 转换成 U 本位,而且去掉 r,公式改成

a9c531d9014525ea379c74d140253a19.png

这个和 Deribit 官网上 DVOL 白皮书的公式吻合:

3b3fa95cb155353f20f162bc026a8e67.jpeg

2. 计算 strike constribution 的地方也要改:

493b235927ba835acefe51855a9d5967.png

这个也和 Deribit 官网上 DVOL 白皮书的公式吻合:

1ee00bb88cd4814c044bac3aadaaa541.jpeg

最终方差的公式变成

25ecc57f3f4a86a7a1b8f84e6a84ea6a.png

同理 DVOL 是衡量 30 天的波动率的指标,因此会根据离 30 天最近的两个到期日的期权计算出 σ2DVOL(T1) 和 σ2DVOL(T2),再做一个线性插值,

0e2d21b43ef69a7e42ae66eb2ae57f1f.png

3

实践狼


3.1

数据预处理

在 31-Apr-2023 (精确时间 UTC 10:42) 时从 Deribit 上截取的离 30 天之后最近的两个到期日期权的信息。 

28-Apr-2023 到期的期权信息 (28 天)

c2a1305fe3f5a135996f602a1f50ea2c.png

26-May-2023 到期的期权信息 (56 天)

5939508305bf931b7f4b41f3971b0948.png

截图的数据比较乱,好消息时可以从 Deribit Options 页面上下载 csv 格式的数据,点击下图右上角的红框即可。 这样就可以下载 28-April-2023 和 26-May-2023 的数据了 (注意当你们在未来下载时,要根据当天的 30 天后来选择最近两个到期日)。

f67a9ca9ac06f110cb7f73c06760478b.jpeg

计算 DVOL 只需要不同 strike 对应 call 和 put 的 bid | mid | ask,额外还需要 delta 值来过滤数据。从上图下载的 csv 数据可处理成下图的样子。

3b94baaef5c4dbeb244c2a5dd1c81cba.png

接下来用 Python 来计算 DVOL。

3.2

数据读取

首先引入需要的库 datetime, numpy 和 pandas。

from datetime import datetime
import pandas as pd
import numpy as np

上图的数据已存成 excel 里的两个 sheets,用 pd.read_excel() 将 sheet_name 参数设为 None 可以读取所有 sheets 中的数据。注意 header 参数设为 [0, 1] 是为了将数据转换成两层列标签的 DataFrame。第一层列标签是 "calls", "puts";第二层列标签是 "Delta", "Bid", "Mid", "Ask"。

data = pd.read_excel( "data.xlsx", sheet_name=None, 
                       header=[0,1], index_col=0 )
data

18bf4293c33b498ee85cc79e6e9a2236.png

丢弃掉 delta 小于 5% 的数据,因为对应的 OTM call 和 put 的期权值太小,用它们来计算波动率会“歪曲”波动率市场深度。

写一个 cutoff() 函数来过滤 delta 小于 5% 的数据。

def cutoff( pdf, delta_cutoff=0.05 ):
    return pdf[ (pdf["Calls"]["Delta"] >= delta_cutoff) 
              & (pdf["Calls"]["Delta"] <= 1-delta_cutoff) ]

注意,这里 delta < 0.05 是指的 delta 绝对值,由于 call delta 为正,put delta 为负,那么就是过滤掉 

    • delta 小于 0.05 的 call

    • delta 大于 -0.05 的 put (即 delta 大于 0.95 的 call)

过滤完的数据可视化如下图所示。

d5dd6ed8d2a59c05a474d6294a80f210.png


3.3

计算远期价格

根据小节 2.2,远期价格是通过先找到最接近价中 (at-the-money, ATM) 的看涨期权和看跌期权,再用平价公式 (put-call parity) 计算出来的。写一个 get_forward() 函数来实现。

def get_forward( pdf ):
    abs_call_minus_put = np.abs(pdf["Calls"]["Mid"] 
                              - pdf["Puts"]["Mid"])
    idx = np.argmin(abs_call_minus_put)
    call_mid = pdf["Calls"]["Mid"].iloc[idx], 
    put_mid = pdf["Puts"]["Mid"].iloc[idx]
    strike_min = pdf.index[idx]
    forward = strike_min / (1-call_mid + put_mid)
    strike_cutoff = strike_min if forward > strike_min 
                               else pdf.index[idx+1]
    return strike_cutoff, forward

代码解释如下:

    • 第 2-3 行计算 call 和 put 的 mid 差的绝对值

    • 第 4 行找到最小绝对值的索引

    • 第 5-6 行根据索引找出对应的 call 和 put 作为 ATM call 和 ATM put

    • 第 7 行根据索引找出对应的 strike 作为 ATM strike

    • 第 8 行用平价公式计算 forward

    • 第 9 行将最接近 forward 但比 forward 小的一个 strike 设为 strike cutoff

上述计算 forward 的过程的可视化如下图:

c5f78cb4465dc3aa77ee51f7440f2c11.png


3.4

计算方差

接下来根据小节 2.2 的公式来计算方差:

63520645311c685ec363d38cdb05654b.png

首先写一个 get_strike_width() 函数来计算公式里面的 

Δ

K,公式如下:

236a26a85149c34dfece3ef8976381a0.png

代码很简单无需进一步的解释。

def get_strike_width( strike ):
    strike_width = np.zeros(strike.shape)
    strike_width[1:-1] = 0.5*(strike[2:]-strike[:-2])
    strike_width[0] = strike[1] - strike[0]
    strike_width[-1] = strike[-1] - strike[-2]
    return strike_width

接下来写一个 get_variance() 函数来实现以下公式:

bd798ad08bf650e666d1cb82b752bf57.png

def get_variance( pdf, strike_cutoff, forward, t ):
    strike = pdf.index.values
    strike_width = get_strike_width( strike )
    otm_call = pdf["Calls"]["Mid"][strike >= strike_cutoff]
    otm_put = pdf["Puts"]["Mid"][strike <= strike_cutoff]
    strike_price = pd.concat([otm_put, otm_call], axis=1).mean(axis=1)
    strike_contribution = strike_price * strike_width 
                          / (strike**2) * forward
    variance = (2*strike_contribution.sum() 
             - (forward/strike_cutoff-1)**2) / t
    return variance

代码解释如下:

  • 第 2 行获取所有 strike 数据

  • 第 3 行用计算每个 strike 对应的行权价格的宽度

  • 第 4-5 行利用 strike_cutoff 来找到 OTM call (舍弃所有 strike 小于 strike_cutoff 的 call) 和 OTM put (舍弃所有 strike 大于 strike_cutoff 的 put)

  • 第 6 行将 OTM call 和 OTM put 横向拼接,并求均值,这么做的原因是在 strike cutoff 处 同时有 call 和 put,因此求一个均值当作期权价格

  • 第 7 行根据公式计算 strike contribution

    b8cd3ab58fa97e1eb478e139e67353ae.jpeg

  • 第 8 行根据公式计算 variance

上述计算 variance 的过程的可视化如下图:

f209c9d2f14d3926c792f519ee85358a.png

3.6

插值 DVOL

最后将所有函数放入 get_dvol() 函数中,对两个到期日的期权数据分别计算出方差,然后线性插值出 30 天的方差,最后开根号得到 DVOL。

cbf359395ca6ac750c6fa64d71d59d64.png

def get_dvol( data, today ):
    t_list, variance_list = [], []
    for expiry, df in data.items():
        df = cutoff( df )
        strike_cutoff, forward = get_forward( df )
        t = (datetime.strptime(expiry,"%d%b%y") 
           - datetime.strptime(today,"%d%b%y")).days / 365
        variance = get_variance( df, strike_cutoff, forward, t )
        t_list.append(t)
        variance_list.append(variance)
    t1, t2 = t_list
    v1, v2 = variance_list
    dvol = ((t1*v1*(t2-30/365)/(t2-t1) 
         + t2*v2*(30/365-t1)/(t2-t1)) * 365/30)**0.5
    return dvol*100

最后代入具体数据得到在 31-Mar-2023 计算的 DVOL 值是 57.98。

today = "31MAR23"
get_dvol(data, today)
57.9761828940359

插值 DVOL 过程的可视化如下:

a42d6b57b6295fc954f78338f2c0ec9f.png

3.7

更多细节

Deribit 在计算 DVOL 时还有三个小细节需要处理:

EMA 平滑

上节计算出来的 DVOL 其实上叫 DVOL.RAW,每秒计算一次。但为了过滤噪声和平滑数据,Deribit 取最后 240 个点的指数移动平均线 (EMA) [通过调节参数 EMAPeriod] 以获得波动率指数 DVOL 的最终值。

7a960225f1bec36bf2b44d7eaef790b1.png

从上图不难看出,平滑后的 DVOL (淡蓝线) 比平滑前 DVOL.Raw (黑色) 少了很多 spikes。

计算 Instrument Price

我们在小节 3.1 中使用的 mid price 是已经处理好的,真正要用的 Instrument Price 还需要做下图的操作:

eda69e1ddd4ab9f8f3805a74365651d3.png

首先定义基差为 Depth Ask – Depth Bid,定义阈值 c = max(min(MaxSpreadBidRatio * DepthBid, MaxSpreadWidth), MinSpreadWidth)

    • 当基差小于 c 时,Instrument Price 可用 Mid Depth Price 来代表。

    • 当基差大于 c 时,Instrument Price 用 VWAP Trade Price 来代表。

      • 如果 VWAP Trade Price 不存在,Instrument Price 用 60 秒到90 秒前的 Past Mark Price 来代表。

        • 如果 Past Mark Price 也不存在,Instrument Price 用 Current Mark Price 来代表。

计算 Mid Depth Price

中间深度价格 = (深度卖价 + 深度买价) / 2,两者都被计算为 VWAP,直到达到至少 2 BTC [通过调节参数 DepthVolume] 的累计交易量,并总共使用 5 个层级 [通过调节参数 DepthLevels]。从第一个层级开始,每个层级只能比上一个层级相差 1 个 tick(即 0.0005 BTC)。如果这些级别的总交易量少于 2 BTC,则将在后面再创建 1 个层级,剩余的交易量为 2 BTC。具体例子如下图所示:

eb19fd978eb53319f4de3b7db35f80e7.png

在 Bid 边,注意到加入了 0.1500 和 0.1490,因为要确保每个层级相差 0.0005 BTC。此外 0.1485 已经到第 5 层级了,累计交易量只有 1.3 BTC,因此再用 0.7 BTC 的 0.1480 来补满。 在 Ask 边,前两级累计交易量已经 2.2 BTC 了,因此补充一个 0.1605 的层级,并且在 0.1610 层级把交易量调成 0.8 BTC 使得总数为 2 BTC。

计算深度买价 Depth Bid 为 

f1d454364760ff780788e78bcb12dc34.png

计算深度卖价 Depth Ask 为

4e0ed4e20362f5055f5428f914811be0.png

那么中间深度价格 = (深度卖价 + 深度买价) / 2 = 0.1544625。

4

总结


本文从 Carr & Madan 公式和对数合约开始,推导出方差期望的精确数学表达式,接着根据币圈的市场惯例得到 DVOL 的表达式,最后给出一套 Python 实现计算 DVOL 的流程。

19d74a202fc26434c4b27adb5a8f3c83.png

以后我会分享更多和 crypto market 相关的硬核技术内容。同学们也可关注我们的官网 https://www.signalplus.com/,以及加入以下我们的社群。

972b1964b03d01ffd3b3d5dd7f9f1ff4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 VITA57.1 的 2 路 2GSPS/2.6GSPS/3GSPS 14bit AD 采集 FMC 子卡模块

板卡概述 FMC152 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、2GSPS/2.6GSPS/3GSPS AD 采集 FMC 子卡模块。该模块可直接与 FPGA 载卡配合使用&#xff0c;板卡 ADC 器件采用 ADI 公司的 AD9208 芯片&#xff0c; 与 ADI 公司的 AD9689 可以实现 PIN 脚兼容。该…

URI URL URN定义

1 定义 URI&#xff1a;全称Uniform Resource Identitfier&#xff0c;也就是统一资源标识符&#xff0c;可以标识互联网上某一资源&#xff0c;用来标识抽象或物理资源的一个紧凑字符串。 URL&#xff1a;全称Uniform Resource Locator&#xff0c;统一资源定位符&#xff0c…

【hello Linux】进程程序替换

目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充&#xff1a; Linux&#x1f337; 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码&#xff0c;那么我们若想让该进程执行另一个“全新的程序”这 便要用…

JVM系列(八) JVM 垃圾收集算法

前面我们了解了很多JVM配置垃圾回收的方式&#xff0c;但是具体垃圾是如何被回收的&#xff0c;或者说垃圾回收算法有哪些&#xff1f;今天我们文章主要讲解一下垃圾回收算法 1.分代收集理论 我们都知道 很早的JVM会把堆分为几个区域&#xff0c;新生代&#xff0c;老年代&am…

pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载

&#x1f4e2;作者&#xff1a; 小小明-代码实体 &#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/as604049322 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 欢迎讨论&#xff01; 今天我们将研究pandas如何使用openpyxl引擎读取xlsx格式的Excel的…

el-tabs嵌套el-upload使用

需求&#xff1a;1 .第一个标签展示固定字样&#xff0c;且不能删除&#xff0c;最少上传三张图片。 2. 其余标签双击可编辑字样&#xff0c;10字以内&#xff0c;可删除&#xff0c;均可上传图片。 3. 号按钮可点击添加标签&#xff0c;标签数量控制在10个以内。 4. 当标签下无…

一文学会VSCode代码同步至GitHub

一、上手GitHub 1. 了解GitHub 上手GItHub之前首先要了解一下GItHub的关键词&#xff0c;如下&#xff1a; (1) 仓库 (Repository) 仓库是用来存放项目代码&#xff0c;每一项目对应一个仓库。(2) 收藏 (Star) 收藏别人的仓库&#xff0c;方便自己查找。(3) 复制/克隆项目 (…

忆暖行动|“以前的住宿也没有这么好的环境,住的都是土房子,一下雨就哗哗掉墙皮”

常忆旧时苦 方思今日甜 新年将至&#xff0c;彩灯与烟火闪烁。值此佳节&#xff0c;我们去看望了一位65岁的退休教师&#xff0c;并与她进行了交谈&#xff0c;从奶奶的讲述中&#xff0c;我们了解到过去生活的不易&#xff0c;珍惜当下的美好生活。 迎接新年 为迎接新年&am…

base64、File、Blob、ArrayBuffer几种文件格式介绍以及互转

文章目录 关系介绍BlobFileFileReader二进制数组ArrayBuffer对象URL.createObjectURLbase64 转化file转base64blob转base64base64转blobbaes64转fileblob转fileblob转ArrayBufferfile转ArrayBuffer 关系 介绍 Blob 介绍 是一个不可变、原始数据的类文件对象本质上是js的对象 s…

后悔了怎么办 - undo日志

一、undo日志 概念&#xff1a; 把回滚时所需的东西都给记下来 二、事务id 给事务分配id的时机 &#xff08;1&#xff09;对于只读事务来说&#xff0c;只有在它第一次对某个用户创建的临时表执行增、删、改操作时才会为这个事务分配一 个 事务id &#xff0c;否则的话是不…

4.3 转换与处理时间数据

4.3 转换与处理时间数据 4.3.1 转换字符串时间为标准时间1、Timestamp2、DatetimeIndex或者PeriodIndexDatetimeIndex与PeriodIndex函数及其参数说明 4.3.2 提取时间序列数据信息Timestamp类常用属性及说明 4.3.3 加减时间数据Timedelta类周期名称、对应单位及其说明 4.3.4 任务…

Java知识总结

https://www.bilibili.com/video/BV1ys4y1S7Lc 1、Java中线程的实现方式 为什么说本质上只有一种实现线程的方式&#xff1f;实现 Runnable 接口究竟比继承 Thread 类实现线程好在哪里&#xff1f; 实现 Runnable 接口 public class RunnableThread implements Runnable { O…

ai智能改写文案-ai同义转换

文案创作是现代广告营销中不可或缺的一环&#xff0c;一个好的文案不仅可以提升产品的购买率&#xff0c;还可以实现品牌等方面的推广。但是&#xff0c;文案的创作需要耗费大量的时间和精力&#xff0c;如果能够利用智能化技术进行改写&#xff0c;不仅可以大大缩短文案创作时…

JAVA内存不足导致频繁回收和swap引起的性能问题 故障重现(内存篇2)

背景起因&#xff1a; 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行&#xff08;没经历过大并发考验&#xff09;&#xff0c;然而在一次活动后&#xff0c;人数并发一上来后&#xff0c;系统开始卡。 我按经验开始调优&#xff0c;在每个关键步骤…

本地安装directus

简介 Directus 是用于管理 SQL 数据库内容的实时 API 和 App 控制面板。 API会根据数据库模式/内容的实时更改动态更新&#xff08;无需重新启动服务器&#xff09;。 Directus安装在任何新的或现有的 SQL 数据库之上&#xff0c;提供 API 层&#xff08;REST、GraphQL、JS-SD…

获取商品SKU信息API调用代码展示、请求参数和返回值说明

SKU是什么意思 最小存货单位&#xff08;SKU&#xff09;&#xff0c;全称为stock keeping unit&#xff0c;即库存进出计量的基本单元&#xff0c;可以是以件、盒、托盘等为单位。SKU这是对于大型连锁超市DC&#xff08;配送中心&#xff09;物流管理的一个必要的方法。现在已…

MySQL数据库从入门到精通学习第2天(创建数据库)

创建数据库 通过CREATE DATABASE语句来创建数据库通过CREATE SCHEMA语句来创建数据库通过IF NOT EXISTS进行判断创建 通过CREATE DATABASE语句来创建数据库 创建数据库的语法格式如下&#xff1a; CREATE DATABASE 【数据库名】; 创建数据库的库名跟标识符一样也是有要求的&…

实际项目集成分布式一致性协议 Raft

实际项目集成分布式一致性协议 Raft 文章目录 实际项目集成分布式一致性协议 Raft前言1.raft 是什么&#xff1f;2.SOFAJRaft2.1 功能特性 3.Nacos 分布式一致性设计3.1 nacos 分布式协议架构设计3.1 nacos 用 jraft 做什么3.2 Distro 协议 4.实际项目-Spring 工程4.1 旧版项目…

SA168 3BSE003389R1

SA168 3BSE003389R1 远程终端控制系统&#xff08;RTU&#xff09;可连接到其他设备。RTU可将设备上的电气信号转换为数字的值&#xff0c;例如一个开关或阀开/关的状态&#xff0c;或是仪器量测到的压力、流量、电压或电流。也可以借由信号转换及传送信号来控制设备&#xff0…

硬盘分区怎么分?新手该如何操作?

相信很多电脑用户都遇到过硬盘分区的情况。刚拿到手的新电脑&#xff0c;基本上都是一个或两个磁盘分区&#xff0c;这不满足我们的使用习惯&#xff0c;比如我们在不同的分区存放不同的东西&#xff0c;只有一个分区就很难做到&#xff0c;所以这时候需要进行磁盘分区。那么硬…