最近有读者问我怎么样处理强制赎回,我把函数提取出来,参考使用
"可转债强制赎回":"可转债强制赎回配置",
"是否剔除强制赎回":"是",
"距离强制赎回天数":10,
"强制赎回状态":"非强制赎回",
def get_del_qzsh_data(self):
'''
剔除强制赎回
'''
print('剔除强制赎回')
with open('分析配置.json',encoding='utf-8') as f:
com=f.read()
text=json.loads(com)
del_select=text['是否剔除强制赎回']
n=text['距离强制赎回天数']
df=self.bond_cov_data.bank_cov_qz()
del_list=[]
for i in range(1,n+1):
n_text='至少还需{}天'.format(i)
del_list.append(n_text)
del_list.append('临近到期')
del_list.append('已满足强赎条件')
del_list.append('是否剔除强制赎回')
text_n=''
for select_text in del_list:
text_n+='"{}" in x or '.format(select_text)
text_n=text_n[:-3]
if del_select=='是':
df1=df
def select_bond_cov(x):
'''
选择可转债
'''
if eval(text_n):
return '是'
else:
return '不是'
df1['选择']=df1['cell.redeem_count'].apply(select_bond_cov)
df2=df1[df1['选择']=='是']
df2.to_excel(r'强制赎回\强制赎回.xlsx')
trader_stock=pd.read_excel(r'交易股票池\交易股票池.xlsx',dtype='object')
print(trader_stock)
def select_trader_stock(x):
'''
选择交易股票池
'''
if x not in df2['cell.bond_id'].tolist():
return '不是'
else:
return '是'
trader_stock['强制赎回']=trader_stock['证券代码'].apply(select_trader_stock)
trader_stock=trader_stock[trader_stock['强制赎回']=='不是']
trader_stock.to_excel(r'交易股票池\交易股票池.xlsx')
return df2
else:
df.to_excel(r'非强制赎回\非强制赎回.xlsx')
return df
策略目前已经逐渐的迁移到综合自定义交易模型,今天我维护了一下,最终版同花顺可转债趋势轮动v5.6.8修改了空仓问题,我感觉里面的可转债计算因子很有价值,后面打算独立到服务器,支持60多个自定义因子交易
程序支持自定义因子
自定义因子轮动模块":"自定义因子模块,单独独立成一个模型后面更新,因子值是数据",
"可转债支持的默认因子":["价格", "涨跌幅","正股涨跌", "正股PB", "转股价",
"转股价值", "转股溢价率", "双低", "申万", "市场", "上市时间", "持有",
"债券评级", "期权价值", "回售触发价", "强赎触发价", "转债占比", "基金持仓",
"到期时间", "剩余年限", "剩余规模", "成交额", "svolume",
"换手率", "到期税前收益", "融资融券"],
"正股默认因子":["股票现价", "股票最高价", "股票最低价", "股票今开",
"股票成交量", "股票成交额", "股票量比", "股票涨停", "股票跌停",
"股票昨收", "股票总市值", "股票流通市值", "股票动态市盈率", "股票市净率",
"股票换手率", "股票涨跌", "股票涨跌幅", "股票振幅"],
"自定义因子设置":"自定义因子设置",
"是否开启因子上下限轮动":"是",
"因子排序列表":["转股溢价率","剩余规模","价格"],

