量化入门

网友投稿 720 2022-05-29

量化入门

量化交易(Quantitative Trading)

引言

近年来,量化投资行业得到了迅速的发展,传统多因子模型在A股过去若干年内也获得较为稳健的超额收益。然而,由于市值效应在 A 股市场的影响过于明显,导致传统多因子模型或多或少都受其影响。 尤其是自2016年11月以来,随着A股市场风格的急剧变化,策略稳定性受到了一定冲击。从目前市值因子的收益波动性而言,小市值因子超额收益的黄金时代可能已经过去。2017年券商研报构建了交易型阿尔法选股体系,旨在挖掘短期盈利机会,对原有传统阿尔法选股体系形成极大补充。人工智能阿尔法选股体系简称AI阿尔法体系,是利用人工智能领域中的机器学习技术,将挖掘因子收益的潜力发挥极致。

1. 量化交易

量化交易是运用复杂的统计学方法和数学模型,从庞大的历史数据中海选出能带来超额收益的多种“大概率”事件以找出规律、制定策略,并且能用数据模型验证、固化这些规律和策略,然后用计算机来严格、高效地执行。这样可以极大的减少投资者情绪波动造成的影响,有效避免了在市场极度狂热或悲观的情况下做出非理性的投资决策。

1.1主观交易

主观交易运用主观交易的投资者需要关注国际环境及财经新闻、券商的研究报告、公司的财务报告、K线趋势、个股新闻、价量经验、大人物的演讲、朋友圈情绪、甚至一些小道消息,并对其进行定性或者定量分析。定性分析可以是体验公司产品或者直接实地考察,定量分析则可根据自己的选股原则,用各种指标进行打分,加权汇总后,买入分数高的股票,卖出分数低的股票,以形成交易信号。主观交易具有较强的主观能动性,即在同样的选股原则和止赢止损策略下,100个人会有100种不同的结果,基于大数定律和正态分布,可以发现有一小撮人的资金曲线非常平滑和漂亮,但是绝大部分人都会低于均线水平,这里的“均线”指的是计算机严格执行交易策略所得到的资金曲线,原因往往是理性总是被情绪打败的。

1.2量化交易

量化交易不仅关注历史行情数据、基本面指标数据,而且会把一些非传统的数据,如市场情绪、财经新闻的关键字转化成机器可以理解的指标。数据越原始越好,例如可以直接购买交易所最原始的、未经清洗的行情数据。

有了数据之后,就需要运用数学和统计学的方法,如单位根检验、线性回归、机器学习等方法从大数据当中找到超额收益的多种“大概率”事件,比如选股的量化思想就是进行收益拆解,从很多维度进行数量化的判断。量化交易的一大优点就是计算机的高效执行将人从简单重复的任务中解脱出来,可以把更多精力放在更好策略的开发上。另外,量化交易可以从更快速和更微观的维度去思考问题,人受限于人体的生理机构,从看到数据、大脑判断到手指敲在键盘的反应时间是几百毫秒,而计算机执行是可以达到纳秒级别的,因此在超高速领域,量化交易可以赚取主观交易无法赚到的钱。

2. 传统量化选股

在介绍AI阿尔法体系之前,我们有必要对阿尔法体系的发展及基本理论进行梳理。

2.1单因子选股

初期的量化选股其实是很直观的,最简单的为单因子选股,例如投资者用PE因子选股,步骤是:

(1)选择使用哪一个指标(因子),例如使用静态PE来选择股票,PE越低则打分越高。PE在一定条件下可能是负数,为了单调性,我们使用PE的倒数EP, EP越高,则该项得分越高,这样即使PE为负数,也是有经济意义的。

(2)选择要进行回测的时间和每次回测间隔的时间。

(3)选择在哪一个股票池里选股,这个股票池可以是上市的所有A股,也可以是某个指数,例如沪深300或者中证500成分股。

(4) 每只股票给予的权重,比如选沪深300股票池有30只股票每只股票的权重就是3.33%

(5)在每个时间节点,利用成分股每个因子值的大小进行排序。选择排名靠前的10%的股票,取其下个月的收益平均值作为当月回测结果。然后滚动起来,回测时间段内每个月进行这样的测算。最后把每个月的收益进行滚乘,得到回测区间的总收益。

