量化平台

量化平台

Ptrade|QMT|银行股息率轮动 实盘自动化交易

量化交易李魔佛 发表了文章 • 0 个评论 • 412 次浏览 • 2024-03-05 09:33 • 来自相关话题

看有没有人需要,前排占坑 -- Task -- 
看有没有人需要,前排占坑 -- Task -- 

华泰matic能在虚拟机运行吗?

量化交易李魔佛 发表了文章 • 0 个评论 • 456 次浏览 • 2024-01-05 09:36 • 来自相关话题

答:vmware上不行。登录的时候会直接提示说,matic禁止在虚拟机运行。
 
但matic却可以在hyper X虚拟机上运行。笔者在win11家庭版的hyper x测试过的。
 





 
 
答:vmware上不行。登录的时候会直接提示说,matic禁止在虚拟机运行。
 
但matic却可以在hyper X虚拟机上运行。笔者在win11家庭版的hyper x测试过的。
 

20240105093504.png

 
 

小市值轮动-量化交易-程序化交易-Ptrade实盘

Ptrade李魔佛 发表了文章 • 0 个评论 • 1199 次浏览 • 2023-10-07 14:14 • 来自相关话题

运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。




点击查看大图




点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

  查看全部
运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。

20231007002.jpg
点击查看大图

20231007003.jpg
点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

 

万0.854 免5 量化开户|QMT|Ptrade|掘金量化|国盛证券

券商万一免五李魔佛 发表了文章 • 0 个评论 • 1754 次浏览 • 2023-09-01 22:25 • 来自相关话题

 

为贯彻落实7月24日中央政治局会议精神和国务院相关会议部署,进一步活跃资本市场,提振投资者信心,形成推动经济持续回升向好的工作合力,证监会指导上海证券交易所、深圳证券交易所、北京证券交易所自8月28日起进一步降低证券交易经手费。沪深交易所此次将A股、B股证券交易经手费从按成交金额的0.00487%双向收取下调为按成交金额的0.00341%双向收取,降幅达30%;北交所在2022年12月调降证券交易经手费50%的基础上,再次将证券交易经手费标准降低50%,由按成交金额的0.025%双边收取下调至按成交金额的0.0125%双边收取。同时,将引导证券公司稳妥做好与客户合同变更及相关交易参数的调整,依法降低经纪业务佣金费率,切实将此次证券交易经手费下降的政策效果传导至广大投资者
 






在今年8月的时候,交易所下调经手费,经手费是交易所收取的。 所以国盛证券响应国家号召,第一时间下调经手费。
 
从原来的万1免5,下降到现在的万0.854 免5
 
对于量化交易Ptrade,QMT,交易费率也是一样,下调到万0.854 免五 !!! 简直良心证券呀,有木有!





 
目前国盛证券的QMT,miniQMT的开通门槛是入金50W, Ptrade的入金门槛也是50W,而且国盛的Ptrade是可以访问外部数据的。比如你的自己的mysql数据库,还有爬虫获取问财数据等等。 开ptrade的我一般推荐你们开通国盛证券的。 而其他 的湘财证券ptrade,是无法获取外部数据,外部网络的。
 
需要开通的可以扫码微信开通:

备注: 量化开户
 
非诚勿扰,欢迎其他券商合作!
  查看全部
 


为贯彻落实7月24日中央政治局会议精神和国务院相关会议部署,进一步活跃资本市场,提振投资者信心,形成推动经济持续回升向好的工作合力,证监会指导上海证券交易所、深圳证券交易所、北京证券交易所自8月28日起进一步降低证券交易经手费。沪深交易所此次将A股、B股证券交易经手费从按成交金额的0.00487%双向收取下调为按成交金额的0.00341%双向收取,降幅达30%;北交所在2022年12月调降证券交易经手费50%的基础上,再次将证券交易经手费标准降低50%,由按成交金额的0.025%双边收取下调至按成交金额的0.0125%双边收取。同时,将引导证券公司稳妥做好与客户合同变更及相关交易参数的调整,依法降低经纪业务佣金费率,切实将此次证券交易经手费下降的政策效果传导至广大投资者
 



20230901003.jpg

