策略排行榜,欢迎来比赛|A股全市场多因子回测框架设计(python代码+数据)
我们第一步增量更新mongo里的日线,然后可以把数据dump到本地的csv,2024年以前的历史数据dump到一个文件目录,2025年的增量单独一个目录,后续增量只需要覆盖这个目录即可,避免每次都全量导数据。——潜意识不干了,开始焦虑。所以,我觉得治本的方式,还是努力向前吧(当然,你得直接从潜意识接受现状,那就当然好),心态上接受不确定性,允许一切发生,一切皆体验。但股票如果把全市场数据都计算一轮
原创内容第817篇,专注量化投资、个人成长与财富自由。
昨天咱们把duckdb加载量化数据做好了:年化73%的策略可以自行查看参数,duckdb按列读取多个文件夹下的csv数据(python代码)


今天开始,我们进入股票领域。

第一步还是同步数据。股票的数据获取相对容易(主要指日线_后复权)。

相对难一点在于,股票比较多,一共有5000多支,而且还需要同步基本面数据。当然这也是它的优点,天然有了更多的维度(因子)。
这里我们大量复用了etf数据同步的代码,只需要改一下表名和类名即可。
我们第一步增量更新mongo里的日线,然后可以把数据dump到本地的csv,2024年以前的历史数据dump到一个文件目录,2025年的增量单独一个目录,后续增量只需要覆盖这个目录即可,避免每次都全量导数据。
然后多个目录里的5000多个csv可以通过duckdb来访问,完美解决这个问题。
from common.databuilder import api_ts from common.databuilder.builder import Basic, Quotes, DataDump class StockBasic(Basic): def __init__(self, tb_name='basic_stock', func=api_ts.get_stocks_df): super(StockBasic, self).__init__(tb_name, func=func) class StockQuotes(Quotes): def __init__(self, tb_basie='basic_stock', tb_quotes='quotes_stock', func=api_ts.get_stock_quotes): super(StockQuotes, self).__init__(tb_basie, tb_quotes, func=func) class StockDataDumpHistory(DataDump): def __init__(self, tb_basic='basic_stock', tb_quotes='quotes_stock'): super(StockDataDumpHistory, self).__init__(tb_basic, tb_quotes, path_quotes=DATA_ETF_QUOTES_history, date='20250101', history=True) class StockDataDumpInc(DataDump): def __init__(self, tb_basic='basic_stock', tb_quotes='quotes_stock'): super(StockDataDumpInc, self).__init__(tb_basic, tb_quotes, path_quotes=DATA_ETF_QUOTES_inc, date='20250101', history=False) if __name__ == '__main__': StockQuotes().build()
与etf不同在于,股票还有很重要的一份数据就是基本面财务报表数据。
另外,股票回测不同于ETF在于,ETF是选指定有限个symbols集合,然后把相应的数据,指标都计算好。
但股票如果把全市场数据都计算一轮,那就太慢了,应该是每个运行周期,先选股,再计算这个池子所需要的择时指标,然后决定仓位分配。
不过这与传统的回测框架的设计是不相容的。
吾日三省吾身
有时候,干脆放空一下自己。
事情是解决不完的。
地球离了谁也没会停止转。
想起一个好兄弟,生前各种理想抱负,恩怨情仇。
可是某一个早上,在一瞬间,离我们远去。
一切尘归尘,土归土,除身边至亲好友,似乎再无人提及。
做好自己的事情,不必思虑太多。
有人说,活在当下,又有人说,人无远虑,必有近忧。
其实长期以来,我自诩是一个着眼长期,一定要有规划的人。
我问大模型,大模型说:
“活在当下”是一种生活态度,强调关注当前的时刻,珍惜眼前的生活,而不是过度担忧未来或沉溺于过去。这种态度有助于减少焦虑和压力,提高生活的幸福感。它鼓励人们全身心地投入到当前的活动中,享受当下的美好。
“人无远虑,必有近忧”则是一种警示,提醒人们如果没有长远的规划和考虑,可能会在短期内遇到困难和问题。这种观点强调了未雨绸缪的重要性,鼓励人们在当前的时刻为未来做好准备。
二者如何相容呢?
人们可以更清晰地认识到自己的需求和目标,从而更有针对性地进行规划。同时接受不确定性:未来总是充满不确定性,过度担忧未来可能会导致焦虑。
简言之,接受现实,并允许不确定性,但积极行动,争取获得理想的生活。
说得挺好的。
成长可以计划,可以努力,但成功有很大的运气的成分。如果把成功定为目标,那么大概率会陷入焦虑,无法自拔。
但活在当下,很多人误解成躺平,得过且过,今朝有酒今朝醉,及时行乐,其实不是的。
很多人陷入中年危机,失业后才发现自己没有一技傍身,找不到价值。
当你目标是太阳,最后没有完全实现目标,只是得到了月亮,那结果也不算太差。
年少时,遇到一些不平事,都是着眼于长期目标,就是好好读书,把书读好,不与人争吵。
有了明确的目标和理念,自然就会专注,心流和活在当下。
而且就会自然忽略掉过程中出现的杂音,不必去理会一些人,一些事。
格局大,视野广,是因为站得高,想得远,明白自己要去哪,那眼前的小事步都不是事。
那为何焦虑,焦虑就是因为知道要去到想,想要什么,但还没有找到路,甚至于认为也许可能根本没有路。————接受多数人终其一生都是普通人——这样的逻辑,平凡可贵之类的。——潜意识不干了,开始焦虑。
因此,焦虑是没有找到路,潜意识在强势地提醒你。
焦虑是潜意识对您的提醒,表明您对目标的渴望和对未来的关注。通过明确目标、制定计划、接受不确定性、专注当下、寻求支持和自我反思,您可以更好地管理焦虑,实现生活的平衡和和谐。
所以,我觉得治本的方式,还是努力向前吧(当然,你得直接从潜意识接受现状,那就当然好),心态上接受不确定性,允许一切发生,一切皆体验。然后努力向上,看看人生可以折腾到什么高度,尽情体验吧。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海
AI量化实验室 星球,已经运行三年多,1500+会员。
aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。

扩展 • 历史文章
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
低风险中等收益(年化15.59%,夏普比1.12)的投资策略,主要投资于小市值股票和基金(python代码+数据)
aitrader_v4.4含本周策略及代码发布,webapp上线。(python代码及数据)
更多推荐



所有评论(0)