2.2多因子选股

多因子模型是比单因子模型更加有力的一个选股手段。试想一下用PE选股的本质意义是选择低市盈率的股票,可是有时会希望选择低市盈率、近期跌得多的股票,或者低市盈率、跌得多、有很好的毛利率的股票,或者低市盈率、跌得多、有很好的毛利率的股票把选股的逻辑要素越拓越广,就形成了多因子模型。

多因子模型的选股方法:

方法1:在因子数不多的情况下,先用第一个因子,筛选出一个股票池;再用第二个因子,再次筛选;然后用第三个因子,因此类推。这种方法适用于因子数不多,而且原始股票池足够大的情况。

方法2:利用因子打分的方法,先对股票的每个因子进行打分,再把多个因子的分数加起来,最终得分就是股票的多因子分数。例如某股票的EP因子分数为0.5,动量因子分数为0.7,两个因子的权重分别为50%、50%(因子权重总和必须为1),那么最终因子得分为:0.5×50%+0.7×50%=0.6

如何选择多因子是关键,问题在于选择什么样的因子,赋予多少权重。在这种选股模型下,并不是选股因子越多越好,尤其是同一个大类下的因子,太多容易产生很强的相关性。例如PE和PB,通常情况下PE低的,也是PB低的,所以同时给PE和PB因子权重,就类似于把这两个因子的权重加起来。下面列出了一些比较常用的因子

对于多因子模型来评价指标:

(1)因子收益率检验,具体的检验方法是统计回测近一年、近三年、近五年或更久的时间段里,各组收益率均值、标准差、胜率等指标,其中胜率指该组战胜基准收益率的概率。

(2)因子显著性检验,具体指标有:超额均值——各组收益率相对基准的超额收益率的均值,均值越大,说明该组超越基准越明显。跟踪误差——超额收益率的标准差,衡量各组偏离基准的程度,越小越好。信息比率——风险收益率指标,超额收益率均值÷超额收益率标准差,结果越大,说明超越基准越明显。

(3)因子延续性检验:由因子得到的分组能否在较长的一段时间保持比较好的方向性,即本期表现好的因子,下期是否也能取得好的收益率。

延续性检验里的重要考查指标是IC:

I

C

=

E

(

[

X

E

(

X

)

]

[

Y

E

(

Y

)

]

)

1

n

i

=

1

n

(

X

i

E

(

X

i

)

)

2

1

n

i

=

1

n

(

Y

i

E

(

Y

i

)

)

2

IC = \frac{E([X-E(X)][Y-E(Y)])}{\sqrt{\frac{1}{n}\sum_{i=1}^{n}(X_i-E(X_i))^2}\sqrt{\frac{1}{n}\sum_{i=1}^{n}(Y_i-E(Y_i))^2}}

IC=n1 ∑i=1n (Xi −E(Xi ))2

n1 ∑i=1n (Yi −E(Yi ))2

E([X−E(X)][Y−E(Y)])

这个公式的含义是,t期末各股票的综合因子分数为序列X, t期到t+1期各股票的涨幅序列为序列Y,然后计算序列X和序列Y的相关系数。E(X)为序列X的平均值。通过各期的IC值可以大致看出因子的延续性,在哪一段是正向的,哪一段是反向的。

3. 基本概念

3.1 收益率等概念

3.1.1收益率

假设

p

t

p_t

pt 在时刻

t

t

t时的一种资产价格,在没有利息的情况下,从时刻

t

1

t-1

t−1时刻

t

t

t这一持有阶段的收益率为

I

C

=

P

t

P

t

1

P

t

1

IC = \frac{P_t-P_{t-1}}{P_{t-1}}

IC=Pt−1 Pt −Pt−1

其中分子

P

t

P

t

1

P_t-P_{t-1}

Pt −Pt−1 示资产在持有期内的收入或者利润,如果该值为负则表示亏损。

分母

P

t

1

P_{t-1}

Pt−1 表示持有资产初期的原始投资

3.1.2对数收益率

对数收益率,用

r

t

r_t

rt 表示,

r

t

r_t

rt 的定义表示如下:

r

t

=

ln

P

t

P

t

1

=

ln

(

1

+

R

t

)

r_t=\ln {\frac{P_t}{P_{t-1}}}=\ln{(1+R_{t})}