在今年8月的时候,交易所下调经手费,经手费是交易所收取的。 所以国盛证券响应国家号召,第一时间下调经手费。
 
从原来的万1免5,下降到现在的万0.854 免5
 
对于量化交易Ptrade,QMT,交易费率也是一样,下调到万0.854 免五 !!! 简直良心证券呀,有木有!

23299bc3c1c45d2f91f91c1390e7b8ea.jpeg

 
目前国盛证券的QMT,miniQMT的开通门槛是入金50W, Ptrade的入金门槛也是50W,而且国盛的Ptrade是可以访问外部数据的。比如你的自己的mysql数据库,还有爬虫获取问财数据等等。 开ptrade的我一般推荐你们开通国盛证券的。 而其他 的湘财证券ptrade,是无法获取外部数据,外部网络的。
 
需要开通的可以扫码微信开通:

备注: 量化开户
 
非诚勿扰,欢迎其他券商合作!
 

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

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

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



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

从零开始 手撸一个回测框架 (以可转债双低,低溢价为例)

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

因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 




Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()
 
双低和低溢价选债轮动:





 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 





运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 






完整代码与数据可以参考星球代码:





  查看全部
因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 

20220901004.png
Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。
class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()

 
双低和低溢价选债轮动:

20220901005.png

 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 
20220901001.png


运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 

20220901003.png


完整代码与数据可以参考星球代码:

星球.png

 

python获取通达信可转债日线和分时数据

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

昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 





 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdxpip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
 




如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 





 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据





 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。 from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel







 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')






 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 







欢迎关注公众号 查看全部
昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 

20220827005.png

 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdx
pip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')

 
20220827001-1.png

如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 

20220827002.png

 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录
比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据


20220827004.png

 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。
        from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel



20220827003.png


 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。
api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')

20220827006.png



 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 

20220827008.png



欢迎关注公众号

6行python代码 获取通达信的可转债分时数据

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

6行python代码 获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')


点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。
 
公众号:

  查看全部
6行python代码 获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
20220827001-1.png
点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。
 
公众号:

 

优矿使用的python版本

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

应该是变种的python2.7
从底层来看它的报错信息:





 
它是使用python2.7
 
可是异常操作,却可以使用python3的语法
try:
....
except Exception as e:
.....
 
所以有些地方还是得要注意一下 py2和py3的区别
比如py2的字典默认顺序是无序的。(这个有一次调试一个bug耗费了一两个小时,结果发现用了字典,取key,结果发现key的顺序全部是乱的,py3从3.6开始字典的key是有序的)
 
  查看全部
应该是变种的python2.7
从底层来看它的报错信息:

20220807001.png

 
它是使用python2.7
 
可是异常操作,却可以使用python3的语法
try:
....
except Exception as e:
.....
 
所以有些地方还是得要注意一下 py2和py3的区别
比如py2的字典默认顺序是无序的。(这个有一次调试一个bug耗费了一两个小时,结果发现用了字典,取key,结果发现key的顺序全部是乱的,py3从3.6开始字典的key是有序的)
 
 

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

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 2024 次浏览 • 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

 

欢迎关注公众号

qmt获取可转债历史tick行情数据

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

需要在mini qmt中获取历史tick,如果在qmt里面,只能获取到订阅行情的数据。
 
当然拿到数据后,它的tick数据是参差不齐的,虽然是L1的数据,当时有些时间间隔大于3s,而有些却可以小于3s。
 
所以可以对这些数据进行时间的重采样处理。 比如全部变为1s,或者变为3s,变为1分钟就没必要了。 因为获取行情本身就自带1m的数据参数。
 
result = df.resample('3S',).first().ffill()
dataframe重采样采用3秒的代码入行,而且要向前补全,因为某些时刻没有交易的话,它的价格还是上一档的价格。
 





 
最后处理的数据如上图所示。
  查看全部

20220720132706153.png

需要在mini qmt中获取历史tick,如果在qmt里面,只能获取到订阅行情的数据。
 
当然拿到数据后,它的tick数据是参差不齐的,虽然是L1的数据,当时有些时间间隔大于3s,而有些却可以小于3s。
 
所以可以对这些数据进行时间的重采样处理。 比如全部变为1s,或者变为3s,变为1分钟就没必要了。 因为获取行情本身就自带1m的数据参数。
 