建立3低因子
"可转债存在交易股票池是否追加":"否",
"自定义默认因子字典":{"价格":[115,130],"转股溢价率":[0,60],"剩余规模":[0.5,8],"剩余年限":[1,6]},
"自定义因子函数说明":"自定义因子函数必须有返回值,输入的参数包容stock默认的股票可转债一样",
"是否启动自定义因子":"否",
"自定义因子函数表达形式":{"可转债5日波动率":["get_cov_bond_var(stock,n=5)",[-1,20]]},
自定义因子函数
from stock_data import stock_data
from bond_cov_data import bond_cov_data
from ths_rq import ths_rq
import pandas as pd
from tqdm import tqdm
import numpy as np
import json
import jsl_data
import empyrical
class user_def_factor_data:
def __init__(self):
'''
自定义因子框架
'''
self.stock_data=stock_data()
self.bond_cov_data=bond_cov_data()
self.ths_rq=ths_rq()
def get_cov_bond_var(self,stock='110052',n=5):
'''
可转债5波动率
程序必须有返回值
'''
try:
df=self.bond_cov_data.get_cov_bond_hist_data(stock=stock)
var_5=df['close'].rolling(5).std().tolist()[-1]
return "可转债",var_5
except:
return "可转债",None
def get_stock_5_return(self,stock='600031',n=5):
'''
股票5日收益率
程序必须有返回值
'''
try:
df=self.stock_data.get_stock_hist_data_em(stock=stock)
return_5=df['涨跌幅'].rolling(5).sum().tolist()[-1]
return '股票',return_5
except:
return '股票',None
def get_cov_bond_return(self,stock='110052',n=5):
'''
可转债5日收益率
程序必须有返回值
'''
try:
df=self.bond_cov_data.get_cov_bond_hist_data(stock=stock)
return_5=df['涨跌幅'].rolling(5).sum().tolist()[-1]
return '可转债',return_5
except:
return '可转债',None
def get_cov_bond_score(self,stock='110052'):
try:
df=self.data.get_hist_data_em(stock=stock)
score=self.analysis_models.mean_line_models(df)
return '可转债',score
except:
print(stock,'计算失败')
return '可转债',None
自定义因子只需要返回数据类型,值就可以的
我们点击analysis_models更新全部的交易数据,我的是实盘交易模型

更新数据

对可转债进行趋势分析


程序分析的数据

默认因子



建立3低因子
"可转债存在交易股票池是否追加":"否", "自定义默认因子字典":{"价格":[115,130],"转股溢价率":[0,60],"剩余规模":[0.5,8],"剩余年限":[1,6]}, "自定义因子函数说明":"自定义因子函数必须有返回值,输入的参数包容stock默认的股票可转债一样", "是否启动自定义因子":"否", "自定义因子函数表达形式":{"可转债5日波动率":["get_cov_bond_var(stock,n=5)",[-1,20]]},
3低因子分析的结果


程序分析的交易股票池

运行实盘J易,有qmt版本


