Optiver Realized Volatility:Introduction to financial concepts and data - [中文翻译]

2023-05-16

Introduction to financial concepts and data

  • Optiver波动率预测
    • 概述
    • 评估
    • 时间线
      • 预测时间线
    • 金融概念与数据介绍
      • 订单簿(Order Book)
      • 交易(Trade)
      • 做市与市场效率
      • 订单簿统计数据
        • 买卖差价(Bid/Ask Spread)
        • 加权平均价格(Weighted averaged price)
        • 对数收益率(Log Return)
      • 已实现波动率Realized volatility
      • 竞赛数据Competition data
            • 订单簿数据快照
            • **交易数据快照**
            • **Realized volatility calculation in python**
            • 让我们绘制该工具在此时间段内的逐笔回报
      • 朴素预测:使用过去的已实现波动率作为目标
      • 提交submission

Optiver波动率预测

本篇博客是对Kaggle竞赛Optiver Realized Volatility Prediction中金融概念与数据介绍笔记本的翻译。
原文请点击这里。

概述

波动性(Volatility)**是您在任何交易大厅都会听到的最重要的术语之一——这是有充分理由的。 在金融市场中,波动率反映了价格的波动幅度。 高波动性与市场动荡时期和价格大幅波动有关,而低波动性则描述更平静和安静的市场。 对于像 Optiver 这样的交易公司来说,准确预测波动率对于期权交易至关重要,期权的价格与标的产品的波动率直接相关。

作为全球领先的电子做市商,Optiver 致力于不断改善金融市场,为全球众多交易所的期权、ETF、现金股票、债券和外币创造更好的准入和价格。 Optiver 的团队花费了无数个小时来构建复杂的模型,以预测波动性并不断为最终投资者生成更公平的期权价格。然而,行业领先的定价算法永远不会停止发展,没有比 Kaggle 更好的地方可以帮助 Optiver 将其模型提升到一个新的水平。

在本次比赛的前三个月,您将构建模型来预测不同行业数百只股票的短期波动。您将拥有触手可及的数亿行高度细化的财务数据,您将利用这些数据设计预测 10 分钟内波动率的模型。您的模型将根据训练后三个月评估期内收集的真实市场数据进行评估。

通过本次比赛,您将获得对波动性和金融市场结构的宝贵洞察。您还将更好地了解 Optiver 几十年来面临的数据科学问题。我们期待看到 Kaggle 社区将创造性的方法应用于这个复杂但令人兴奋的交易挑战。

为了让 Kagglers 更好地为这次比赛做好准备,Optiver 的数据科学家创建了一个教程笔记本 汇报本次交易挑战的竞争数据和相关财务概念。 此外,Optiver 的在线课程可以告诉您更多有关金融市场和做市商的信息。

评估

提交将使用百分比均方根误差进行评估,定义如下:
RMSPE = 1 n ∑ i = 1 n ( ( y i − y ^ i ) / y i ) 2 \text{RMSPE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} ((y_i - \hat{y}_i)/y_i)^2} RMSPE=n1i=1n((yiy^i)/yi)2
提交文件:对于测试集中的每个 row_id,您必须预测目标变量。 该文件应包含标题并具有以下格式:

row_id,target
0-0,0.003
0-1,0.002
0-2,0.001
...

并且必须通过Notebooks来提交代码,运行时间不能超过九个小时。

  • 禁用互联网访问
  • 允许免费和公开可用的外部数据,包括预先训练的模型
  • 提交文件必须被命名为 submission.csv

时间线

这是一个具有活跃训练阶段和模型将针对真实市场数据运行的第二阶段的预测竞赛。

  • 2021年6月28日,开始
  • 2021年9月20日,报名截止,您必须在此日期之前接受比赛规则才能参加比赛。
  • 2021 年 9 月 20 日, 团队合并截止日期。 这是参与者可以加入或合并团队的最后一天。
  • 2021年9月27日,最终提交的截止日期。

除非另有说明,所有截止日期均为 UTC 相应日期晚上 11:59。 比赛组织者保留在其认为必要时更新比赛时间表的权利。

预测时间线

在最终提交截止日期之后,排行榜将定期更新,以反映将针对选定笔记本运行的市场数据更新。

2022 年 1 月 10 日 - 比赛结束日期

金融概念与数据介绍