result = df.resample('3S',).first().ffill()

dataframe重采样采用3秒的代码入行,而且要向前补全,因为某些时刻没有交易的话,它的价格还是上一档的价格。
 

20220720191743648.png

 
最后处理的数据如上图所示。
 

一创聚宽的实盘只支持每日开盘价和分钟交易

量化交易-Ptrade-QMT李魔佛 发表了文章 • 1 个评论 • 2623 次浏览 • 2022-07-11 14:26 • 来自相关话题

在一创的官网里面浏览到了一创上跑聚宽实盘的一些信息:
 
1.交易佣金是多少?

A股万分之二点五,最低五元手续费;
货币类ETF买卖和申赎均无费用;
场内基金只能买卖不能申赎,交易费用根据客户交易佣金来定,有最低5元限制;
具体情况请联系一创咨询;
2.平台支持的交易频率是多少?

支持「每分」和「每天」两个交易频率
3.平台支持的交易品种有哪些?

目前支持A股、场内基金。
4.可以同时跑几个实盘策略?

目前每个用户可以运行1个实盘策略,需要更多权限请联系自己的客户经理申请。
5.其他问题如何咨询?

查看常见问题及实盘说明文档
点击聚宽官网的在线客服免费咨询
6.请问实盘支持哪些系统
请您使用win7、8、9、10系统和mac系统进行实盘账户的绑定操作。目前暂时不支持win xp等系统和虚拟机。
不支持虚拟机和xp系统,费率万2.5(这个实在要吐槽一下,太太太贵)
只支持股票和场内基金,不支持可转债。
只能跑一个策略。(额。。。无力吐槽)
执行周期最低的是分钟级别,没有秒级别。
 





 
 
其他量化平台实盘案例,可以参考本站其他文章。
 
  查看全部
在一创的官网里面浏览到了一创上跑聚宽实盘的一些信息:
 
1.交易佣金是多少?

A股万分之二点五,最低五元手续费;
货币类ETF买卖和申赎均无费用;
场内基金只能买卖不能申赎,交易费用根据客户交易佣金来定,有最低5元限制;
具体情况请联系一创咨询;
2.平台支持的交易频率是多少?

支持「每分」和「每天」两个交易频率
3.平台支持的交易品种有哪些?

目前支持A股、场内基金。
4.可以同时跑几个实盘策略?

目前每个用户可以运行1个实盘策略,需要更多权限请联系自己的客户经理申请。
5.其他问题如何咨询?

查看常见问题及实盘说明文档
点击聚宽官网的在线客服免费咨询
6.请问实盘支持哪些系统
请您使用win7、8、9、10系统和mac系统进行实盘账户的绑定操作。目前暂时不支持win xp等系统和虚拟机。

不支持虚拟机和xp系统,费率万2.5(这个实在要吐槽一下,太太太贵)
只支持股票和场内基金,不支持可转债。
只能跑一个策略。(额。。。无力吐槽)
执行周期最低的是分钟级别,没有秒级别。
 

20220711004.png

 
 
其他量化平台实盘案例,可以参考本站其他文章。
 
 

小市值轮动-量化交易-程序化交易-Ptrade实盘

Ptrade李魔佛 发表了文章 • 0 个评论 • 1199 次浏览 • 2023-10-07 14:14 • 来自相关话题

运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。




点击查看大图




点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

  查看全部
运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。

20231007002.jpg
点击查看大图

20231007003.jpg
点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

 

Ptrade|QMT|银行股息率轮动 实盘自动化交易

量化交易李魔佛 发表了文章 • 0 个评论 • 412 次浏览 • 2024-03-05 09:33 • 来自相关话题

看有没有人需要,前排占坑 -- Task -- 
看有没有人需要,前排占坑 -- Task -- 

华泰matic能在虚拟机运行吗?

量化交易李魔佛 发表了文章 • 0 个评论 • 456 次浏览 • 2024-01-05 09:36 • 来自相关话题

答:vmware上不行。登录的时候会直接提示说,matic禁止在虚拟机运行。
 
但matic却可以在hyper X虚拟机上运行。笔者在win11家庭版的hyper x测试过的。
 





 
 
