年化154%,夏普3.34,最大回撤才15%的全球大类资产配置,金融序列分析,附python代码
·
原创内容第947篇,专注量化投资,AGI和智能体落地、个人成长与财富自由。
看下我们的策略:

后续一段时间,我们会从体系化讲量化投资的角度,来输出代码和文章:
以上两篇文章完成akshare获取日线,清洗完成后保存到csv中备用。
今天我们使用pandas来做金融时间序列分析。
昨天的代码,我们来下载真正的大类资产的ETF:
symbols = ['513100' #纳指100,'513500',#标普500'510300',#沪深300,'159915', #创业板'518880',#黄金'512890',# 红利低波'159985', #豆粕'511880',# 银华日利-货币ETF]for s in symbols:print(f'获取{s}并保存到csv')df = fetch_etf(s) # 获取纳指ETFdf.to_csv(f'../../data/{s}.csv',index=False)

加载数据并绘图:import pandas as pd
import matplotlib.pyplot as pltimport numpy as np# 设置中文字体plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei'] # 设置支持中文的字体plt.rcParams['axes.unicode_minus'] = False # 正确显示负号symbols = ['513100','513500']#,'510500','159915','510880'symbols = {'513100':'纳指100','513500':'标普500','510300':'沪深300','159915':'创业板','518880':'黄金',#'512890':'红利低波',#'159985':'豆粕','511880':'银华日利-货币ETF'}dfs = []for s in symbols.keys():df = pd.read_csv(f'../../data/{s}.csv')df['symbol'] = sdfs.append(df)df_all = pd.concat(dfs,axis=0)df_all

全球大类资产近十年的走势,画出来一目了然,纳指和标普最好,其次是黄金。
计算年化收益:
def calculate_cagr(price_series):"""计算复合年增长率 (CAGR)参数:price_series: 价格序列 (pd.Series),索引为日期返回:cagr: 复合年增长率 (小数形式)"""# 获取第一个和最后一个价格start_price = price_series.iloc[0]end_price = price_series.iloc[-1]# 计算总天数days = (price_series.index[-1] - price_series.index[0]).days# 计算年数years = days / 365.0# 计算CAGRcagr = (end_price / start_price) ** (1 / years) - 1return cagrcagr = calculate_cagr(df_close)cagr
纳指年化收益18.4%,就是说你直接买入并持有,年化就是18.4%,和巴菲特的收益率差不多。

计算夏普比:def calculate_sharpe_ratio(return_series, risk_free_rate=0.0, periods=252):
"""计算年化夏普比率参数:return_series: 日收益率序列 (pd.Series)risk_free_rate: 年化无风险利率 (默认0)periods: 年化因子 (默认252个交易日)返回:sharpe_ratio: 年化夏普比率"""# 计算平均日收益率mean_daily_return = return_series.mean()# 计算日收益率标准差std_daily_return = return_series.std()# 年化收益率annualized_return = (1 + mean_daily_return) ** periods - 1# 年化波动率annualized_volatility = std_daily_return * np.sqrt(periods)# 计算夏普比率sharpe_ratio = (annualized_return - risk_free_rate) / annualized_volatilityreturn sharpe_ratio# 计算夏普比率(假设无风险利率为3%)sharpe = calculate_sharpe_ratio(df_close.pct_change(), risk_free_rate=0.0)sharpe

最大回撤的情况:

扩展 • 历史文章
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
年化收益200%+的策略集 | 实时板块资金热力图 「aitrader 5.0系统代码发布」
机器学习驱动的策略开发通过流程 | 普通人阶层跃迁的可能路径?
年化30.24%,最大回撤19%,综合动量多因子评分策略再升级(python代码+数据)
三秒钟创建一个年化28%,夏普比1.25的策略(python系统已开放源代码下载)
更多推荐



所有评论(0)