为了让 Kagglers 更好地为这场比赛做好准备,Optiver 的数据科学家创建了一个教程笔记本,循环介绍了这一特定交易挑战中涵盖的一些金融概念。 此外,数据结构和示例代码提交也将在此笔记本中呈现。

订单簿(Order Book)

术语订单簿(Order Book)是指按价格水平组织的特定证券或金融工具的买卖订单电子清单。 订单簿列出了在每个价格点上出价或提供的股票数量

下面是股票(Stock)(我们称之为股票 A)的订单簿的快照,如您所见,所有预期的买单(buy orders)都在书的左侧显示为“出价(bid)”,而所有预期的卖单都在右侧 书的一面显示为“要约(offer)/要价(ask)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCx7eLa2-1628163728279)(https://www.optiver.com/wp-content/uploads/2021/05/OrderBook3.png)]

交易活跃的金融工具总是有一个密集的订单簿(流动账簿)。 由于订单簿数据是市场需求/供应的连续表示,因此它始终被视为市场研究的第一大数据源。

交易(Trade)

订单簿是市场交易意图的表示,但市场需要以相同价格的买方和卖方才能进行交易。 因此,有时当有人想要进行股票交易时,他们会查看订单簿并找到有相反兴趣的人进行交易。

例如,假设您想购买 20 股 股票A,而您有上一段中的订单簿。 然后,您需要找到一些愿意通过总共卖出 20 股或更多股票来与您进行交易的人。 您从最低价开始检查订单簿的报价方:在 148 的水平上有 221 股的卖出兴趣。您可以以 148 的价格举起 20 股并保证您的执行。 这将是您交易后生成的股票 A 订单簿:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dBqa8M7l-1628163728280)(https://www.optiver.com/wp-content/uploads/2021/05/OrderBook4.png)]

在这个案例中,出售者卖出了20股股票,买家买入了20股股票,交易所将匹配卖家和买家之间的订单,并向公众广播一条交易消息。

20股A股以148的价格在市场上交易。

与订单簿数据类似,交易数据对Optiver数据科学家同样至关重要,因为它反映了市场的活跃程度。实际上,金融市场的一些常见技术信号是直接从交易数据中得出的,例如高低总交易量

做市与市场效率

想象一下,在另一天,股票 A 的订单簿变得低于模型(shape),而您又想从所有有意卖家那里购买 20 股。 正如你所看到的,这本订单簿没有上一本那么密集,可以说,与上一本相比,这本书流动性较差。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0WB9jxVD-1628163728282)(https://www.optiver.com/wp-content/uploads/2021/05/OrderBook5.png)]

您可以插入一个在 148 买入的订单。但是,目前没有人愿意在 148 向您卖出,所以您的订单将被放置在账簿中,等待有人与它进行交易。 如果运气不好,价格就会上涨,其他人会以 149 开始出价,而您根本就买不到。 或者,您可以插入一个以 155 买入的订单。交易所会将此订单与未完成的 149 股的卖出订单进行匹配,因此您以 149 买入 1 手。同样,您将以 150 的价格买入 12 股 , 以及 7 股 151。与尝试以 148 买入相比,不存在无法获得所需交易的风险,但最终以更高的价格买入。

您可以看到在这样一个低效的市场中很难交易,因为交易会更加昂贵,如果您希望订单的质量执行,您需要应对更高的市场风险。 这就是为什么投资者喜欢流动性,而无论市场条件多么极端,像 Optiver 这样的做市商都会提供它。

做市商是主动对证券的双向市场报价的公司或个人,提供买价和卖价(称为要价)以及每个的市场规模。 由于做市商会同时显示买入和卖出订单,因此有做市商存在的订单簿将更具流动性,因此将为最终投资者提供更有效的市场,可以自由交易而无需担心执行。

订单簿统计数据

Optiver 数据科学家可以从原始订单簿数据中得出很多统计数据,以反映市场流动性和股票估值。 这些统计数据被证明是任何市场预测算法的基本输入。 下面我们想列出一些常见的统计数据,以激励 Kagglers 从订单数据中挖掘更有价值的信号。

买卖差价(Bid/Ask Spread)

由于不同股票在市场上的交易水平不同,我们采用最佳报价和最佳买入价的比率来计算买卖价差。

买卖价差的公式可以写成以下形式:
B i d A s k S p r e a d = B e s t O f f e r / B e s t B i d − 1 BidAskSpread = BestOffer/BestBid -1 BidAskSpread=BestOffer/BestBid1

加权平均价格(Weighted averaged price)

订单簿也是股票估值的主要来源之一。 公平的账面估值必须考虑两个因素:订单的水平(level)和规模(size)。 在本次比赛中,我们使用加权平均价格 (WAP) 来计算瞬时股票估值并计算已实现的波动率作为我们的目标。

WAP的公式可以写成如下,它考虑了顶级价格和数量信息:
W A P = B i d P r i c e 1 ∗ A s k S i z e 1 + A s k P r i c e 1 ∗ B i d S i z e 1 B i d S i z e 1 + A s k S i z e 1 WAP = \frac{BidPrice_{1}*AskSize_{1} + AskPrice_{1}*BidSize_{1}}{BidSize_{1} + AskSize_{1}} WAP=BidSize1+AskSize1BidPrice1AskSize1+AskPrice1BidSize1
如您所见,如果两本订单簿的买入价和卖出价分别处于相同的价格水平,则报价越多的书将产生较低的股票估值,因为书中有更多的潜在卖家,而更多的卖家意味着 市场上更多的供应导致股票估值更低。

请注意,在大多数情况下,在连续交易时间内,订单簿不应出现买单高于要约(offer)或要价(ask)的情况。 换句话说,最有可能的是,买入价(bid)和卖出价(ask)永远不应该交叉。

在本次比赛中,目标是从 WAP 构建的。 订单簿快照的 WAP 为 147.5317797。

对数收益率(Log Return)

我们如何比较昨天和今天的股票价格?

最简单的方法就是取差额。 这绝对是最直观的方式,但是不同股票的价格差异并不总是具有可比性。 例如,假设我们在股票 A 和股票 B 上都投资了 1000 美元,股票 A 从 100 美元涨到 102 美元,股票 B 从 10 美元涨到 11 美元。我们总共有 10 股 A ( 1000 / 100 = 10 ) ( 1000 / 100=10 ) (1000/100=10) 这导致了 10 ⋅ ( 102 − 100 ) = 20 10⋅(102−100)=20 10(102100)=20 的利润和总共 100 股 B 的股票,产生了 $100。 因此,股票 A 的价格涨幅更大,然而股票 B 的涨幅按比例要大得多。

我们可以通过将变化量除以股票的起始价格来解决上述问题,有效地计算价格变化的百分比,也称为股票收益(stock return)。 在我们的例子中,股票 A 的回报是 $(102−100)/100=2% $ ,而股票 B 的回报是 ( 11 − 10 ) 10 = 10 (11−10)10=10% (1110)10=10股票回报(Return)与我们投资资本的百分比变化一致。

收益率在金融中被广泛使用,但是当需要一些数学建模时,对数回报是首选。 将 St 称为股票 S 在时间 t 的价格,我们可以将 t1 和 t2 之间的对数收益定义为:
r t 1 , t 2 = log ⁡ ( S t 2 S t 1 ) r_{t_1, t_2} = \log \left( \frac{S_{t_2}}{S_{t_1}} \right) rt1,t2=log(St1St2)
通常来说,我们查看固定时间间隔内的日志回报,因此我们的意思是 10 分钟的对数收益率
r t = r t − 10 m i n , t r_t=r_{t-10min,t} rt=rt10min,t
对数收益率有几个优点,例如:

  • 它们随着时间的推移是可加的
    r t 1 , t 2 + r t 2 , t 3 = r t 1 , t 3 r_{t_1, t_2} + r_{t_2, t_3} = r_{t_1, t_3} rt1,t2+rt2,t3=rt1,t3

  • 常规收益率不能低于 -100%,而对数收益率不受限制

已实现波动率Realized volatility

当我们交易期权options时,我们模型的一个有价值的输入是股票对数收益率的标准差。 在更长或更短的时间间隔内计算的对数收益率的标准差会有所不同,因此它通常被标准化为 1 年期,年化标准差称为波动率

在本次比赛中,您将获得 10 分钟的账面数据,我们要求您预测接下来 10 分钟的波动性。 波动率将按如下方式测量:

我们将计算所有连续账簿更新的对数收益率,并将实现的波动率 σ 定义为对数收益率平方和的平方根
σ = ∑ t r t − 1 , t 2 \sigma = \sqrt{\sum_{t}r_{t-1, t}^2} σ=trt1,t2
其中我们使用 WAP 作为股票价格来计算对数收益率。

我们希望定义尽可能简单明了,这样没有金融知识的 Kagglers 就不会受到惩罚。 所以我们没有对波动率进行年化,我们假设对数回报的平均值为 0。

竞赛数据Competition data

在本次比赛中,Kagglers 面临的挑战是从固定 10 分钟窗口的账面和交易数据中生成一系列短期信号,以预测下一个 10 分钟窗口的已实现波动率。 在 train/test.csv 中给出的目标可以通过相同的 time_id 和 stock_id 与原始订单簿/交易数据链接。 特征和目标窗口之间没有重叠。

请注意,比赛数据将附带分区的账面和交易数据文件。 您可以在此 notebook 中找到有关账面和交易数据文件处理的教程。

In[1]:

import pandas as pd
import numpy as np
import plotly.express as px
train = pd.read_csv('../input/optiver-realized-volatility-prediction/train.csv')
train.head()

Out[1]:

stock_idtime_idtarget
0050.004136
10110.001445
20160.002168
30310.002195
40620.001747

取第一行数据,表示time_id 5、stock_id 0的目标bucket的实现vol为0.004136。 特征桶中的账簿和交易数据如何构建信号?

In[2]:

book_example = pd.read_parquet('../input/optiver-realized-volatility-prediction/book_train.parquet/stock_id=0')
trade_example =  pd.read_parquet('../input/optiver-realized-volatility-prediction/trade_train.parquet/stock_id=0')
stock_id = '0'
book_example = book_example[book_example['time_id']==5]
book_example.loc[:,'stock_id'] = stock_id
trade_example = trade_example[trade_example['time_id']==5]
trade_example.loc[:,'stock_id'] = stock_id
订单簿数据快照

In[3]:

book_example.head()

Out[3]:

time_idseconds_in_bucketbid_price1ask_price1bid_price2ask_price2bid_size1ask_size1bid_size2ask_size2stock_id
0501.0014221.0023011.001371.002353322621000
1511.0014221.0023011.001371.002353310021000
2551.0014221.0023011.001371.002405310021000
3561.0014221.0023011.001371.002405312621000
4571.0014221.0023011.001371.002405312621000
交易数据快照

In[4]:

trade_example.head()

Out[4]:

time_idseconds_in_bucketpricesizeorder_countstock_id
05211.002301326120
15461.00277812840
25501.0028185510
35571.00315512150
45681.003646410
Realized volatility calculation in python

在这场比赛中,我们的目标是预测短期的已实现波动率。 虽然无法共享目标的订单簿和交易数据,但我们仍然可以使用我们提供的特征数据呈现已实现的波动率计算。

由于已实现波动率是给定股票价格变化的统计量度,为了计算价格变化,我们首先需要在固定时间间隔(1 秒)进行股票估值。 我们将使用我们提供的订单簿数据的加权平均价格或 WAP。

book_example['wap'] = (book_example['bid_price1'] * book_example['ask_size1'] +
                                book_example['ask_price1'] * book_example['bid_size1']) / (
                                       book_example['bid_size1']+ book_example['ask_size1'])

以下绘制股票的WAP

fig = px.line(book_example, x="seconds_in_bucket", y="wap", title='WAP of stock_id_0, time_id_5')
fig.show()

在这里插入图片描述

为了计算对数回报,我们可以简单地取两个连续 WAP 之间的比率的对数。 第一行将有一个空的回报,因为之前的书籍更新是未知的,因此空的回报数据点将被删除。

def log_return(list_stock_prices):
    return np.log(list_stock_prices).diff() 
book_example.loc[:,'log_return'] = log_return(book_example['wap'])
book_example = book_example[~book_example['log_return'].isnull()]
让我们绘制该工具在此时间段内的逐笔回报
fig = px.line(book_example, x="seconds_in_bucket", y="log_return", title='Log return of stock_id_0, time_id_5')
fig.show()

在这里插入图片描述

此特征桶中股票 0 的已实现成交量将是:

In[10]:

def realized_volatility(series_log_return):
    return np.sqrt(np.sum(series_log_return**2))
realized_vol = realized_volatility(book_example['log_return'])
print(f'Realized volatility for stock_id 0 on time_id 5 is {realized_vol}')
Realized volatility for stock_id 0 on time_id 5 is 0.004499364172786558

朴素预测:使用过去的已实现波动率作为目标

关于波动率的一个众所周知的事实是它往往是自相关的。 我们可以使用此属性来实现一个简单的模型,该模型仅通过使用最初 10 分钟内已实现的波动率来“预测”已实现的波动率。

让我们计算整个训练集过去实现的波动率,看看单个原始信号的预测能力如何。

import os
from sklearn.metrics import r2_score
import glob
list_order_book_file_train = glob.glob('/kaggle/input/optiver-realized-volatility-prediction/book_train.parquet/*')

由于本次比赛中数据通过stock_id进行分区,以便Kagglers更好地管理内存,因此我们尝试逐个计算已实现的波动率股票并将它们合并为一个提交文件。 请注意,如果我们加载单个文件,作为分区列的股票 ID 不存在,因此我们将手动修复。 我们将重用上一课中定义的对数返回和已实现的波动率函数。

def realized_volatility_per_time_id(file_path, prediction_column_name):
    df_book_data = pd.read_parquet(file_path)
    df_book_data['wap'] =(df_book_data['bid_price1'] * df_book_data['ask_size1']+df_book_data['ask_price1'] * df_book_data['bid_size1'])  / (
                                      df_book_data['bid_size1']+ df_book_data[
                                  'ask_size1'])
    df_book_data['log_return'] = df_book_data.groupby(['time_id'])['wap'].apply(log_return)
    df_book_data = df_book_data[~df_book_data['log_return'].isnull()]
    df_realized_vol_per_stock =  pd.DataFrame(df_book_data.groupby(['time_id'])['log_return'].agg(realized_volatility)).reset_index()
    df_realized_vol_per_stock = df_realized_vol_per_stock.rename(columns = {'log_return':prediction_column_name})
    stock_id = file_path.split('=')[1]
    df_realized_vol_per_stock['row_id'] = df_realized_vol_per_stock['time_id'].apply(lambda x:f'{stock_id}-{x}')
    return df_realized_vol_per_stock[['row_id',prediction_column_name]]

遍历每只个股,我们可以得到过去实现的波动率作为对每只个股的预测。

def past_realized_volatility_per_stock(list_file,prediction_column_name):
    df_past_realized = pd.DataFrame()
    for file in list_file:
        df_past_realized = pd.concat([df_past_realized,
                                     realized_volatility_per_time_id(file,prediction_column_name)])
    return df_past_realized
df_past_realized_train = past_realized_volatility_per_stock(list_file=list_order_book_file_train,
                                                           prediction_column_name='pred')

让我们将输出数据帧train.csv连接起来,看看在训练集上的朴素预测的性能。

train['row_id'] = train['stock_id'].astype(str) + '-' + train['time_id'].astype(str)
train = train[['row_id','target']]
df_joined = train.merge(df_past_realized_train[['row_id','pred']], on = ['row_id'], how = 'left')

我们将通过两个指标评估朴素预测结果:RMSPE 和 R 平方。

from sklearn.metrics import r2_score
def rmspe(y_true, y_pred):
    return  (np.sqrt(np.mean(np.square((y_true - y_pred) / y_true))))
R2 = round(r2_score(y_true = df_joined['target'], y_pred = df_joined['pred']),3)
RMSPE = round(rmspe(y_true = df_joined['target'], y_pred = df_joined['pred']),3)
print(f'Performance of the naive prediction: R2 score: {R2}, RMSPE: {RMSPE}')
Performance of the naive prediction: R2 score: 0.628, RMSPE: 0.341

naive 模型的性能并不惊人,但作为基准,它是一个合理的开始。

提交submission

作为最后一步,我们将通过教程笔记本进行提交——通过写入输出文件夹的文件。朴素方法的提交在公共LB上获得了RMSE 0.327,改进空间肯定很大!

list_order_book_file_test = glob.glob('/kaggle/input/optiver-realized-volatility-prediction/book_test.parquet/*')
df_naive_pred_test = past_realized_volatility_per_stock(list_file=list_order_book_file_test,
                                                           prediction_column_name='target')
df_naive_pred_test.to_csv('submission.csv',index = False)

请注意,在本次比赛中,可以下载的测试数据只有几行。 在您提交笔记本并手动提交输出后,实际的评估程序将在后台运行。 请检查代码要求以获取更多解释。

私人排行榜将根据训练期后收集的真实市场数据构建,因此公共和私人排行榜数据将零重叠。 让您的模型在实时市场上进行测试将是令人兴奋的! 由于本次比赛将提供一个非常丰富的数据集,代表市场微观结构,因此可以提出无限量的信号。 一切都在你身上,祝你好运! 我们 Optiver 非常期待向才华横溢的 Kaggle 社区学习!

如果您对此笔记本或其背后的财务概念有任何疑问,请随时在评论部分提问,我们将确保您的问题得到解答。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Optiver Realized Volatility:Introduction to financial concepts and data - [中文翻译] 的相关文章

  • Deep Learning Notes: Chapter 1 Introduction

    前言 最近开始读 Deep Learning 一书 这让我有了一个边读书边写笔记的动机 xff1a 能够让人很轻松流畅的把握住这本书的脉络 xff0c 从而读懂这本书的核心内容 由于终究是英文表达更地道 xff0c 因此该笔记都是节选自书中
  • An Introduction to Deep Learning for the PhysicalLayer

    An Introduction to Deep Learning for the PhysicalLayer I INTRODUCTION 这段主要讲了文章的主要工作 将发射机 通道和接收器作为一个自动编码器 xff0c 对于给定的损失函数
  • pytorch总结——1:初步introduction

    pytorch简介 先说Torch xff0c 这是一个与Numpy类似的张量 xff08 Tensor xff09 操作库 xff0c 与Numpy不同的是Torch对GPU支持的很好 xff0c Lua是Torch的上层包装 但是Lua
  • An Introduction on Deep Learning for the Physical Layer

    An Introduction on Deep Learning for the Physical Layer 代码实现 xff1a https github com shengjian3476077 DLforPhy 一 文章的主要工作
  • ROS进阶学习手记 10 - 用iRobot Create 2搭建自己的TurtleBot(1)- Introduction

    ROS进阶学习手记 10 搭建自己的TurtleBot xff08 1 xff09 Introduction 时隔一两个月 xff0c 再次回来继续写自己的ROS学习及应用手记 这一两个月里 xff0c 我并没有闲着 xff0c 而是照着
  • Optiver Realized Volatility:Introduction to financial concepts and data - [中文翻译]

    Introduction to financial concepts and data Optiver波动率预测概述评估时间线预测时间线 金融概念与数据介绍订单簿 Order Book 交易 xff08 Trade xff09 做市与市场效
  • CMake Introduction 1

    一 基本使用 安装 xff1a 下载二进制包后可直接解压使用 从源码安装则执行命令 xff1a bootstrap make make install 尝试执行bootstrap失败 使用 xff1a cmake dir path xff0
  • Dronekit——Introduction

    Dronekit Introduction 参考 xff1a http python dronekit io about overview html 关于Dronekit DroneKit Python允许开发人员创建 在板载协同计算机上运
  • 信用卡评分笔记

    信用卡评分语言 R语言 python 信用卡评分模型 ROC曲线 lift曲线 lorenz曲线 logistic回归 ROC IV WOE gini KS lift
  • 信用卡评分模型(R语言)

    信用卡评分 2016年1月10日 一 数据准备 1 问题的准备 目标 要完成一个评分卡 通过预测某人在未来两年内将会经历财务危机的可能性来提高信用评分的效果 帮助贷款人做出最好的决策 背景 银行在市场经济中起到至关重要的作用 他们决定谁在什
  • 风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)

    本笔记源于CDA DSC课程 由常国珍老师主讲 该训练营第一期为风控主题 培训内容十分紧凑 非常好 推荐 CDA数据科学家训练营 一 风控建模流程以及分类模型建设 1 建模流程 该图源自课程讲义 主要将建模过程分为了五类 数据准备 变量粗筛
  • Volatility3内存取证工具使用详解

    Volatility 介绍 Volatility是一款开源的内存取证分析工具 是一款开源内存取证框架 能够对导出的内存镜像进行分析 通过获取内核数据结构 使用插件获取内存的详细情况以及系统的运行状态 支持Windows Linux MaC
  • 删除无关单元格时需要停止 UDF 重新计算

    我注意到每当我删除单元格时我的 UDF 都会重新计算 这会在删除整个列时导致大量延迟 因为 UDF 会为使用它的每个单元格调用 因此 如果您使用 1000 个 UDFS 则删除列或单元格将调用它 1000 次 例如 将以下 UDF 放入模块
  • R 中 GARCH 的模拟

    我正在对 GARCH 模型进行模拟 模型本身并不是太相关 我想问你的是关于优化 R 中的模拟 最重要的是 如果你看到任何矢量化的空间 我已经考虑过 但我看不到它 到目前为止我所拥有的是这样的 Let ht cond variance in
  • 使用 R 上的“高频”包转换 .csv 文件以进行进一步操作

    The highfrequency包已以转换的方式创建 txt and csv文件分别从 NYSE TAQ 和 WRDS TAQ 存入 RDataxts 对象的文件 然后可以通过包轻松操作这些文件 问题是我对 WRDS 数据库的访问权限有限
  • 计算年百分比(需要继承代码的一些帮助)

    我正在制作一个应用程序 为客户提供大致的贷款报价 稍后由其他后台系统计算 我从我们为其制作计算器的金融公司收到了一些代码 我的问题是我不理解计算年百分比率 包括启动费和月费 的代码部分 他们可能正在使用这种方法 但我不能真正告诉 http
  • SQL Server 2005 - 使用前导零格式化十进制数(包括带符号的小数!)

    我需要格式化数字 例如 1 99 21 34 1797 94 300 36 21 99 2 31 使用 SQL Server 2005 T SQL 将格式掩码转换为 0000 00 保留有符号整数和点后的小数 这将用于金融系统的文本文件导出
  • 免费 API 或类似工具可获取股票的下一个收益日期 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 API 或类似的 API 我可以在其中获取股票的下一个 即将到来的 收益日期 我已经用
  • 寻找股票图表组件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript 中的简单金融利率函数

    我正在寻找一个简单的 javascript 金融 RATE 函数 我找到了这个 但似乎太难理解了 我想简化这个功能 需要你的帮助 如果有人有最简单的功能 请回答 这是一个等效的 Excel RATE 函数 var rate function

