多因子

多因子

花了1小时用django快速写了个可转债实时系统

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 1593 次浏览 • 2022-09-07 08:08 • 来自相关话题

有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他



点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-)
 
公众号: 查看全部
有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他
20220907001.png
点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-)
 
公众号:

可转债多因子回测 优矿代码

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 2665 次浏览 • 2022-08-06 18:00 • 来自相关话题

可转债里面可用因子很多,一般人最常用的就是溢价率,双低,价格等。
实际运用里面,可以加入很多很多因子,比如正股涨跌幅,正股波动率,转债到期时间,正股ROE等等多大几十个因子。





 
之前写了一个多因子回测的优矿python代码,用户可以自己修改参数,
 
比如下面的正股波动率因子,Bond_Volatility_ENABLE = True
Bond_Volatility_DAYS = 30
TOP_RIPPLE = 50
Bond_Volatility_LOG_ENABLE = True # 波动率日志开关

Bond_Volatility_ENABLE = True 设为True,就是回测过程加入这个因子,设为False就忽略这个因子。
下面的 
Bond_Volatility_DAYS 为N天内的正股波动率,一般设置30天,20天内就够了,因为一年之前的即使波动很大,那对当前转债的影响也很小。
 
TOP_RIPPLE 选择波动率最大的前面N只转债
举个例子,下面转债是根据其对应正股的30天里的波动率选出来的。(当前是8月5日,也就是7月5日到8月5日之间的数据)。





计算波动率具体代码如下;





 
每个因子写成一个类。
 
这样可以不用修改主代码,就可以无限地添加,修改因子。# 基类
class ConditionFilter:

def filters(self, *args, **kwargs):
if self.enable:
return self.fun(*args, **kwargs)
else:
return True

def fun(self, *args, **kwargs):
# 继承的实现这个函数
raise NotImplemented





 
上面是部分过滤因子,也就是不满足的都会被移除。 比如规模大于10亿的会移除。
 
然后得到的结果,进行因子评分。 # 权重 溢价率、转债价格、正股N天涨幅,正股ROE
weights = {'溢价率': 0, '转债价格': 1, '正股N天涨幅': 0, '正股ROE': 0, '规模': 0}
每个权重赋予一个权重分最高是1,最低是0,如果你想回测 低溢价率 策略,只需要把其他因子的权重全部设置为0,溢价率设置为1即可。双底的话就是 溢价率和价格各为0.5 就可以了。
 
设置好参数后,设置你要回测的时间,持仓周期,持有个数等可调参数。
 
稍等片刻就会有结果了。因子越多,运行时间会增加。一般几分钟就可以得到几年来的回测结果。
 





中途可以查看日志
 
完整代码以及运行流程可到知识星球咨询了解。





 

欢迎关注公众号 查看全部
可转债里面可用因子很多,一般人最常用的就是溢价率,双低,价格等。
实际运用里面,可以加入很多很多因子,比如正股涨跌幅,正股波动率,转债到期时间,正股ROE等等多大几十个因子。

20220806001.png

 
之前写了一个多因子回测的优矿python代码,用户可以自己修改参数,
 
比如下面的正股波动率因子,
Bond_Volatility_ENABLE = True
Bond_Volatility_DAYS = 30
TOP_RIPPLE = 50
Bond_Volatility_LOG_ENABLE = True # 波动率日志开关


Bond_Volatility_ENABLE = True 设为True,就是回测过程加入这个因子,设为False就忽略这个因子。
下面的 
Bond_Volatility_DAYS 为N天内的正股波动率,一般设置30天,20天内就够了,因为一年之前的即使波动很大,那对当前转债的影响也很小。
 
TOP_RIPPLE 选择波动率最大的前面N只转债
举个例子,下面转债是根据其对应正股的30天里的波动率选出来的。(当前是8月5日,也就是7月5日到8月5日之间的数据)。

20220806003.png

计算波动率具体代码如下;

20220806004.png

 
每个因子写成一个类。
 
这样可以不用修改主代码,就可以无限地添加,修改因子。
# 基类
class ConditionFilter:

def filters(self, *args, **kwargs):
if self.enable:
return self.fun(*args, **kwargs)
else:
return True

def fun(self, *args, **kwargs):
# 继承的实现这个函数
raise NotImplemented


20220806005.png

 
上面是部分过滤因子,也就是不满足的都会被移除。 比如规模大于10亿的会移除。
 
然后得到的结果,进行因子评分。 
# 权重 溢价率、转债价格、正股N天涨幅,正股ROE
weights = {'溢价率': 0, '转债价格': 1, '正股N天涨幅': 0, '正股ROE': 0, '规模': 0}

每个权重赋予一个权重分最高是1,最低是0,如果你想回测 低溢价率 策略,只需要把其他因子的权重全部设置为0,溢价率设置为1即可。双底的话就是 溢价率和价格各为0.5 就可以了。
 
设置好参数后,设置你要回测的时间,持仓周期,持有个数等可调参数。
 
稍等片刻就会有结果了。因子越多,运行时间会增加。一般几分钟就可以得到几年来的回测结果。
 

20220806006.png

中途可以查看日志
 
完整代码以及运行流程可到知识星球咨询了解。

ZSXQ_20220806_180545705.png

 

欢迎关注公众号

花了1小时用django快速写了个可转债实时系统

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 1593 次浏览 • 2022-09-07 08:08 • 来自相关话题

有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他



点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-)
 
