xcdk2018 - 小韭菜
1、卖出才计算损益,但拉长时间后影响不大,且理论上差异不太可能累积
2、时点差异,比如9点34分,模拟盘是刚到9点34分就下单,回测是9点34分结束时才以收盘价进行交易
3、价格差异,模拟盘以卖1买入,买1卖出,回测缺失5档信息,都是以历史分钟线收盘价进行交易,即便是时刻完全一致,模拟盘也整体买入更高、卖出更低
4、佣金影响
总的来说
【4】佣金影响,最近11个交易日,3个模拟盘最大差异千1.2【模拟盘1影响千1】
【2】时点差异,最近11个交易日,3个模拟盘最大差异千1.8【模拟盘1影响千0.3】
上述2个 可以用模拟盘冲抵不计算佣金、回测时点前提1分钟来尽量减少其影响
最近11个交易日,模拟盘1 与 回测 尽力排除以上2点影响后,依然有千3.6的差异
鉴于模拟盘1 在28日才赚300元,卖出损益影响不可能大于千2,所以可以认为5档盘口差异才是回测与模拟盘的核心差异,感觉至少千2.6以上
那么接下来,方向或许应该 看看,非积极 交易【买1买,卖1卖】 vs 积极交易【卖1买,买1卖】 效率差异有多少
xcdk2018 - 小韭菜
过去118个交易日,整体来看:
1、分钟级滚动的,并没有比时效性更差的取日线历史的更佳,那盘中维护分钟级,后盘还要下载分钟线,这不都是白费力气吗?唯一的优势,是波动产生收益的效率更高
2、模拟盘3 对 模拟盘2 也是无优势的,不论是总收益,还是波动产生收益的效率,换言之,正股区间表现不佳,并不能得出,转债未来不行的结论
xcdk2018 - 小韭菜
当时手滑,另存了了 成交记录 而没有另存为 委托记录
后面把 成交记录 的列名改为和 委托记录一致,就过了
但是,忘了看时间
成交记录的9点头时间,没有加0补位,这导致其生成的 识别标记 是错误的
结果就是 那9笔买入 从18号,一直持仓到了了现在,
修改了时间错误,单明天10点才能全部卖出,囧大了
xcdk2018 - 小韭菜
xtdata.subscribe_whole_quote 这个订阅还是天坑
一开始以为很集中,所以用了百分位,抽取[0.1,0.9]9个点,如果相同的分位数多,自然就说明多数就更新了,实践结果是,6个相同偶尔出现,5个相同能日常使用,7个相同极端鲜见
周末重构了时间戳的判定,放弃了百分位的方式,把毫秒时间戳整除到秒后,老实用 tick_df['time'].value_counts(normalize=True),看看众数究竟有多高的占比,顺便用上前面的经验,5个中位数相同,怎么看也能占比60%,然后再规定,该比例在未来0.2秒内不再有万1以上的变化【因为股债我订阅了大概790个,不足1千,随便变动一下,就是千1以上,0.1秒看1次,一共看2次,都不动,就视为本轮新结束】
另外,把时间戳对齐的过程,放在一开始,多数对齐才下一步,并舍弃本地时间戳,一切以推送的时间戳众数为准【不再需要盘前同步时间】,本地时间准不准无所谓
运行结果大跌眼镜,哪怕0.1秒看一次,等待众数占比超过60%,可以不成立 ,今天上午最后一笔交易就是 2025-11-17 10:14:05.088756 ,然后死循环了,因为 同一个时间戳的最高占比,它到不了60%,中午才发现的,没办法,紧急修改,给循环加上计数器,每轮循环,降低千1阈值,借此破除死循环
结果也令人失望,占比目前看到最低的是0.42,最高0.57,前者光0.6降下来都要18秒,也许阈值下降应该快点,比如千2?
最后,好消息是可转债似乎开始杀估值了,130以内跌幅多,弱势债跌得更多,坏消息也是这个,我都是130以内,跌幅比等权离谱多了
PS:预期本周转债都会杀估值杀过去
xcdk2018 - 小韭菜
另一种趋近方式 就是只计算 卖出盈亏,鉴于换仓的频繁程度,一个时间节点的持仓通常不会超过3天,通过后者发线,14号的亏损,主要是新买入的部分造成的,等周一收盘验证,除了模拟盘3确实13日买入卖出后亏了300多,模拟盘1、2的13日买入在14日卖出,都没有亏钱,至于收盘看似亏得差不多,其实是新买入导致的亏损
意外之处,是发现了原来冲抵程序逻辑错误,原来冲抵是先跨日,最后处理时间节点不对的,从远期的开始砍,虽然最终能保证 数量、持仓正确,但正如夜路走多了总会遇到鬼,其时间节点并不能保证正确性,问题就出在跨日整体冲抵上,数量多了,不同日期,但同一个时点买同一个债还是存在的,重新做逐日冲抵,慢归慢,但时点不对的,都能立刻处理,不会影响到后面
PS:从卖出冲抵看,模拟盘3 确实挺惨的,13号的买入就亏了,另外模拟盘2就算有抽风的150-160元收益加持,还是没有跑过模拟盘1,别说全程跑不过,最近4天也输,下周再看吧
xcdk2018 - 小韭菜
神奇,模拟盘3的备选 作为模拟盘2的子集,居然亏得比模拟盘2还多
此外,虽然百元溢价略微下降到31.308 但惰性债的弱势溢价,已经涨到了今年第四高的位置,说人话,就是等着大珠小珠落玉盘吧,真下跌,低价的不会少跌的
xcdk2018 - 小韭菜
看了一下,模拟盘2、3 和 回测数据的的差异以2025/11/12为起点,2025/6/9为终点,107个交易日,取range(7,108,10) 这些区间,3个模拟盘,以回测来讲,最大累积收益差值是过去57个交易日 0.052,全程107个交易日差值不过0.0305,坦诚的说,模拟盘1加上实时均线后,并不弱,能赢的次数也最多,44/107,问就是 长期上涨段 与 震荡下跌段 要差一些,攻击、防御都弱一点,9.22至今都拉估值段,其表现是最好,准确说是最近7或11个交易日
比模拟盘1 对比 2、3 的差异还大
本韭菜认为,原因是2点
1、均线搞错了,T-1的数据 没使用,有可能是主因
2、缩容顺序和回测有微小差异,认为是次要原因
均线问题昨晚修正了,至于顺序,算了今天修正得了
跑不跑得赢模拟盘1先放一边,先趋近回测结果再说
模拟盘3其实 就是对短期正股涨幅有要求的模拟盘2,所以107日与模拟盘2差不多
模拟盘1 与 模拟盘2 本质区别 因为时效不一样,分钟滚动,短的观察区间,注定等不起,所以模拟盘2的备选范大幅缩减,这导致在拉估值阶段,它天然更弱,它更依赖正股发力【模拟盘3更显著,备选更少】,但快速杀估值阶段,却不一定会明显受伤,3个模拟盘表现差不多的【8.22-9.01 都跌了0.04以上】
想要模拟盘2、3 超越此刻的模拟盘1 千1,大概是做不到了,除非能选股,更何况拉估值段,债的上涨可以与股无关o(╯□╰)o
xcdk2018 - 小韭菜
比模拟盘1 对比 2、3 的差异还大
本韭菜认为,原因是2点
1、均线搞错了,T-1的数据 没使用,有可能是主因
2、缩容顺序和回测有微小差异,认为是次要原因
均线问题昨晚修正了,至于顺序,算了今天修正得了
跑不跑得赢模拟盘1先放一边,先趋近回测结果再说
xcdk2018 - 小韭菜
至此衍生出2个思路:
A、高估值时,放宽选择范围,让低波动的也能入选,增强下跌的抗性,低估时,则收窄选择范围,来尽量获取高的收益,不过,这个思路难以回测,一来历史数据可能难以获取,且体积可能巨大,二来,回测的过程会异常漫长,容易发生 用战术的勤奋,掩盖战略懒惰的 事情
B、追求效率,原来的思路是,低估,先买着,后续涨不涨看运气,那如果是低估+正在涨呢,是不是效率会更高?回测也会更容易一些,这才是接下来的思考重点
PS:此刻本韭菜,心情矛盾,盼大跌,跌了估值才可能降低,这样能更早的接入实盘;同时,又不希望大跌,模拟盘如此难看,显得自己非常愚蠢
xcdk2018 - 小韭菜
虽然前面几个交易日,并没有表现出这种优势,但我相信,只要次数够多,最终会让概率发挥作用,截至中午收盘,百元溢价来到了30.85,继续等双杀,至于模拟盘收益,模拟盘1亏265、模拟盘2亏187,模拟盘3亏95,倒是符合模拟盘3回撤更小的预期
接下来,模拟盘1重新跑一次参数,毕竟用的强赎预警不一样,直接对比可能不公平,然后再思考一下,怎么构建模拟盘4
xcdk2018 - 小韭菜
2、模拟盘1的 买入程序出问题了,当时只处理了 买入时代码名字带XD的情况,后续对买入预期预期代码名字带XD的处理忘了写回【为何预期会带XD呢?因为 T-1日jsl的名字带XD】,这导致模拟盘1在今日的第一个小时即10:30之前,对111009 盛泰转债 转债的买入都失效了,这也是目前模拟盘持仓只有13万的原因,差了接近2万的市值
3、虽然周末时间浪费了,但本着残值利用的想法,依然把长期不太行的【加入正股涨幅要求】做成了模拟盘3,用hyper-V 装个win7,在4600H这个模拟盘1的物理机上运行,虽然今天净买入是完全无意义的,但是,明天开始,可以和模拟盘2进行对比了,且发现:
a、hyper-V 在下单过程中慢不少,主要是代码、价格、数量 输入到出名字的过程,比物理机慢了0.21秒,物理机下单一笔0.35秒,虚拟机下一单要0.625秒以上,几乎慢一倍
b、因为模拟盘2、3我都没有登入同花顺,这导致它没有迁移性,日后当模拟盘2资产超越模拟盘1时,大概就可以停止模拟盘2了,毕竟4600H 比 G5420省电多了,虚拟机下单虽然慢,但影响不大
4、百元溢价继续上升到30.63,基于傻子、疯子过多,本韭菜对未来充满信心,虽然估值下降的等待期又会拉长
xcdk2018 - 小韭菜
关于涨速,实测结果债涨速基于区间range(30,361,30)都不理想,勉强在300有10万分之二的提升,之所以会如此,恐怕和策略框定了债的近期涨幅有关,也就是说虽然级别有差异,效果依然是差不多的,关于正股,在range(30,421,30)区间内的[300,420]其实都大差不差,最高是360有10万分之8的优势,有效,但极少,本韭菜怀疑是 债的近期涨幅 间接 的筛选了股的跌幅,换言之,真正需...涨速的探索提前结束了,经过昨天12小时回测的结果,最强的那个,也不怎么样,债涨速子不用说,股涨速虽然找到了相对的优势区间,但结果却令人失望
发现:
1、如果想要偏离均线a,前置缩容比较好,不利于回测
2、想要正股涨幅大于a,同样前置更好,不利于回测
3、股债取同样的观察区间,相较原来的不同观察区间表现更弱,也就是统一观察区间的尝试失败了
4、如果非要找一个面子,那么只有一个地方,抽样的43日,对股票涨幅有要求的,能高万0.56,但过去104个交易日,要弱万0.67,当长、短区间截面标准化并求和后,对股票涨幅有要求的能拍第一【赢得一局,找回面子】,但对股票没要求的原来方式,也能排第二啊【虽然赢了,但和输了没两样】
周末两天宣告报废,喜提一个近乎错误的答案,T_T
xcdk2018 - 小韭菜
不过不管怎么折腾,模拟盘2的 潜力在挖掘点恐怕到头了,争取3天内结束吧
xcdk2018 - 小韭菜
最难的是模拟盘2,目前缺乏继续提升收益率的思路了,本想尝试一下 看30分钟涨速,结果不论是正股,还是转债,不管是尝试掐头,还是去尾,收益预期都会弱化,即对这个策略而言,30分钟涨速不靠谱,对提升收益率是负向的,后面测其他的区间,但不乐观,既然30分钟不行,15、60、大概率也不行,因为分布没有体现出正向贡献
xcdk2018 - 小韭菜
就结论来说,实时在均线上,确实能提高收益率【万1】,但是,和预期不同,远离均线的,并没有因潜在回归导致低收益,反倒是只要去掉了离均线最远的10%后,不论怎么找补都是降低的,我想其原因可能在于2点:
1、股债之间相关,但不维持比例,系数时正时负,如果说股票交易的是美好愿望,那债就是对该愿望的发展进行二次交易
2、和策略选取的逻辑相关,本就是为了持有性价比高的,涨跌中性,非持续下跌风险已经计价,而破均线的持续下跌,这已经是趋势而非中性,所以不破均线有提高
扩展解释,正是因为跌破均线后的趋势跌风险,为了避免它,所以最佳的区间,反而是[a,正无穷],至于a取多少合适,就只能算了,而这种方式,目测可以带来大约万1或2的提升,小区间看是万1,和不破均线差不多,拉长后,能到万2,也就超过了在均线上,那么问题来了,a的衰减是多少?a越大,入选的标的也就越少,只能回测看看
PS:今天模拟盘2跑不赢模拟盘1,模拟盘1今日赚708,模拟盘2今日才501,不会昨少亏的250今天就还回去了吧,那还超越个毛线( ╯□╰ )
xcdk2018 - 小韭菜
1、模拟盘1,截至昨天运行25个交易日,日常持仓不超过15w,收益6K,折算4%,平均收益千1.6,但别急着骂,等今天亏损算上,还会更难看,很难不让人不口吐芬芳
2、实际最强的经验预期是千2.8,然后现在模拟盘2用的是预期千2.6的参数,理论上平均能战胜模拟盘千1,结果呢?截至中午,一个亏660,一个亏610,优势是万3,今天可没啥理由来开脱了,虽然早上改了参数收盘才完全起效,但昨天用的参数本就比模拟盘1更优,凭啥不能显著领先?
3、目前的定性的回测极限就是千2.8,如果加上数量不足的影响【预期买2个,结果备选只有1个,盈亏影响都会减半】,还会掉到千2.7,上限也太低了吧,/(ㄒoㄒ)/~~。我正为千3而不懈奋斗,这话说出去不被股民笑死才怪,吾知讲乜当初追求的下限都是千5。所以基于均线的范围研究,又来了。其实原理很简单,原始判断只说均线上下,但都知道,偏离过多会容易回归,那么实际应该有个偏离范围,这样更安全一点,不知道上限能不能提高一点,若还是不能,那就要涉及我最不原意碰的高频指标了【复杂+困难】
最后吐槽一下,我运气真差,7.29砍仓后,暴涨,然后昨天为了减小511880规模,毅然决然赎回了海通的880,这可是2天的,然后今天就溢价,欲哭无泪( ╯□╰ )
xcdk2018 - 小韭菜
1、日线优秀的方式,套在分钟上不一定优秀【观察到的事实】
2、不能用日线理所当然的的推分钟线,因为日线历史是7年,面对区区100交易日的1分钟线,其信息密度也差了13倍以上【推测原因】
而硬推分钟线,则是非常消耗cpu算力的活动,即便按照经验把组合降到1500种【仅定性,且不涉及屏蔽强赎风险、分钟滚动数这2个参数的组合情况】,面对100交易日的2.4万轮判断点,这就有3600万个计算点,对手边只有老cpu的我来说,太杀时间了
2680V4 跑500组合*240根【1天】 370 秒,100天10小时开外【1500组合分成3部分并行】,想要速度,拆成9部分并行,预期3.5-4小时,能跑完 一种 强赎屏蔽+分钟滚动 的组合,但嫌弃费电【150瓦开外吧】,关机
4600H TDP限制38W 跑500组合*240根【1天】 280秒,3线并行,差不多8小时能跑一种组合,功耗40瓦以内,可行,运行模拟盘2的执行端,也要开机
7840H TDP限制38W 跑500组合*240根【1天】 170秒,6直并行,5小时左右,可以跑2种组合,实际功耗50瓦内,更可行,运气好,今天盘后,就能看到结果,还是争取早日搞完,买7945HX吧,核心翻倍+频率再快20%,能快2.4倍
xcdk2018 - 小韭菜
在观察 模拟盘2 懒更新 与 tick 更新差异时,发现一个 买了 盈峰 、另一个选了 绿动,打算观察一下这2个债的差异,不看不知道,一看吓一跳,我去 盈峰 正股均线这么差,怎么入选的?我不是屏蔽了这种正股日线很差的债吗?
回头看代码,发现一个远古的错误,当时为了省事,直接把回测的代码复制到模拟盘了,结果呵呵,站在日线模拟角度,T日开盘前,正股均线怎么样,不引入未来信息,确实只能使用 stock_pre_close ,但是,实盘(模拟盘),能看到的日线记录100%都是历史,日均线当然应该用 stock_close
这尼玛,意思是模拟盘1接近接近24天,都用的错误均线判断,不知道买了多少正股均线垃圾的债,这难道是模拟盘收益如此不济的原因?其实模拟盘1相对还好,最多是 T-1的收盘价 vs T-2的收盘均线 ,模拟盘2 则是,是T-2的收盘价 vs T-2的收盘均线 ,错得更离谱
下午顺带测试,懒更新的 分钟级,如果一切顺利,周一收盘时,模拟盘1、2都能回归正轨,到时候用周一的收盘资产重新对比吧
xcdk2018 - 小韭菜
模拟盘的第22.5个交易日,模拟盘2程序发现的bug找到 频繁获取1m的原因了,存档的变量不是全局变量,所以tick的截面没有保存到下一轮循环调用,最终就是两次获取的差距,当使用全局变量后,在盘中,假设程序不中断,重启,那么保存获取值与更新保存,毫无意义,假设中断,重启了,那么基于tick获取的截面将全部丢失,即便原意付出代价,每次获取截面后,都保存,其也只能对付不超过1分钟的中断,一旦超过了,后面1min还不是丢了【唯一的意义是盘后测试,或中午休盘,因为一开始就是完整的,不存在后续时刻,避免了频繁获取】,从稳健性考虑,是不如定时获取的。
Q1、因为分钟线获取速度慢,快则20秒左右,慢则40秒开外,存在跨分钟的情况,统一取N根,合并后会出现时间错位
A1、多取几个,比如N+5,用当日时间掐头,dropna去尾
Q2、同样由于获取缓慢,或者行情质量差 ,或2者叠加,很可能某个时间节点,它就漏了,原本对分钟线获取,是希望填补全推tick的偶然缺失,结果这个行为本身就容易引入缺失
A2...
xcdk2018 - 小韭菜
Q1、因为分钟线获取速度慢,快则20秒左右,慢则40秒开外,存在跨分钟的情况,统一取N根,合并后会出现时间错位
A1、多取几个,比如N+5,用当日时间掐头,dropna去尾
Q2、同样由于获取缓慢,或者行情质量差 ,或2者叠加,很可能某个时间节点,它就漏了,原本对分钟线获取,是希望填补全推tick的偶然缺失,结果这个行为本身就容易引入缺失
A2、或许还是应该回归懒维护,即基于特定时间点,比如29分、59分 这样的,当观察间距为30分钟时,日内固定取6次就好 [09:59,10:29,10:59,11:29,13:29,13:59,14:29] ,且还能单次取的数量少,如果每次多取5根,则6次也就只取了270根,比单次暴力取245根文明太多,此外,更环保,目前400ms不到就会循环1次,只为不漏截面,结果还是漏了
PS:也有单纯的补丁方式,即截面记录时不要求 中位时间戳 与 本地时间戳 的差值,这是交易才涉及的东西,这样可以显著减低 因为行情质量差【高延迟】导致的 记录问题,毕竟只有交易时,才对价格的有效性敏感,截面大家一起慢,无所谓
xcdk2018 - 小韭菜
另外,发现程序中的一个bug,新增买入用的买1价,当然可能难以成交,修正为卖1,同时为了契合1分钟的记录,对交易时点进行1个修正,一开始是11:30,但不想休市时委托,容错率低【限制了行情时间戳与本地的差距】,于是改为13:00,用了一段时间后没问题,但现在要求时间节点要和1分钟k线记录能对上,所以又改为13:01,因此整个13点的交易时点,全部往后移动了1分钟
至于抽风部分还没看错在哪里,争取明天能搞定大部分吧,估值高没法实盘,等搞完了,就是看模拟盘2的资产,啥时候能超过模拟盘1
xcdk2018 - 小韭菜
过滤标准:14/15+当天小于转股价值小于130,似乎有问题的
遇到14/15+当天小于转股价值小于130+持仓这种情况,没有想到。神马亏也就算了,没想到天23也大亏,/(ㄒoㄒ)/~~
xcdk2018 - 小韭菜
今日装死:因为无法排除尾盘偷袭的可能性【最坑的是尾盘集合竞价偷袭】
明日、后日也装死,因为假设今天失败【公司亏大发了】,后续需要多维持4天,此外,本次转股3.36亿,折算为股票金额是 3.36*1.3=4.368亿,可能要过了今天,本次转股影响才会稀释,目前第一小时正股成交才3.23亿,连转股金额都没覆盖
至于转债,直觉是127以内有博弈价值,高了就算了,因为,130*0.98=127.4,130*0.97=126.1,后者趋近于今日的最低价126.289,理由就是,假设尾盘偷袭成功,不预留3%折价说得过去吗?
对于转债的拉升,本韭菜不太理解,假设放心溢价,那么隐含的信息就是正股尾盘必然不存在偷袭,或正股其实会暴涨,在转股金额尚且没有完全超越的当下,本韭菜认为,不太合理
xcdk2018 - 小韭菜
A、10.22满足,即[09.03,10,22]完成15/30
对策:正股挂10.54等出货
概率:站在公司角度,推进强赎最合适,只需要维护明天的收盘价即可,甚至可以尾盘偷袭
B、10.22失败,这会导致短期强赎消失,即随后每日满足,也需要10.28才能强赎【多付出3天09.03-09.05报废】
对策:如果开盘转债跌得多,可以低吸,缓刑4天,或有溢价
概率:小,错失了这天,公司得维护后续4天股价
C、不仅10.22失败,连后4天中任意一天失败,会再加2天【报废09.09-09.10】,即最快10.31号结束才能强赎,此时转债大概率有再冲130+的机会
对策,当然是低吸转债
xcdk2018 - 小韭菜
今天起,模拟盘2也改为等分时点,但使用截面归一化,融合潜在预期、ILLIQ逆序,取消预期为正、近期涨跌幅、收益分位过滤,因为:
1、做分钟级别回测时发现,加上后面的因子后,备选量会很少
2、ILLIQ 分组测试均值的结果是,它对股是正向,对债负向(最高组比最低组单次均值弱万8),但因子融合后,ILLIQ逆序融合top2 对 ILLIQ正序融合top2 的领先均值,便成了万1.25左右,怀疑潜在预期是主导地位,导致ILLIQ表现弱
目前本韭菜,对模拟盘2寄予厚望,因为:近期95日左右,以分钟回测,模拟盘2应该是碾压模拟盘1的【单次均值接近千1】,但运行首日看不出,何况早上模拟盘2忘了运行程序,开始运行已经是10点5分了,导致需要手工修正记录
同时,早上模拟盘2跑输模拟盘1时,查看原因是 大量买入神马,因为神马再14日公告说,未来6天,5天满足就是满足强赎,让我一度怀疑程序有bug,检查后发现,不算今天,过去30天,神马满足13天,加今天是14天,那凭啥今天就大折价,不服,实盘129.23 买入100张,挂129.87卖出,同时委托全部转股
假设情况1,神马明天满足强赎条件,则正股必须不低于 8.11*1.3 = 10.54,那么挂10.54卖出,100张,兑换1233股,1233*10.54=12995.82,成本千1计算,能回收资金12982.82元,成本这块是 129.47*100 = 12947 ,可以撸 12982.82 - 12947 = 35.82元
假设情况2,反之,全天不触及10.54【其实就是收盘不触及】,那么就等着就好,价格合适可以补点转债,说不定能赚折价的钱,至于要不要补债双持,明天看情况吧
xcdk2018 - 小韭菜
原因是:优势时点存在错位情况,当两个日时点完全不同,资金需求要翻倍,且需要维护历史数据,才能知道近期的优势时点是什么,使用4小时 ILLIQ 后,只需要有T-1日正股分钟数据就好,这个就容易不少
可能存在的问题:目前观察到,Top20% 分位 与 现在的等分时点计算方式没有交集,因为用的是逻辑且,属于定性判断,而非定量判断,至于因子标准化后能否直接相加,加了之后能否增益,尚需回测检查
xcdk2018 - 小韭菜
因为5档快照、历史的成交逐笔对本韭菜来说都太难了,所以简单一点,找它上面重点推荐的,且本地分钟或日线有验证机会的,回测备选,大概如下:
xcdk2018 - 小韭菜
优势时点模拟盘第2.5天,目前亏持仓的0.9%,但因为前面的选择时点有问题,所以不能参考,需要等收盘才能调整好
虽然跌了点,但估值下降实际非常少,大小盘的差距不仅没收敛还越大拉越大,位置不同,攻守之势异也,本韭菜认为这只是开胃前菜,并不是真正的下跌,因此在511880接近溢价,逆回购打发乞丐的情况下,决定收盘前申购reit
xcdk2018 - 小韭菜
优势时点模拟盘第2天,赚400元
跑赢了等权,且今日优势时点更多,但并不能说优势时点就此胜出,原因在于运气,优势时点昨天买的首华更多,导致单票贡献多260元,但它整体来看,对比等分时点并没多出260元以上的收益,可见其他选择无优势,依靠运气赢的,需要继续观察
另外,转债等权虽然跌了,但估值却是上涨的,所以杀估值的愿望落空了,等下周吧
xcdk2018 - 小韭菜
优势时点模拟盘第1.5天,目前赚200元
暂时看起来,优势时点赢了一点,但代价是资金爆炸+一点运气,下午收盘再看吧,另外同花顺不登入,模拟盘也可以保留的,好评
PS:转债估值可能要下降了,亏损当是常态,面对疾风吧,模拟盘
xcdk2018 - 小韭菜
另外,同花顺的貌似还有一个特点,即如果cpu单核性能不足,那么输入代码后,其证券名迟迟不会出来,今天早上本韭菜,为了省电【同花顺感觉有bug,打开交易窗口后,单核容易满载】,把老旧的4600H,最大处理器状态改成99【关闭睿频】,结果代码名字出不来,最终首个时点的买卖交易都嗝屁了【这还是同花顺专属问题,因为模拟的鼠键,旧难免可能输错代码,导致必须验证名字】( ╯□╰ )
最后,发现优势时点还有副作用,对资金的消耗比均分时点要大,因为T与T+1日时点不一样,这导致T+1买入时,T日的时点还没到卖出时间,在完全错位的情况下,资金消耗会是后者的两倍,好夸张(○´・д・)ノ
xcdk2018 - 小韭菜
在回测中过去60多天能提供万2左右的优势【不可连续的方式撑死万1左右,分散更多,下限抬高,上限也被压缩】,这个优势能抵御实际的交易成本吗?
近期表现优秀时点,就我个人感觉而言,它其实是趋近于随机,因为本质就是买入即暴赚,这怎么可能有规律呢?但这种随机性会带来一个显著的副作用,那就是T与T 1日的时点,大概率差异极大,即T日的合法时点,在T 1是非法的,换仓成本必然显著上升,且难以进行冲抵:
a、如果想减少换仓成本,那几乎就是把未来非法时点的code删除,然后记为当前合法时点,但这本质是违背了时间兑现,即当前时点 到 未来非法时点 之间,这个时间t,缺乏对特定代码的持仓【等效于提前卖出了历史持仓】,别忘了,策略本质还期待时间兑现收益呢,折损时间就是折损收益;
b、在没有发生实际委托单情况下,时点的code就凭空消失,盘后无法根据委托进行独立冲抵,得依靠三方记录,进一步增加了复杂性、脆弱性
实际如何,必须实践出真知,毕竟1分钟的数据回测,仅存在于理论中,实际都不可能在1分钟结束的时刻,拿到全部股债的close,就更别提以这个close进行交易。所以再新开一个模拟盘给近期表现好的,使用可连续的,但它有个bug是回测中无法体现,即两次下单的时间间距小于30秒,因为全推行情的质量不可掌控,有可能T时刻质量差,迟迟无法下单,而T+1时刻突然好转,这导致时间拉不开差距
xcdk2018 - 小韭菜
1、如果是等分时间,比如,3分钟1买、4分钟一买、5分钟1买,最终和1分钟一买没啥显著差异,这符合预期
2、但持仓4小时,T+1换仓,的情况下,过去90天确实存在时间效应,即存在最差的入场点,与最佳入场点
3、备选数多时,单次均值会更高,但并不足以机会次数的减少
PS:基于时间分散的买法,恐怕难以从这个时间节点上收益
xcdk2018 - 小韭菜
聚宽是没指望了,它只提供转债的日线历史数据,QMT暂时不想用【不想维护数据、不想盘后更新,更何况海通还是绑网卡mac的】,最后拿起多年不用的pytdx,就目前观察到的,券商不提供退市债的1m数据,即便是行情软件中,输入退市债的代码
xcdk2018 - 小韭菜
迅投QMT 的全推行情 ,居然会在无提示的情况下停止,需要先取消订阅,之后在次订阅,也就是需要重构一下订阅程序,发现交易时间段 很久没更新了,就先取消订阅,再重新订阅
顺便再修改2个地方:
1、鉴于同花顺喜欢 输入代码 不出 代码名的问题,因此 进行一次重试,就今天上午的情况来看,是 首次输入不出名字有3次,二次输入不出名字的0次,用牺牲单笔委托速度,换取委托顺利发送的可能性,代价是一笔委托由原来的1秒内完成,变成最高3.5秒,不过实盘不会遇到这种破事,因为QMT不需要以验证 证券名字 的方式来确保 输入代码正确
2、加入抽风逻辑,简单粗暴,回落大于冲高的10% + 当前涨幅还有 冲高的一半 + 日内冲高大于8% + 目前绝对溢价大于15 + 目前残差偏离5 以上 ,就先卖掉,同花顺模拟的麻烦一下,需要再写一个 时点映射,方便告诉收盘冲抵程序,此刻交易的是未来时间点的持仓,至于QMT依然不需要,因为它有 投资备注,按照投资备注的时点冲抵就好
PS:话说我运气要不要这么差啊,实盘重仓亏就算了,模拟盘重仓也是亏,这啥情况啊/(ㄒoㄒ)/~~
xcdk2018 - 小韭菜
然后,关于冲高回落的思考,样本是存在一定问题的,冲高回落是一种走势描述,如果它的转股溢价并不显著很高,那么可以认为是随正股波动,我想要找的样本,本质是单纯因为提升估值而张,又因为估值回落而跌的,也就是主导因素是估值,而非正股,这个怎么筛选,值得思考一下
xcdk2018 - 小韭菜
冲高 = 今高/昨收
回落 = 今收/金高 即上影线
以冲高为 阈值1,以回落 比例 为阈值2 ,变动各自的百分位,满足冲高的为全集,满足冲高且满足回落的为子集,计算子集/全集 的比例均值,得到下图:
非限定T-1收盘价
可知:
1、回落越多,概率越低,回落一半涨幅概率50-60%,回落70%涨幅,概率要跌15-20%
2、最小冲高 ,从计算上讲是限制了样本总数,从点图来说,它烫平了非冲高前10%的差异,且在概率上抑制了回落,并非直觉的涨得多,摔得狠
3、最后3点,特别是最后一点的明显下坠,也和2说的是同一件事
但如果限定T-1日收盘价不大于130呢
最大的区别在于最小冲高[0.01,0.04] 这个区间 有向上翘的动作,这和直觉中的涨得越多,摔得越惨可以对上,这个翘尾因素在0.05就无法观察到了,可见冲高到了5%后,百分位的影响除了最后一个点,其余都比较小了,如果说有什么收获,那就是涨过5%再观察呗
但这无法实际使用,原因在于,它是后验数据,站在收盘时点的结论,在盘中并非所有债同时达到最高点,因此,基于冲高百分位的做法就嗝屁了,只剩一个绝对冲高幅度
更合理的大概是跟随,即 发现回落——前面有冲高——估值偏离甚多——卖出
但估值偏离很多,则是个看似简单,实际复杂的问题,说它简单,因为观察溢价绝对值就可以发现,违背了溢价降低的大趋势,不说暴涨,也是维持溢价同步涨,说它复杂,是因为,可转债存在一个点,是理论溢价归零点【实际是保持较低的溢价,比如惠城转债,无法想象它现价基础上溢价50%吧】,而去找该点的函数,会在该点后失效,无法类比该点前后的差异,简单的说,定性容易,定量难
xcdk2018 - 小韭菜
下午没有出现因为行情问题而放弃判断的时点,就有3次放宽行情要求,可见行情处理可能也完成了,模拟盘等实盘进行的时候就停了吧,似乎交易的流程暂时已经没有可修改的地方了,除非加入抽风的逻辑判断
xcdk2018 - 小韭菜
倒是持仓中天能的抽风暴涨然后回落,让我思考是否应该加入一个打地鼠逻辑
正方:站在收益最大化的程度应该加,特别是这货冲140时,转股价也没100元,典型的散财童子来了,如果不是程序化交易,我自身会卖出的
反方:破坏原有逻辑,且实现难度大。原有逻辑,本意是通过时点的分散去获得均值收益,假设某一时刻全部卖出,还能提高收益,唯一的可能就是“抽风”了,那么:
A、如何定义抽风?偏离多少算?
B、触发方式是怎样的?原有的逻辑是将特定时点的交易,视为一个独立账户,只需要用时间推动即可,而现在,则变成了纵观全局,即在特定时刻,不仅要计算一下全部持仓的偏离程度,另一面,还需要明确知道,在该时刻,对应策略下是否有持仓,且分别 属于什么时间节点,如果更进一步,不仅是历史操作,还想把前面时点的货一起卖了,那就要监控盘中委托变动了,相当复杂
xcdk2018 - 小韭菜
今天发现的问题,就是 推送的行情池的判断方式,昨天说到用均值,中位数,实际上用的百分位,从0.1取到0.9,间距0.1,所谓才更新,那么中位数和本地时间戳差得就不多,且这些百分位很大部分是相等的,理想情况是都相等
昨天对收盘的观察是相等的6/9,鉴于L1行情是3秒一次,那么要求本地时间戳-中位值 小于2秒,以主观的感受就是,T时刻为以过去的行情时间点,然后站在T+2的时刻观察,希望大部分时间戳是一致的,实际上网络ok的情况下,是可以做到7/9,但也有网络卡顿,抽风的情况,无论如何在T+2也做不到6/9,暂时想到的解决办法是接受次一级的5/9,前60次获取,追求6/9,后面不行了,就勉强5/9,因为如果不接受这个行情,新买入自不必说,连单纯的卖出也做不到,今天因此而废弃的时间节点,估计有8个左右
另外,百元溢价2天抬升1.3元,且接近29,估计明天就能ICU吧,我海通QMT已经入金了,如果模拟盘的交易逻辑顺利,就等估值回落开实盘了,把下单程序单独分开后,真的可以感受到切换不同买入方式的快乐,因为 下单程序只是等待信号,执行下单而已,切换真是太简单了
xcdk2018 - 小韭菜
新发现的bug如下:
1、因为物联网垃圾,可能某段时间延迟爆表,或者干脆断网了,新增一个全推的时间显示,比较本地时间戳与全推行情中,最新的一个时间戳,如果断网了,那么这个时间也会爆表,一定程度上解释了为何买1卖、卖1买,很多时候难以秒成的原因【即所用的行情,其时间比较旧】,但然并卵,这并不能解决实际问题,除非要求中位时间戳 与 本地时间戳 差值若干秒内,问题是这个若干秒现在也确定不了啊
2、将 行情、策略、下单拆分后,发现 下单的驱动逻辑是有问题的,当前的下单前提条件是,策略端可以找出符合标准的个卷,然而,实际上并不是每个时间节点都可以找到个卷的,这导致了没有新进就没有卖出,交易端成了换仓逻辑,和本意妥妥的南辕北辙,大相径庭。
合理下单的逻辑驱动是时间,在某个时刻,等待 本地时间戳 或历史行情节点 与 行情的时间戳 均值或中位数 的差值,差值应该小于某特特定值,这样差不多一半的行情,都在阈值时间内更新,然后通过策略计算,最后进行下单
xcdk2018 - 小韭菜
如果说昨天的的问题是【假买】,即程序发出了买入指令,结果各种原因没买到,比如:上涨了,记录行情的卖1价已经消失;客户端抽风不出转债名,导致放弃下单等。那么今天就要解决【假卖】问题,出现的原因和前面的【假买】很类似,价格下跌导致挂高了,客户端抽风等,但似乎无法像处理假买那样简单粗暴,即以当日委托有成交的买入为基准,先删除数据库的多余记录,然后以基准重构数据即可。
无法简单粗暴的原因在于,目前程序的交易逻辑是 如果T-1时点有旧货,那么就先卖掉,同时删除数据库内的旧时点记录,之后再买入,构建新的记录。那问题就在于,卖出可能不执行、部分执行、执行后无效,买入也同理。
换言之,落点还是在当日委托上,不过是从最初日开始,到最新日,全部当日委托,以其委托时点进行分组,分组内部买卖对冲,盈亏无所谓,核心记录的是该时点的净买入,以这个净买入为基准,写入数据库,从这个角度来讲,记录数据库就2个作用:
1、同一个时间节点内不要重复买入
2、告诉程序,在特定交易时间节点,有没有要先卖出的,是哪些需要卖出
因此,策略内的对冲【特定时间节点,策略说持有A,因为本来记录已经持有了,所以没必要先低价卖了A,再回头高价买回来】也好做了。
记录:分为2类
A、记录该时点存在的历史净买入 用list都行,只记录 代码
B、记录该时点 是否进行了 判断
对于上述2个,甚至都不需要数据库,单个字典就能打包带走,当然,以单个字典放redis也不是不行,该字典由 当日委托的集合生成,顺便把所有当日 买入时点标记给指出来,判断后修改时点标记值即可,整个程序可以再次简化
xcdk2018 - 小韭菜
赞同来自: franckC
主要看2点:
1、交易逻辑有哪些bug
2、策略在逆风情况下能赚不
今日遇到的问题:
Q1:redis 的存储文件放到内存盘+老电脑不定时死机=整个上午记录丢失
A1:用模拟软件导出委托记录,修正数据库的缺失,或错误
Q2:同花顺的模拟盘app和银河实盘的独立类似,都不接受
win32api.SendMessage(hwnd_int, win32con.WM_SETTEXT, len(code_to_send), code_to_send)
A2: 退一步用
win32gui.SendMessage(hwnd_int, win32con.WM_ACTIVATE, win32con.WA_ACTIVE, 0)
for char in code_to_send:
win32gui.PostMessage(hwnd_int, win32con.WM_CHAR, ord(char), 0)
time.sleep(x_float)
time.sleep(y_float)
调整延迟可以尽量提高速度
Q3: 可能是输入太快,导致,模拟软件认为 转载代码不存在 的问题
A3:可能需要加个验证?或其他方式,回头再想吧
Edge
Chrome
Firefox






































































京公网安备 11010802031449号