答:vmware上不行。登录的时候会直接提示说,matic禁止在虚拟机运行。
 
但matic却可以在hyper X虚拟机上运行。笔者在win11家庭版的hyper x测试过的。
 

20240105093504.png

 
 

小市值轮动-量化交易-程序化交易-Ptrade实盘

Ptrade李魔佛 发表了文章 • 0 个评论 • 1199 次浏览 • 2023-10-07 14:14 • 来自相关话题

运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。




点击查看大图




点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

  查看全部
运行了一段时间的实盘策略。中途不断加条件,避免买入暴雷的品种;遇到一字板涨停的不要急于轮动卖出。等破板再卖出。
 
当前策略持有30只。

20231007002.jpg
点击查看大图

20231007003.jpg
点击查看大图

基于股票的策略不敢多买,属于试验阶段,后期仍然会不断根据市场调仓; 主仓依然在可转债。
 
公众号:可转债量化分析

如果需要策略代写,(ptrade、qmt,其他量化平台)
可以公众号后台回复:
策略代写

 

万0.854 免5 量化开户|QMT|Ptrade|掘金量化|国盛证券

券商万一免五李魔佛 发表了文章 • 0 个评论 • 1754 次浏览 • 2023-09-01 22:25 • 来自相关话题

 

为贯彻落实7月24日中央政治局会议精神和国务院相关会议部署,进一步活跃资本市场,提振投资者信心,形成推动经济持续回升向好的工作合力,证监会指导上海证券交易所、深圳证券交易所、北京证券交易所自8月28日起进一步降低证券交易经手费。沪深交易所此次将A股、B股证券交易经手费从按成交金额的0.00487%双向收取下调为按成交金额的0.00341%双向收取,降幅达30%;北交所在2022年12月调降证券交易经手费50%的基础上,再次将证券交易经手费标准降低50%,由按成交金额的0.025%双边收取下调至按成交金额的0.0125%双边收取。同时,将引导证券公司稳妥做好与客户合同变更及相关交易参数的调整,依法降低经纪业务佣金费率,切实将此次证券交易经手费下降的政策效果传导至广大投资者
 






在今年8月的时候,交易所下调经手费,经手费是交易所收取的。 所以国盛证券响应国家号召,第一时间下调经手费。
 
从原来的万1免5,下降到现在的万0.854 免5
 
对于量化交易Ptrade,QMT,交易费率也是一样,下调到万0.854 免五 !!! 简直良心证券呀,有木有!





 
目前国盛证券的QMT,miniQMT的开通门槛是入金50W, Ptrade的入金门槛也是50W,而且国盛的Ptrade是可以访问外部数据的。比如你的自己的mysql数据库,还有爬虫获取问财数据等等。 开ptrade的我一般推荐你们开通国盛证券的。 而其他 的湘财证券ptrade,是无法获取外部数据,外部网络的。
 
需要开通的可以扫码微信开通:

备注: 量化开户
 
非诚勿扰,欢迎其他券商合作!
  查看全部
 


为贯彻落实7月24日中央政治局会议精神和国务院相关会议部署,进一步活跃资本市场,提振投资者信心,形成推动经济持续回升向好的工作合力,证监会指导上海证券交易所、深圳证券交易所、北京证券交易所自8月28日起进一步降低证券交易经手费。沪深交易所此次将A股、B股证券交易经手费从按成交金额的0.00487%双向收取下调为按成交金额的0.00341%双向收取,降幅达30%;北交所在2022年12月调降证券交易经手费50%的基础上,再次将证券交易经手费标准降低50%,由按成交金额的0.025%双边收取下调至按成交金额的0.0125%双边收取。同时,将引导证券公司稳妥做好与客户合同变更及相关交易参数的调整,依法降低经纪业务佣金费率,切实将此次证券交易经手费下降的政策效果传导至广大投资者
 



20230901003.jpg

在今年8月的时候,交易所下调经手费,经手费是交易所收取的。 所以国盛证券响应国家号召,第一时间下调经手费。
 
从原来的万1免5,下降到现在的万0.854 免5
 
对于量化交易Ptrade,QMT,交易费率也是一样,下调到万0.854 免五 !!! 简直良心证券呀,有木有!

