aitrader兼容talib,布林带的简单策略,创业板十年年年化15.5%,附代码
原创内容第908篇,专注智能量化投资、个人成长与财富自由。
年轻人,你的职责是平整土地,而非焦虑时光。你做三四月的事,在八九月自有答案。
aitrader核心代码,扩展支持talib的指标:布林带,macd等,这样大家就可以任意扩展talib库里的技术指标了。
name = "创业板-布林带"
symbols = [ '159915.SZ']
start_date = "20100101"
end_date = "20250606"
benchmark = "510300.SH"
select = "SelectAll"
select_buy = ['ta_bbands_up(close,20,2)>0']
buy_at_least_count = 1
select_sell = [ "ta_bbands_down(close,20,2)<0"]
sell_at_least_count = 1
order_by_topK = 1
order_by_dropN = 0
order_by_DESC = true
weight = "WeighEqually"
period = "RunDaily"
[weight_fixed]
并不复杂,只不过由于我们的数据是polars的格式,那么需要先转为dataframe,使用talib计算,而后再转成polars的df即可。
"""
Technical Analysis Operators
"""
import talib
import polars as pl
import pandas as pd
from .utility import DataProxy
def to_pd_series(feature: DataProxy) -> pd.Series:
"""Convert to pandas.Series data structure"""
return feature.df.to_pandas().set_index(["date", "symbol"])["data"]
def to_pl_dataframe(series: pd.Series) -> pl.DataFrame:
"""Convert to polars.DataFrame data structure"""
return pl.from_pandas(series.reset_index().rename(columns={0: "data"}))
def ta_rsi(close: DataProxy, window: int) -> DataProxy:
"""Calculate RSI indicator by contract"""
close_: pd.Series = to_pd_series(close)
result: pd.Series = talib.RSI(close_, timeperiod=window) # type: ignore
df: pl.DataFrame = to_pl_dataframe(result)
return DataProxy(df)
def ta_atr(high: DataProxy, low: DataProxy, close: DataProxy, window: int) -> DataProxy:
"""Calculate ATR indicator by contract"""
high_: pd.Series = to_pd_series(high)
low_: pd.Series = to_pd_series(low)
close_: pd.Series = to_pd_series(close)
result: pd.Series = talib.ATR(high_, low_, close_, timeperiod=window) # type: ignore
df: pl.DataFrame = to_pl_dataframe(result)
return DataProxy(df)
def ta_bbands_up(close: DataProxy, window: int = 20, nbdev: float = 2) -> DataProxy:
"""Calculate Bollinger Bands indicator"""
close_: pd.Series = to_pd_series(close)
# 计算布林带(返回三个序列:upper, middle, lower)
upper, middle, lower = talib.BBANDS(
close_,
timeperiod=window,
nbdevup=nbdev, # 上轨标准差倍数
nbdevdn=nbdev, # 下轨标准差倍数
matype=0 # 0=SMA(简单移动平均)
)
# 创建包含三列的DataFrame
result_df = to_pl_dataframe(upper)
return DataProxy(result_df)
def ta_bbands_down(close: DataProxy, window: int = 20, nbdev: float = 2) -> DataProxy:
"""Calculate Bollinger Bands indicator"""
close_: pd.Series = to_pd_series(close)
# 计算布林带(返回三个序列:upper, middle, lower)
upper, middle, lower = talib.BBANDS(
close_,
timeperiod=window,
nbdevup=nbdev, # 上轨标准差倍数
nbdevdn=nbdev, # 下轨标准差倍数
matype=0 # 0=SMA(简单移动平均)
)
# 创建包含三列的DataFrame
result_df = to_pl_dataframe(lower)
return DataProxy(result_df)
代码及策略下载:AI量化实验室——2025量化投资的星辰大海
策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码
吾日三省吾身
01
之前咱们讨论过“活在当下“还是”长期主义“之间如何平衡。
其实都要有。
我自己总结的一句话:面向未来,构建系统,然后活在当下。
记得7-8年前,在一个大学校园。闲来无事,听李笑来的《财富自由之路》,由于时间很多,反复听。
突然被一个点打动,现在讲起来,似乎无比简单。——就是投资这件事,与本金体量无关,你不必要等到本金超过50万,还是100万才可以投资,投资能力的体现是收益率。你投入1万块,收益率是10%,还是投资100万,仍然看你的收益率来衡量能力。
很多同学可以觉得,这不是常识嘛?
其实,道理都懂,但我说的触动,是指认知改变,行动就来了。
以前,总觉得本金太小的话,比如10万块,就算年化10-15%,一年也就1-1.5万,没啥意义啊,为啥要花这个心思,还有风险。
但当你把收益率=投资能力的时候,这个意义就不一样了。
就是说,做投资不只是所谓的,眼前的收益,而是这种能力的提升,而且你现在就可以,且应该去做。
想明白这一点,就正式开始自己在投资上的摸爬滚打,从债券,混合债,可转债,股票,指数等,慢慢建立起自己的投资认知体系和投资系统。
所以,到底是”知易行难,还是知难行易“,都不容易。但知道了就是”醍醐灌顶“,然后就看执行力了。
另外一个点,也来自李笑来,普通人应该且必须开始写作。所思所想,写出来,对自己,对别人都会有价值。
然后就有了这个公众号,然后加上亚当斯的《人生样样稀松照样赢》里的”目标到系统“,以及《持续行动》里的”N阶行动计划“。我这个公众号做到日更900多天了,我相信还会持续下去,已经变成了一个习惯。
春节,休长假,这件事情都会抽时间去做,就是一种习惯。
1000天,做一件事,足够建立起壁垒和竞争优势。
这1000天的写作了,有了”AI量化实验室“的星球,网站(ailabx.com),还有AGI星球,1700+会员,感谢所有同学的认可与支持!
02
“可以表达愤怒,而不是愤怒地表达”。
愤怒的表达,不管不顾,那就被情绪控制,只是宣泄,而后果可能不达预期。
很多事情,情绪一过,或者事情一过,其实没有多大的事情。
而情绪之上,以及在情绪上所做的事情,把事情及结果给放大了。
一个事情不对,需要修正,当然需要“表达”,让对方知道,我们的目的是达成结果。对方如果无所谓,或者就是不修正,那你愤怒地表达也没有用,甚至适得其反,对方原本无所谓,现在反而抬上杠了。
正确地表达想法,“进可攻,退可守”。
谈判的逻辑,关键还在于你的底牌。
最大的底牌就是你的实力。
实力允许,你一个眼神,就可以解决一件事情。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海
AI量化实验室 星球,已经运行三年多,1700+会员。
aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。
扩展 • 历史文章
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
年化收益200%+的策略集 | 实时板块资金热力图 「aitrader 5.0系统代码发布」
机器学习驱动的策略开发通过流程 | 普通人阶层跃迁的可能路径?
年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)
三秒钟创建一个年化28%,夏普比1.25的策略(python系统已开放源代码下载)
会员专属策略可以直接下载了,多个十年年化30+%策略集|polars重构因子引擎(代码+数据下载)
6年年化收益46%,最大回撤率为16%的策略(附python代码)