import pandas as pd
import numpy as np
import glob
import os
import xlsxwriter
# 定义无风险利率和基准年化回报率
risk_free_rate = 0.017
benchmark_return = 0.0917
# 设置文件目录路径
folder_path = '分段表格'
# 获取该目录下所有的Excel文件
excel_files = glob.glob(os.path.join(folder_path, '*.xlsx'))
# 初始化一个空的DataFrame来收集结果
all_data = pd.DataFrame()
# 确保读取了所有文件
if not excel_files:
print("没有找到Excel文件,请检查路径。")
else:
# 逐个读取文件
for file in excel_files:
# 读取数据
df = pd.read_excel(file, parse_dates=['日期'])
# 计算各资产类别的日收益率
returns = df.iloc[:, 1:].pct_change().dropna()
# 计算日望收益率和日方差
expected_daily_returns = returns.mean()
variance_daily_returns = returns.var()
# 计算年期望收益率和年方差
annual_returns = (1 + expected_daily_returns) ** 365 - 1
annual_variance_returns = variance_daily_returns * 365
std_dev_annual_returns = np.sqrt(annual_variance_returns)
# 计算夏普比率
sharpe_ratio = (annual_returns - risk_free_rate) / std_dev_annual_returns
# 计算索提诺比率
negative_returns = returns[returns < 0]
semi_deviation = np.sqrt(negative_returns.var() * 365)
sortino_ratio = (annual_returns - risk_free_rate) / semi_deviation
# 计算信息比率
tracking_error = np.sqrt((returns - benchmark_return) ** 2).mean() * np.sqrt(365)
information_ratio = (annual_returns - benchmark_return) / tracking_error
# 文件名作为DataFrame的标签
file_name = os.path.basename(file).split('.')[0] # 去除路径和文件扩展名
# 为每个资产类别生成一行数据
for asset in df.columns[1:]:
result_df = pd.DataFrame({
'文件标签': f"{file_name}_{asset}",
'日望收益率': [expected_daily_returns[asset]],
'年期望收益率': [annual_returns[asset]],
'日方差': [variance_daily_returns[asset]],
'年方差': [annual_variance_returns[asset]],
'日标准差': [std_dev_annual_returns[asset]],
'年标准差': [std_dev_annual_returns[asset]],
'夏普比率': [sharpe_ratio[asset]],
'索提诺比率': [sortino_ratio[asset]],
'信息比率': [information_ratio[asset]]
})
# 将结果添加到总DataFrame中
all_data = pd.concat([all_data, result_df], axis=0)
# 将所有结果保存到一个Excel文件中
output_path = '汇总分析结果.xlsx'
with pd.ExcelWriter(output_path, engine='xlsxwriter') as writer:
all_data.to_excel(writer, index=False, sheet_name='Analysis Results')
# 获取工作表和工作簿对象
workbook = writer.book
worksheet = writer.sheets['Analysis Results']
# 设置列的格式
format = workbook.add_format({'num_format': '0.###############'})
worksheet.set_column('B:K', None, format)
print("所有文件已分析完毕并汇总到一个Excel文件。")
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
重邮2024年数模国赛校赛阶段相关代码_Mathematical-Modeling-Competition-2024.zip (31个子文件)
Mathematical-Modeling-Competition-2024-main
汇总分析结果.xlsx 16KB
补充第三问数据缺失值.py 2KB
问1.图像可视化(美国).py 3KB
灵敏度分析原值.py 2KB
第一问归一化图(美国).py 2KB
问1.图像可视化(中国).py 3KB
问题三数据.xlsx 176KB
ARIMA.py 2KB
main.py 1KB
问题三数据(处理后).xlsx 355KB
第三问日期表格分段.py 2KB
金价.xlsx 96KB
分段表格.zip 343KB
分段表格
200906_200909_复苏.xlsx 9KB
202102_20220630_衰退.xlsx 34KB
200806_200808_滞胀.xlsx 7KB
200604_200806_过热.xlsx 38KB
201301_201807_衰退.xlsx 86KB
201911_202011_衰退.xlsx 20KB
201108_201301_滞胀.xlsx 26KB
200401_200407_过热.xlsx 17KB
200808_200906_衰退.xlsx 17KB
200909_201108_过热.xlsx 34KB
200407_200604_复苏.xlsx 31KB
201807_201911_滞胀.xlsx 25KB
202011_202102_复苏.xlsx 9KB
金价(处理后).xlsx 153KB
金价缺失值插入.py 2KB
第一问归一化图(中国).py 2KB
.gitignore 1KB
第三问数据计算.py 3KB
共 31 条
- 1
资源评论
好家伙VCC
- 粉丝: 1973
- 资源: 9140
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功