当前位置: 首页 > news >正文

全球Windows机器蓝屏,作为量化人,我的检讨来了

在这里插入图片描述

昨天下午,微软给大家放了个假。Windows又双叒死机了。不过,这一次不是几台机器,而是全球大范围宕机。这一刻,大家都是“正蓝旗”。

蓝瓶的,效果好!

现在根本原因已经找到,绝大多数人的机器都已修复。根本原因在于,一家名为CrowdStrike的安全公司在例行更新时,部署了错误的配置文件到Windows上。

这个错误也是由于另一个比较少见的错误引起的。CrowdStrike软件使用了微软部署在美国中部的云服务Azure,但刚好这个数据中心出现了异常。

在这里插入图片描述

这个异常就导致了CrowdStrike在获取配置时,导入了错误的配置信息。这些错误信息下发后,软件终端基于错误的配置运行,就会在Windows终端额外加一个名为csagent.sys的驱动,而这个驱动存在bug,会导致系统陷入蓝屏死循环。

这个错误导致航司、银行和交易所受到重大影响,后面是否会面临巨额赔偿,还不清楚,但微软股价已受严重冲击。

目前还不清楚国内有多少从事交易的机构和个人受影响,但是,这也给我们量化人提了一个醒,你构建的交易系统,它安全可靠吗?我们应该如何构建自己的量化交易系统,使得它即使遇到类似的问题,也能保持稳定运行?

这里提几条建议。

在这里插入图片描述

第一,一定要达成高覆盖的单元测试和CI/CD流程。一定要意识到任何软件、硬件系统都是有bug的。在你构建量化交易系统时,一定要达成高覆盖单元测试和CI/CD流程。

单元测试不仅仅是在我们开发阶段帮助我们确保各个模块的功能正确,更重要的是,它设置了一组基准,可以帮助我们确定在时刻发生变化的环境下,系统的各项功能仍然满足基准运行要求。

正如这次CrowdStrike案例所显示的那样,即使你的交易系统并没有升级(就像这次的Windows),但交易系统依赖的第三方组件(比如数据源,Pandas或者Numpy等)仍然可能升级。我们的交易系统在接受任何升级前,都要确保升级后的系统,仍然完全能通过我们所有的测试用例。

像CrowedStrike这样的软件,其实他们平常的测试也是很严格的,但为什么还会出现这样的故障?这里固然有比较偶然的原因(这次是Azure的故障引起),但是,很可能CrowedStrike的测试没有经过CI/CD的覆盖。只有实现了CD,这样才能保证连部署也被测试覆盖到,才会尽量减少错误。

传统上,量化团队都是金融专业的人领导的,他们可能缺乏软件工程的经验,不太懂测试、CI/CD这些专业知识,正因为这样,我写完《Python高效编程实践》这本书之后,特地请了两位金融界的大咖来推荐。因为自己做量化金融有好多年了,知道这个领域,非常需要系统化的软件工程方法来确保软件质量。

在这里插入图片描述

第二,关闭一切自动更新。生产环境下一切自动更新都是非常危险的,必须关闭。只有经过严格测试的更新,才能应用。

第三,更新系统时一定要使用灰度部署。

在部署上,CrowedStrike这次也犯了一大错误,就是没有实现灰度部署。实际上,安全软件权限很高,一旦出错,往往就会引起很严重的故障。因此,灰度部署就格外重要。

如果CrowedStrike实现了灰度部署,比如,一开始只部署1%的机器,并且监控升级后的情况(收集数据是灰度发布的一部分),然后在没有错误报告的情况下,再逐步扩大推送范围,就完全可以避免出现这么重大的事故。

灰度发布同样适用于量化系统。2012年8月1日,骑士资本在纳斯达克交易所部署了一个新的交易软件,但是由于没有充分测试,该软件在激活时触发了一系列错误的交易指令,导致公司在45分钟内损失了约4.4亿美元。最终导致了它被Jefferies Group收购。

骑士资本案例报告

事后分析,如果正确地实施了灰度发布,完全可以避免这样的错误。

如果有杠精:这件事比较复杂。一言以蔽之,不是没有实施灰度发布,而是没有正确地实施灰度发布。

据说做期货的,往往是90%的时候都在赚钱,但就是不到1%的极端情况,让你跳了楼。

第三,构建可控的系统。

在这里插入图片描述

如果你的交易信号系统构建在AI模型之上,那么,风控模型就一定不要构建在黑盒子之上,一定要设置熔断机制,到点无条件地止损(当然这会引起其它家的量化也跟进止损,但换个角度,如果你跑得太晚,那么被埋的就是你自己)。

第四,再先进的系统,也不能无人值守。即使有了全自动的量化系统,也不要把手工交易员都裁了。如果你去看三峡大坝的发电厂,你会发现,发电是高度自动化的,但电脑显示屏前的值守人员,仍然会严格倒班。

在这里插入图片描述

相关文章:

全球Windows机器蓝屏,作为量化人,我的检讨来了

昨天下午,微软给大家放了个假。Windows又双叒死机了。不过,这一次不是几台机器,而是全球大范围宕机。这一刻,大家都是“正蓝旗”。 蓝瓶的,效果好! 现在根本原因已经找到,绝大多数人的机器都已修…...

部署和运维

目录 1.Git1.1. Git指令中merge和rebase的区别1. Commit 记录2. 合并方式3. 冲突处理4. 使用场景选择建议 1.2. cherry-pick的使用如何使用 git cherry-pick例子处理冲突撤销 cherry-pick其他选项 结论 2. 部署1. Nginx的使用场景 编译打包1. webpack2. webpack打包优化1. 代码…...