rt =lnPt−1 Pt =ln(1+Rt )

其中

ln

(

x

)

\ln(x)

ln(x)是自然对数就是以

e

e

e为底的对数。对数收益率比简单的收益率更为常见。

原因:

1)当

x

x

x比较小的时候比如小于10%,

ln

(

x

)

\ln(x)

ln(x)和

x

x

x 的值是比较接近的。

2)使用对数收益率,可以简化多阶段收益,比如有

K

K

K段的对数收益,总的对数收益就是

K

K

K阶段的对数收益相加。

3)讲对数收益率绘制成图表时,直观上更接近真实的表现。

3.1.3夏普比率

衡量基金收益的一个有名的标准就是夏普比率(Sharpe ratio)。有投资常识的人都明白,投资光看收益是不够的,还要看承受的风险,也就是收益风险比。夏普比率描述的正是这个概念,即每承受一单位的总风险,会产生多少超额的报酬。用数学公式描述就是:

S

h

a

r

p

e

r

R

a

t

i

o

=

E

(

R

p

)

R

f

σ

p

SharperRatio=\frac{E(R_p)-R_f}{\sigma_{p}}

SharperRatio=σp E(Rp )−Rf

其中,

E

(

R

p

)

E(R_p)

E(Rp ) :投资组合预期收益率

R

f

R_f

Rf :无风险利率

σ

p

\sigma_{p}

σp :投资组合的波动率(亦即投资组合的风险)

3.1.4最大回撤率

最大回撤率:在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值。最大回撤用来描述描述任一投资者可能面临的的最大亏损。最大回撤是一个重要的风险指标,对于对冲基金和数量化策略交易,该指标比波动率还重要。

公式可以这样表达:

D

D

D为某一天的净值,

i

i

i为某一天,

j

j

j为

i

i

i后的某一天,

D

i

D_i

Di 为第

i

i

i天的产品净值,

D

j

D_j

Dj 则是

D

i

D_i

Di 后面某一天的净值。

d

r

a

w

量化入门

d

o

w

n

=

m

a

x

(

D

i

D

j

)

D

i

drawdown=\frac{max(D_i-D_j)}{D_i}

drawdown=Di max(Di −Dj )

其实就是对每一个净值进行回撤率求值,然后找出最大的。

3.1.5 sortino ratio(索提诺比率)

定义:

其中MAR是Minimum Acceptable Return,可接受最低收益;是收益中小于无风险收益的全部样本。该比率是计算投资组合每承受一单位低于无风险收益的风险,能够产生多少超额报酬,分母 用MAR代替理论上是可以的,因为

R

f

R_f

Rf 是MAR的特殊情况。但是MAR可以和

R

f

R_f

Rf 不一致。

索提诺比率(Sortino Ratio,SR),与夏普比率类似,所不同的是它区分了波动的好坏,因此在计算波动率时它所采用的不是标准差,而是下行标准差。这其中的隐含条件是投资组合的上涨(正回报率)符合投资人的需求,不应该计入风险调整。和夏普比率类似,这个比率越高,表明基金承担相同单位下行风险能获得更高的超额回报率。索提诺比率可以看做是夏普比率在衡量对冲基金/私募基金是的一种修正方式。

3.1.6 信息比率Information Ratio

信息比率是用来衡量单位超额风险带来的超额收益,信息比率越大,说明该策略单位跟踪误差所获得的超额收益越高,因此信息比率大的策略比低的好,合理的投资目标应该是在承担适当风险的前提下,尽可能的追求高信息比率。

信息比率公式:

R

p

R_p

Rp 表示策略年化收益率

R

m

R_m

Rm 表示基准年化收益率

σ

t

\sigma_t

σt 表示策略与基准每日收益差值的年化标准差也被称为主动风险

我们在选择基金的时候,既要看收益,也要看风险,最理想的就是收益大风险小。信息比率就是衡量收益和风险的关系。一般来说,选择信息比率较高的基金,就意味着选择了同样主动风险水平下更高获取超额收益能力,或者是说选择同样超额收益下更小主动风险。因此,信息比率较大的基金的表现要优于信息比率较低的基金。

3.1.7策略波动率Volatility

策略波动率用来测量策略的风险性,策略波动率越大代表策略风险越高。