23299bc3c1c45d2f91f91c1390e7b8ea.jpeg

 
目前国盛证券的QMT,miniQMT的开通门槛是入金50W, Ptrade的入金门槛也是50W,而且国盛的Ptrade是可以访问外部数据的。比如你的自己的mysql数据库,还有爬虫获取问财数据等等。 开ptrade的我一般推荐你们开通国盛证券的。 而其他 的湘财证券ptrade,是无法获取外部数据,外部网络的。
 
需要开通的可以扫码微信开通:

备注: 量化开户
 
非诚勿扰,欢迎其他券商合作!
 

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

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

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



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

从零开始 手撸一个回测框架 (以可转债双低,低溢价为例)

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

因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 




Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()
 
双低和低溢价选债轮动:





 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 





运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 






完整代码与数据可以参考星球代码:





  查看全部
因为优矿大部分可转债接口开始收费了,之前星球上分享的回测代码基本也跑不了。不过在关停转收费之前,已经把所需的数据下载下来,而最近的数据通过集思录补充既可。
 

20220901004.png
Mysql 数据

 下面是代码主框架,目前通过之前优矿的导出的csv数据 ,计算 各个因子。 通过不同权重评分,进行轮动。
class DataFeed:
def __init__(self):
self.csv_path = CSV_PATH
self.position = {}
self.HighValue = 0
self.Start_Cash = 1000000 # 初始资金
self.MyCash = self.Start_Cash
self.Withdraw = 0
self.daily_netvalue =
self.current_day = 0
self.PosValue = 0
self.threshold = 0 # 阈值
self.HighValue = self.Start_Cash
self.date_list, self.source = self.feed()
self.day_count = 0

def unpossibile(self, df, date):
# 剔除当日涨停的转债,买不入
raise_limited_dict = {
'2022-04-08': ['127057', ],
'2022-07-27': ['127065', ],
'2022-07-28': ['127065', ],
}
target_list = raise_limited_dict.get(date, None)
if target_list is None:
return df

return df.drop(index=target_list, axis=1)

def feed(self):
df = pd.read_csv(self.csv_path,
encoding='utf8',
dtype={'tickerEqu': str, 'tickerBond': str, 'secID_x': str},
)
del df['Unnamed: 0']
df['tradeDate'] = pd.to_datetime(df['tradeDate'], format='%Y-%m-%d')
df = df.set_index('tradeDate')
date_set = set(df.index.tolist())
date_list = list(map(lambda x: x.strftime('%Y-%m-%d'), date_set))
date_list.sort()
return date_list, df

def filters(self, df, today):
# 过滤条件,可添加多个条件
df = self.unpossibile(df, today)
return df

def logprint(self, current):
log.info('当前日期{}'.format(current))

def run(self):
for current in self.date_list:

if current < START_DATE or current > END_DATE:
continue

if self.day_count % FREQ != 0:
self.get_daily_netvalue(current)
else:
self.handle_data(current)

self.day_count += 1

self.after_trade()

 
双低和低溢价选债轮动:

20220901005.png

 
上面是主要框架代码, 根据数据来驱动交易。 可以根据不同的时间日期进行回测交易。不同持有个数,不同轮动功能天数。【完整代码可以常见 知识星球】
 
运行: python main.py
 
20220901001.png


运行后会自动保存一个excel文件:
 
并且可以生成收益率曲线图:
 

20220901003.png


完整代码与数据可以参考星球代码:

星球.png

 

python获取通达信可转债日线和分时数据

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

昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 





 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdxpip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
 




如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 





 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据





 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。 from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel







 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')






 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 







欢迎关注公众号 查看全部
昨天看到优矿平台公告,开始对大部分数据获取接口进行收费。
 

20220827005.png

 
 除了优矿,还有哪些可以获取可转债日线,甚至分时tick数据呢?当然笔者压箱底里面还有很多可用数据源的。本文就简单介绍其中一个,下通达信数据源。
 
安装
使用pip安装第三方库pytdx
pip install pytdx



分时数据
下面6行python代码, 就可以获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')

 
20220827001-1.png

如果需要遍历当前最新可转债代码,需要结合前面的文章。【注意这代码会定期更新,因网站架构或者字段是不定时变动】

