【金融知识】国债期货转换因子的推导与理解
背景 在国债期货到期日,现货市场往往存在多个符合交割标准的债券,国债期货在交割中设计了转换因子制度。在转换因子制度下,每只可交割债券都有其相应的转换因子,通过转换因子可计算该可交割债券的交割价格。 要理解国债期货转换因子这个概念,还需要对国债期货本身的特征有一定的了解。首先要了解国债期货中的标准券:国债期货是标准化合约,合约标的是一个名义标准券,也可以说是虚拟券,这个设计的最大功能,就是可以扩大可交割国债的范围,增强价格的抗操纵性,减小交割时的逼仓风险。但是事实上,国债期货采用实物交割,空头交割时理论上需要用名义标准券去履约。但现实中名义标准券并不存在,因而交易所规定可以使用现实中存在的、满足一定期限要求的一篮子国债均可进行交割。但是在金融市场中,金融产品在价格上必须满足一对一的映射才能保证定价体系的平衡,否则会出现无风险套利机会。转换因子(Conversion Factor, CF) 就是实现一对一映射的纽带。 在我国各类国债期货中,他们对应的标准券如下: 2年期国债期货合约标的:面值为200万元人民币、票面利率为3%的名义中短期国债; 5年期国债期货合约标的是:面值为100 ...
【数据挖掘】信贷背景的欺诈检测数据挖掘
项目简介 数据以及相关信息是在Kaggle上获取的 Credit Fraud || Dealing with Imbalanced Datasets | Kaggle 数据介绍 本数据集包含欧洲持卡人在2013年9月中的某两天发生的信用卡交易,其中 284,807 笔交易中有 492 笔欺诈。数据集展现出高度不平衡的性质,正类(欺诈)占所有交易的 0.17%。 12345df=pd.read_csv('creditcard.csv')print(len(df[df['Class']==0]),len(df[df["Class"]==1]))plt.pie([len(df[df['Class']==0]),len(df[df["Class"]==1])],labels=['正常交易','欺诈'],autopct= '%1.2f%%')plt.show() 整个数据包含Time、Amount、V1、V2、…V28以及Class共3 ...
【金融知识】在做市交易中如何调整你的Fair Price
所谓Fair price就是我们通过模型和经验预测的资产在某一时间点的真实价值。所以交易的本质内在逻辑就是当市场价高于Fair price就卖出,否则就买入。 手机上展示效果较差,本篇博客建议在电脑浏览器中阅读 基本思路 不管是用哪一方的策略,我们本质并不是通过预测资产的趋势来获取资本利得,而是通过频繁的交易获得资产波动时的价差。所以如果大量持有某一方向的头寸,会导致我们承受资产价格波动的风险,而且对于资金的利用不够完全,损失掉很多盈利机会。 因此,当我们的某一资产相对较多时,可以调低我们对他的fair price,让我们更容易将其卖掉,更难买入,直到两者平衡。基本思路就是将左图所示变化为右图所示,具体使用曲线函数还是分段线性函数需要具体尝试,也是我们不断优化策略的角度。 下面就给出了一个简单的调整方案可以参考,大家也可以调整参数看看变化情况。具体的,我们只需要保证买入价格高于卖出价格,曲线向左下倾斜即可。手机上展示效果较差,请在电脑浏览器中访问(若没加载出来稍等一下) 其他细节 具体看上图,图中的每个价格其实是每个相对资产对应的,也就是如果我们买卖100单位资产,其中每一单位 ...
【金融知识】交易市场中的Maker与Taker
写在前面 本文假设诸位对于各种专业名词有一定的了解,当然,如果对其中的专业名词还不熟悉,可以看一下这篇文章:[点击下载 Theory For Ready Trader One](/Theory For Ready Trader One.pdf) 对于Fair price,所谓Fair price就是我们通过模型和经验预测的资产在某一时间点的真实价值。所以交易的本质内在逻辑就是当市场价高于Fair price就卖出,否则就买入。 Market maker & Market taker 首先要知道交易市场中存在maker与taker两种身份,其中maker是市场流动性的提供者,能够促进整个市场的交易,对整个交易所有利,所以maker在交易过程中的交易费较低,甚至是负的交易费;反之taker则需要像正常金融产品交易一样,缴纳相对较高的交易费。当然,如果maker获得了负交易费,那么该费用的绝对值一定比taker的费用低,否则交易所无法盈利。 从具体的行为上来看,在当前LOB中的一系列价格中,你下在一个位置,等待别人来交易,那你就是maker;反之,你直接选择一个交易对手报出的价格,直 ...
【编程学习】关于XGBoost你需要了解的知识
什么是XGBoost 首先,要了解GBDT(梯度提升决策树)是一种基于boosting增强策略的加法模型,其核心思想是通过迭代的方式,每次训练一棵CART(分类与回归树)来拟合前t-1棵树预测结果与实际训练样本真实值之间的残差。在训练过程中,GBDT采用前向分布算法进行贪婪学习,旨在逐步优化整体模型的预测能力。 接着,XGBoost(极限梯度提升)在GBDT的基础上进行了多项优化。例如,它对损失函数进行了二阶泰勒展开,使模型能够更准确地逼近最优解;在目标函数中加入了正则项,有助于防止过拟合;同时,XGBoost支持并行处理,大大加快了训练速度;并且默认对缺失值进行了处理,提高了模型的鲁棒性。这些优化使得XGBoost在可扩展性和训练速度上有了显著的提升,但其核心思想——通过迭代训练CART树来拟合残差——与GBDT保持一致。 XGBoost如何实现并行? boosting不是一种串行的结构吗?XGBoost怎么可以实现并行的? XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。 XGBo ...
【编程学习】SQL窗口函数一览
over里面怎么写? 先写partition by col1,代表着我们在进行窗口函数计算时,先将数据按照col1列进行分组,与SQL的DQL语言中的group by一样。 其次,order by col2,代表着我们在进行窗口函数计算时,先将数据按照col2列进行排序,这对我们在进行排名类的操作时至关重要,同样的,与SQL的DQL语言中的order by一样。 最后是选取范围,要用到rows between …… and …… 关键字,从其英文含义上就很容易理解他的使用方式。具体的可选参数有以下几个: unbounded preceding 前面所有行 unbounded following 后面所有行 current row 当前行 n following 后面n行 n preceding 前面n行 这几个参数可以根据你的需要进行组合,应该很容易理解。简单来说,就是将窗口函数的参数范围限制在了有限的行中,实现滚动窗口的左右。 排序类 在窗口内进行排序。 row_number() over() rank() over() dense_rank() over() ntile(n) ...
【编程学习】利用shell脚本解决图床链接自动化更换问题
首先直接放出最终代码 放在replace_url.sh文件中,然后运行bash replace_url.sh 即可,别忘了这个只能在bash中运行,windows的cmd是不行的,可以打开git bash后再运行。 123456789101112131415161718192021222324252627282930313233343536#!/bin/bash# 备份旧的IFS变量OLDIFS="$IFS"IFS=$'\n' # 修改分隔符为换行符before="https:\/\/cdn.jsdelivr.net"after="https:\/\/jsd.onmicrosoft.cn"# 计算当前目录下.md文件的数量file_count=$(find . -type f -name "*.md" | wc -l)count=0# 开始处理文件并显示进度echo "正在进行文件处理..."for md_file in $(find . -type f -nam ...
【编程学习】使用Screen解放你的客户端
安装 1yum -y install screen 常用命令 创建会话 123screen -S myscreenscreen -U -S myscreen # 解决screen中中文乱码问题 显示已经创建的会话 1234screen -lsThere is a screen on: 29085.myscreen (Detached)1 Socket in /run/screen/S-root. 离开会话 保持会话运行 1Ctrl+a 恢复会话 1234screen -r 29085.myscreen # 别忘了加入前面的pidscreen -x 29085.myscreen # 也可以进入会话screen -U -r myscreen # 解决screen中中文乱码问题,要求screen是用screen -U -S myscreen方案构建的 关闭会话 12exitctrl + d 其他技巧 screen的移动 由于开启screen后,你无法使用鼠标滚轮进行翻页,此时需要一些技巧开启“复制模式”,然后动用上下左右键移动光标找到你想要查看的内容。 121. Co ...
【编程学习】Event Loop事件循环机制的基本认知
事件循环是一种常见的运行机制,尤其在单线程的JavaScript语言中就采用这种机制,来解决单线程运行带来的一些问题。本文尝试用python来实现事件循环的基本逻辑与功能: 基本概念 python的协程方案 首先要了解Python中的异步编程,主要有以下几种方案: twisted:使用事件驱动机制来提升python性能 gevent:使用greenlet在用户态完成栈和上下文切换来减少切换带来的性能损耗 tornado:使用生成器来保存协程上下文及状态,使用原生的python语法实现了协程 asyncio:异步编程标准化。 而本次就先介绍asyncio的异步编程标准化方案 协程 协程是一个可以在返回之前“暂停执行”的函数,它可以在一段时间内间接地将控制传递给另一个协程 1234# await将函数控制传递回事件循环(它暂停了周围协程的执行)async def g(): r = await f() return r asyncio Async IO是一种语言无关的编程范式,asyncio是与其对应的python包 async/await用于定义协程 ...
【编程学习】代码效率优化——并行与异步
GIL “CPython解释器”所采用的一种机制,确保同一时刻只有一个线程在执行 Python bytecode Thread Thread对象 如何创建线程?创建线程的2种方式: 方式1:传递一个可调用对象给Thread构造函数 方式2:继承Thread,在子类中重载run()方法。要注意的是,子类只能重载构造函数和run()方法,不能重载其它方法 如何启动线程?线程被创建之后,调用start()启动,会在独立的线程中调用run()方法 一旦现成被启动,该线程被认为是“存活”的,当run()方法正常退出或者抛出未被处理的异常,线程就不是“存活”的了,可以用is_alive()方法检测线程是否存活 如何等待一个线程结束?其他线程可以调用一个线程的 join() 方法,这会阻塞调用该方法的线程,直到被调用 join() 方法的线程终结 守护线程 守护线程的含义:当剩下的线程都是守护线程时,整个Python程序将会退出 守护线程在程序退出时会突然关闭,他们的资源(例如已经打开的文档等)可能没有被正确释放 主线程不是一个守护线程 可以通过设置参数daemon来设置一个线程是 ...
【数据研发】数据仓库的一些基础知识分享
数据仓库 概念模型、逻辑模型、物理模型 概念模型是面向业务的,可以用E-R图进行构建,比如我们在一个水果网购的业务中,就需要考虑到需要有一个客户的实体,然后订单实体,商家实体,然后考虑这些实体之间的对应关系。 逻辑模型也是面向业务的,是在概念模型上的进一步丰富,这一步就是给各个实体添加详细的信息,比如联系人需要他的昵称、联系方式,地址等信息。就是把概念模型中的实体抽象为一个个数据表。 最后的物理模型是面向技术实现层面的,我们需要考虑各个字段的变量类型,具体的各个表之间的外键链接以及约束关系等等数据库实现方面的要素。 数据仓库的主要特征 数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、稳定的(Non-Volatile)和时变的(Time-Variant )数据集合,面向数据分析,用以支持管理决策。 主题性:不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。 集成性:数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方 ...
【奇思妙想】如何理解财务指标的倒数与能否倒数
取倒数的问题 在我们计算因子时,有时可能会用到倒数的操作。可能是为了将其作为一个希望越小越好的权重,又或者是希望反转这个因子的方向,但又不想让因子出现负值。但是操作过程中能随便用倒数吗? 如果此时的因子值都是正数,那当然没有问题。采取倒数操作后,因子值的方向完全反过来,且不会出现负数的情况。具体从函数概念来说,当x>0x>0x>0时,y=1xy=\frac 1xy=x1为减函数。 但是因子值有负数时,情况就大不相同了。 考虑一个简单的序列−3,−2,−1,1,2,3-3,-2,-1,1,2,3−3,−2,−1,1,2,3,将他们分别取倒数,就可以得到:−13,−12,−1,1,2,3-\frac13,-\frac12,-1,1,2,3−31,−21,−1,1,2,3。问题出现了,负数部分的大小顺序反了,正确的顺序应该是:−1,−12,−13,1,2,3-1,-\frac12,-\frac13,1,2,3−1,−21,−31,1,2,3。从函数角度说,当x>0x>0x>0或x<0x<0x<0时,y=1xy=\frac 1x ...
【金融知识】投资学知识要点回顾整理(五)
利率风险 利率风险用以描述债券价格在收益率变化时的变化情况,可以通过绘制不同特征的债券价格变化率随利率变化情况的图来进行分析。 具体的,当收益升高时,债券价格下跌;当收益下降时,债券价格上升。 债券的到期收益率升高导致其价格变化的幅度小于等规模的收益率下降导致其价格变化的幅度。 长期债券价格对利率变化的敏感性比短期债券高。 当债券期限增加时,债券价格对收益率变化的敏感性增加,但增速递减。 利率风险和票面利率成反比,低票面利率债券的价格比高票面利率债券的价格对利率更敏感。 债券价格对其收益率变化的敏感性与当期出售债券的到期收益率成反比,也就是当前债券的YTM低,则他的价格对YTM变化更加敏感。 利率风险指标 债券定价是通过未来现金流贴现实现的,对债券价格公式进行泰勒展开: \begin{align} p(y) &= \sum\limits_{t=1}^TCF_t(1+y)^{-t} \\\\ p(y) &= p(y_0) + \frac{dp}{dy}(y-y_0) + \frac12 \frac{d^2p}{dy^2}(y-y_0)^2 + o(y^2)\\\\ ...