Volatility的计算公式:

r

p

r_p

rp 表示策略每日收益率

r

ˉ

p

\bar{r}{_p}

rˉp 表示策略每日收益率的平均值

n

n

n 表示策略执行天数

3.1.8基准波动率Benchmark Volatility

基准波动率用来测量策略基准的风险性,基准波动率越大代表基准风险越高。

基准波动率的计算公式:

r

m

r_m

rm 表示基准每日收益率

r

ˉ

m

\bar{r}{_m}

rˉm 表示基准每日收益率的平均值

n

n

n表示基准执行天数

3.2 CAPM资本资产定价模型

CAPM的中文是“资本资产定价模型”,多用于对股票的定价。即CAPM用来回答这个问题:对于某只股票,你(投资者)认为它价值几何?而非现实中的价格。例如,一支网红冰淇淋售价100元,但你认为这支冰淇淋只值5元。这5元就是你作为投资者综合各方面因素给冰淇淋的定价。股票也如同普通商品一样。

E

(

r

D

)

E_(rD)

E( rD):股票的期望回报率

r

f

r_f

rf :无风险回报率

β

D

\beta_D

βD :该股票的贝塔值

E

(

r

M

)

E_(rM)

E( rM):市场所有股票的平均回报率

那贝塔值的意义是什么呢?贝塔值是用来衡量个别投资工具与市场的波动情况。就是说这只股票的波动性,用波动性看风险。如果贝塔值是1呢,就是说大盘涨多少,这只股票就涨多少,是完全一致的。如果贝塔值大于1呢,就是说这只股票的波动是大于市场平均值的。如果贝塔值小于1则意味着这只股票波动小于市场平均值。要知道,在金融学里如何衡量一只股票的风险就是利用波动性。波动性为什么被用来作为衡量风险的标志之一呢?假设啊,假设有一只股票,每天不是跌停,就是涨停,而大盘很正常。这样的股票波动性很大,风险是不是也很大?贝塔值呢,就是这样一个用来衡量某只特定股票风险的指数。作为一个投资者,首先,要保证我们投资的股票回报率一定一定是大于定期的。其次,股票市场整体也要比无风险利率高。最后怎样体现我选的这只股票的风险呢?用贝塔值。这样用贝塔值乘以市场的期望回报率,再加上无风险利率,就能得到我想要的这只股票的期望回报率啦。

3.2.1阿尔法Alpha(詹森指数)

投资面临系统系风险(Beta)和非系统性风险(Alpha)Alpha是投资者获得的与市场波动无关的回报,比如投资者获得了15%的回报,其基准(例如沪深300)获得了10%的回报,那么alpha增值的部分就是5%

Alpha的计算公式:

R

p

R_p

Rp 表示策略年化收益率

R

m

R_m

Rm 表示基准年化收益率,也就是市场所有股票的平均回报率

R

f

R_f

Rf 表示无风险利率(默认0.04)

β

p

\beta_p

βp 表示策略Bata值

无风险收益率:(资金的时间价值+通货膨胀补偿率)美国的惯例是,用一年期的国债利率作为无风险利率;中国学者常用的有短期国债收益率,国债回购收益率等

3.2.2贝塔beta

Beta表示投资的系统风险,反映了策略对大盘变化的敏感性,例如一个策略的Beta值为1.5,则大盘涨1%的时候,策略可能涨1.5%,反之 如果一个策略的Beta值为-1.5,则大盘涨1%的时候,策略可能涨-1.5%

Beta的计算公式:

D

p

D_p

Dp 表示策略每日收益

D

m

D_m

Dm 表示基准每日收益

C

o

v

(

D

p

,

D

m

)

Cov(D_p, D_m)

Cov(Dp ,Dm )表示策略每日收益与基准每日收益的协方差

V

a

r

(

D

m

)

Var(D_m)

Var(Dm )表示基准每日收益的方差

举例:

1.如果指数可以交易,你买入价值100万的沪深300指数并一直持有,这是一个beta策略,因为你赚到的是市场波动产生的收益。

2.你花了100万买入20只股票,这些股票表现不俗,比策略1多赚20%,那么这20%是alpha收益。这20只股票的收益来自市场收益(beta)+超额收益(alpha)。这是一个通俗意义上的“指数增强型策略”。

