首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Python量化投资】基于技术分析研究股票市场

二 我们将从Web数据来源读取历史指数水平信息,并未一个基于趋势信号的交易系统实现简单的事后验证。...这里我们读取了从2000年的第一个交易日到结束日期的S&P500指数事件序列数据,而且自动地用TimeStamp对象生成一个时间索引。 收盘价的时间序列图如下: ? ?...Pandas可以高效地生成各个时间序列。 首先先生成趋势数据: ? 三 现在数据已经已经完整,开始设计一条规则来生成趋势信号。...尽管两个趋势列中的项目数量不相等,pandas通过在相应的指数位置放入NaN处理这种情况: ? 现在生成我们的投资机制,此处假定信号阈值为50: ?...其中,shift方法按照所需指数输入项数量移动时间序列----这里,每移动一个交易日,就能得到每日的对数收益率: 而基于趋势的投资策略的收益,将Regime列乘以下一天的Returns列(用“昨天”的头寸得出今天的收益

1.8K90

基于情绪因子的CTA截面策略

与时间序列跨越检验一致,截面定价检验进一步表明,情绪因素具有显著的定价能力,超越商品基本面。...因此,我们继续测试情绪对商品期货样本外收益的预测能力。 情绪因子策略测试 在每个月的最后一个交易日,我们将28种商品的横截面按∆分类,分为两个投资组合,即情绪变动高与情绪变动低。...我们只是在大宗商品的TOP组中持有多头头寸,在BOTTOM组中持有空头头寸。多空组合的权重相等,按月进行再平衡。我们按照相同的逻辑来构造carry、动量、套期压力、偏度、动量和相对基差因子组合。...这一发现也暗示,至少在横向设置中,高关注用户/推文的定价影响是相当有限的。 不同的情绪计算方法是否有区别?...下面给出了结果,与其他替代方法相比,金融特定词典在股票定价方面表现良好,词典的选择在捕获大宗商品期货中情绪诱发的错误定价方面至关重要。 总结 总之,基于Twitter的情绪因子的计算是很容易实现的。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Quant Macro:CTA与宏观经济指标的结合

    在基于美国工业供给数据和有色金属期货价格数据的实证研究中,这些结论都得到了验证。...在其他金融市场中,经济数据主要影响后续的需求和供给。这对于制定关于经济数据和商品回报之间关系的假设很重要。...为此,我们首先将所有每个商品期货的回报标准化到具有10%(年化)波动目标的头寸。(根据指数移动平均的历史标准差进行计算)。每个月底头寸都会重新平衡。...我们以综合指标作为唯一的信号,模拟了两种简单策略。一种策略的仓位与得分成比例,另一种策略的仓位大小不变,但与得分变动的方向一致。每月第一个交易日进行调仓。不考虑交易成本。...多空策略的表现略好。虽然策略的表现并不是非常亮眼,但考虑到输入到信号的数据是非常基本的,而且信号的有效性持续了非常长的时间。

    55020

    【年度系列】经过多年交易之后你应该学到的东西(深度分享)

    大多数回测都很棒,在实际交易中则是失败的,因为它们容易过拟合。 你将通过交叉验证来对修正它,并挑选出最佳样本中的最佳模型,你认为你是对的,以某种方式增加自己的想法和 leaking数据。...通常情况下,你要花上几周或几个月的时间才能弄清楚哪里出了问题。正如前面提到的,这是一个非确定性的过程,只会增加噪音和leaking数据。...但在市场中,本科和研究生所学的的概率和统计知识足以支撑你实现一个盈利策略。...佣金 在我遭受重大损失之前,我过去每个月都会赚取4%的ROC。佣金似乎无关紧要。当我爆了超过30%的仓位并减少头寸时,我突然意识到低佣金的重要性。...很多次我都在增加亏损头寸,或者试图保存头寸,而不是等待和保留现金。 就像Charlie Munger说的: 大笔的钱不是通过买卖赚来的……但在等待中。 耐心也与进入和退出有关。

    65841

    【动态时间规整算法】之股指期货交易策略(一)

    DTW应用也比较广,主要是在模板匹配中,比如说用在孤立词语音识别(识别两段语音是否表示同一个单词),手势识别,数据挖掘和信息检索等中。...一、DTW算法原理 在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。...但如果匹配时,在序列上容许时间上的伸缩变形,则如下图的对应结果,匹配效果会大大增强,动态时间规整模型提供的就是允许数据在时间轴上伸缩变形的匹配方式。...由下图可以看到,动态时间规整算法在进行两个序列匹配时,序列中的点不再是一一对应关系, 而是有一对一、一对多和多对一的不同映射。这种时间上的扭曲通过使得序列之间总体的距离最小化来实现。...普通的动态时间规整算法是将第一个时刻样本先对齐,然后考察下一个样本,最终实现两个序列的整体对齐。

    2.5K70

    Python 卖空算法教程(三)

    他只有连续两个月的回撤。每个月都是进入市场的好时机。这样短的回撤持续时间在统计学上是不太可能的。唯一接近的市场参与者是传奇人物爱德华·索普,讽刺的是他在丑闻爆发前 14 年就揭露了麦道夫。...这样,你就能够计算出按策略、方向和股票分类的统计数据,如盈利预期和命中率。 这些统计数据对评估你的系统很有用。你的交易日志只能提供你是否遵循交易系统的不完整视图。...它涉及公司行为,如股票拆分、股利和认购/赎回。这些都纳入修改后的 Dietz 时间序列性能计算,按股份类别分开。...这需要执行一次,因此它放在序列的开头。 数据帧和列表实例化。 循环大小:循环tickers_list所需的迭代次数。...将字典列表创建为数据帧并将其合并的过程比直接将其附加到数据帧稍快一些。score 列是所有区域方法的横向总和。然后按 score 按升序对最后一行数据帧进行排序。有保存日期版本的选项。

    19310

    波动率目标策略,没有想象的那么简单!

    基于波动率目标(Volatility Targeting)的策略是指在资产的波动率比较低的时候增加头寸,在资产波动了较高的时候降低头寸,调整后组合的波动率到一个固定的目标值。...当资产的波动下降,波动率聚集告诉我们,低波动的状态很可能会持续;杠杆效应告诉我们市场会上涨;此时,波动目标的策略会增加资产的头寸。...波动率目标的值为10%,即每个调仓期初,调整资产权重,使其使用以上两种方法计算的波动率为10%。在测试过程中的基准组合,为整个测试区间(1923-2019)已实现波动率为10%的组合。...如现在是2019年11月1日,波动率目标组合是2019年11月1日计算的预测波动率,构建的波动率为10%的组合;而基准组合是固定权重,这个权重使得组合在1923-2019的已实现波动率为10%。...在下图5中,作者给出了以10年已实现波动的移动均值作为波动目标的Strategy B的测试结果。可以看出: 在各子区间,相对于基准,Strategy B的波动更高,但波动的波动有所降低。

    2.5K20

    海龟交易_海龟交易法则的核心

    TR(实际范围)=max(H-L,H-PDC,PDC-L) 式中: H-当日最高价 L-当日最低价 PDC-前个交易日的收盘价 用下面的公式计算ATR: ATR=(19×PDATR+TR)/20 式中:...无论以前的突破是成功还是失败,所有系统二的突破都会被接受。 加仓 海龟在突破时只建立一个单位的头寸,在建立头寸后以1/2ATR(即二分之一ATR—-译注)的间隔增加头寸。...为了保证全部仓位的风险最小,如果另外增加单位,前面单位的止损就提高1/2ATR。这一般意味着全部头寸的止损将被设置在距最近增加的单位的2ATR处。...其他人会从现价中减去三个月前的价格,然后除以目前的ATR值得到所有市场的标准化数据。最强的板块具有最大值,最弱的市场具有最小值。 这些方法中的任何一种都效果良好。重要的是持有最强的板块个股。...钻研交易,考虑每天的净值日志,对系统交易方法要非常熟悉,对亏损的程度和频率要非常熟悉。 如果你知道在过去的20年中已有很多同样长度的时间期间,那么,要经受住8个月的亏损期就会容易得多。

    1K40

    疑车无据:大熊猫何时交配才能怀上宝宝?四川学者用音频AI给出预测

    研究表明,大熊猫成为濒危物种主要是因为繁殖艰难,而繁殖难的问题主要源于「性冷淡」。 熊猫的繁殖季节时间非常短,一年 365 天中,最佳交配时间仅有 1 天。...他们在自己的研究中以人工方式定义了 5 种不同的大熊猫叫声,并基于人工设计的声学特征使用聚类方法对叫声数据进行了分组。...最后,在经过归一化的音频段(2 秒)的 86 帧中的每一帧上提取其梅尔频率倒谱系数(MFCC),并将其用作深度网络的输入。...门控循环单元(GRU)是循环神经网络中的一种门控机制,其在 2014 年由 Cho 等人引入。多层式双向 GRU 在帮助 CGANet 学习更深度的时间信息方面发挥着关键性的作用。...图 4:由(a)原始 MFCC 特征和(b)新提出的 CGANet 学习到的特征所定义的特征空间的可视化 基于预测结果,大熊猫繁育者可以在第一时间采取合适的后续步骤,从而助力实现更智能化的大熊猫繁育。

    2.7K20

    Google发布首个「讲故事」的视频生成模型

    为了解决数据问题,研究人员提出一种联合训练方法,使用大量的文本-图像语料以及少量的文本-视频语料实现更好的泛化性能。...图像领域不缺训练数据,比如LAION-5B, FFT4B等数据集都包括数十亿的文本-图像数据对,而文本-视频数据集如WebVid则只有大约一千万个视频,远远不够支撑开放领域的视频生成。...最重要的是,ViViT编码器需要一个固定长度的视频输入,因为它在时间上采用的是all-to-all注意力。将其替换为因果注意力之后,C-ViViT编码器就会变成自回归,并允许输入帧的数量可变。...Phenaki采用掩码双向Transformer,通过一个小且固定的采样步骤来减少采样时间,而无需考虑不同的视频序列长度,双向Transfomrer可以同时预测不同的视频tokens 在每个训练步骤,...一旦生成了第一个视频,就可以通过使用C-ViViT对最后一个视频中的最后K个生成的帧进行编码,自动递归地推理出其他帧。

    90330

    全面对标Sora!中国首个Sora级视频大模型Vidu亮相

    ,创造出具有深度和复杂性的超现实主义内容,例如“画室里的一艘船正在海浪中驶向镜头”这样的场景;③多镜头语言:Vidu能够生成复杂的动态镜头,不再局限于简单的推、拉、移等固定镜头,而是能够围绕统一主体在一段画面里就实现远景...画面时间长、稳定性强,意味着Vidu在训练阶段获取了更多的“有用”数据,即模型能从数据中提取到更符合现实的特征;并且Vidu所用模型的注意力机制性能更佳,能够正确地联系起上下帧之间的内容。...通常的视频大模型,会先生成关键帧,再通过插帧的方式将多个关键帧连成视频的做法实现,本质上是在大模型图片生成基础上做的优化;更进一步的视频大模型,会提取画面中的关键信息,按照关键信息的联系,逐帧生成连续的画面内容...但是其生成视频类内容的连续性、稳定性较弱,不具备连续内容关联能力。Transformer是一种基于自注意力机制的神经网络架构,广泛用于处理序列数据,如文本、语音和图像。...它能够捕获序列数据中的长距离依赖关系,适用于各种任务,包括自然语言处理、计算机视觉等。其优势在于内容的关联性,但是需要更多的数据和训练。

    50310

    掌握pandas中的时序数据分组运算

    pandas分析处理时间序列数据时,经常需要对原始时间粒度下的数据,按照不同的时间粒度进行分组聚合运算,譬如基于每个交易日的股票收盘价,计算每个月的最低和最高收盘价。...图1 2 在pandas中进行时间分组聚合 在pandas中根据具体任务场景的不同,对时间序列进行分组聚合可通过以下两类方式实现: 2.1 利用resample()对时序数据进行分组聚合 resample...原始的意思是「重采样」,可分为「上采样」与「下采样」,而我们通常情况下使用的都是「下采样」,也就是从高频的数据中按照一定规则计算出更低频的数据,就像我们一开始说的对每日数据按月汇总那样。...如果你熟悉pandas中的groupby()分组运算,那么你就可以很快地理解resample()的使用方式,它本质上就是在对时间序列数据进行“分组”,最基础的参数为rule,用于设置按照何种方式进行重采样...我们对index为日期时间类型的DataFrame应用resample()方法,传入的参数'M'是resample第一个位置上的参数rule,用于确定时间窗口的规则,譬如这里的字符串'M'就代表「月且聚合结果中显示对应月的最后一天

    3.4K10

    (数据科学学习手札99)掌握pandas中的时序数据分组运算

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介   我们在使用pandas分析处理时间序列数据时...,经常需要对原始时间粒度下的数据,按照不同的时间粒度进行分组聚合运算,譬如基于每个交易日的股票收盘价,计算每个月的最低和最高收盘价。   ...图1 2 在pandas中进行时间分组聚合   在pandas中根据具体任务场景的不同,对时间序列进行分组聚合可通过以下两类方式实现: 2.1 利用resample()对时序数据进行分组聚合 resample...如果你熟悉pandas中的groupby()分组运算,那么你就可以很快地理解resample()的使用方式,它本质上就是在对时间序列数据进行“分组”,最基础的参数为rule,用于设置按照何种方式进行重采样...图2   可以看到,在上面的例子中,我们对index为日期时间类型的DataFrame应用resample()方法,传入的参数'M'是resample第一个位置上的参数rule,用于确定时间窗口的规则,

    1.8K20

    理工男如何用技术超越其他投资者

    我们完全可以利用程序高效地处理数据,去验证我们的投资支点,增加这个支点的可靠程度。 第三个方向是“固化规则,解放人力”。 这是什么意思呢?...2021年上半年,我在和同事聊天时,听他们提到一个特别简单的基于日历效应的投资策略:每个月的前5个交易日满仓沪深300指数,其他日子都空仓。他们说特别有效。...首先,我准备了沪深300指数过去十多年的每日涨跌幅数据,然后判断每个交易日是不是当月的前5个交易日,从而确定是满仓还是空仓。...更神奇的是,这个策略每个月只需要占用5天资金,其他时间还可以把钱存到货币基金里赚利息。如果按照货币基金3%的收益率,这个组合策略的保守收益率在14%左右。...这里,我再总结一下本节的重点内容,也就是这三个例子的核心思想。 理工男的技术优势是我们强于其他投资者的地方,一定要懂得利用。 高效获取信息是实现技术优势的第一个方向。

    36410

    从《繁花》到现实,现代版“宝总”如何通过智能手段预测股市?

    此外,惩罚随着键和查询之间的距离成比例地增加。我们还使用前向掩码来防止输入序列中的位置在自注意力机制期间关注后续位置。...整体效果如下表2所示,我们先分析时间序列建模和静态图方法:传统的时间序列建模方法,如MLP,主要依赖于股票的内在节点特征,而LSTM/-Transformer则更注重时间特征。...我们提出的方法: 我们提出的 MDGNN 算法利用增强的模块从股票独特的多关系图结构中捕获信息,在两个数据集上都超越了之前基于时间序列异构图的算法。...此外,与 CSI100 数据集相比,CSI300 数据集的性能提升更为明显。这一结果可归因于纳入了额外的机构和行业节点,从而产生了更大的训练图并实现了更有效的信息传播。...在图 3(a) 中,描述了不同窗口大小的累积回报的变化。看来增加窗口大小可以改善效果,但对于信息捕获来说只能达到一定的限制。

    27711

    Python时间序列分析简介(2)

    而在“时间序列”索引中,我们可以基于任何规则重新采样,在该 规则 中,我们指定要基于“年”还是“月”还是“天”还是其他。...在这里,我们可以看到在30天的滚动窗口中有最大值。 使用Pandas绘制时间序列数据 有趣的是,Pandas提供了一套很好的内置可视化工具和技巧,可以帮助您可视化任何类型的数据。...只需 在DataFrame上调用.plot函数即可获得基本线图 。 ? ? 在这里,我们可以看到随时间变化的制造品装运的价值。请注意,熊猫对我们的x轴(时间序列索引)的处理效果很好。...看看我如何在xlim中添加日期。主要模式是 xlim = ['开始日期','结束日期']。 ? 在这里,您可以看到从1999年到2014年年初的最大值输出。 学习成果 这使我们到了本文的结尾。...希望您现在已经了解 在Pandas中正确加载时间序列数据集 时间序列数据索引 使用Pandas进行时间重采样 滚动时间序列 使用Pandas绘制时间序列数据

    3.4K20

    Zipline 3.0 中文文档(三)

    extra_dims 字段定义了除资产和日期之外必须固定的坐标,以产生一个逻辑时间序列。列对象决定了家族切片将共享的列。...增加了对股票的自动关闭支持。任何在股票达到其auto_close_date时持有的头寸都将按照股票的最后成交价清算为现金。此外,该股票的任何未结订单都将被取消。...extra_dims 字段定义了除资产和日期之外的坐标,这些坐标必须固定以产生逻辑时间序列。列对象确定将由家族切片共享的列。...extra_dims 字段定义了除资产和日期之外的坐标,这些坐标必须固定以生成逻辑时间序列。列对象确定将由家族的切片共享的列。...extra_dims字段定义了除资产和日期之外的坐标,这些坐标必须固定以产生逻辑时间序列。列对象确定将由家族切片共享的列。

    73720

    如何在 Python 中使用 plotly 创建人口金字塔?

    我们将首先将数据加载到熊猫数据帧中,然后使用 Plotly 创建人口金字塔。 使用情节表达 Plotly Express 是 Plotly 的高级 API,可以轻松创建多种类型的绘图,包括人口金字塔。...plotly.express 和用于将数据加载到数据帧中的 pandas。...然后,我们创建 px.bar() 函数,该函数将数据帧作为第一个参数,并采用其他几个参数来指定绘图布局和样式。 x 参数指定要用于条形长度的变量,条形长度是每个年龄组中的人数。...数据使用 pd.read_csv 方法加载到熊猫数据帧中。 使用 go 为男性和女性群体创建两个条形图轨迹。条形方法,分别具有计数和年龄组的 x 和 y 值。...输出 结论 在本文中,我们学习了如何在 Python 中使用 Plotly 创建人口金字塔。我们探索了两种不同的方法来实现这一目标,一种使用熊猫数据透视表,另一种使用 Plotly 图形对象。

    41610

    如何在 Pandas 中创建一个空的数据帧并向其附加行和列?

    Pandas是一个用于数据操作和分析的Python库。它建立在 numpy 库之上,提供数据帧的有效实现。数据帧是一种二维数据结构。在数据帧中,数据以表格形式在行和列中对齐。...它类似于电子表格或SQL表或R中的data.frame。最常用的熊猫对象是数据帧。大多数情况下,数据是从其他数据源(如csv,excel,SQL等)导入到pandas数据帧中的。...在本教程中,我们将学习如何创建一个空数据帧,以及如何在 Pandas 中向其追加行和列。...ignore_index 参数用于在追加行后重置数据帧的索引。concat 方法的第一个参数是要与列名连接的数据帧列表。 ignore_index 参数用于在追加行后重置数据帧的索引。...ignore_index参数设置为 True 以在追加行后重置数据帧的索引。 然后,我们将 2 列 [“薪水”、“城市”] 附加到数据帧。“薪水”列值作为系列传递。序列的索引设置为数据帧的索引。

    28030

    Backtrader来啦:常见案例汇总

    : 在 __init__() 中一次性读入调仓表,从调仓表中提取出调仓日期; 在 next() 中不断的判断当前回测时间点是否为调仓日:如果是调仓日,对被剔除的标的进行平仓,买入新增的标的;如果是非调仓日...是与行情数据一起直接导入的; 在 next() 中,借助 sort(适用于 list 的排序)和 sorted(可对所有可迭代的对象进行排序操作,案例中用于对 dict 进行排序)对每一只股票的 self.data...在使用 Backtrader 实现配对交易策略前,需要先寻找出存在协整关系的一对股票,再交易这对股票,整个配对交易策略的流程可以分为如下几步: step1:在股票池中,基于收盘价序列,筛选出存在协整关系的股票对...参数 period 对应的是标准化时使用的是过去某段时间的价差序列; OLS_TransformationN 的 OLS 估计是直接调用的OLS_Slope_InterceptN,也是采用的过去一段时间的价格序列做的...OLS 估计; 从上面可知,在回测的过程中,股票对的协整关系是以滚动固定窗口长度的形式进行动态更新的。

    3K33
    领券