社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

年化476%,回撤6.61,从bt切换到backtrader引擎,附python代码

七年实现财富自由 • 1 年前 • 339 次点击  
原创内容第1036篇,专注AGI+,AI量化投资、个人成长与财富自由。
    def run(self, task: Task, commissions=0.0):        self._prepare_run(task.symbols,task.start_date,task.end_date, commissions)        self.datafeed = DataFeed(task)
        self.cerebro.addstrategy(AlgoStrategy, algo_list=self._get_algos(task))        self.results = self.cerebro.run()
        portfolio_stats = self.results[0].analyzers.getbyname('_PyFolio')        returns, self.positions, self.transactions, _ = portfolio_stats.get_pf_items()
        all_datas = self.cerebro.datas
        # 获取总资产(现金 + 所有持仓市值)        total_value = self.cerebro.broker.getvalue()
        print("所有Datas的最新仓位:")        print(f"总资产: {total_value:.2f} (现金 + 持仓市值)")
        # 计算所有持仓的总市值        total_position_value = 0        positions_info = []
        for data in all_datas:            position = self.cerebro.broker.getposition(data)            if position.size != 0:  # 只显示有持仓的                # 计算当前持仓市值                current_price = data.close[0]                position_value = position.size * current_price                total_position_value += position_value
                positions_info.append({                    'data': data,                    'position': position,                    'position_value': position_value                })
        # 计算现金        cash = self.cerebro.broker.getcash()        print(f"现金: {cash:.2f}")        print(f"持仓总市值: {total_position_value:.2f}")        print(f"总资产验证: {cash + total_position_value:.2f} (应与上面总资产一致)")
        print("\n各持仓仓位比例:")        self.weights = {}        for info in positions_info:            data = info['data']            position = info['position']            position_value = info['position_value']
            # 计算仓位比例            position_ratio = position_value / total_value            self.weights[data._name] = round(position_ratio,3)

            print(f"  {data._name}:")            print(f"    持仓数量: {position.size}")            print(f"    平均成本: {position.price:.2f}")            print(f"    当前价格: {data.close[0 ]:.2f}")            print(f"    持仓市值: {position_value:.2f}")            print(f"    仓位比例: {position_ratio:.4f} ({position_ratio * 100:.2f}%)")
        print(self.weights)        #print(positions, transactions)        returns.index = returns.index.tz_convert(None)        # import empyrical        # ret = empyrical.annual_return(returns)        # print('年化收益',ret)
        returns.name = '策略'

        equity = pd.DataFrame((1 + returns).cumprod())        print('起始日期', equity.index[0])        import ffn        #print('长度:',len(equity))        #equity.calc_stats().display()        datas = [equity]        for bench in [task.benchmark]:            df = CsvDataLoader().read_df([bench],start_date=task.start_date, end_date=task.end_date)            df.set_index('date',inplace=True)            df.index = pd.to_datetime(df.index)            data = df.pivot_table(values='close', index=df.index, columns='symbol')            data.columns = ['benchmark']            datas.append(data)

        all_returns = pd.concat(datas, axis=1).pct_change()        all_returns.dropna(inplace=True)
        print('起始日期',all_returns.index[0])
        self.perf = (1 + all_returns).cumprod().calc_stats()        self.hist_trades =self.results[0].trade_list        self.hist_trades.reverse()        self.signals = self.results[0].signals
        print(self.hist_trades)

        #print(pd.DataFrame(self.results[0].trade_list))        return self.results
开发金融智能体也许是一个不错的想法。 
记得当年还没有大模型,想搞kensho。 
kensho是一个自然语言驱动的问答引擎,在当年是相当的惊艳。 
现在看来,自然语言问答已经是标配。
吾日三省吾身
只要你是“时间的朋友”,大可保持“松弛感”。 
允许一切发生,允许一切如其所是。 
我们是时间的朋友,拉长时间,肯定是好的。 
投资如是,人生如是。  
时间的朋友,布局好自己的“ABCZ”。
 A:工作核心内容是AGI,算“喜欢且擅长”,是热点,趋势,也是未来。做就是了。 
B:做AI量化,与AI相关,与投资相关,与量化相关,与数据相关,与LLM相关,可以做很久,而且离钱很近。————平台化,自动化,智能化。
C:AGI+落地应用。可以带一些理想主义,比如AGI+量化,AGI+生物科技等。多读书,多思考,阅读,写作,编程。 
Z:大类资产,风险平价,恒定市值再平衡,基本是自动化运作,时间的朋友。
每天“不管”一点点,每天就变强一天天。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海

AI量化实验室 星球,已经运行三年多,1900+会员。

aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。


点击 “查看原文”,直接访问策略集合。

扩展  •  历史文章   


年化390%,回撤7%,夏普6.32 | A股量化策略配置

年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)

年化429%,夏普5.51 | 全A股市场回测引擎构建

年化443%,回撤才7%,夏普5.53,3积分可查看策略参数

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/188375