3.在策略2的基础上,假设你买入的20只股票平均波动性与沪深300指数的波动性一致(持仓股票相对指数的beta=1),你又做空了价值100万的沪深300期货,相当于(策略2-策略1),得到的就是(beta+alpha-beta)=alpha。这是一个“完全”对冲的alpha策略

3.3 除权不复权,前复权和后复权

除权:假设某公司的总股本100股,每股10元,总权益就是1000元。当公司进行送股,每10股转送10股,总股本就变成了200股,而公司的总权益并没有变,于是每股价格就要变成1000/200=5元。这就是除权。

复权 当股价因送股、配股等原因而发生下跌时,原来10元/股的股票瞬间变成了5元/股,但该股票实际价值并没有发生变化,也就是说现在的5元实际上还是相当于10元。这就是复权。

那么不复权,前复权和后复权有什么区别呢?

不复权当股价因送股等原因发生变化,在K线走势图上就有可能形成断崖式的下跌,比如从10元/股变为5元/股,当日的涨跌幅就变成-50%而实际上该股票的价值并没有发生重大变化,而当这个价格变化反应到技术指标上时,就可能影响到指标的准确性,影响到部分投资者的判断。

杉杉股份(600884)2016.06.20 不复权时的K线图

而复权又分为前复权和后复权。前复权:以除权后第一天的价格点为基础把除权以前的数据进行复权。假设10元/股因除权等原因变为了5元/股,并且除此之外,当天股价没有其他涨跌幅的变化,那进行前复权以后,K线图显示的就是,当天与前一天的股价都是5元,之前的股价也都一律按比例缩小,变为一条连续的曲线。

杉杉股份(600884)2016.06.20 前复权时的K线图

后复权:以除权前最后一天的价格点为基础把除权后的数据进行复权。

假设10元/股因除权等原因变为了5元/股,并且除此之外,当天股价没有其他涨跌幅的变化,那进行后复权以后,K线图显示的就是,当天与前一天的股价都是10元,之后的股价也都一律按比例放大,变为一条连续的曲线。

杉杉股份(600884)2016.06.20后复权时的K线图

这三种复权处理没有绝对的好坏,各有用处。比如说前复权可以以现在价格倒推看以前的价格成本,看对应目前价格的历史价格的真实成本。后复权可以看出没有除权的情况下,股价水平高到什么程度。再比如说在中短线操作时,需要研究K线图,或者是MACD等指标的走势,此时用前复权会比较合适。而在长线操作时,不复权的处理能看出每波价格的低点,历史价格具有极强的参考意义。

4. 量化

4.1因子

4.1.1 MA

Moving Average,移动平均线。

连续多个周期的价格(比如收盘价)的算术平均值。

MA是最基础的移动平均线,又称为SMA(简单移动平均线)。几经发展,移动平均线也有多种变体。

4.1.2 WMA

Weighted Moving Average,加权移动平均线。

SMA是以等权重计算的算术平均值,实际中认为越近期的价格,对现价影响越大,因此权重应该加大。 常见的加权方式有:

1)末日加权

2)线性加权

3)梯形加权

4)平方系数加权

4.1.3 EMA(EXPMA)

Exponential Moving Average,指数移动平均,又可简写未EXPMA

其中,

α

\alpha

α为平滑指数,一般取作

2

/

(

N

+

1

)

2/(N+1)

2/(N+1) ,典型的在计算MACD指标时,EMA计算中的

N

N

N一般选取12和26天,因此

α

\alpha

α相应为2/13和2/27。这里可以看到一个问题,如果是

E

M

A

(

0

)

EMA(0)

EMA(0) ,则存在 的取值问题,一般可以取值

E

M

A

(

0

)

=

P

r

i

c

e

(

0

)

EMA(0)=Price(0)

EMA(0)=Price(0).

在计算机递推计算时,可以写作:

E

M

A

y

e

s

t

e

r

d

a

y

EMA_{yesterday}

EMAyesterday 按照类似方法递推展开,可以得到:

其中,p1表示今天价格,p2表示昨天价格,p3表示前天价格以此类推。对于N日的EMA,即EMA(N),其股价追溯到前3.45*(N+1)日的就可以了,更早的股价可以忽略。比如说EMA(12)追溯到前45日的股价就可以了,EMA(26)追随到前94日的股价就可以了。根据验证,如果想误差更小,可以追溯到前5N日的股价。

将平滑系数α 展开,由于

可以得到:

从该式中可以更清楚地看出EMA加权平均的特性。在EMA指标中,每天价格的权重系数以指数等比形式缩小。时间越靠近当今时刻,它的权重越大,说明EMA函数对近期的价格加强了权重比,更能及时反映近期价格波动情况。所以EMA比MA更具参考价值

然后把日期t变一下从today=t开始编号最初始的那一天定为0

pandas中有接口可以计算EMA

4.1.4 DIF离差值

搞明白,其他指标就比较简单了。

指标公式如下:

新股上市首日,其首日

D

I

F

DIF

DIF 为0 。从次日开始,全部都用当天的

E

M

A

(

12

)

E

M

A

(

26

)

EMA(12)-EMA(26)

EMA(12)−EMA(26)得到当天的 DIF注意,研究MACD指标要尽量采用股价前复权之后的数据来研究。

4.1.5 DEA

DEA通用公式:

D

E

A

y

e

s

t

e

r

d

a

y

DEA_{yesterday}

DEAyesterday 表示昨日的DEA,这个公式可以模仿普通EMA的展开式展开,这里不再详述。

默认的DEA即DIF 线的9日指数平滑移动平均线,也可以表示为

M

E

A

(

D

I

F

,

9

)

MEA(DIF,9)

MEA(DIF,9)。

新股上市首日,其首日DEA为0。从次日开始,由于首日DEA为0,因此次日的

D

E

A

=

0.2

D

I

F

+

0

=

0.2

D

I

F

DEA=0.2DIF+0 = 0.2DIF

DEA=0.2DIF+0=0.2DIF 。后续日子的DEA可以套用$0.2DIF+0.8DEA_{yesterday} $计算

4.1.6 MACD

M

A

C

D

MACD

MACD指标也包括日

M

A

C

D

MACD

MACD周

M

A

C

D

MACD

MACD月

M

A

C

D

MACD

MACD 年

M

A

C

D

MACD

MACD 指标, 以及5分钟、15分钟、30分钟、60分钟等分时

M

A

C

D

MACD

MACD常被用于股市的是日

M

A

C

D

MACD

MACD 指标和周

M

A

C

D

MACD

MACD 指标

4.2图概念

4.2.1盒图

最近在摆弄数据离散度的时候遇到一种图形,叫做盒图(boxplot)。它对于显示数据的离散的分布情况效果不错。

盒图是在1977年由美国的统计学家约翰·图基(John Tukey)发明的。它由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。也可以往盒图里面加入平均值(mean)。如上图。下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上四分位数到最大值之间建立一条延伸线,这个延伸线成为“胡须(whisker)”。

由于现实数据中总是存在各式各样地“脏数据”,也成为“离群点”,于是为了不因这些少数的离群数据导致整体特征的偏移,将这些离群点单独汇出,而盒图中的胡须的两级修改成最小观测值与最大观测值。这里有个经验,就是最大(最小)观测值设置为与四分位数值间距离为1.5个IQR(中间四分位数极差)。即

I

Q

R

=

Q

3

Q

1

IQR = Q3-Q1

IQR=Q3−Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。

最小观测值为

m

i

n

=

Q

1

1.5

I

Q

R

min = Q1 - 1.5*IQR

min=Q1−1.5∗IQR,如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点汇出。如果没有比最小观测值小的数,则胡须下限为最小值。

最大观测值为

m

a

x

=

Q

3

1.5

I

Q

R

max = Q3 -1.5*IQR

max=Q3−1.5∗IQR,如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点汇出。如果没有比最大观测值大的数,则胡须上限为最大值。

通过盒图,在分析数据的时候,盒图能够有效地帮助我们识别数据的特征:

1) 直观地识别数据集中的异常值(查看离群点)。

2) 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度)。

AI EI企业智能 EI创新孵化Lab 机器学习 运筹优化

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:带你了解Java的序列化(Serializable)与反序列化
下一篇:数组--如何通过【二维数组+稀疏数组】实现五子棋盘,并且保存记忆功能?
相关文章