不过前面的接口只能读取800条数据,以一天240条数据计算,只能读取2天多的数据量,对于需要更多数据的朋友来说,肯定不够的。或者有一个办法,把上面代码写成定时任务,就可以每天收盘后自动存储对应的数据。

如果需要更多的历史数据,那么可以使用pytdx的另外一个功能,那就是使用python读取通达信本地数据文件。

先用通达信同步1分钟(或5分钟)数据到本地.
 

20220827002.png

 
选择沪深京分钟线,当然,其他数据你也可以选择。勾选一分钟线数据或者5分钟线数据,还有日期。不过这里日期会有限制,只能下载100天的1分钟线,或者500天的5分钟线。所以如果长期需要这个数据,你可以每隔一段时间下载一次。

数据保存路径:通达信安装目录的 vipdoc 子目录
比如我的通达信客户端安装在 c:\new_tdx 下,



c:\new_tdx\vipdoc\sz\lday\ 下是深圳的日k线数据
c:\new_tdx\vipdoc\sh\lday\ 下是上海的日k线数据
c:\new_tdx\vipdoc\sh\minline\ 下是上海的分钟线数据
c:\new_tdx\vipdoc\sz\minline\ 下是深圳的分钟线数据


20220827004.png

 
如果你需要更久的历史数据,可以到网上找找,下载下来后按照下面代码读取即可。
        from pytdx.reader import TdxMinBarReader
path='/home/xda/Downloads/sz128014.lc1'
reader = TdxMinBarReader()
df = reader.get_df(path)
#df.to_excel('tick.xlsx') # 导出为excel



20220827003.png


 
得到dataframe对象后,接着可以保存为excel,数据库都很简单了。一条语句的事情。
 
可转债日线数据
 
当然,能够获取到分钟数据,对于日线数据更加不在话下了。日线数据并没有日期限制,想下多少有多少。
api = TdxHq_API()
api = api.connect('119.147.212.81', 7709)
data=api.get_k_data('123045', '2020-05-01', '2022-08-26') # 123045 为可转债代码,可以替换任意代码
data.to_excel('k-line.xlsx')

20220827006.png



 
如果想获取正股或者其他股票数据,只需要把代码替换成正股股票代码即可。

如果分钟数据还不满足,还可以使用更小粒度的tick数据。下回有空再继续介绍,敬请关注。
 

20220827008.png



欢迎关注公众号

6行python代码 获取通达信的可转债分时数据

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

6行python代码 获取通达信的可转债分时数据。from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')


点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。
 
公众号:

  查看全部
6行python代码 获取通达信的可转债分时数据。
from pytdx.hq import TdxHq_API
api = TdxHq_API()
with api.connect('119.147.212.81', 7709):
data = api.get_security_bars(7, 0, '123045', 0, 240) # 123045 为转债代码 ,240 为获取 240个转债数据
df = api.to_df(data)
df=df.sort_values('datetime')
20220827001-1.png
点击查看大图 
 
如果需要遍历当前最新可转债代码(集思录),需要结合前面的文章。
 
公众号:

 

优矿使用的python版本

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

应该是变种的python2.7
从底层来看它的报错信息:





 
它是使用python2.7
 
可是异常操作,却可以使用python3的语法
try:
....
except Exception as e:
.....
 
所以有些地方还是得要注意一下 py2和py3的区别
比如py2的字典默认顺序是无序的。(这个有一次调试一个bug耗费了一两个小时,结果发现用了字典,取key,结果发现key的顺序全部是乱的,py3从3.6开始字典的key是有序的)
 
  查看全部
应该是变种的python2.7
从底层来看它的报错信息:

20220807001.png

 
它是使用python2.7
 
可是异常操作,却可以使用python3的语法
try:
....
except Exception as e:
.....
 
所以有些地方还是得要注意一下 py2和py3的区别
比如py2的字典默认顺序是无序的。(这个有一次调试一个bug耗费了一两个小时,结果发现用了字典,取key,结果发现key的顺序全部是乱的,py3从3.6开始字典的key是有序的)
 
 

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

量化交易-Ptrade-QMT李魔佛 发表了文章 • 0 个评论 • 2024 次浏览 • 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

 

欢迎关注公众号

qmt获取可转债历史tick行情数据

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

