Py学习  »  Python

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

七年实现财富自由 • 5 月前 • 222 次点击  
原创内容第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