公众号: 查看全部
有个朋友的因子也特别刁钻,他自己用excel也不容易计算,拉取最新数据,筛选排除,计算权重后得到得分,最后得到目标转债。 手机上也无法操作,手机操作excel,上面的很多操作无法实施。 
 
用django快速搭了个页面给他
20220907001.png
点击查看大图
 
数据是实时选出来的。当时帮他做的回测收益率也是很高,主要回撤控制得很好。
 
本来想用gin写,发现后台的dataframe还有这要找go下对应的库,避免计算出错,还是用会python吧(-。-)
 
公众号:

可转债多因子回测 优矿代码

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 2665 次浏览 • 2022-08-06 18:00 • 来自相关话题

可转债里面可用因子很多,一般人最常用的就是溢价率,双低,价格等。
实际运用里面,可以加入很多很多因子,比如正股涨跌幅,正股波动率,转债到期时间,正股ROE等等多大几十个因子。





 
之前写了一个多因子回测的优矿python代码,用户可以自己修改参数,
 
比如下面的正股波动率因子,Bond_Volatility_ENABLE = True
Bond_Volatility_DAYS = 30
TOP_RIPPLE = 50
Bond_Volatility_LOG_ENABLE = True # 波动率日志开关

Bond_Volatility_ENABLE = True 设为True,就是回测过程加入这个因子,设为False就忽略这个因子。
下面的 
Bond_Volatility_DAYS 为N天内的正股波动率,一般设置30天,20天内就够了,因为一年之前的即使波动很大,那对当前转债的影响也很小。
 
TOP_RIPPLE 选择波动率最大的前面N只转债
举个例子,下面转债是根据其对应正股的30天里的波动率选出来的。(当前是8月5日,也就是7月5日到8月5日之间的数据)。





计算波动率具体代码如下;





 
每个因子写成一个类。
 
这样可以不用修改主代码,就可以无限地添加,修改因子。# 基类
class ConditionFilter:

def filters(self, *args, **kwargs):
if self.enable:
return self.fun(*args, **kwargs)
else:
return True

def fun(self, *args, **kwargs):
# 继承的实现这个函数
raise NotImplemented





 
上面是部分过滤因子,也就是不满足的都会被移除。 比如规模大于10亿的会移除。
 
然后得到的结果,进行因子评分。 # 权重 溢价率、转债价格、正股N天涨幅,正股ROE
weights = {'溢价率': 0, '转债价格': 1, '正股N天涨幅': 0, '正股ROE': 0, '规模': 0}
每个权重赋予一个权重分最高是1,最低是0,如果你想回测 低溢价率 策略,只需要把其他因子的权重全部设置为0,溢价率设置为1即可。双底的话就是 溢价率和价格各为0.5 就可以了。
 
设置好参数后,设置你要回测的时间,持仓周期,持有个数等可调参数。
 
稍等片刻就会有结果了。因子越多,运行时间会增加。一般几分钟就可以得到几年来的回测结果。
 





中途可以查看日志
 
完整代码以及运行流程可到知识星球咨询了解。





 

欢迎关注公众号 查看全部
可转债里面可用因子很多,一般人最常用的就是溢价率,双低,价格等。
实际运用里面,可以加入很多很多因子,比如正股涨跌幅,正股波动率,转债到期时间,正股ROE等等多大几十个因子。

20220806001.png

 
之前写了一个多因子回测的优矿python代码,用户可以自己修改参数,
 
比如下面的正股波动率因子,
Bond_Volatility_ENABLE = True
Bond_Volatility_DAYS = 30
TOP_RIPPLE = 50
Bond_Volatility_LOG_ENABLE = True # 波动率日志开关


Bond_Volatility_ENABLE = True 设为True,就是回测过程加入这个因子,设为False就忽略这个因子。
下面的 
Bond_Volatility_DAYS 为N天内的正股波动率,一般设置30天,20天内就够了,因为一年之前的即使波动很大,那对当前转债的影响也很小。
 
TOP_RIPPLE 选择波动率最大的前面N只转债
举个例子,下面转债是根据其对应正股的30天里的波动率选出来的。(当前是8月5日,也就是7月5日到8月5日之间的数据)。

20220806003.png

计算波动率具体代码如下;

20220806004.png

 
每个因子写成一个类。
 
这样可以不用修改主代码,就可以无限地添加,修改因子。
# 基类
class ConditionFilter:

def filters(self, *args, **kwargs):
if self.enable:
return self.fun(*args, **kwargs)
else:
return True

def fun(self, *args, **kwargs):
# 继承的实现这个函数
raise NotImplemented


20220806005.png

 
上面是部分过滤因子,也就是不满足的都会被移除。 比如规模大于10亿的会移除。
 
然后得到的结果,进行因子评分。 
# 权重 溢价率、转债价格、正股N天涨幅,正股ROE
weights = {'溢价率': 0, '转债价格': 1, '正股N天涨幅': 0, '正股ROE': 0, '规模': 0}

每个权重赋予一个权重分最高是1,最低是0,如果你想回测 低溢价率 策略,只需要把其他因子的权重全部设置为0,溢价率设置为1即可。双底的话就是 溢价率和价格各为0.5 就可以了。
 
设置好参数后,设置你要回测的时间,持仓周期,持有个数等可调参数。
 
稍等片刻就会有结果了。因子越多,运行时间会增加。一般几分钟就可以得到几年来的回测结果。
 

20220806006.png

中途可以查看日志
 
完整代码以及运行流程可到知识星球咨询了解。

ZSXQ_20220806_180545705.png

 

欢迎关注公众号