可以提供源代码和计算因子表
程序的全部参数
{
"交易模型":"可转债交易模型",
"策略名称":"小果专用同花顺可转债趋势轮到策略",
"开始时间":"20220101",
"结束时间":"20500101",
"停止程序":"假",
"测试":"假",
"证券公司交易设置":"兼容老牌证券公司可转债1手为单位",
"是否开启特殊证券公司交易设置":"否",
"交易时间段":4,
"交易开始时间":9,
"交易结束时间":14,
"是否参加集合竞价":"否",
"开始交易分钟":0,
"开票买卖设置":"开票买卖设置",
"买卖前是否更新数据":"否",
"买卖前更新数据时间":"09:26",
"买入时间":"09:30",
"卖出时间":"09:31",
"可转债溢价率设置":"可转债溢价率设置",
"集思录账户":"1511079",
"集思录密码":"L90",
"多次更新数据设置":"多次更新数据设置类型有定时/循环",
"是否开启多次更新数据":"否",
"多次跟新时间类型":["定时","定时","定时"],
"多次跟新时间":["09:30","10:30","14:30"],
"自定义因子轮动模块":"自定义因子模块,单独独立成一个模型后面更新,因子值是数据",
"可转债支持的默认因子":["价格", "涨跌幅","正股涨跌", "正股PB", "转股价",
"转股价值", "转股溢价率", "双低", "申万", "市场", "上市时间", "持有",
"债券评级", "期权价值", "回售触发价", "强赎触发价", "转债占比", "基金持仓",
"到期时间", "剩余年限", "剩余规模", "成交额", "svolume",
"换手率", "到期税前收益", "融资融券"],
"正股默认因子":["股票现价", "股票最高价", "股票最低价", "股票今开",
"股票成交量", "股票成交额", "股票量比", "股票涨停", "股票跌停",
"股票昨收", "股票总市值", "股票流通市值", "股票动态市盈率", "股票市净率",
"股票换手率", "股票涨跌", "股票涨跌幅", "股票振幅"],
"自定义因子设置":"自定义因子设置",
"是否开启因子上下限轮动":"是",
"因子排序列表":["转股溢价率","剩余规模","价格"],
"排序方式":"倒序",
"可转债存在交易股票池是否追加":"否",
"自定义默认因子字典":{"价格":[115,130],"转股溢价率":[0,60],"剩余规模":[0.5,8],"剩余年限":[1,6]},
"自定义因子函数说明":"自定义因子函数必须有返回值,输入的参数包容stock默认的股票可转债一样",
"是否启动自定义因子":"否",
"自定义因子函数表达形式":{"可转债5日波动率":["get_cov_bond_var(stock,n=5)",[-1,20]]},
"自定义因子函数":{},
"实时涨跌幅上限":8,
"实时涨跌幅下限":-1,
"是否尾盘卖出不符合形态分析":"是",
"尾盘卖出不符合形态分析时间":"14:53",
"趋势交易设置":"趋势交易设置",
"是否趋势交易":"否",
"趋势交易可转债":[],
"资金管理模块说明":"程序默认管理方式有数量/资金",
"资金分配设置":"交易数量设置数量和金额",
"交易模式":"数量",
"固定交易资金":2500,
"持有金额限制":5000,
"固定交易数量":10,
"持有限制":10,
"持股限制":10,
"数据同步设置":"同步手机端操作的数据",
"是否同步数据":"是",
"同步周期":11,
"持股周期设置":"持股轮动设置,可以买入小于持股限制数量不可以卖出",
"是否开启持股周期":"否",
"持股持股周期天数":4,
"持股周期尾盘是否补仓":"是",
"持股周期尾盘更新数据时间":"14:48",
"持股周期是否允许T":"是",
"持股周期尾盘买入时间":"14:53",
"持股周期尾盘卖出时间":"14:50",
"尾盘建仓设置":"尾盘建仓设置",
"尾盘建仓说明":"尾盘建仓更新数据一般早于更新3分钟,尾盘建立仓为做T",
"是否尾盘建仓":"是",
"尾盘减仓更新数据时间":"14:45",
"尾盘买入时间":"14:52",
"尾盘卖出时间":"14:50",
"尾盘建仓涨跌幅上限":5,
"尾盘建仓涨跌幅下限":-1,
"持可转债过夜设置":"持可转债过夜设置",
"是否持可转债过夜":"是",
"不持转债过夜卖出时间":"14:54",
"自定义设置":"自定义设置",
"买卖数据源":"默认",
"买卖数据中源说明":"数据源有默认和自定义",
"可转债黑名单":["123018","110044","128053","128036","127016"],
"交易黑名单":["123018","110044","128053","128036","127016"],
"同花顺下单路径":"C:/同花顺软件/同花顺/xiadan.exe",
"识别软件安装位置":"C:/Program Files/Tesseract-OCR/tesseract",
"通知方式说明":"qq/钉钉",
"通知方式":"qq",
"qq":"1029762153@qq.com",
"发送qq":"1752515969@qq.com",
"qq掩码":"jgyhalecaf",
"钉钉account_token":["ab5d0a609429a78c7a60bea5f8480d86b1b"],
"盘中调仓设置":"盘中调仓设置",
"是否盘中调仓":"否",
"盘中调仓周期":"14:00",
"循环买入设置":"循环买入设置",
"是否循环买入设置":"是",
"循环买入刷新时间":0.05,
"买入时间的涨跌幅上限":5,
"买入时间的涨跌幅下限":-1,
"循环卖出设置":"循环卖出设置",
"是否循环卖出":"是",
"循环卖出刷新时间":0.6,
"当日止盈止损设置":"止盈止损设置",
"是否当日止盈止损":"否",
"一次性卖出":"不是",
"止盈止损卖出数量":10,
"当日止盈止损刷新时间":0.2,
"当日止盈":6,
"当日止损":-3,
"账户止盈止损设置":"账户止盈止损设置",
"是否账户止盈止损":"否",
"账户止盈止损刷新时间":1,
"账户止盈":15,
"账户止损":-3,
"冲高回落模块--超跌反弹":"冲高回落模块--超跌反弹",
"是否冲高回落模块--超跌反弹":"否",
"冲高最低收益":13,
"从高回落幅度":-1,
"超跌幅度":-3,
"超跌反弹收益":2,
"冲高回落模块--超跌反弹刷新时间":0.2,
"是否需要补仓":"是",
"趋势分析参数":"均线分析--日线",
"使用均线":[5,10,20,30,60],
"跌破N日均线卖出":10,
"均线最低分数":75,
"持有均线最低分":25,
"收益率分析模块":"收益率分析模块",
"最近N天":5,
"最近N天最大收益率":15,
"最近N天最小收益率":-1,
"最近N天最大回撤":-8,
"人气排行交易模块":"人气排行交易模块",
"人气排行总数":100,
"买入前N":5,
"交易人气前N":60,
"持有人气排行前N":100,
"正股实时收益分析":"正股实时收益分析",
"正股涨跌幅上限":20,
"正股涨跌幅下限":-20,
"分钟脉冲":"分钟脉冲设置",
"是否分钟脉冲":"是",
"分钟脉冲时间":10,
"分钟脉冲刷新时间":0.05,
"分钟脉冲上涨":2,
"分钟脉冲下跌":-4,
"分钟脉冲是否时间增强":"是",
"分钟脉冲增强小时":"9",
"分钟脉冲增强分钟":"3500",
"分钟脉冲增强倍数":1,
"小时趋势":"小时趋势设置",
"是否小时趋势":"否",
"小时趋势时间":1,
"小时趋势刷新时间":0.06,
"小时趋势上涨":5,
"小时趋势下跌":-3,
"动态脉冲设置":"动态脉冲设置",
"是否动态脉冲":"否",
"动态脉冲设置说明":"利用过去5个交易日的平均振幅",
"动态脉冲天数":5,
"动态脉冲时间":10,
"动态脉冲刷新时间":0.05,
"动态脉冲上涨比例":0.38,
"动态脉冲下跌比例":-0.6,
"zig":"zig设置",
"是否zig":"否",
"zig转向点":0.02,
"zig刷新时间":0.5,
"盘中参考均线交易设置":"盘中参考均线交易设置",
"是否盘中参考均线":"否",
"盘中参考数据周期":5,
"盘中窗口":20,
"盘中均线刷新时间":0.6,
"可转债强制赎回":"可转债强制赎回配置",
"是否剔除强制赎回":"是",
"距离强制赎回天数":10,
"强制赎回状态":"非强制赎回",
"发送通知":"真",
"交易时间配置":"配置如下,更新数据数据时间小于买入的时间",
"动态网格设置":"动态网格设置",
"是否开启动态网格":"否",
"动态网格网格说明":"采用最近N天的振幅均值为计算",
"网格增强设置":"网格增强设置",
"网格单元格小于":0.5,
"增强倍数":3,
"自定义网格刷新时间":0.05,
"网格最近N天":5,
"网格数量":6,
"网格时间大小":200,
"买卖分位数":0.75,
"跌破最后一个网格是否全部卖出":"否",
"网格止损线":-3
}
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/68825
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!