量化投资策略回测前的准备

上周末百般思虑,最终貌似做了一个最差的选择。也发现自己好像真的是属于选择困难症人群。因此,也停更了很久。已经发生的无从去改变,走好以后就ok了。

 

       公众号名为小白学量化,一直也没有一个明确的定位。今天给个明确的定位,主要就是应用python进行股票量化投资策略的分析的相关知识的介绍和实现。闲言少叙,今天主要说下量化投资策略回测框架搭建前的准备工作。

 

       众所周知,策略的优劣,在数据日益丰富和便捷获取的当下而言,仅依靠经验,显然难以服众,更多的是应用数据证明。量化投资策略,从策略的构建到最终的实施,主要包括三步:回测à模拟 à实盘。这其中,回测无疑是最为重要的步,用于验证策略是否有效。那么回测之前,应该做哪些准备呢?

 

1. 阐述策略核心

有过一定投资经验的人,有时总会冒出一个想法:玩了这么久久的股票,根据我的经验来看,这样做应该是有效的。然后脑海里描绘出一片蓝图,达到财富自由。这通常也是当下很多人的策略的来源。


       第一步,必须用语言或文字,对策略核心进行描述。停留在脑海里的东西,只有周公才可以和你交流。只有形成语言或文字,才能不断的沟通和完善。


策略核心,窃以为,应包括如下要点,此处,不一定详细,面面俱到即可。

  • 标的是什么

  • 应用什么指标,怎么应用(基本面、技术面还是消息面等)

  • 操作频度如何(短线、中线、长线等)

  • 买卖的时点和仓位怎么选择

  • 适应行情(牛市、熊市还是震荡市)

 

2. 思考策略支撑理论和依据

曾经以为,这一步完全是多余的。知道有一天,很突兀的参加一个电面才有点了解其重要性。面试官问了这样一个问题:“网格交易策略有效的经济学逻辑是什么?”还好面试官不在面前,否则会看到一脸懵逼的我。


       渐渐地意识到了该步骤的重要性。一个策略是否有效,不能凭空想当然啊。当然,现在要做回测,来验证,但是,如果费了九牛二虎之力发现无效的话,那岂不是。。。因此,在进行具体回测前,寻找其策略的支撑理论和依据就蛮重要了。


       No No,我们是在做策略,不是在玩学术。因此,通过百度谷歌等,寻找其支撑理论和依据即可,不需要详细,关键是对策略本质进行剖析,初步证明其有效。如果连西蒙斯都说可能是有效的了,那下面做下去不就更有信心了嘛。

 

3. 阐述策略逻辑

重中之重哦,这里就不强调三遍了。尤其,对于不懂程序的人而言。只有完成详细的描述出来,才能叫玩程序的来帮忙实现验证。同时,也是对自己的沉淀。写作的过程中,总会有一些以前未注意过的,更细的点冒出来,不断的来完善丰富。不然,你以为作家一来就文思泉涌啊,还不是写作过程中灵感迸发,不断完善的。


       这里,应包括如下要点:

  • 策略基本流程:原始数据à  股票标的筛选 à买卖规则

  • 原始数据:策略具体应用什么数据,基本面、技术面和消息面的具体哪些指标和数据,是分钟级、小时级、日级别还是周的月的?

  • 股票标的筛选:是从全市场选股,还是从创业板,还是沪深300

  • 买卖规则

  • 买卖的标准是什么

  • 买卖的仓位怎么确定

 

该步写完后,便可以和其他人进行充分的交流和沟通了。在交流的过程中,相信会对策略逻辑进行不断的完善和优化。

 

       完成上述步骤之后,策略回测之前,还有最为重要的一步,便是构建程序逻辑了,由于这和程序相关,后面介绍如何应用python搭建回测框架的时候,再进行补充吧。

三因子量化投资策略通常涉及市值因子、价值因子动量因子。这种策略假设股票的表现受到这三个因素的影响:公司的规模(市值)、相对于其基本面的价值(如市盈率或市净率)以及过去业绩的趋势(动量)。代码是一种模拟历史数据来评估策略性能的过程,下面是一个简化版的Python示例,使用pandasbacktrader库: ```python import pandas as pd from backtrader import Strategy, cerebro # 假设df_data包含价格数据 class ThreeFactorStrategy(Strategy): def __init__(self): self.value_factor = ValueFactor() # 创建价值因子计算类 self.momentum_factor = MomentumFactor() # 创建动量因子计算类 self.size_factor = SizeFactor() # 创建市值因子计算类 def next(self): data = self.data # 获取当数据 value_score = self.value_factor.score(data) # 计算价值得分 momentum_score = self.momentum_factor.score(data) # 计算动量得分 size_score = self.size_factor.score(data) # 计算市值得分 weight = (value_score + momentum_score + size_score) / 3.0 # 权重分配 if weight > 0: self.buy(size=weight) # 如果权重大于0,则买入 # 初始化引擎 cerebro = cerebro() cerebro.addstrategy(ThreeFactorStrategy) # 加入数据并设置交易频率等其他参数 df_data = pd.read_csv('your_data.csv') # 替换为实际的数据文件路径 cerebro.adddata(df_data['Close'], name='price') # 开始 cerebro.run() # 结束后可以查看结果 print("总报:", cerebro.broker.getvalue())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值