写因子的时候需要注意:
1 resample:因子和总的resample
2 从大到小还是从小到大
需要做的事情
- 添加目前还没法测但是在论坛中出现的因子,查一下有没有遗漏的因子
- 对筹码集中度的参数进行优化,目前最优参数是7 14,在这个基础上测试0-30的参数,哪个最佳
- 开始看顶刊和研报,找到一些很好的策略。
- 做一期视频,讲偏度
- 什么是alpha策略,什么是beta策略
疑问
- 过滤因子是干嘛的
- offset表示的是,如果每天规定0点买入,offset为1,表示在1点买入
- 选参数的代码应该在哪里运行
参数在数据整理里面,参数优化为什么只运行选币
在Strategy_筹码.py文件里的
c
# 选币因子信息列表,用于`2_选币_单offset.py`,`3_计算多offset资金曲线.py`共用计算资金曲线
# 这里的True和False代表了对因子排序的顺序,其中True表示从小到大,False表示从大到小
# 这里的第三个参数,3表示的是,因子的signal里面传入的n
factor_list = [('筹码', False, 14, 1)]
是在2_选币_单offset.py文件中起作用的。
所以参数优化的运行顺序为1_选币数据整理.py 5_查看历年参数平原.py
脚本1的参数在config.py文件中
c
# 回测因子的参数列表。
# 因子文件如果有 get_parameter 函数,优先使用 get_parameter。
# 因子文件如果没有 get_parameter 函数,默认使用下面的 factor_param_list。
factor_param_list = [3, 7, 14, 30]
也就是说,在之前运行的时候,脚本1(数据整理部分)计算的是4个参数,在脚本2(选币)只计算了一个参数
依次可以想到,数据整理部分计算了所有因子参数,而选币部分只对一个因子参数计算了结果
-
数据整理的参数在config文件中factor_param_list里规定,那排序方式是在哪里规定的,是在选股的时候才进行排序,数据整理的时候,计算的是单币种的数据,只有在选币的时候,才能排序
-
在参数优化的时候,要改脚本5的参数
-
脚本5参数优化其实是在循环调用脚本2
这里需要看一下,脚本2之前调用的是startegy里面的参数,现在的参数是怎么用的。
脚本2中,首先根据config文件找到因子和策略,然后读取参数,如果argv的数量大于1,也就是需要多次运行选币脚本,那么读取参数。
-
看看为什么用共享内存
数据整理部分到底存储了什么数据?怎么存储的?
数据整理部分在data/数据整理部分存储了两个文件夹factors和periods
在计算好因子之后,将因子放在factors文件夹中
数据整理顺序:
1 和benchmark合并
2 计算选币因子,存储在factors文件夹
3 进行周期转换,存储在periods文件夹
-
共享内存这一段,实际是在读取 数据整理之后的周期数据,那么在脚本2 选币当中,是怎么得到这部分数据的呐?
-
在脚本5参数优化中,如果读取共享内存是false,是怎么获取数据的
实际上,共享内存其实就是说,要不要把所有币的内容合并到一个文件当中
-
脚本2的顺序
1 参数读取
首先从config文件中获取参数
如果argv的数量大于1,从argv获取参数
这里的逻辑就是,先从config获取参数,如果存在argv,则用argv的参数替换
3 读取并整理数据
读取数据整理部分得到的数据,以供后续操作
在这里使用到了共享内存
如果手动操作或者不用贡献内存,则直接从data/数据整理/periods读取数据
否则从共享内存读取数据
5 计算因子
疑问:为什么要计算两次因子,一次是在数据整理,一次是在这里
前面在算因子,这里考虑了多空因素,对因子做进一步处理,再议
6 对回测数据进行过滤
为什么要进行过滤,过滤是在干什么
我对这里过滤的理解是:用某些因子删除一些币或者数据
7 选币
8 计算资金曲线
9 画图
-
疑问:数据整理部分,这几个参数是怎么算因子的,有没有把这些因子总结在一个csv文件
这里对参数遍历,得到一个dataframe,保存dataframe得到整理好的文件。
alpha和beta策略
Alpha
Alpha 是用来衡量一个投资组合相对于市场基准(如股票市场指数)的超额回报。换句话说,alpha 表示在考虑了市场整体走势后的附加收益或损失。
- 正 Alpha:如果一个投资组合的 Alpha 为正,表示该投资组合在调整了市场风险后,获得了超过市场基准的收益。正 Alpha 通常被视为基金经理具有超凡投资能力的标志。
- 负 Alpha:如果一个投资组合的 Alpha 为负,表示该投资组合的表现不如市场基准。
- Alpha 的计算 :Alpha 是通过将投资组合的实际收益与基准预期收益之间的差异进行计算得出的。公式通常为:
[
\text{Alpha} = \text{实际收益} - (\text{无风险利率} + \text{Beta} \times (\text{市场收益} - \text{无风险利率}))
]
Beta
Beta 是衡量一个投资组合或个股相对于市场整体波动性的指标。Beta 描述了投资组合或个股的系统性风险,即其相对于市场的敏感度。
- Beta = 1:如果一个投资组合的 Beta 为 1,表示该投资组合的波动性与市场波动性一致。
- Beta > 1:如果 Beta 大于 1,表示该投资组合比市场波动性更大。例如,Beta 为 1.2 的股票在市场上涨或下跌时,预计会比市场多涨或多跌 20%。
- Beta < 1:如果 Beta 小于 1,表示该投资组合的波动性比市场低。例如,Beta 为 0.8 的股票在市场上涨或下跌时,预计会比市场少涨或少跌 20%。
- Beta = 0:Beta 为 0 表示投资与市场没有任何相关性。
Alpha 策略与 Beta 策略
-
Alpha 策略:Alpha 策略旨在通过主动投资管理,以寻求超越市场基准的回报。这类策略依赖于基金经理的选股能力、市场时机判断、套利机会等。Alpha 策略往往需要深入的市场分析、公司基本面研究以及可能的风险对冲手段。
-
Beta 策略:Beta 策略通常是被动的,目的是通过与市场整体趋势一致的投资来获取市场回报。这种策略依赖于市场整体的上涨或下跌,典型例子就是指数基金,它们通过持有整个市场指数中的所有或大部分股票来复制市场表现。
总结
- Alpha 策略 强调通过主动管理获得超额收益,是对基金经理投资能力的考验。
- Beta 策略 强调市场风险的管理和获取市场平均回报,通常采用被动投资方法。
也就是说,alpha策略:强调的是,相对于大盘,有多少超额收益
beta策略:beta策略是相较于大盘波动性的相关性,如果beta大于1,则表示策略比大盘多涨多跌,小于一则表示少涨少跌。如beta是1.2,表示大盘涨时,比大盘多涨20%,大盘跌时,比大盘多跌20%。