需要在mini qmt中获取历史tick,如果在qmt里面,只能获取到订阅行情的数据。
 
当然拿到数据后,它的tick数据是参差不齐的,虽然是L1的数据,当时有些时间间隔大于3s,而有些却可以小于3s。
 
所以可以对这些数据进行时间的重采样处理。 比如全部变为1s,或者变为3s,变为1分钟就没必要了。 因为获取行情本身就自带1m的数据参数。
 
result = df.resample('3S',).first().ffill()
dataframe重采样采用3秒的代码入行,而且要向前补全,因为某些时刻没有交易的话,它的价格还是上一档的价格。
 





 
最后处理的数据如上图所示。
  查看全部

20220720132706153.png

需要在mini qmt中获取历史tick,如果在qmt里面,只能获取到订阅行情的数据。
 
当然拿到数据后,它的tick数据是参差不齐的,虽然是L1的数据,当时有些时间间隔大于3s,而有些却可以小于3s。
 
所以可以对这些数据进行时间的重采样处理。 比如全部变为1s,或者变为3s,变为1分钟就没必要了。 因为获取行情本身就自带1m的数据参数。
 
result = df.resample('3S',).first().ffill()

dataframe重采样采用3秒的代码入行,而且要向前补全,因为某些时刻没有交易的话,它的价格还是上一档的价格。
 

20220720191743648.png

 
最后处理的数据如上图所示。
 

一创聚宽的实盘只支持每日开盘价和分钟交易

量化交易-Ptrade-QMT李魔佛 发表了文章 • 1 个评论 • 2623 次浏览 • 2022-07-11 14:26 • 来自相关话题

在一创的官网里面浏览到了一创上跑聚宽实盘的一些信息:
 
1.交易佣金是多少?

A股万分之二点五,最低五元手续费;
货币类ETF买卖和申赎均无费用;
场内基金只能买卖不能申赎,交易费用根据客户交易佣金来定,有最低5元限制;
具体情况请联系一创咨询;
2.平台支持的交易频率是多少?

支持「每分」和「每天」两个交易频率
3.平台支持的交易品种有哪些?

目前支持A股、场内基金。
4.可以同时跑几个实盘策略?

目前每个用户可以运行1个实盘策略,需要更多权限请联系自己的客户经理申请。
5.其他问题如何咨询?

查看常见问题及实盘说明文档
点击聚宽官网的在线客服免费咨询
6.请问实盘支持哪些系统
请您使用win7、8、9、10系统和mac系统进行实盘账户的绑定操作。目前暂时不支持win xp等系统和虚拟机。
不支持虚拟机和xp系统,费率万2.5(这个实在要吐槽一下,太太太贵)
只支持股票和场内基金,不支持可转债。
只能跑一个策略。(额。。。无力吐槽)
执行周期最低的是分钟级别,没有秒级别。
 





 
 
其他量化平台实盘案例,可以参考本站其他文章。
 
  查看全部
在一创的官网里面浏览到了一创上跑聚宽实盘的一些信息:
 
1.交易佣金是多少?

A股万分之二点五,最低五元手续费;
货币类ETF买卖和申赎均无费用;
场内基金只能买卖不能申赎,交易费用根据客户交易佣金来定,有最低5元限制;
具体情况请联系一创咨询;
2.平台支持的交易频率是多少?

支持「每分」和「每天」两个交易频率
3.平台支持的交易品种有哪些?

目前支持A股、场内基金。
4.可以同时跑几个实盘策略?

目前每个用户可以运行1个实盘策略,需要更多权限请联系自己的客户经理申请。
5.其他问题如何咨询?

查看常见问题及实盘说明文档
点击聚宽官网的在线客服免费咨询
6.请问实盘支持哪些系统
请您使用win7、8、9、10系统和mac系统进行实盘账户的绑定操作。目前暂时不支持win xp等系统和虚拟机。

不支持虚拟机和xp系统,费率万2.5(这个实在要吐槽一下,太太太贵)
只支持股票和场内基金,不支持可转债。
只能跑一个策略。(额。。。无力吐槽)
执行周期最低的是分钟级别,没有秒级别。
 

20220711004.png

 
 
其他量化平台实盘案例,可以参考本站其他文章。