今天的代码工作,是多策略运行,及策略的超参数优化。
最近思考意义比较多。
包括AI量化的意义——从自动化,数字化到智能化。
赚钱是意义吗?赚钱是好事,但可以赚钱的事情很多,为何是量化。这个意义的思考,更多是为他人,为社会。
从为他人的角度,为星球的用户赚到钱,减少大家的工作量,减少大家研究资本市场的时间,这倒是个价值点。
engine添加优化器:可以对超参数进行优化:
def optimize(self,
maximize: Union[str, Callable[[pd.Series], float]] = 'SQN',
method: str = 'grid',
max_tries: Optional[Union[int, float]] = None,
constraint: Optional[Callable[[dict], bool]] = None,
return_heatmap: bool = False,
return_optimization: bool = False,
random_state: Optional[int] = None,
**kwargs):
from numpy.random import default_rng
have_constraint = bool(constraint)
class AttrDict(dict):
def __getattr__(self, item):
return self[item]
def _tuple(x): return x if isinstance(x, Sequence) and not isinstance(x, str) else (x,) def _grid_size(): size = int(np.prod([len(_tuple(v)) for v in kwargs.values()])) if size < 10_000 and have_constraint: size = sum(1 for p in product(*(zip(repeat(k), _tuple(v)) for k, v in kwargs.items())) if constraint(AttrDict(p))) return size rand = default_rng(random_state).random grid_frac = (1 if max_tries is None else max_tries if 0 < max_tries <= 1 else max_tries / _grid_size()) param_combos = [dict(params) # back to dict so it pickles for params in (AttrDict(params) for params in product(*(zip(repeat(k), _tuple(v)) for k, v in kwargs.items()))) if constraint(params) # type: ignore and rand() <= grid_frac] if not param_combos: raise ValueError('No admissible parameter combinations to test') print(param_combos)
生成参数组合:
from engine.engine import Engine from examples.strategies.tasks_config import TaskRolling def test_opt(): e = Engine(TaskRolling()) e.optimize(n1=range(10, 110, 10), n2=range(20, 210, 20), n_enter=range(15, 35, 5), n_exit=range(10, 25, 5), constraint=lambda p: p.n_exit < p.n_enter < p.n1 < p.n2, maximize='Equity Final [$]', max_tries=200, random_state=0, return_heatmap=True)
{‘n1’: 50, ‘n2’: 120, ‘n_enter’: 30, ‘n_exit’: 20}, {‘n1’: 50, ‘n2’: 140, ‘n_enter’: 20, ‘n_exit’: 10},
比如星球的同学说,咱们参数里那些 roc(20)>0.08,这个20和0.08怎么来的?——通过网格搜索优化来的。
吾日三省吾身
人生有三大命题:健康(平安)、财富(适度名与利)、幸福(意义,活着为了什么)?
健康是1,没有健康,后面均无意义。
最近重读蔡磊的《相信》和于娟的《此生未完成》。无论你是谁,王侯将相,还是贩夫走卒,在健康平面,众生平等。
没有尊严,卑微的“乞求”活着,无论你有多少财富,抑或学识。
我在商界达到了成功的顶峰。在别人眼里,我的生活是成功的缩影。 然而,除了工作,我没有什么快乐。
最后,财富只是我习惯的生活事实。
此时此刻,躺在病床上,回想起我的一生,我意识到,面对即将来临的死亡,我如此自豪的所有认可和财富,都已黯然失色,变得毫无意义。
在黑暗中,我看着救生机器发出的绿灯,听到机械嗡嗡作响的声音,我能感觉到死神的气息在靠近…。现在我知道了,当我们积累了足够的财富来维持我们的一生时,我们应该去追求其他与财富…无关的事情。
应该是更重要的事情:也许是关系,也许是艺术,也许是年轻时代的梦想
不间断地追求财富只会把一个人变成一个扭曲的存在,就像我一样。。。Steve Jobs
“中庸”之道是有道理的。
人不能既要又要还要。平衡一点,没有健康,啥也不是。好的生活习惯,好的心态,在于长期养成。越早觉醒,越容易获得。
财富,不能没有。
追求财富需要适度,不必钻牛角尖,知足常乐。——郭宇(28岁财务自由的程序员,我想起那些年错过的1个亿,悲伤的故事),张朝阳的状态就挺好的。
人生需要意义,人生的意义是什么呢?——纳瓦尔说,幸福是一种不需要作为的状态,是消除了缺憾感之后的感受。
斯多葛学派看人生:
过去的,用“宿命论”的观点,一切发生的事情,都是它应该的样子。所以——不要悔。
当下的——你做一下“悲剧假设”。你换位思考一下蔡磊和于娟的境遇,无论谁,都会发现自己拥有很多,佛教说”无畏施”,读别人的故事,感受自己的人生。——对于当下,要珍惜,不要心安理得。你在抱怨同事勾心斗角,你应该想想,很多人想工作却求而不得。当你抱怨自己没有一双好鞋时,想想,有些人没有脚。。。
未来的——“二分控制论”。能掌控的,不能掌控的。只关心能掌控的东西。孩子学习成绩,未来什么中考分流,这是你无法掌控的。你能掌控的,多陪伴和引导,养成好的阅读习惯。
未来事情,不必着急,日子一天天过。明天和意外,并不知道哪个会先来。坏事会过去,好事也会过去,人生在世,体验而已。
斯多葛学派,不是躺平,也不是阿Q精神。而是教我们这个“千年一遇之大变局”,高度不确定下,如何寻求内心真正的安宁。
不确定是解决不完的,解决一个,还会再来一个。内心不受其扰,一切都会过去。
当下,才是真实。
过往不恋,未来不迎,当下不杂。
但行好事,莫问前程。
昨天咱们把因子表达式重构了,现在可以完美支持world quant101, qlib的Alpha158的这样的因子库。因子表达式完美重构 | Qlib Alpha158因子库复现 (代码+数据)
今天咱们使用上周的lightGBM树模型,Quantlab3.4代码发布 | lightGBM排序轮动 | 29个行业机器学习合成因子轮动策略(代码+数据+模型下载)对A股29个重要行业,做因子筛选。
top 20的因子如下:
代码在如下位置:把因子重要性打印出来:
import matplotlib.pyplot as plt lgb.plot_importance(lgb_ranker, importance_type="gain", figsize=(8, 6), max_num_features=20,title="LightGBM Feature Importance (Gain)") plt.show() #idx = list(lgb_ranker.feature_importances_) importances = lgb_ranker.feature_importances_ indices = np.argsort(importances)[::-1] for f in range(len(feature_cols)): print("%2d) %-*s %f" % (f + 1, 30, feature_cols[indices[f]], importances[indices[f]])) print(feature_cols)
对于“明天”的收益率的预测。
60日动量竟然很重要,然后是交易额,5天价量相关系数。可以看出来交易额对于短期的收益表达非常重要。
接下来我们给单因子做分析,分的IC/IR值,进行对比,以及因子之间的相关性的分析,进一步论证其有效性。
使用咱们的“单因子分析工具”,对因子进行分析:
IC达到0.04,还可以:
VOLUME2,因子表达式为:shift(volume, 2)/(volume+1e-12):
就是过去2天的交易额与当前交易额的比值,或者说交易额的“动量”。
第三个因子:CORD5(corr(close/shift(close,1), log(volume/shift(volume, 1)+1), 5)),5个收盘价与成交额背离(相关系数)
分层收益没有明显的单调性,这个因子不好。
更多的因子分析,大家可以自己从星球取代码,试试看,找找感觉。
找好的因子,肯定不容易。——这就意味着策略,就是钱呀。
因些更需要科学的工具,咱们星球就是用科研的方式,如何科学的,流水线工厂的方式来挖掘因子。
后续的工作就是找到那些高ic的因子,同时在模型里能有不错的表现的因子集。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103543
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!