- 博客(257)
- 收藏
- 关注
原创 交易中的群体行为特征和决策模型
盈利背后带来的是一种成就感,是一种自我满足,是一种虚荣,尤其当这种感觉来之不易,平常越缺乏,就会越看重,就越会有一种极力保护这种感受,不让其失去的本能,所以对盈利失去的恐惧,本质上是对这种成就感、自我满足感和虚弱感的保护,以及恐惧失去,从而一旦陷入这种情绪,行为就会受本能驱动,不再能客观的看待行情,就会过早的止盈,无法放大利润。小涨小卖,大涨大卖,行情涨了之后,总是需要休息调整的,这种休息调整就是进行筹码交换,让成本上移,释放这种卖压,因为涨的越多,这种卖压就会越大,筹码就会越重,自然就难以为继了。
2024-06-10 23:18:38
926
原创 交易中的预测和跟随
任何的交易决策,一定是基于某种推理关系的,这种推理关系是基于t时刻之前的状态,得到t时刻之后的结果,我们基于这种推理关系,根据当前的状态,形成了未来结果的某种预期,然后基于这种预期采取相应的决策,这个是没有问题的。关键在于这个推理关系的结构和特征是怎么样的,不同的推理关系,对应着我们所谓的预测和跟随。
2024-06-06 22:56:17
880
原创 交易里的人性思考一
这种先天的自我,还会体现在不接受自己牛市的踏空,因为这体现出了相对的失败,而牛市会放大这种相对的挫败感,因为赚钱的人会到处宣传和得瑟,踏空资金会被这种相对挫败环绕包围,相当于客观上被动的接受很多这种挫败的提醒,这是很难受的,而熊市中大家都亏钱,而亏钱的人会藏着,不会暴露自己的失败,因此,即使是熊市里亏得更多,相对挫败,你不会有被动接受,而且还会面临大家互相的心理按摩,好受很多,因此人性使得交易中,大部分人宁愿在熊市中亏更多的钱,也不愿意在牛市里踏空。
2024-05-19 13:07:09
344
原创 短线情绪择时
这种日线级别的短期波动,更多的还是由市场的一些短线投机资金以及其情绪节奏主导,即情绪周期的级别去思考,虽然更高级别的产业或赛道周期,以及经济周期,也会有影响,但是其影响的是相对更加长期的趋势和波动,而且交易这些相对更大周期的资金,对短期的波动影响更多的还是体现在短期的情绪和节奏上,因此,短线择时,重点就是情绪周期的东西。在市场没有主线的情况下,热点和指数之间,需要区分热点的强度和逻辑,即会存在和指数正相关的热点,也会存在负相关的热点,这种情况下,非主线热点和指数的管子,在有主线的情况下,
2024-05-05 23:54:14
445
原创 周期交易,交易周期
这三种周期,其具有各自独立的alpha,具有各自的分析逻辑和框架,交易不同周期的资金,其属性也是不一样的。情绪周期,本质上是受赚钱效应和亏钱效应驱动的,人的趋利性和资金的短期供需关系,结合投机主体的情绪特点,造成这两种力量此消彼长,形成了情绪周期,因此只要有赚钱效应的地方,就会存在情绪周期,而在经济周期和产业周期下,其本身就是很好的赚钱效应的载体,从而其中就会产生很多的情绪周期,因此,情绪周期是交易性最强的,其无处不在,只要有赚钱效应,就会有情绪alpha来源,就会存在情绪周期。交易中如何运用周期。
2024-05-03 16:12:04
265
原创 华尔街幽灵的规则
交易是一个概率游戏,而且往往胜率是不会太高的,因此,我们不能对自己过于自信,可以先入局,只有下注了,你才能真的知道自己是否正确,这是因为没有下注,你对行情走势的经历和感受不会完整,会选择性的挑自己以为的,陷入主观幻想,不够客观,这是人工交易的特点,所以如果你觉得这是一个机会,那么先入局感受,才能更好的做出判断和决策,买衣服也要先试试,买汽车也会先试驾。因此,这条规则会强迫你好好的做计划,好好的思考,价格怎么样是不及预期的表现,一旦不及预期了,要果断的主动择机出场,而不是等到价格触发止损被动出场。
2024-04-27 12:55:48
315
原创 读《股票大作手回忆录》有感
目录一、大势、等待、仓位二、价格沿着最小阻力方向前进三、主力最在乎的是流动性四、所谓的内幕消息和利好消息五、主力基本的炒作方法六、正确的读懂盘面语言.七、股价的下跌不是空头的问题一、大势、等待、仓位势,意味着熵减,意味着能量的聚集,意味着持续性。持续性使得规律形成,使得预判成为了可能。顺势而为,正确的跟随势,那么势就是最强大的朋友,否则势就是最强大的敌人,交易正道就是顺势而为,不立危墙。势是交易第一维度的东西,任何事物的分析,只有客观的认知和分清主次因素,把握住最
2024-04-14 20:35:05
906
原创 python自定义库的打包和安装
要将自定义库安装到python的三方包地址site-packages中,除了可以直接的复制之外,更为合理科学的方法是通过build和install的方式进行。因为直接复制仅仅作为一种临时的简单的方法,而且只能针对源码进行,也不好进行科学管理,相对的trciky一些,后者才是更为科学合理的工作流。通过打包的方式进行,其需要先将原始的自定义库进行build,生成wheel文件或者压缩后的源码文件,然后通过pip直接安装即可。当然这里对库进行打包,需要依赖专门的工具,本文使用的是相对简单的flit工具。
2024-04-06 23:32:15
930
原创 因子中性化和因子解释
因子中性化因子值本身是否和市值存在高度相关性,若如此,会导致市值因子和该因子混在一起。如果相关性较高,那么实际上就和市值因子的效果一样了。有时候,我们一样因子本身不受市值影响,那么就可以通过使用中性化处理后的因子值。但是有时候,我们因子本身的含义本来就偏好某类市值股票,即这种市值效应是该因子本身的一种预期特点,那么就不需要中性化。因此,只有当我们一样剥离某些其他因子的影响,才需要中性化。一般什么情况下需要中性化?当我们想要的因子由于代理变量不够纯粹,会和其他因子存在较大相关性,但是我们又只想看纯
2023-02-12 15:55:23
1254
1
原创 numba使用注意点小结
4. 对于array的索引,支持全部的基础索引操作和切片索引操作,但是对于高级索引,尽管array可能是多维的,但是高级索引只能有一个,即只能在一个维度上有高级索引,而且这个高级索引也必须是一维的array,这里强调一维以及是array,不能是list,不然numba无法识别;也不能是多于一维的,如果确实需要一维以上的高级索引,则可以使用loop实现,numba会内部将loop转为高效的代码。1. numba不支持python的字典类型。2. 尽量使用数值型的array。
2023-02-09 21:48:02
862
原创 贝叶斯统计
频率学派经典估计和贝叶斯估计经典的频率学派的参数估计方法有矩估计和最大似然估计,假设样本是在一个客观固定的参数所确定的概率模型下生成的,这个前提下,直接先假设一个未知参数,然后根据某些原则(矩相等或者最大似然原则)求出未知参数值。由于频率学派认为参数是固定的未知常数,因此,对参数不会存在概率类似的阐述。例如,对于未知参数估计的在一定置信水平alpha下的置信区间,频率学派的正确解释是:如果进行n次试验,那么会有alpha*n次,真实的参数会落在这个置信区间中,而对于一次采样试验来说,参数是否落在这个区间
2023-01-27 21:40:24
817
原创 python模块循环导入问题解析
在python3中,只要执行import a后者from . import a,即只要a在import语句之后且被执行,那么a就会被加入到sys.modules中,而后续尽管在模块a被完全执行完毕之前,有模块b导入a,由于a已经在sys.modules中,b会直接从缓存中导入a,而不是重新执行a,因此这时避免了语法上无限循环导入的问题,因此导入语句可以顺利执行。在一个包中,如果A的完全导入依赖于B的导入,但是B的完全导入又需要导入A,即两个模块之间存在相互导入,那么就会引发循环导入问题。
2023-01-19 15:33:21
1342
原创 记numpy高速封装库bottleneck的一个bug
因此,在使用bottleneck时,避免直接使用move_mean函数,而且切记要对结果进行检查,bottleneck这个库目前看来还不是很安全。奈何numpy本身对移动窗口函数的支持不好,numpy.lib.stride_tricks.sliding_window_view用起来不是那么方便,有时候效率也不高。博主在使用bottleneck的移动平均函数时,对0的平均得到了很接近0的非零值,这是一个官方已知的bug,但是还未修复。
2023-01-09 23:12:51
443
原创 多元函数的二阶泰勒展开推导
多元函数受多个变量的影响,变量的变化造成函数值的变化,因此,只要变量的变化对函数值的影响一致,那么两个源自同一点的函数就完全一样。变量的变化对函数值的影响,是多重多阶的,因此,要使得两个函数一致,就要保证这种影响在任何阶任意维度都是一致的。从一元函数的角度,如果将函数图像理解成时间位移区间,那么两个函数曲线一致,意味着某一点开始,其速度要相等、速度的变化程度(加速度)要相等、加速度的变化程度(加速度的加速度)要相等...,这样就意味着两种位移是完全一致的,而这实际上就对应着各阶导数。
2022-11-12 18:11:04
4408
原创 pandas中parquet文件对于缺失值的交互处理
当把一个带有缺失值的df写入到parquet文件,parquet的缺失值的处理是和python兼容的,会一律把缺失值转为None,无论原始的df中的缺失值是None还是NaN。由于pandas本身在将数据转为df时,会额外对缺失值进行处理,处理原则是,如果某列的类型推断为object,那么缺失值会保留原来的值,即None或NaN,但是如果带有缺失值的列推断为数值类型,那么缺失值会全部被转为浮点数类型的NaN,这时原来的None缺失值也会被转为NaN。pandas对于缺失值的处理在。
2022-11-02 10:42:55
526
原创 Spyder编辑器关于自定义库无法提示代码补全问题修复
博主的自定义库,已经将库路径加入了环境变量的PYTHONPATH中,最开始可以正常的导入,并且在Spyder编辑器中也可以和其他标准库以及三方库一样,有代码补全提示。但是某天突然在Spyder中对于自定义的库就无法提示代码补全了,但是标准库已经其他三方库是可以正常提示的,而且在Ipython中,代码提示一切都正常。原因找到后,解决方法就很简单,打开上图的PYTHONPATH管理器,手动显式的再次在Spyder中添加自定义库的所在路径。
2022-10-18 12:33:19
865
原创 高效数据存储格式Parquet
Parquet还使用了字典编码,以及RLE编码(Run Length Encoding),将数据值映射成数字,然后保存一个字典映射,同时记录某个值连续重复的次数,这样不用反复的保存一些占用空间较大的数据,特别是对于字符类型的数据,这种方式尤其对于重复值较多的chunk,非常高效,实际上我们的表格数据经常某些列具有较多的重复数据。因此,Parquet的这些编码方式,可以高效的节省空间,减少实际数据的IO,但是需要更多的metadata的解析,将IO密集部分变成了CPU密集的工作,CPU当然快多了。
2022-10-09 23:37:39
3064
原创 内积、点积和坐标
所以点积的由来源自物理意义下的点积的定义,为了将物理意义下的点积形式化,可以使用内积数学工具,引入基将向量坐标化,从而对坐标进行运算操作。实际上,选取基是为了将向量坐标化,从而可以使用内积运算,使用数学工具进行更多的分析研究,而选取规范正交基仅仅只是为了计算简单(上述最后一项为0,可以消去,i、j的长度为1,系数也可以忽略)。但是实际上,我们选取规范正交基并不是为了和数学定义上的内积联系起来,因为数学上的内积有很多种,只要满足内积定义即可,对于任意一组基,都可以定义一种内积使得物理意义下的向量坐标等价于。
2022-10-01 23:56:34
1424
原创 python进程池之创建子任务的函数总结
目录mapapplymap_async和apply_asyncimap和imap_unorderedstarmap和starmap_async python多进程标准库multiprocessing通过进程池启动多进程有以下几种方式,本文旨在说明这几种方式的区别:map、apply、map_async、apply_async、imap、imap_unordered、starmap、starmap_async。map函数签名:(func, iterable[, chunksize])
2022-06-25 15:14:22
1276
原创 利用矩阵初等变换进行对角化
目录矩阵初等变换对角化证明矩阵初等变换记某矩阵为,其中为维度为n的行向量。则行初等变换有以下三种:1. 交换两行的位置;2. 3. 同样的,对应的列初等变换就是把行向量换成列向量即可。为什么这些变换被称为矩阵的初等变换呢?或者说这些操作有什么特点呢?如果我们把矩阵看成一个多元一次齐次线性方程组的系数矩阵的话,那么很显然,这些操作并不会改变该方程组的解空间,即加入某个向量是变换前的解,那么一定也是变换后的解,反...
2022-05-28 23:29:43
2792
1
原创 多元一次齐次线性方程组
目录命题 证明命题 本文旨在说明多元一次齐次线性方程组的解空间的维度、系数矩阵秩和未知变元个数之间的关系。(系数矩阵定义在实数域上)假设有n个未知变元,系数矩阵的秩为k,方程组解空间的维度为m,则有如下的关系成立:n=k+m证明设方程组为:由于A的秩为k,所以该方程组只有k个有效方程,剩下的n-k个方程都是可以通过其他k个方程线性组合后得到的冗余方程。由于只有k个有效方...
2022-05-21 17:59:31
581
原创 同一向量空间的不同基具有相同的维度的一种证明
目录基基的维度证明基某一向量空间中的基由一组线性独立的向量组成,且这组向量可以张成该向量空间,这就是基的定义。其中基中的向量,叫做基向量。基的维度基中基向量的个数为基的维度。根据基的定义,我们无法得到向量空间中的基是唯一的,实际上,一个向量空间具有无数个基。但是目前为止,我们并不能很直接的得到不同基的维度是一样的,实际上不同的基的确具有相同的维度,这也使得基的维度成了向量空间的一个属性。 当然,不同的基...
2022-05-17 00:14:13
1293
原创 Steinitz exchange lemma
目录内容翻译证明推论Reference内容U和W是向量空间V的有限非零子集。如果U是一个线性独立的向量构成的子集,W可以张成V,那么:1. |U|<=|W|;2. 存在W的子集W',满足|W'|=|W|-|U|,使得U和W‘的并集可以张成V。翻译1. |U|表示集合U中元素的个数。上述第一点说明,由线性独立的向量构成的子集的元素的个数,是小于或等于张成集的元素个数的。2. 说明线性无关的向量可以替换张成集中的向量,不改变张成的线性空间,而且这个替换是
2022-05-15 16:08:28
945
原创 python模块导入详解
目录包和模块模块导入绝对导入sys.modulessys.meta_pathsys.path相对导入__init__.py相对导入mian脚本中的相对导入Reference包和模块我们可以在一个脚本中定义变量、函数和类,并添加逻辑,但是当某个项目具有复杂的逻辑时,我们希望把这些逻辑分解成不同的脚本,并以一定的合理的方式组织成层级结构,这种具有层级结构的包含脚本的文件夹就称为包。模块通常指的是定义了变量、函数和类的脚本。但...
2022-05-03 21:09:26
7748
原创 Xmind
主题主题是Xmind思维导图的基本单元,其根据逻辑关系分为父主题、子主题和分支主题,并依此递归。创建一张导图时,最先开始的就是最原始的父主题,然后从父主题衍生出子主题和分支主题,其中子主题之间,是同级关系,所以同级的主题之间也互为分支主题。任意一个主题单元,都可以衍生自己的子主题和分支主题,那么该主题单元也是其子主题的父主题。任意主题单元可以通过Tab键衍生出子主题,Enter键衍生出跟其同级的分支主题,故而,某个主题单元如果要新增一个子主题,它即...
2022-04-30 16:00:28
1222
原创 配对交易-协整套利
当两个品种价格存在某种比较简单的可量化关系时,我们可以利用这种关系进行配对交易。一般情况下,这种关系可以是:价格协整、价格和对数价格协整。至于这种关系呈现的模式可能是同步相关,即两个品种同时受到相同或者类似的其他因素影响,从而价格存在同步变化的趋势;或者是leader-lagger关系,这个在商品期货的上下游品种中比较常见。价格协整如果两个品种存在价格协整关系,那么可以通过简单的线性回归两个两个价格的关系,利用残差项的平稳特性,进行统计套利。即如果残差项过大,比如偏离...
2022-04-03 21:29:34
1653
原创 python中导入字符串对象命名的模块
通过标准库importlib中的import_module函数实现,该函数返回被导入的对象。如下,就可以通过字符串对象导入模块test_module,并且重命名为tm,效果等于import test_module as tm。import importlibm = 'test_module'tm = importlib.import_module('%s'%m)...
2022-03-19 22:31:37
586
原创 What is P value and Significance Level?
在统计学的假设检验中,有一个概念叫做P值,一般通过P值跟提前定好的显著性水平进行对比,来判断是否应该拒绝原假设。如果P值比显著性水平更低,则拒绝原假设,反之,没有充分的证据拒绝原假设。在学统计的人眼中,这是很自然的,以至于不需要去进一步想一些细节,比如,P值到底是什么?如何去准确的理解?P值的定义是,在原假设的基础上,统计量X的值,理论上至少跟已观察统计量一样极端的概率。更具体地,假设是右侧检验,P值就等于。其中X表示某个统计量,我们可以在原假设为真的基础上求出X的分布,...
2022-03-06 22:27:33
1315
原创 python可迭代对象、迭代器和生成器
可迭代对象指的是兼容__iter__函数的对象,调动该函数会返回一个生成器,生成器指的是兼容__next__函数的对象,__next__函数会单次获取便利对象的值并返回。对于迭代工具,实际上遍历的是迭代器,因此,对于迭代工具(比如for循环),其实际上需要先获取一个迭代器,所以对于可迭代对象,python会先通过iter内置函数作用在可迭代对象上,获取一个迭代器,然后再进行单次遍历(对于已经是生成器的对象,iter函数返回的就是该对象本身),这就是迭代协议。为什么需要区分可迭代对象和...
2022-01-08 19:39:18
364
原创 pandas一维数据分组之cut和qcut
对于一个一维的数值型数据,我们有时候想对其根据数值区间或者根据分位数进行分组,然后再做后续的分析,本文介绍pandas里的cut和qcut函数,实现这种快速分组操作。cutcut函数,将一维序列中的数值打上区间标签,参数签名如下:pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates='raise')其中x...
2021-12-15 17:48:26
2679
原创 深度学习小思1
深度学习目前并没有一个统一的理论框架,没有理论上的解析解,模型的求解依赖于数值优化,因此,对深度学习模型架构的思考不能受限于naive的理论层面,而是应该结合优化算法。理论上,一个简单的MLP就应该可以拟合出所有的函数关系。但是在正确拟合的前提下,MLP模型架构中需要的参数过多(MLP自身可以组合衍生出其他架构),这会使得路径过多,且过于稀疏,从而通常的随机剃度下降算法的优化路径太多,学习难度会大大的提升,从而在MLP的前提下,难以学得正确的参数。因此,在算力和数据都有限的前提下,我们需要更加合理的模型
2021-12-04 23:28:20
2206
原创 词嵌入(Word Embedding)
目录为什么需要词向量嵌入?表征的对象是什么?如何表征?词向量嵌入矩阵Skip-GramCBoW负采样结语Reference为什么需要词向量嵌入? 在自然语言相关的任务中,我们将句子作为特征输入,然后得到相应的预测输出。相比于其他的任务,自然语言相关任务的特点就是,其输入的特征是句子,不是已经量化好的特征。但是计算机,或者说模型,本质上只能识别数字,只能对数字进行运算和处理,因此,对于符号型的文字,我们需要先进行数字化,这样才能将其作为特征输入。词向...
2021-11-21 18:25:01
1397
原创 理解拉格朗日乘子法的一种角度
本文旨在以一种相对直观的角度去理解拉格朗日乘子法,在推导得到拉格朗日乘子法最终形式之前,需要先理解以下三个推论:1. 梯度和等高域正交;2. 约束域的维度+约束条件个数=变量个数;3. 极值点的必要条件为约束域领域和目标梯度正交。 其中,等高域是目标函数等于某一个值时自变量所在的区域,所以在等高域中的所有点对应的函数值都是相等的;约束域就是由多个等式约束条件共同约束下自变量形成的区域。梯度和等高域正交 假设某点P对应的目标函数的梯度为G,根...
2021-11-07 20:42:16
575
原创 pandas pivot_table之数值精度丢失陷阱
pandas的pivot_table函数可以指定行列值重新制表,并且对于同一行列索引下的多个值会进行聚合运算,默认是均值运算,因此,这里如果我们默认其aggfunc的均值运算,那么会存在将其他数值类型转为浮点值的行为,如果原本是数值较大的整型,超出了64位浮点数能精确表示的最大范围的话,这里就会存在精度丢失现象。 尽管我们可以让aggfunc=lambda x:x,即不对value做任何操作,这样不会存在均值计算,但是实际上还会存在精度丢失的情况。看如下是pivot_tab...
2021-11-07 16:56:21
993
原创 利用python执行linux命令的几种方式和区别
本文介绍三种在python执行linux命令的方式,三种方式都是基于python的标准库实现,因此不需要额外安装第三方库。os.system() os.system(cmd),其中cmd就是需要执行的linux命令。该方式会阻塞主进程,直到命令执行结束并返回状态,如果返回的状态值为0,表示命令正常执行,如果不为0,则表示命令执行异常。要注意的是,该方式执行linux命令,会直接打印出命令执行的结果,但是不会作为对象返回,因此程序无法直接获取命令执行的结果。os.po...
2021-11-03 13:28:57
1230
原创 使用plotly画交互图入门
目录plotly简介plotly的安装作图图片保存plotly简介 plotly是一个python的第三方库,其可以制作精美的动态交互图,并且和pandasDataFrame数据结构兼容较好。如今plotly还集成了plotly_express,plotly_express最初是基于plotly的一个库,其提供一些更加高级简单的作图接口,使得用plotly作图更加简单便捷,如今plotly已经将plotly_express集成在了一起,因此不需要额外安装plotly...
2021-11-01 21:49:31
1417
原创 numpy的整型数值溢出陷阱
numpy中的ndarray对于数值对象的数据类型具有严格要求,比如,假设一个数据类型为int32的ndarray,且数值较大,那么再继续对其做平方运算,假设平方运算之后的值已经超出了32位整型的最大范围,那么就会造成数值溢出。问题在于,numpy中对这个数值溢出并不是直接报错,而是会返回一些垃圾值,甚至有可能出现负值,这就使得运算结果无法预期,从而出错。但这个现象并不会出现在创建生成ndarray中,如果创建ndarray时,数值已经超出了指定数据类型的最大范围,那么numpy会报overflo...
2021-10-23 19:25:04
1113
原创 框架设计
为什么需要框架?针对某一类目的,为了实现这个目的,从最原始的端到目的之间会经历一系列可能的或者潜在的复杂步骤或者子任务,那么框架的作用就是为了对这一系列步骤进行高度的抽象解藕,并且标准化,使得我们可以专注于局部,只要符合标准规范即可。这样让分工协作成为可能,让精力可以只专注在一小部分,也让整个任务设计更加合理,更加健壮和复杂,工作更加高效。这是复杂项目所必须的。因此,框架实际是就是一种合理并且高度的抽象和解藕,是一种标准和规范。如何设计框架?一、首先对整个框架的目的和对应的业务需要熟悉,这样才可以做
2021-10-10 11:07:13
570
原创 Batch Normalization
batch normalization是深度学习中常用的一种方操作,在深层网络的优化中,其可以说是一种标配,因为batch normalization带来的效果往往是显著的。方式 batch normalization是针对一个batch的样本进行的操作。如果对于某一层,我们要对其进行batch normalization操作,那么实际上就是对该层的每个单元分别进行Z-score的计算。因为一个batch有多个样本,对于每个样本,都可以计算得到一个该单元对应的前向反馈值...
2021-10-06 02:50:32
160
原创 深度学习之序列建模初总结
本文旨在讲解使用深度学习模型对序列数据进行建模,并且主要集中再MLP、RNN、LSTM以及GRU。MLP MLP是最简单的神经网络模型,其就是一个简单的DNN,即全连接前馈深度神经网络。根据通用近似理论,MLP可以近似拟合出任意的连续函数。但是这里有一个基本的前提是,输入数据包含了影响应变量或者说预测变量的所有因子或者说特征,而且数据量需要足够大,这个足够大是相对于噪声和具体模型而言的。实际上,现实情况是,我们并无法在输入数据中包含所有特征,而且现实数据也往往包含较多的...
2021-09-21 22:52:00
1953
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人