随机推荐

  • 【算法基础学习 4】互补滤波算法——PX4姿态估计

    目录 应用场景 名词解释 陀螺仪 加速度计 磁力计 xff08 又叫磁罗盘 xff09 坐标系 姿态表示 滤波原理 滤波主要过程 预备知识 预测 校正 加速度计校正 磁力计校正 更新四元数 源码分析 主程序运行流程图 函数功能简述 源码分析
  • 【视觉SLAM之认识摄像头】

    视觉SLAM 了解摄像机单目摄像机双目摄像机 了解摄像机 从这篇文章开始 xff0c 我将用20篇文章带你了解视觉SLAM 我们先来了解一下摄像机 摄像头分为几种 xff0c 分别是 xff1a 单目摄像机双目摄像机深度摄像机 通过一个表格
  • 到底什么是非线性优化?

    你是否也对非线性优化这个领域望而却步 xff1f 你是否也在思索非线性优化求解方法的根源 xff1f 你是否也苦恼于非线性优化到底在研究什么 xff1f 如果你的回答是肯定的 xff0c 说明我们是一样的 那么 xff0c 让我们从这里开始
  • 视线角 视线角速率(待补充)

    视线相对惯性空间的旋转角速度
  • 【无人机学习】惯性导航系统简介

    前面文章SLAM初识 xff08 点击查看 xff09 中我们介绍过SLAM中的两大类传感器 xff1a 激光雷达和视觉传感器 xff0c 并详细分析了其优缺点 而实际上 xff0c 在基于移动机器人的SLAM中 xff0c 还有一类很重要
  • PID介绍 PID调参 串级PID

    鉴于串级PID在pixhawk系统中的重要性 xff0c 无论是误差的补偿 xff0c 如姿态解算 xff1b 还是控制的实现 xff0c 如姿态控制 xff0c 位置控制 xff0c 靠的都是串级的pid xff0c 这里我们先对串级pi
  • 【通俗讲5G】第一次有人把5G讲的这么简单明了

    关于5G通信 xff0c 常见的文章都讲的晦涩难懂 xff0c 不忍往下看 xff0c 特转载一篇 xff0c 用大白话实现5G入门 简单说 xff0c 5G就是第五代通信技术 xff0c 主要特点是波长为毫米级 xff0c 超宽带 xff
  • 终于有人把云计算、大数据和 AI 讲明白了

    原标题 xff1a 不是技术也能看懂云计算 xff0c 大数据 xff0c 人工智能 我今天要讲这三个话题 xff0c 一个是云计算 xff0c 一个大数据 xff0c 一个人工智能 xff0c 我为什么要讲这三个东西呢 xff1f 因为这
  • 常用锁原理的介绍(上)

    本文是学习 多处理器编程的艺术 的笔记 下面主要介绍了一些常用的锁的原理 xff0c 这些只是一些理论 xff0c 离我们实际使用还是有一些差距的 不过这种理论也往往是相对比较好容易理解了掌握的 xff0c 只有了解了这些理论 xff0c
  • 实时数据库数据采集接口API八爪鱼采集接口

    实时数据库数据采集接口是针对国内外各种实时数据库系统 PI IP21等 和DCS PLC等数据源之间的进行实时数据通讯的工具 主要包含IOServer服务器和IOClient客户端两个部分 xff1a IO Server运行在实时数据库服务
  • 实时操作系统的任务调度示例之时间片

    摘要 在之前的一篇博文实时操作系统的任务调度示例之抢占中 xff0c 以实验和代码的形式讲解了不同优先级任务同时出在就绪态中 xff0c 高优先级的任务总是先得到运行 这里就留下了一个问题 xff0c 如果多个出于就绪态的任务具有相同优先级
  • 避障算法之3DVFH+

    目录 一 3DVFH 43 论文翻译 摘要 1 引言 2 相关工作 3 八叉树地图 4 3DVFH 43 4 1 第一步 xff1a 八叉图探索 4 2 第二步 xff1a 二维基础极直方图 2D Primary Polar Histogr
  • linux及C++书籍推荐

    盘点一下今年看的书 xff0c 记录下学习历程也向大家分享一些书籍 xff1a Unix编程3剑客 xff1a RichardSteven的大著 Unix网络编程卷1 xff08 套接字联网api xff09 Unix环境高级编程 Unix
  • 机场跑道检测论文阅读笔记

    机场跑道检测论文阅读笔记 A Robust Vision based Runway Detection and Tracking Algorithm for Automatic UAV Landing 来自沙特的KAUST xff0c 20
  • Jetson AGX Xavier使用笔记

    由于毕设的缘故 xff0c 从业无人机相关 xff0c 嵌入式GPU首选Xavier xff0c 撰文记录一下刷机心得 xff0c 欢迎小伙伴们热烈讨论 xff0c 共同学习 1 刷机 网上教程很多 xff0c 但我依然刷了很久才搞定 xf
  • 稀疏编码SparseNet

    大名鼎鼎的稀疏编码 xff0c 源自1996 记录一下使用sparsenet的心得 0 My Prerequisite Windows10matlab 2016bmingw64 为了节省内存 xff0c 我把matlab2016b装在了移动
  • PX4学习笔记5:数据录制及离线处理

    本文内容主要包括 xff0c rosbag的录制以及消息的离线处理 1 rosbag录制 录制双目相机发布的图片话题如下命令 rosbag record O obs5 bag stereo right image raw stereo le
  • PX4学习笔记3: 速度控制

    记录一下PX4在offboard板外模式下用速度控制四旋翼的过程 参考资料如下 PX4板外模式教程youtube速度控制小实验PX4飞行模式offboard模式offboard模式控制例子 注意 必须2Hz以上的频率发布控制消息 否则PX4
  • 使用matlab将mat矩阵存储为xml文件

    参考链接如下 xff1a 原文 改后 function createxml name1 mat1 name是输入的文件名 xff0c datatest是matlab中的矩阵 一般都是float格式存储的 name2 datatest2 xd
  • Optiver Realized Volatility:Introduction to financial concepts and data - [中文翻译]

    Introduction to financial concepts and data Optiver波动率预测概述评估时间线预测时间线 金融概念与数据介绍订单簿 Order Book 交易 xff08 Trade xff09 做市与市场效