Files
NewQuant/futures_trading_strategies/rb/KalmanStrategy/KalmanStrategy.ipynb

596 lines
287 KiB
Plaintext
Raw Normal View History

2025-11-07 16:37:16 +08:00
{
"cells": [
{
"cell_type": "code",
"id": "522f09ca7b3fe929",
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-28T03:27:06.461800Z",
"start_time": "2025-10-28T03:27:05.816705Z"
}
},
"source": [
"from datetime import datetime\n",
"\n",
"import sys\n",
"\n",
"if '/mnt/d/PyProject/NewQuant/' not in sys.path:\n",
" sys.path.append('/mnt/d/PyProject/NewQuant/')\n",
" \n",
"from src.data_processing import load_raw_data\n",
"%load_ext autoreload\n",
"%autoreload 2\n",
"\n"
],
"outputs": [],
"execution_count": 1
},
{
"cell_type": "code",
"id": "c00ccfeec592844c",
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-28T03:27:06.834061Z",
"start_time": "2025-10-28T03:27:06.465806Z"
}
},
"source": [
"from turtle import down\n",
"from src.analysis.result_analyzer import ResultAnalyzer\n",
"# 导入所有必要的模块\n",
"from src.data_manager import DataManager\n",
"from src.backtest_engine import BacktestEngine\n",
"from src.indicators.indicator_list import INDICATOR_LIST\n",
"from src.indicators.indicators import *\n",
"\n",
"# 导入您自己的 SMC 策略\n",
"from futures_trading_strategies.rb.KalmanStrategy.KalmanStrategy2 import DualModeKalmanStrategy\n",
"# from src.strategies.KalmanStrategy.KalmanStrategy2 import DualModeKalmanStrategy\n",
"\n",
"# --- 配置参数 ---\n",
"# 获取当前脚本所在目录,假设数据文件在项目根目录下的 data 文件夹内\n",
"data_file_path = 'D:/PyProject/NewQuant/data/data/KQ_m@SHFE_rb/KQ_m@SHFE_rb_min15.csv'\n"
],
"outputs": [],
"execution_count": 2
},
{
"cell_type": "code",
"id": "7599fa7cd2cb3d45",
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-28T03:27:06.855516Z",
"start_time": "2025-10-28T03:27:06.839066Z"
}
},
"source": [
"\n",
"initial_capital = 100000.0\n",
"slippage_rate = 0.000 # 假设每笔交易0.1%的滑点\n",
"commission_rate = 0.0001 # 假设每笔交易0.02%的佣金\n",
"\n",
"global_config = {\n",
" 'symbol': 'KQ_m@SHFE_rb', # 确保与数据文件中的 symbol 匹配\n",
"}\n",
"\n",
"# 回测时间范围\n",
"start_time = datetime(2021, 1, 1)\n",
"end_time = datetime(2025, 1, 1)\n",
"\n",
"# start_time = datetime(2024, 6, 1)\n",
"# end_time = datetime(2025, 10, 1)\n",
"\n",
"\n",
"indicators = INDICATOR_LIST\n",
"indicators = []\n",
"\n",
"# 确保 DataManager 能够重置以进行多次回测\n",
"# data_manager.reset() # 首次运行不需要重置"
],
"outputs": [],
"execution_count": 3
},
{
"cell_type": "code",
"id": "f903fd2761d446cd",
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-28T03:28:06.029739Z",
"start_time": "2025-10-28T03:27:06.861519Z"
}
},
"source": [
"from src.indicators.indicators import ROC_MA\n",
"\n",
"# --- 1. 初始化数据管理器 ---\n",
"print(\"初始化数据管理器...\")\n",
"data_manager = DataManager(file_path=data_file_path, symbol=global_config['symbol'], start_time=start_time,\n",
" end_time=end_time)\n",
"\n",
"strategy_parameters = {\n",
" 'main_symbol': 'rb', # <-- 替换为你的交易品种代码,例如 'GC=F' (黄金期货), 'ZC=F' (玉米期货)\n",
" 'trade_volume': 1,\n",
" 'order_direction': ['SELL', 'BUY'],\n",
" 'indicators': [PriceRangeToVolatilityRatio(7, 21, 4, 5), PriceRangeToVolatilityRatio(7, 21, 4, 5)],\n",
" 'enable_log': False\n",
"}\n",
"\n",
"\n",
"\n",
"# --- 2. 初始化回测引擎并运行 ---\n",
"print(\"\\n初始化回测引擎...\")\n",
"engine = BacktestEngine(\n",
" data_manager=data_manager,\n",
" strategy_class=DualModeKalmanStrategy, # <--- 更改为您的 SMC 策略类\n",
" # current_segment_symbol 参数已从 SMCPureH1LongStrategy 中移除,不需要设置\n",
" strategy_params=strategy_parameters,\n",
" initial_capital=initial_capital,\n",
" slippage_rate=slippage_rate,\n",
" commission_rate=commission_rate,\n",
" roll_over_mode=True,\n",
" start_time=start_time,\n",
" end_time=end_time,\n",
" indicators=indicators # 如果您的 SMC 策略不使用这些指标,也可以考虑移除\n",
")\n",
"\n",
"print(\"\\n开始运行回测...\")\n",
"engine.run_backtest()\n",
"print(\"\\n回测运行完毕。\")\n",
"\n",
"# --- 3. 获取回测结果 ---\n",
"results = engine.get_backtest_results()\n",
"portfolio_snapshots = results[\"portfolio_snapshots\"]\n",
"trade_history = results[\"trade_history\"]\n",
"initial_capital_result = results[\"initial_capital\"]\n",
"bars = results[\"all_bars\"]\n"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"初始化数据管理器...\n",
"数据加载成功: D:/PyProject/NewQuant/data/data/KQ_m@SHFE_rb/KQ_m@SHFE_rb_min15.csv\n",
"数据范围从 2020-12-31 14:45:00 到 2025-10-27 14:45:00\n",
"总计 26532 条记录。\n",
"\n",
"初始化回测引擎...\n",
"模拟器初始化:初始资金=100000.00, 滑点率=0.0, 佣金率=0.0001\n",
"内存仓储已初始化管理ID: 'futures_trading_strategies.rb.KalmanStrategy.KalmanStrategy2.DualModeKalmanStrategy_c7bd93715d42fbef1ec746ee2635a5d3'\n",
"\n",
"--- 回测引擎初始化完成 ---\n",
" 策略: DualModeKalmanStrategy\n",
" 初始资金: 100000.00\n",
" 换月模式: 启用\n",
"\n",
"开始运行回测...\n",
"\n",
"--- 回测开始 ---\n",
"DualModeKalmanStrategy 策略初始化回调被调用。\n",
"开始将 DataFrame 转换为 Bar 对象流...\n",
"Bar 对象流生成完毕。\n",
"\n",
"--- 回测结束,检查并平仓所有剩余持仓 ---\n",
"--- 回测结束 ---\n",
"总计处理了 22071 根K线。\n",
"总计发生了 240 笔交易。\n",
"最终总净值: 101599.38\n",
"总收益率: 1.60%\n",
"\n",
"回测运行完毕。\n"
]
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-10-28T03:28:06.419242Z",
"start_time": "2025-10-28T03:28:06.039644Z"
}
},
"cell_type": "code",
"source": [
"\n",
"# --- 4. 结果分析与可视化 ---\n",
"if portfolio_snapshots:\n",
" analyzer = ResultAnalyzer(portfolio_snapshots, trade_history, bars, initial_capital_result, INDICATOR_LIST)\n",
"\n",
" analyzer.generate_report()\n",
" analyzer.plot_performance()\n",
" metrics = analyzer.calculate_all_metrics()\n",
" print(metrics)\n",
"\n",
" analyzer.analyze_indicators(profit_offset=1)\n",
"else:\n",
" print(\"\\n没有生成投资组合快照无法进行结果分析。\")"
],
"id": "7b191529e909c4d3",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"--- 结果分析器初始化完成 ---\n",
"\n",
"--- 交易明细 ---\n",
" 2021-01-22 13:45:00 | SELL | SHFE.rb2105 | Vol: 1 | Price: 4290.00 | Comm: 0.43\n",
" 2021-01-25 10:45:00 | CLOSE_SHORT | SHFE.rb2105 | Vol: 1 | Price: 4332.00 | Comm: 0.43 | PnL: -42.00\n",
" 2021-01-27 09:00:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4367.00 | Comm: 0.44\n",
" 2021-01-27 22:45:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 4336.00 | Comm: 0.43 | PnL: -31.00\n",
" 2021-02-02 14:30:00 | SELL | SHFE.rb2105 | Vol: 1 | Price: 4138.00 | Comm: 0.41\n",
" 2021-02-03 09:15:00 | CLOSE_SHORT | SHFE.rb2105 | Vol: 1 | Price: 4195.00 | Comm: 0.42 | PnL: -57.00\n",
" 2021-02-08 09:15:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4319.00 | Comm: 0.43\n",
" 2021-02-19 10:45:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 4503.00 | Comm: 0.45 | PnL: 184.00\n",
" 2021-03-02 22:30:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4846.00 | Comm: 0.48\n",
" 2021-03-04 21:15:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 4778.00 | Comm: 0.48 | PnL: -68.00\n",
" 2021-03-04 22:45:00 | SELL | SHFE.rb2105 | Vol: 1 | Price: 4690.00 | Comm: 0.47\n",
" 2021-03-08 09:00:00 | CLOSE_SHORT | SHFE.rb2105 | Vol: 1 | Price: 4815.00 | Comm: 0.48 | PnL: -125.00\n",
" 2021-03-08 09:15:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4825.00 | Comm: 0.48\n",
" 2021-03-08 14:30:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 4770.00 | Comm: 0.48 | PnL: -55.00\n",
" 2021-03-09 14:15:00 | SELL | SHFE.rb2105 | Vol: 1 | Price: 4658.00 | Comm: 0.47\n",
" 2021-03-11 13:45:00 | CLOSE_SHORT | SHFE.rb2105 | Vol: 1 | Price: 4636.00 | Comm: 0.46 | PnL: 22.00\n",
" 2021-03-11 22:15:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4773.00 | Comm: 0.48\n",
" 2021-03-12 13:45:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 4707.00 | Comm: 0.47 | PnL: -66.00\n",
" 2021-03-16 13:45:00 | SELL | SHFE.rb2105 | Vol: 1 | Price: 4667.00 | Comm: 0.47\n",
" 2021-03-16 14:15:00 | CLOSE_SHORT | SHFE.rb2105 | Vol: 1 | Price: 4728.00 | Comm: 0.47 | PnL: -61.00\n",
" 2021-03-24 13:30:00 | BUY | SHFE.rb2105 | Vol: 1 | Price: 4774.00 | Comm: 0.48\n",
" 2021-04-02 14:45:00 | CLOSE_LONG | SHFE.rb2105 | Vol: 1 | Price: 5118.00 | Comm: 0.51 | PnL: 344.00\n",
" 2021-04-15 22:45:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5190.00 | Comm: 0.52\n",
" 2021-04-16 09:00:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5137.00 | Comm: 0.51 | PnL: -53.00\n",
" 2021-04-23 21:15:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5324.00 | Comm: 0.53\n",
" 2021-04-27 21:45:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5343.00 | Comm: 0.53 | PnL: 19.00\n",
" 2021-05-13 13:30:00 | SELL | SHFE.rb2110 | Vol: 1 | Price: 5935.00 | Comm: 0.59\n",
" 2021-05-27 21:30:00 | CLOSE_SHORT | SHFE.rb2110 | Vol: 1 | Price: 4915.00 | Comm: 0.49 | PnL: 1020.00\n",
" 2021-05-31 09:15:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5123.00 | Comm: 0.51\n",
" 2021-05-31 10:45:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5036.00 | Comm: 0.50 | PnL: -87.00\n",
" 2021-05-31 21:15:00 | SELL | SHFE.rb2110 | Vol: 1 | Price: 4881.00 | Comm: 0.49\n",
" 2021-05-31 22:30:00 | CLOSE_SHORT | SHFE.rb2110 | Vol: 1 | Price: 4951.00 | Comm: 0.50 | PnL: -70.00\n",
" 2021-06-21 21:30:00 | SELL | SHFE.rb2110 | Vol: 1 | Price: 4837.00 | Comm: 0.48\n",
" 2021-06-22 14:15:00 | CLOSE_SHORT | SHFE.rb2110 | Vol: 1 | Price: 4907.00 | Comm: 0.49 | PnL: -70.00\n",
" 2021-06-23 21:15:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5010.00 | Comm: 0.50\n",
" 2021-06-24 11:00:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 4941.00 | Comm: 0.49 | PnL: -69.00\n",
" 2021-07-07 14:00:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5421.00 | Comm: 0.54\n",
" 2021-07-08 10:00:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5373.00 | Comm: 0.54 | PnL: -48.00\n",
" 2021-07-14 14:45:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5572.00 | Comm: 0.56\n",
" 2021-07-14 21:30:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5519.00 | Comm: 0.55 | PnL: -53.00\n",
" 2021-07-26 09:15:00 | BUY | SHFE.rb2110 | Vol: 1 | Price: 5748.00 | Comm: 0.57\n",
" 2021-07-26 13:45:00 | CLOSE_LONG | SHFE.rb2110 | Vol: 1 | Price: 5688.00 | Comm: 0.57 | PnL: -60.00\n",
" 2021-07-27 14:45:00 | SELL | SHFE.rb2110 | Vol: 1 | Price: 5583.00 | Comm: 0.56\n",
" 2021-07-27 22:15:00 | CLOSE_SHORT | SHFE.rb2110 | Vol: 1 | Price: 5618.00 | Comm: 0.56 | PnL: -35.00\n",
" 2021-08-02 09:00:00 | SELL | SHFE.rb2110 | Vol: 1 | Price: 5460.00 | Comm: 0.55\n",
" 2021-08-09 14:45:00 | CLOSE_SHORT | SHFE.rb2110 | Vol: 1 | Price: 5332.00 | Comm: 0.53 | PnL: 128.00\n",
" 2021-08-16 10:30:00 | SELL | SHFE.rb2201 | Vol: 1 | Price: 5373.00 | Comm: 0.54\n",
" 2021-08-30 09:30:00 | CLOSE_SHORT | SHFE.rb2201 | Vol: 1 | Price: 5343.00 | Comm: 0.53 | PnL: 30.00\n",
" 2021-09-09 14:15:00 | BUY | SHFE.rb2201 | Vol: 1 | Price: 5674.00 | Comm: 0.57\n",
" 2021-09-10 14:00:00 | CLOSE_LONG | SHFE.rb2201 | Vol: 1 | Price: 5628.00 | Comm: 0.56 | PnL: -46.00\n",
" 2021-09-14 21:30:00 | SELL | SHFE.rb2201 | Vol: 1 | Price: 5478.00 | Comm: 0.55\n",
" 2021-09-15 11:00:00 | CLOSE_SHORT | SHFE.rb2201 | Vol: 1 | Price: 5556.00 | Comm: 0.56 | PnL: -78.00\n",
" 2021-09-22 21:15:00 | BUY | SHFE.rb2201 | Vol: 1 | Price: 5667.00 | Comm: 0.57\n",
" 2021-09-23 11:15:00 | CLOSE_LONG | SHFE.rb2201 | Vol: 1 | Price: 5583.00 | Comm: 0.56 | PnL: -84.00\n",
" 2021-09-30 14:00:00 | BUY | SHFE.rb2201 | Vol: 1 | Price: 5729.00 | Comm: 0.57\n",
" 2021-09-30 14:30:00 | CLOSE_LONG | SHFE.rb2201 | Vol: 1 | Price: 5703.00 | Comm: 0.57 | PnL: -26.00\n",
" 2021-10-08 09:15:00 | BUY | SHFE.rb2201 | Vol: 1 | Price: 5800.00 | Comm: 0.58\n",
" 2021-10-08 10:00:00 | CLOSE_LONG | SHFE.rb2201 | Vol: 1 | Price: 5732.00 | Comm: 0.57 | PnL: -68.00\n",
" 2021-10-12 13:30:00 | SELL | SHFE.rb2201 | Vol: 1 | Price: 5616.00 | Comm: 0.56\n",
" 2021-10-28 14:15:00 | CLOSE_SHORT | SHFE.rb2201 | Vol: 1 | Price: 4733.00 | Comm: 0.47 | PnL: 883.00\n",
" 2021-11-12 21:15:00 | SELL | SHFE.rb2201 | Vol: 1 | Price: 4187.00 | Comm: 0.42\n",
" 2021-11-16 11:15:00 | CLOSE_SHORT | SHFE.rb2201 | Vol: 1 | Price: 4268.00 | Comm: 0.43 | PnL: -81.00\n",
" 2021-11-19 14:30:00 | BUY | SHFE.rb2201 | Vol: 1 | Price: 4294.00 | Comm: 0.43\n",
" 2021-11-24 14:45:00 | CLOSE_LONG | SHFE.rb2201 | Vol: 1 | Price: 4502.00 | Comm: 0.45 | PnL: 208.00\n",
" 2021-12-02 13:45:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 4359.00 | Comm: 0.44\n",
" 2021-12-02 21:00:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4288.00 | Comm: 0.43 | PnL: -71.00\n",
" 2021-12-20 14:30:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4482.00 | Comm: 0.45\n",
" 2021-12-23 21:30:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4528.00 | Comm: 0.45 | PnL: -46.00\n",
" 2021-12-23 21:45:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 4541.00 | Comm: 0.45\n",
" 2021-12-24 10:45:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4502.00 | Comm: 0.45 | PnL: -39.00\n",
" 2021-12-27 09:00:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4421.00 | Comm: 0.44\n",
" 2022-01-05 21:15:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4456.00 | Comm: 0.45 | PnL: -35.00\n",
" 2022-01-11 14:45:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 4576.00 | Comm: 0.46\n",
" 2022-01-13 21:15:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4628.00 | Comm: 0.46 | PnL: 52.00\n",
" 2022-01-17 10:45:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4528.00 | Comm: 0.45\n",
" 2022-01-18 09:30:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4570.00 | Comm: 0.46 | PnL: -42.00\n",
" 2022-01-19 13:30:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 4678.00 | Comm: 0.47\n",
" 2022-01-19 13:45:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4673.00 | Comm: 0.47 | PnL: -5.00\n",
" 2022-02-10 21:15:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 5024.00 | Comm: 0.50\n",
" 2022-02-11 09:15:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4976.00 | Comm: 0.50 | PnL: -48.00\n",
" 2022-02-14 10:30:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4904.00 | Comm: 0.49\n",
" 2022-02-14 10:45:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4903.00 | Comm: 0.49 | PnL: 1.00\n",
" 2022-02-21 21:15:00 | BUY | SHFE.rb2205 | Vol: 1 | Price: 4869.00 | Comm: 0.49\n",
" 2022-02-22 11:15:00 | CLOSE_LONG | SHFE.rb2205 | Vol: 1 | Price: 4819.00 | Comm: 0.48 | PnL: -50.00\n",
" 2022-02-22 14:45:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4745.00 | Comm: 0.47\n",
" 2022-02-23 11:00:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4788.00 | Comm: 0.48 | PnL: -43.00\n",
" 2022-02-24 11:00:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4665.00 | Comm: 0.47\n",
" 2022-02-28 21:15:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4727.00 | Comm: 0.47 | PnL: -62.00\n",
" 2022-03-09 21:15:00 | SELL | SHFE.rb2205 | Vol: 1 | Price: 4842.00 | Comm: 0.48\n",
" 2022-03-10 13:30:00 | CLOSE_SHORT | SHFE.rb2205 | Vol: 1 | Price: 4936.00 | Comm: 0.49 | PnL: -94.00\n",
" 2022-04-08 11:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4957.00 | Comm: 0.50\n",
" 2022-04-08 13:45:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 5002.00 | Comm: 0.50 | PnL: -45.00\n",
" 2022-04-11 09:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4895.00 | Comm: 0.49\n",
" 2022-04-12 09:15:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4956.00 | Comm: 0.50 | PnL: -61.00\n",
" 2022-04-26 21:00:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4888.00 | Comm: 0.49\n",
" 2022-04-26 21:15:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4897.00 | Comm: 0.49 | PnL: -9.00\n",
" 2022-05-06 14:30:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4765.00 | Comm: 0.48\n",
" 2022-05-20 09:30:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4644.00 | Comm: 0.46 | PnL: 121.00\n",
" 2022-05-24 21:00:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4469.00 | Comm: 0.45\n",
" 2022-05-25 09:15:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4516.00 | Comm: 0.45 | PnL: -47.00\n",
" 2022-06-13 09:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4683.00 | Comm: 0.47\n",
" 2022-06-13 22:00:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4724.00 | Comm: 0.47 | PnL: -41.00\n",
" 2022-06-16 21:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4457.00 | Comm: 0.45\n",
" 2022-06-23 13:45:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4217.00 | Comm: 0.42 | PnL: 240.00\n",
" 2022-06-23 14:15:00 | BUY | SHFE.rb2210 | Vol: 1 | Price: 4245.00 | Comm: 0.42\n",
" 2022-06-24 13:30:00 | CLOSE_LONG | SHFE.rb2210 | Vol: 1 | Price: 4199.00 | Comm: 0.42 | PnL: -46.00\n",
" 2022-06-30 21:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4301.00 | Comm: 0.43\n",
" 2022-07-01 10:00:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4356.00 | Comm: 0.44 | PnL: -55.00\n",
" 2022-07-14 21:15:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 3761.00 | Comm: 0.38\n",
" 2022-07-18 21:30:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 3823.00 | Comm: 0.38 | PnL: -62.00\n",
" 2022-07-28 09:45:00 | BUY | SHFE.rb2210 | Vol: 1 | Price: 3992.00 | Comm: 0.40\n",
" 2022-08-15 14:15:00 | CLOSE_LONG | SHFE.rb2210 | Vol: 1 | Price: 4104.00 | Comm: 0.41 | PnL: 112.00\n",
" 2022-08-17 14:45:00 | SELL | SHFE.rb2210 | Vol: 1 | Price: 4012.00 | Comm: 0.40\n",
" 2022-08-18 13:45:00 | CLOSE_SHORT | SHFE.rb2210 | Vol: 1 | Price: 4058.00 | Comm: 0.41 | PnL: -46.00\n",
" 2022-09-22 09:30:00 | BUY | SHFE.rb2301 | Vol: 1 | Price: 3729.00 | Comm: 0.37\n",
" 2022-09-23 21:15:00 | CLOSE_LONG | SHFE.rb2301 | Vol: 1 | Price: 3740.00 | Comm: 0.37 | PnL: 11.00\n",
" 2022-09-26 21:30:00 | BUY | SHFE.rb2301 | Vol: 1 | Price: 3815.00 | Comm: 0.38\n",
" 2022-09-30 14:15:00 | CLOSE_LONG | SHFE.rb2301 | Vol: 1 | Price: 3793.00 | Comm: 0.38 | PnL: -22.00\n",
" 2022-10-11 14:15:00 | SELL | SHFE.rb2301 | Vol: 1 | Price: 3770.00 | Comm: 0.38\n",
" 2022-11-04 13:45:00 | CLOSE_SHORT | SHFE.rb2301 | Vol: 1 | Price: 3570.00 | Comm: 0.36 | PnL: 200.00\n",
" 2022-11-08 21:15:00 | BUY | SHFE.rb2301 | Vol: 1 | Price: 3583.00 | Comm: 0.36\n",
" 2022-11-09 21:30:00 | CLOSE_LONG | SHFE.rb2301 | Vol: 1 | Price: 3558.00 | Comm: 0.36 | PnL: -25.00\n",
" 2022-11-11 09:15:00 | BUY | SHFE.rb2301 | Vol: 1 | Price: 3619.00 | Comm: 0.36\n",
" 2022-11-21 09:15:00 | CLOSE_LONG | SHFE.rb2301 | Vol: 1 | Price: 3636.00 | Comm: 0.36 | PnL: 17.00\n",
" 2022-11-25 21:15:00 | BUY | SHFE.rb2301 | Vol: 1 | Price: 3751.00 | Comm: 0.38\n",
" 2022-11-28 09:15:00 | CLOSE_LONG | SHFE.rb2301 | Vol: 1 | Price: 3730.00 | Comm: 0.37 | PnL: -21.00\n",
" 2022-12-08 21:30:00 | BUY | SHFE.rb2305 | Vol: 1 | Price: 3877.00 | Comm: 0.39\n",
" 2022-12-16 13:30:00 | CLOSE_LONG | SHFE.rb2305 | Vol: 1 | Price: 3983.00 | Comm: 0.40 | PnL: 106.00\n",
" 2022-12-16 22:00:00 | SELL | SHFE.rb2305 | Vol: 1 | Price: 3946.00 | Comm: 0.39\n",
" 2022-12-19 09:45:00 | CLOSE_SHORT | SHFE.rb2305 | Vol: 1 | Price: 3987.00 | Comm: 0.40 | PnL: -41.00\n",
" 2023-01-06 13:30:00 | BUY | SHFE.rb2305 | Vol: 1 | Price: 4110.00 | Comm: 0.41\n",
" 2023-01-06 21:15:00 | CLOSE_LONG | SHFE.rb2305 | Vol: 1 | Price: 4113.00 | Comm: 0.41 | PnL: 3.00\n",
" 2023-01-13 21:15:00 | SELL | SHFE.rb2305 | Vol: 1 | Price: 4123.00 | Comm: 0.41\n",
" 2023-01-17 22:00:00 | CLOSE_SHORT | SHFE.rb2305 | Vol: 1 | Price: 4158.00 | Comm: 0.42 | PnL: -35.00\n",
" 2023-02-02 14:30:00 | SELL | SHFE.rb2305 | Vol: 1 | Price: 4060.00 | Comm: 0.41\n",
" 2023-02-09 10:00:00 | CLOSE_SHORT | SHFE.rb2305 | Vol: 1 | Price: 4096.00 | Comm: 0.41 | PnL: -36.00\n",
" 2023-02-16 13:45:00 | BUY | SHFE.rb2305 | Vol: 1 | Price: 4137.00 | Comm: 0.41\n",
" 2023-03-06 09:15:00 | CLOSE_LONG | SHFE.rb2305 | Vol: 1 | Price: 4194.00 | Comm: 0.42 | PnL: 57.00\n",
" 2023-03-07 13:30:00 | BUY | SHFE.rb2305 | Vol: 1 | Price: 4267.00 | Comm: 0.43\n",
" 2023-03-08 09:15:00 | CLOSE_LONG | SHFE.rb2305 | Vol: 1 | Price: 4247.00 | Comm: 0.42 | PnL: -20.00\n",
" 2023-03-09 22:15:00 | BUY | SHFE.rb2305 | Vol: 1 | Price: 4338.00 | Comm: 0.43\n",
" 2023-03-09 22:30:00 | CLOSE_LONG | SHFE.rb2305 | Vol: 1 | Price: 4332.00 | Comm: 0.43 | PnL: -6.00\n",
" 2023-03-15 21:15:00 | SELL | SHFE.rb2305 | Vol: 1 | Price: 4299.00 | Comm: 0.43\n",
" 2023-03-29 21:15:00 | CLOSE_SHORT | SHFE.rb2305 | Vol: 1 | Price: 4157.00 | Comm: 0.42 | PnL: 142.00\n",
" 2023-04-03 10:30:00 | SELL | SHFE.rb2305 | Vol: 1 | Price: 4090.00 | Comm: 0.41\n",
" 2023-04-03 14:45:00 | CLOSE_SHORT | SHFE.rb2305 | Vol: 1 | Price: 4059.00 | Comm: 0.41 | PnL: 31.00\n",
" 2023-04-19 22:00:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3878.00 | Comm: 0.39\n",
" 2023-04-19 22:45:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3907.00 | Comm: 0.39 | PnL: -29.00\n",
" 2023-04-24 09:30:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3724.00 | Comm: 0.37\n",
" 2023-04-26 21:30:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3750.00 | Comm: 0.38 | PnL: -26.00\n",
" 2023-05-04 21:15:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3582.00 | Comm: 0.36\n",
" 2023-05-05 14:00:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3619.00 | Comm: 0.36 | PnL: -37.00\n",
" 2023-05-10 22:45:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3629.00 | Comm: 0.36\n",
" 2023-05-12 21:45:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3663.00 | Comm: 0.37 | PnL: -34.00\n",
" 2023-05-22 14:15:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3555.00 | Comm: 0.36\n",
" 2023-05-22 21:45:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3592.00 | Comm: 0.36 | PnL: -37.00\n",
" 2023-05-24 21:15:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3434.00 | Comm: 0.34\n",
" 2023-05-25 10:30:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3465.00 | Comm: 0.35 | PnL: -31.00\n",
" 2023-06-26 09:30:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3652.00 | Comm: 0.37\n",
" 2023-06-27 09:15:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3683.00 | Comm: 0.37 | PnL: -31.00\n",
" 2023-07-24 22:45:00 | BUY | SHFE.rb2310 | Vol: 1 | Price: 3844.00 | Comm: 0.38\n",
" 2023-08-02 11:15:00 | CLOSE_LONG | SHFE.rb2310 | Vol: 1 | Price: 3818.00 | Comm: 0.38 | PnL: -26.00\n",
" 2023-08-02 22:15:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3765.00 | Comm: 0.38\n",
" 2023-08-15 13:45:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3684.00 | Comm: 0.37 | PnL: 81.00\n",
" 2023-08-15 14:00:00 | BUY | SHFE.rb2310 | Vol: 1 | Price: 3690.00 | Comm: 0.37\n",
" 2023-08-18 22:15:00 | CLOSE_LONG | SHFE.rb2310 | Vol: 1 | Price: 3663.00 | Comm: 0.37 | PnL: -27.00\n",
" 2023-08-18 22:30:00 | SELL | SHFE.rb2310 | Vol: 1 | Price: 3664.00 | Comm: 0.37\n",
" 2023-08-22 13:45:00 | CLOSE_SHORT | SHFE.rb2310 | Vol: 1 | Price: 3678.00 | Comm: 0.37 | PnL: -14.00\n",
" 2023-08-22 14:15:00 | BUY | SHFE.rb2310 | Vol: 1 | Price: 3711.00 | Comm: 0.37\n",
" 2023-08-24 21:00:00 | CLOSE_LONG | SHFE.rb2310 | Vol: 1 | Price: 3698.00 | Comm: 0.37 | PnL: -13.00\n",
" 2023-09-21 14:00:00 | SELL | SHFE.rb2401 | Vol: 1 | Price: 3771.00 | Comm: 0.38\n",
" 2023-10-12 21:15:00 | CLOSE_SHORT | SHFE.rb2401 | Vol: 1 | Price: 3634.00 | Comm: 0.36 | PnL: 137.00\n",
" 2023-10-23 09:15:00 | SELL | SHFE.rb2401 | Vol: 1 | Price: 3573.00 | Comm: 0.36\n",
" 2023-10-24 10:45:00 | CLOSE_SHORT | SHFE.rb2401 | Vol: 1 | Price: 3594.00 | Comm: 0.36 | PnL: -21.00\n",
" 2023-10-25 09:15:00 | BUY | SHFE.rb2401 | Vol: 1 | Price: 3678.00 | Comm: 0.37\n",
" 2023-10-25 22:15:00 | CLOSE_LONG | SHFE.rb2401 | Vol: 1 | Price: 3662.00 | Comm: 0.37 | PnL: -16.00\n",
" 2023-10-27 14:00:00 | BUY | SHFE.rb2401 | Vol: 1 | Price: 3717.00 | Comm: 0.37\n",
" 2023-11-23 09:00:00 | CLOSE_LONG | SHFE.rb2401 | Vol: 1 | Price: 3931.00 | Comm: 0.39 | PnL: 214.00\n",
" 2023-12-13 11:15:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3976.00 | Comm: 0.40\n",
" 2023-12-21 13:45:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3980.00 | Comm: 0.40 | PnL: -4.00\n",
" 2024-01-16 21:15:00 | BUY | SHFE.rb2405 | Vol: 1 | Price: 3919.00 | Comm: 0.39\n",
" 2024-01-17 10:30:00 | CLOSE_LONG | SHFE.rb2405 | Vol: 1 | Price: 3891.00 | Comm: 0.39 | PnL: -28.00\n",
" 2024-01-17 21:15:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3851.00 | Comm: 0.39\n",
" 2024-01-17 22:45:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3882.00 | Comm: 0.39 | PnL: -31.00\n",
" 2024-01-30 14:00:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3933.00 | Comm: 0.39\n",
" 2024-02-19 09:15:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3864.00 | Comm: 0.39 | PnL: 69.00\n",
" 2024-02-20 21:15:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3743.00 | Comm: 0.37\n",
" 2024-02-21 10:45:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3776.00 | Comm: 0.38 | PnL: -33.00\n",
" 2024-02-26 09:15:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3753.00 | Comm: 0.38\n",
" 2024-02-27 10:30:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3789.00 | Comm: 0.38 | PnL: -36.00\n",
" 2024-02-27 11:15:00 | BUY | SHFE.rb2405 | Vol: 1 | Price: 3806.00 | Comm: 0.38\n",
" 2024-02-28 21:15:00 | CLOSE_LONG | SHFE.rb2405 | Vol: 1 | Price: 3790.00 | Comm: 0.38 | PnL: -16.00\n",
" 2024-03-11 09:45:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3637.00 | Comm: 0.36\n",
" 2024-03-19 10:45:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3564.00 | Comm: 0.36 | PnL: 73.00\n",
" 2024-03-26 21:15:00 | SELL | SHFE.rb2405 | Vol: 1 | Price: 3493.00 | Comm: 0.35\n",
" 2024-03-26 22:45:00 | CLOSE_SHORT | SHFE.rb2405 | Vol: 1 | Price: 3517.00 | Comm: 0.35 | PnL: -24.00\n",
" 2024-04-17 13:45:00 | BUY | SHFE.rb2410 | Vol: 1 | Price: 3649.00 | Comm: 0.36\n",
" 2024-04-23 21:00:00 | CLOSE_LONG | SHFE.rb2410 | Vol: 1 | Price: 3633.00 | Comm: 0.36 | PnL: -16.00\n",
" 2024-04-30 13:45:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3643.00 | Comm: 0.36\n",
" 2024-05-06 09:00:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3674.00 | Comm: 0.37 | PnL: -31.00\n",
" 2024-05-06 11:00:00 | BUY | SHFE.rb2410 | Vol: 1 | Price: 3726.00 | Comm: 0.37\n",
" 2024-05-08 13:45:00 | CLOSE_LONG | SHFE.rb2410 | Vol: 1 | Price: 3706.00 | Comm: 0.37 | PnL: -20.00\n",
" 2024-05-08 21:00:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3675.00 | Comm: 0.37\n",
" 2024-05-09 10:45:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3688.00 | Comm: 0.37 | PnL: -13.00\n",
" 2024-05-13 14:15:00 | BUY | SHFE.rb2410 | Vol: 1 | Price: 3683.00 | Comm: 0.37\n",
" 2024-05-14 09:00:00 | CLOSE_LONG | SHFE.rb2410 | Vol: 1 | Price: 3665.00 | Comm: 0.37 | PnL: -18.00\n",
" 2024-05-21 22:30:00 | BUY | SHFE.rb2410 | Vol: 1 | Price: 3790.00 | Comm: 0.38\n",
" 2024-05-23 13:30:00 | CLOSE_LONG | SHFE.rb2410 | Vol: 1 | Price: 3764.00 | Comm: 0.38 | PnL: -26.00\n",
" 2024-05-30 14:00:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3730.00 | Comm: 0.37\n",
" 2024-06-06 14:30:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3655.00 | Comm: 0.37 | PnL: 75.00\n",
" 2024-07-05 13:30:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3566.00 | Comm: 0.36\n",
" 2024-07-11 13:30:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3531.00 | Comm: 0.35 | PnL: 35.00\n",
" 2024-07-17 13:45:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3514.00 | Comm: 0.35\n",
" 2024-07-26 09:00:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3390.00 | Comm: 0.34 | PnL: 124.00\n",
" 2024-07-30 21:30:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3284.00 | Comm: 0.33\n",
" 2024-07-30 22:30:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3324.00 | Comm: 0.33 | PnL: -40.00\n",
" 2024-08-12 09:00:00 | SELL | SHFE.rb2410 | Vol: 1 | Price: 3226.00 | Comm: 0.32\n",
" 2024-08-19 21:15:00 | CLOSE_SHORT | SHFE.rb2410 | Vol: 1 | Price: 3164.00 | Comm: 0.32 | PnL: 62.00\n",
" 2024-09-24 09:15:00 | BUY | SHFE.rb2501 | Vol: 1 | Price: 3164.00 | Comm: 0.32\n",
" 2024-09-24 10:00:00 | CLOSE_LONG | SHFE.rb2501 | Vol: 1 | Price: 3135.00 | Comm: 0.31 | PnL: -29.00\n",
" 2024-09-24 13:45:00 | BUY | SHFE.rb2501 | Vol: 1 | Price: 3192.00 | Comm: 0.32\n",
" 2024-10-08 13:45:00 | CLOSE_LONG | SHFE.rb2501 | Vol: 1 | Price: 3477.00 | Comm: 0.35 | PnL: 285.00\n",
" 2024-10-17 14:30:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3328.00 | Comm: 0.33\n",
" 2024-10-18 14:45:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3362.00 | Comm: 0.34 | PnL: -34.00\n",
" 2024-10-25 22:00:00 | BUY | SHFE.rb2501 | Vol: 1 | Price: 3425.00 | Comm: 0.34\n",
" 2024-10-31 22:15:00 | CLOSE_LONG | SHFE.rb2501 | Vol: 1 | Price: 3401.00 | Comm: 0.34 | PnL: -24.00\n",
" 2024-11-01 09:00:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3380.00 | Comm: 0.34\n",
" 2024-11-01 09:45:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3399.00 | Comm: 0.34 | PnL: -19.00\n",
" 2024-11-06 11:15:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3358.00 | Comm: 0.34\n",
" 2024-11-06 13:45:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3389.00 | Comm: 0.34 | PnL: -31.00\n",
" 2024-11-08 10:45:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3388.00 | Comm: 0.34\n",
" 2024-11-19 14:15:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3318.00 | Comm: 0.33 | PnL: 70.00\n",
" 2024-11-22 11:00:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3293.00 | Comm: 0.33\n",
" 2024-11-22 22:15:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3328.00 | Comm: 0.33 | PnL: -35.00\n",
" 2024-11-29 11:15:00 | BUY | SHFE.rb2501 | Vol: 1 | Price: 3346.00 | Comm: 0.33\n",
" 2024-11-29 14:30:00 | CLOSE_LONG | SHFE.rb2501 | Vol: 1 | Price: 3329.00 | Comm: 0.33 | PnL: -17.00\n",
" 2024-12-05 11:00:00 | SELL | SHFE.rb2501 | Vol: 1 | Price: 3293.00 | Comm: 0.33\n",
" 2024-12-05 14:45:00 | CLOSE_SHORT | SHFE.rb2501 | Vol: 1 | Price: 3283.00 | Comm: 0.33 | PnL: 10.00\n",
" 2024-12-18 14:45:00 | SELL | SHFE.rb2505 | Vol: 1 | Price: 3309.00 | Comm: 0.33\n",
" 2024-12-26 09:45:00 | CLOSE_SHORT | SHFE.rb2505 | Vol: 1 | Price: 3321.00 | Comm: 0.33 | PnL: -12.00\n",
"正在计算绩效指标...\n",
"total_return: 0.015993839000000065, annualized_return:0.002748145266858293, 252 / total_days:0.17295813315030886\n",
"绩效指标计算完成。\n",
"\n",
"--- 回测绩效报告 ---\n",
"初始资金 : 100000.00\n",
"最终资金 : 101599.38\n",
"总收益率 : 1.60%\n",
"年化收益率 : 0.27%\n",
"最大回撤 : 0.91%\n",
"夏普比率 : 0.14\n",
"卡玛比率 : 0.30\n",
"总交易次数 : 240\n",
"总实现盈亏 : 1701.00\n",
"交易成本 : 101.62\n",
"\n",
"--- 交易详情 ---\n",
"盈利交易次数 : 34\n",
"亏损交易次数 : 86\n",
"胜率 : 28.33%\n",
"盈亏比 : 3.77\n",
"平均每次盈利 : 151.94\n",
"平均每次亏损 : -40.29\n",
"正在绘制绩效图表...\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 1400x1000 with 2 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABWgAAAPdCAYAAAAXpIG4AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3QeUE3XXx/Gb7Q1QpCiCDRRQARUUC6KiKCpYUOyij6io+FrAhuhjF3tvqFhAHwsKVsTesKCAXUCwYaNL217ynjthNpNk0usk3885ObubZJPJZGaS+c2d+3e53W63AAAAAAAAAABSLi/1TwkAAAAAAAAAUAS0AAAAAAAAAJAmBLQAAAAAAAAAkCYEtAAAAAAAAACQJgS0AAAAAAAAAJAmBLQAAAAAAAAAkCYEtAAAAAAAAACQJgS0AAAAAAAAAJAmBLQAAGQRt9ud7kkA7wMAZOxnUiZOEwAABcwCAABiM2vWLBk+fLjtbYWFhVJeXi5bb721DBo0SE444QQpKipK2qyura2VRx55RAoKCuSss87yue2vv/6S6667TmbPni319fWy/fbbyzPPPBP1c3Tt2tX4+cMPPxjPowYMGGA8/ltvvSVbbrmlJNKff/4p+++/f8T3Hz9+vAwdOlRS5eSTT5YvvvhCHn/8cdlzzz3Dvg9O9+mnn8p//vMf2W233WTy5MkRzx9/uh60aNFCOnfuLAcddJAcc8wxSV03UuH444+XuXPnyqRJk6Rv376STSorK2X69Ony+uuvy2+//SYrVqwwtm3du3eXIUOGyBFHHCH5+fmSzZqamuTUU0+V4uJiY/22o9vXE0880fh97Nixxv2DsdtuxrotzdT3Z+3atXLPPffIDjvsIEceeaRkgsbGRnn22Wfl119/lSuuuCKmx/j777/lkEMOkXHjxsmwYcMSPo0AgNxFQAsAQJzKysoCgkTdEdQd1C+//FK++uorefvtt+WJJ54wgttk0NDg3nvvtQ0FL7nkEiM82HzzzaVHjx5GaOw0GjSEs8UWW0i6hXofctXOO+8sHTt2bP5bDxJoiPTtt98aAe7//vc/I+Ru3759WqcTgXS7cdFFF8k///xjhOrbbbedsQ3Rv/UA1WeffSYvvviisdxrKJitJk6caATwGoIGo/NB6cGG5557LmRAmwvvjx4wmzp1qlx//fWSKV599VW59tprI/o8CaZDhw5yxhlnyA033CC77767dOrUKaHTCADIXQS0AADEaeONN5bbbrstaBWoVs/qjvTTTz+dtJ32UKdsfvPNN8ZPre6zBmWJoKGzBm6605pMweZvOt18881SXV3t89o5dTaQVsjaVTYvX75cLr/8cvnoo4/k9NNPN4Ikp1fSZhMNJE855RSjevSCCy4wzhawhnw///yzjBkzRubMmSMjR440qqpdLpdkG61qve+++4wq6WCVrVrFOmPGDNlmm22MynA9IKcBaTKrqTP9/cnEbaHOq0Q47bTTjLNQrr76aiO8BwAgEehBCwBAEmkgquGT0lNX00EDVLXpppsm/LG1alUDiWRVBmcyDWb1tZeWlqZ7Uhypbdu2RrWxVv399NNPMbXdQHJUVVUZlZkNDQ1GCHX22WcHVGDqsv/oo4/KRhttZJwp8M4772Tl26Gn6es2VEO5YN544w1jnu21117G6e9KT6VPFt6f9NJtvrZwmTlzptH6BQCARCCgBQAgycyqq5UrVwa0QdCq2qOOOkp22mkn46K/P/XUU0YwYqXVWNoDVk+r1Eoo7Xnaq1cvozp33333NSq81EMPPWTcT4Mv3YE0+8Yq7QWof2tVr0nbL5x77rmyxx57yI477ij77befXHXVVcYpspHQvon6mL///rvP9f/++6/ceuutRo9RfVztWzpixAj58MMPJVU0VNFTew899FDp2bOn0YbiwQcflHXr1hnTrBVx/vPXel2412nOX3MHXe9j9z489thjxu9azWbn66+/Nm7XxwtHl4spU6YYlXNanafvqc5b/V+70691mvr06SN1dXXGtBx44IHG+7HPPvsYpx7r++RP7/vwww8bQZMuYwcccIDxty6viVZSUtI8X7TVgZXOk8MPP9xog6B9nPXUbZ1+7bOp1qxZY7wmrc7t3bu38br69esn5513ntE+waTrmD7Wf//734Dn11OV9TathvZ33HHHGbdpz0nT999/L+ecc46xvmjrBv1/DZeDiXQdv+WWW4znmjBhQsBj6Pugt+nj+Ovfv7/xmNr7WNdrvZ9O37Jly4w+qDo/dL7pOqDLYaTvoR5M0spR7VetFdDBtGnTxggudX5oNXmwdcNKT3vX2zQAjmT7pvMr2GMpXY71dv++yNqXVadDlw19LF2WzIr/SC1ZssQ4LV6D18022yxsewNdTnWdq6ioMKpo/bf5iRLv+xPP588vv/xirGO6/dHtqq5/5us36X2nTZtm/K69XvVvfd/VZZddZvyt6/X//d//GY+hrQL0vTFpNfKZZ55pzHddr/U91Nep02tXBavbLP1/nRZdL/X1akWxVuebdFnQdULpe6rToNNi3Q6PGjXKeP+s2xK93o7OK+3tG6wnMQAA0aLFAQAASWYGONZT4TVQ0R3Qzz//3KhM051dPf1Ud4R1QK93333XCGv8T/nWHU4NCTWU0/vrY+rOpPYa1OfRakTd8dSLDlSlfT11Z1QNHjzY+B/tmau0YlH78ekOrwYYWmE7f/58o/JLd5B1x1N3nqP1xx9/yEknnWSEG/r8usOrQaBOo1YcaTWenpKbTBrCaCCs87NVq1ZGkKV9T++66y758ccfk/KcGmTavQ8aLtxxxx1GheH69euN8MbKDDJ0hz/cKcMaaLz33nvGa9L3TActWrRokRF26EUDIf+B6/T91VOc9XYNL7TyUZc7DbT09GcNfM1B33S+aeiot2tlpM63VatWGdOv/5cMGsbp69DgVZcZa6W3vh5dXnQ518BEQ0g94KHXa4C6ePFio0pdAx6ddh3A7s033zTmkS7fGk7qAQxdzv0DPr2/th5R/oOZafirIW+3bt2a11s9uKAHMzQM0jBLl22dfxrq+7+n0a7jOo16qrROo75XJg1a9VR1pf9nDkKldF1dunSpceBB55+1dcTRRx9tBHJmeKsVrhpCa6h35ZVXhn1PtCLUDIfDnRav02ud5njYbd/0IIQG43oAwhyMzxoy6rZKl18NoU0axmsfWD0AoNsw7c+q75X2RdXn0AMokbTTePnll43nCDVYoQ44pe0G9GwCXdd1ug8++GBjvXrhhRcSNm8S+f7E+vmj2xodGEuXN92WrF692jjIp61KdJ0xq4y1x6sGm/pZoMug9mn17xGuy6FuW/bee2/jcc2DiRq467ZJq1R32WUXY93SZUJb9ehF13kzaDXbS+jz6vPpdtEMo3Wd1tejy4KuN7rs6Dqv06vbDJ1+vSidD3qmi77X+pz6marTrtsSnRd6gErDYv/wW5ctXWf1IE6y2/wAAHKAGwAAxOTzzz93b7fddu799tsv6H3mzZvn3nXXXY37vfDCC83Xjx8/3rhu2LBh7pUrVzZfv2LFCvdRRx1l3Kb38X8uvTzyyCPN1zc2Nho/77nnHuO2O+64I2AazP+rr6/3ma5u3bq5e/bs6f7oo498Hu/ee+817t+/f393dXV1yMfR167X/fbbb8bfTU1N7iOPPNK47sorr3TX1dU13/ebb75x77bbbsZt7777btj5+8cffzQ/Z7QmTJhg/J9Oy7///tt8/Ztvvunu3r27cdtxxx0XMH+t11n5v0510kknGdd98sknzdcFex9GjRplXD9lyhSf62tra43lY+edd3ZXVVWFfE067foYRx99tHv9+vW2r3fgwIG2073XXnu558+f33z9n3/+2fxevP/++83XT5w4sXm5XLNmTfP1H3zwgXuHHXYwbtPXHQlz/rz44oth73vIIYcY9/3000+brzPf+5EjRxrLlXV5v+6664zbrr322ubbVE1Njfvss882bhs3blzz9YceeqhxnS5Tpi+//NK4TpcHvaxbt675ttdff9247c477zT+1vmt87Br167uV199tfl+lZW
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"data": {
"text/plain": [
"<Figure size 1400x700 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAABW0AAAKyCAYAAACuWPzHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3Qd8G/X5x/HnNLztOLaTkEVIQkKYIWwolE2htIWyCrRAWyijBVr2pkBp+bNaSimjbFraAh1QRtmUvfdIgEDI3vHeku7/ek4++SSdZMmWLMn6vF8vR9Ld6XQ6neT4q+een2GapikAAAAAAAAAgLzgyfUGAAAAAAAAAAD6EdoCAAAAAAAAQB4htAUAAAAAAACAPEJoCwAAAAAAAAB5hNAWAAAAAAAAAPIIoS0AAAAAAAAA5BFCWwAAAAAAAADII4S2AAAAAAAAAJBHCG0BAACKhGmaud4EoGAU2vul0LYXAAAkR2gLAECWvf7667LRRhvJHnvsMeCyuowuq/fJlq9//evWYyxZsiRrj6Hr159AIDCo+x911FHW/V955RXJN+eff761bZtttpmsXbtWCsUjjzwip59++qDu+/HHH8tll10m3/72t2XrrbeWLbbYQr7xjW/IpZdeKl999VXCY/6II46QQmS/D2N/Nt54Y5kzZ47su+++8stf/lIWLVpU8Md1KBSSo48+Wn7yk5+4zm9vb5cHHnhAfvjDH8puu+1mHffbb7+9dfuf//ynBINBGYleeukl+fGPfyyFYOXKlXLmmWfKa6+9lrXHWLhwYcq/x5zHeuyPHj8777yz/OxnP8ur94Fqa2uztu13v/tdrjcFAACLL3wBAACAgXR0dMh///tfKS0tle7ubiu0Ov744/N+x7355ptyxhlnyFZbbZXW/fQ5XnHFFfK3v/3Nuj19+nTZdtttpbe3Vz799FP561//agV6V111lXzzm9+UkWannXaS+vr6qErGzs5OmTt3rvz973+3gvA777zTCrEL1e233y7vvPOOPProo3Hz3nrrLSsMXL58uVRXV8vMmTNl8803t25rMP/qq69a74Fbb71VKisrZaRYtmyZHHvssTJu3DgpBGeddZb1ehx00EGSb/RLjkmTJkVu9/T0WCHzs88+K08//bRceOGFVsCbD6qqqqzj/bzzzrO+3NQvqAAAyCVCWwAAkHeuvPJKKxybMGGC5BMNbDW4Pe644+Suu+6S++67z6pQNAxD8plWU6ZLA8pTTjlFnn/+edlkk02sqlpnOKnB7Z///GcrsNXQSEO9XXbZRUaSE0880aoqjaUV5BdccIE8+OCDVuj0n//8pyCP66VLl8oNN9xgVURPmTIlap4Gucccc4x17PziF7+wqnGdwewXX3xhfRHw9ttvywknnGAdC/n+Psjm+yWX8rktwmGHHeYaJtvHl74n9tlnn7wJyA844ADrs10r6fX97fPx5zIAIHdojwAAAPKOhlpa1VleXi755F//+pd1uf/++8uOO+5otZh48cUXZSTSKloNbPV1uPvuu+OqSf1+v3X6uAZ2GmJec801Uiw0yNE2GV6v16o4TrVNQr4d19dff70Vvse2AdAvJrTiUF/XSy65RE466aS4Slp9HrfddpvU1tZaldxaNQmkSqv+99prL+v4+9///pc3O06/eNAv5T7//HP597//nevNAQAUOUJbAADy3B/+8AerF6CGIhqi/eAHP7BOOdU/evUUXq10c6OnLv/oRz+yTmffZptt5LTTTrNO+01Ee1Nq5eihhx5qrV9/vve971lBZWwll07TbdKKJO3/p4+hyyfqmaq9UHV57RPp5uKLL7bm238ku/X+tKc1NTXJPffcI9/61resIFFPYdfTWRM9t8cee0wOP/xw61TX7bbbzqoaXLx4sdWTM53evtrTUU8X14pErTz9zne+Y023Wwe40dOA9bntt99+1rbq42vFoltlZktLi1V1pvtqyy23tLZXt/vee+917Q2srQv0tHTdjtmzZ1vL67r1tGOnc88915puV7fpc07ldGR9bZW+pjU1NQmX02NQ94f+rFu3bsD1zp8/X84++2yrKtfub6mVujrdreJRKzi1Wk/3nT5PDcw1IG5sbEz4euvz0/2hy9uVcxoOZdKoUaOsH2X3NrZ7+f7617+2tluPTd2GI4880nouiXra6injuo1akajvI/1CQF+zF154IWvPccWKFfLwww/L1772NRk/fnzUvCeffNKqwtXXVPd9Ig0NDVbgq9urFcSxnyd67B588MHW8aw/ev0vf/lL3PHs3G9ffvmlnHrqqVaFs75ndJ9oC4ZEPUi1Ulg/C3T9ekxpdfR7770Xt+yCBQus96L2YtZldd0aGmoFub5PnZ+3e+65p3Vdp7v1cV21apX86le/sqbrMayvs36+fvbZZ3GPO5jPra6uLqvthr7/9bjfdNNNZYcddrCq+p2fofrZpet+4403rNv6eR/bEz2dz3Wl07T1x3e/+11rP2mbAH2/6TZl2nrrrRfpmxzr8ccft1rP6PGp+1iPdT0W9ZiKrYS297Huf33faAsP/VzR94mzKnzvvfe21qX7Utetv0/daOWvfhmhX0rkcxUzAGDk43wPAAAKhJ6q+dRTT8kGG2xg/SGrlUD6B7z+ga5BiP6BbdM+oxdddJFVNaSBrYZuWhGqAa9W0cXSEOXkk0+W5557zjrNXQNhrSbUMECDBb38v//7v7j7aWCpAahuT2trq7VtbjSs0d6o+hz0j+nYwErbDmglnw7wNBA9HV0DbA0+NFDQKj8NIDQI0x6juv02PXVfe3aWlJRYIZBWRmpVlw7YkyyIdGMHRxqQKQ0AtAei/uGvAZgdQNg0yDvkkEOsgEd7geogTs3Nzdb26mumIbC2H1AaiHz/+9+3Qof111/f2kcagumy7777rnz44YdR+1/DKg1oPvjgA6mrq7NCCN2P9rr1tbTXrSGNhk+6f3RZfa20SjIZfTytHtXXZPfdd0+6rO7HVCvSNFDW0FwDZw1Z9DjTME1DbA0Kr7vuuqjH02P4H//4hxWg6PPQ1+/999+3wupnnnnGOp60v7BNQzkNqMrKyqzjQ48FPeb12NMA9Oabb7aOhUzQ19cOqWPbHehj6eurgZu+B3W+x+NeK6GBlQafGjRqCGwHoPqe09dSn5MeG5l+jg899JAV6NkBpZO+H5X2KR6o5YFWWuuPk76+Gorp+0yPIX3v6Xr0+WjYqa/dLbfcEredGtxruKivqb7eGnTq8a9VzfrecVYE6zGtp9fr8TNmzBgrsNXXRD/D9D35xz/+MRK26pctWj2p+1UDUP3c0PXpsaQV5fqZoAG2vp/1uNQwVz9jtCJar+v7xjZv3jxrO/Sx9AscfV/rtmhAqM9LQ99dd9110J9buu/0izl9D+rz0veI7jut6NbXVz/HNajW7aqoqLC+5NF16PbosaNBuv4M9nP9nHPOsY4NXbeuzw6QdR2Z9tFHH1mXzt9d6vLLL7e+9ND9r9usr4u+n/T10h/9bNLtj6Wfefp+0v2v69aAVgNbPaZ0uoa5OpigfibrMaI/v/nNb6zfT056XOpnsL4u+t7S36EAAOSECQAAsuq1114zZ86cae6+++4DLqvL6LJ6H9v1119vTdOfO+64wwyFQtb0YDBonnrqqdb0U045JbL8smXLzC222MLcbLPNotazdu1a88ADD4ysa/HixXGPcfTRR1vL2VavXh25z/333x+Z/s9//jOynsceeywyXbdJ2fN6e3sjj73pppuas2fPNtva2qKe86OPPmote/7550em/eAHP7Cmvfzyy3HTttxyy6jn1djYaO69997WvL/85S+R6a+++qo1beeddzbnz58fmb5kyZLI8rH7IZFAIGDusssu5qxZs6z9a7vooousdfz+97+Pu88NN9xgzbv22mujpr///vvWvtDXqLOz05r273//21r2jDPOiLy+auHChea2225rzVu0aFFk+jnnnGNNO/3008329vbI9AULFkSOIee+s4/Bww8/3EzFgw8+aC2v+3ww3B5v1apV1mu30UYbmf/617+iln/ggQes6XPmzDFXrFh
},
"metadata": {},
"output_type": "display_data",
"jetTransient": {
"display_id": null
}
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"图表绘制完成。\n",
"{'初始资金': 100000.0, '最终资金': np.float64(101599.3839), '总收益率': np.float64(0.015993839000000065), '年化收益率': np.float64(0.002748145266858293), '最大回撤': np.float64(0.009145083262392769), '夏普比率': np.float64(0.14157423412186335), '卡玛比率': np.float64(0.30050522100323157), '总交易次数': 240, '交易成本': 101.6161, '总实现盈亏': 1701.0, '胜率': 0.2833333333333333, '盈亏比': 3.7711229946524067, '盈利交易次数': 34, '亏损交易次数': 86, '平均每次盈利': 151.94117647058823, '平均每次亏损': -40.2906976744186, 'initial_capital': 100000.0, 'final_capital': np.float64(101599.3839), 'total_return': np.float64(0.015993839000000065), 'annualized_return': np.float64(0.002748145266858293), 'max_drawdown': np.float64(0.009145083262392769), 'sharpe_ratio': np.float64(0.14157423412186335), 'calmar_ratio': np.float64(0.30050522100323157), 'sortino_ratio': np.float64(0.11311643057331804), 'total_trades': 240, 'transaction_costs': 101.6161, 'total_realized_pnl': 1701.0, 'win_rate': 0.2833333333333333, 'profit_loss_ratio': 3.7711229946524067, 'winning_trades_count': 34, 'losing_trades_count': 86, 'avg_profit_per_trade': 151.94117647058823, 'avg_loss_per_trade': -40.2906976744186}\n",
"指标 'rsi_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_7' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_25' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_30' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_35' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'rsi_40' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_0' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_1' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_6' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_13' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'range_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_14_3' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_5_3' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'stoch_k_21_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_5_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_5_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_10_10' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_10_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_20_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'roc_ma_20_40' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'natr_21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_7' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_30' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_60' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_120' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'adx_240' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_10_15' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_20_20' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'bbw_50_25' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n3_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n7_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr5' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr14' 没有对应的有效平仓交易数据。跳过绘图。\n",
"指标 'price_range_to_vol_ratio_n21_atr21' 没有对应的有效平仓交易数据。跳过绘图。\n",
"\n",
"所有指标的分析图表已生成。\n"
]
}
],
"execution_count": 5
}
],
"metadata": {
"kernelspec": {
"display_name": "quant",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}