微信小程序基本语法

官网 https://developers.weixin.qq.com/miniprogram/dev/framework/ 视频教程:尚硅谷微信小程序开发教程,2024最新微信小程序项目实战! 仿慕尚花坊项目源码:https://gitee.com/abcdfdewrw/flower-workshop 目录 一,初…...

测试用例的设计方法

等价类 等价类概念:在所有测试的数据中,具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充,其主要区别是: 边界值测试设计不是从某一个等价类中…...

Android10.0 锁屏分析-KeyguardPatternView图案锁分析

首先一起看看下面这张图: 通过前面锁屏加载流程可以知道在KeyguardSecurityContainer中使用getSecurityView()根据不同的securityMode inflate出来,并添加到界面上的。 我们知道,Pattern锁所使用的layout是 R.layout.keyguard_pattern_view&a…...

Python 装饰器:函数的函数,代码的艺术

引言 在Python中,装饰器是一种强大的功能,允许程序员在不修改原函数源码的情况下增强或修改函数行为。装饰器本质上是一个接收函数作为参数的高阶函数,并返回一个新的函数或修改原函数的行为。这种机制极大地提高了代码的复用性、可读性和模…...

安全防御2

实验要求: 实验过程: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换): 新建电信区: 新建移动区: 将对应接口划归到各自区域: 新建…...

C语言 ——— 打印水仙花数

目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数,其各位数字的n次方之和等于该数本身 如:153 1^3 5^3 3^3,则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…...

「Conda」在Linux系统中安装Conda环境管理器

在Linux系统中安装Conda环境管理器是一个相对简单的过程。 1. 准备工作 确保你的Linux系统已经更新到最新版本,并安装了基本的开发工具和库。打开终端,执行以下命令: sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential2. 安装Miniconda或An…...

9.11和9.9哪个大?GPT-4o也翻车了

今天刷到了这个问题,心血来潮去问下chatgpt-4o,没想到疯狂翻车... 第一次问: GPT一开始给出了难绷的解答,让我想起了某短视频软件评论区里对某歌手节目排名的质疑哈哈哈哈哈 但是在接下来的进一步询问和回答中它反应过来了。 第…...

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…...

使用ElementUI和element-china-area-data库实现省市区三级联动组件封装

在前端开发中,省市区三级联动是一个常见的需求。今天我们将使用Vue.js和ElementUI组件库,结合element-china-area-data库,来实现一个省市区三级联动的组件。这个组件不仅可以提高用户体验,还能大大简化我们的代码。接下来&#xf…...

0718,TCP协议,三次握手,四次挥手

目录 上课喵: TCP(Transmission Control Protocol,传输控制协议)的状态迁移图 TCP连接的状态迁移图 状态迁移说明: 注意: big_htonl.c 字节序转换 addr.c IP地址的转换 作业喵: …...

如何安装Visual Studio Code

Visual Studio Code(简称 VS Code) Visual Studio Code 是一款由微软开发的免费、开源的现代化轻量级代码编辑器。 主要特点包括: 跨平台:支持 Windows、Mac 和 Linux 等主流操作系统,方便开发者在不同平台上保持一…...

vi 编辑器快捷生成 main 函数和基本框架

step1: 执行 sudo vi /etc/vim/vimrc &#xff08;修改vimrc需要管理员权限&#xff1a;sudo&#xff09; step2:输入用户密码&#xff0c;回车, 编辑vimrc文件 step3:在尾行输入以下代码&#xff08;可复制&#xff09; map mf i#include<stdio.h><ESC>o#includ…...

npm相关指令

​ 切换镜像 腾讯镜像 npm config set registry https://mirrors.cloud.tencent.com/npm/ 淘宝镜像&#xff08;新版&#xff09; npm config set registry https://registry.npmmirror.com 淘宝镜像&#xff08;旧版&#xff0c;已弃用&#xff09; npm config set regist…...

为什么不要碰自媒体

要是失业了&#xff0c;搞自媒体&#xff0c;可行吗&#xff1f;毫无希望&#xff01; 如今的自媒体早卷得不成样子了&#xff0c;很难再有机会&#xff0c;根本原因在于几乎没有增量用户的同时&#xff0c;存量用户也不再有剩余时间&#xff0c;全量用户的时间早已被几个自媒…...

酷炫末世意境背景404单页HTML源码

源码介绍 酷炫末世意境背景404单页HTML源码&#xff0c;背景充满着破坏一切的意境&#xff0c;彷佛末世的到来&#xff0c;可以做网站错误页或者丢失页面&#xff0c;将下面的代码放到空白的HTML里面&#xff0c;然后上传到服务器里面&#xff0c;设置好重定向即可 效果预览 …...

PHP 调用 1688 详情 API 接口的实战攻略

在电商领域&#xff0c;获取准确和详细的商品信息对于业务的发展至关重要。1688 作为国内知名的批发采购平台&#xff0c;其详情 API 接口为开发者提供了丰富的数据资源。本文将为您详细介绍如何使用 PHP 调用 1688 详情 API 接口。 一、前期准备 注册 1688 开放平台账号&#…...

SAP ABAP性能优化

1.前言 ABAP作为SAP的专用的开发语言&#xff0c;衡量其性能的指标主要有以下两个方面&#xff1a; 响应时间&#xff1a;对于某项特定的业务请求&#xff0c;系统在收到请求后需要多久返回结果 吞吐量&#xff1a;在给定的时间能&#xff0c;系统能够处理的数据量 2. ABAP语…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...