From 46a539cf72935f7a1c95b5b8469d16e78100d651 Mon Sep 17 00:00:00 2001 From: lanyuanxiaoyao Date: Thu, 13 Feb 2025 18:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E6=9E=84=E5=BB=BA=E5=9B=9E?= =?UTF-8?q?=E6=B5=8B=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- poetry.lock | 6 +- 回测/backtrader.ipynb | 673 +++--------------------------------------- 2 files changed, 52 insertions(+), 627 deletions(-) diff --git a/poetry.lock b/poetry.lock index bdba2dc..e490a9e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -15,14 +15,14 @@ files = [ [[package]] name = "akshare" -version = "1.15.85" +version = "1.15.87" description = "AKShare is an elegant and simple financial data interface library for Python, built for human beings!" optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "akshare-1.15.85-py3-none-any.whl", hash = "sha256:46c2c96027a9588d838c41b7613cef4cee049d9961f9d592fc8165ab4b460343"}, - {file = "akshare-1.15.85.tar.gz", hash = "sha256:fad37fe3684a8d026d8dab802580f393d69969d35fd23106c72757a6dab22f7a"}, + {file = "akshare-1.15.87-py3-none-any.whl", hash = "sha256:ed1d2da86e3df65aea6838c90dc88f148ce93bbf6ae157f23d114f33d2610bec"}, + {file = "akshare-1.15.87.tar.gz", hash = "sha256:c92cf6401097f268a1ddfea7d906fb435171fb50d4b0d1a8ff46ce092a6a7d51"}, ] [package.dependencies] diff --git a/回测/backtrader.ipynb b/回测/backtrader.ipynb index 6aa0386..1b622b7 100644 --- a/回测/backtrader.ipynb +++ b/回测/backtrader.ipynb @@ -3,21 +3,19 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-02-11T14:54:41.551895Z", - "start_time": "2025-02-11T14:54:41.503584Z" + "end_time": "2025-02-13T09:38:30.408310Z", + "start_time": "2025-02-13T09:38:30.328797Z" } }, "cell_type": "code", "source": [ "import backtrader as bt\n", - "import backtrader.indicators as btind\n", - "import backtrader.feeds as btfeeds\n", "import pandas as pd\n", "\n", - "# source_df = pd.read_csv(\"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/日线行情 1990-2024/分组行情/600519.SH.csv\") \\\n", - "source_df = \\\n", - " pd.read_csv(\"C:\\\\Users\\\\lanyuanxiaoyao\\\\SynologyDrive\\\\data\\\\Tushare\\\\日线行情 1990-2024\\\\分组行情\\\\000001.SZ.csv\")[\n", - " [\"trade_date\", \"vol\", \"open_qfq\", \"close_qfq\", \"high_qfq\", \"low_qfq\", \"macd\", \"macd_dif\", \"macd_dea\"]]\n", + "# source_df = \\\n", + "# pd.read_csv(\"C:\\\\Users\\\\lanyuanxiaoyao\\\\SynologyDrive\\\\data\\\\Tushare\\\\日线行情 1990-2024\\\\分组行情\\\\000001.SZ.csv\")[\n", + "source_df = pd.read_csv(\"/Users/lanyuanxiaoyao/SynologyDrive/data/Tushare/日线行情 1990-2024/分组行情/600519.SH.csv\") \\\n", + " [[\"trade_date\", \"vol\", \"open_qfq\", \"close_qfq\", \"high_qfq\", \"low_qfq\", \"macd\", \"macd_dif\", \"macd_dea\"]]\n", "df = pd.DataFrame()\n", "df[[\"date\", \"volume\", \"open\", \"close\", \"high\", \"low\", \"macd\", \"macd_dif\", \"macd_dea\"]] = \\\n", " source_df[[\"trade_date\", \"vol\", \"open_qfq\", \"close_qfq\", \"high_qfq\", \"low_qfq\", \"macd\", \"macd_dif\", \"macd_dea\"]]\n", @@ -26,282 +24,35 @@ "df = df[df[\"datetime\"].dt.year > 2010]\n", "df.sort_values(by='datetime', inplace=True)\n", "df.set_index('datetime', inplace=True)\n", - "df" + "# df" ], "id": "157a87ab33037c6e", - "outputs": [ - { - "data": { - "text/plain": [ - " date volume open close high low \\\n", - "datetime \n", - "2011-01-04 20110104 358840.61 4.44526 4.50145 4.54641 4.39749 \n", - "2011-01-05 20110105 237462.63 4.49302 4.47616 4.53236 4.47054 \n", - "2011-01-06 20110106 206531.27 4.47616 4.44245 4.51831 4.41154 \n", - "2011-01-07 20110107 770482.21 4.43964 4.61104 4.71501 4.41154 \n", - "2011-01-10 20110110 361872.13 4.56046 4.49021 4.60823 4.46773 \n", - "... ... ... ... ... ... ... \n", - "2024-12-25 20241225 1475282.94 11.86000 11.92000 12.02000 11.84000 \n", - "2024-12-26 20241226 1000074.70 11.92000 11.86000 11.93000 11.78000 \n", - "2024-12-27 20241227 1290012.28 11.87000 11.83000 11.90000 11.66000 \n", - "2024-12-30 20241230 1351846.36 11.78000 11.95000 11.97000 11.78000 \n", - "2024-12-31 20241231 1475367.33 11.93000 11.70000 11.99000 11.70000 \n", - "\n", - " macd macd_dif macd_dea datetime_text \n", - "datetime \n", - "2011-01-04 -0.003 -0.088 -0.087 20110104 \n", - "2011-01-05 0.003 -0.085 -0.087 20110105 \n", - "2011-01-06 0.003 -0.085 -0.086 20110106 \n", - "2011-01-07 0.027 -0.070 -0.083 20110107 \n", - "2011-01-10 0.026 -0.067 -0.080 20110110 \n", - "... ... ... ... ... \n", - "2024-12-25 0.050 0.080 0.055 20241225 \n", - "2024-12-26 0.051 0.087 0.062 20241226 \n", - "2024-12-27 0.044 0.089 0.067 20241227 \n", - "2024-12-30 0.052 0.100 0.074 20241230 \n", - "2024-12-31 0.020 0.086 0.076 20241231 \n", - "\n", - "[3381 rows x 10 columns]" - ], - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
datevolumeopenclosehighlowmacdmacd_difmacd_deadatetime_text
datetime
2011-01-0420110104358840.614.445264.501454.546414.39749-0.003-0.088-0.08720110104
2011-01-0520110105237462.634.493024.476164.532364.470540.003-0.085-0.08720110105
2011-01-0620110106206531.274.476164.442454.518314.411540.003-0.085-0.08620110106
2011-01-0720110107770482.214.439644.611044.715014.411540.027-0.070-0.08320110107
2011-01-1020110110361872.134.560464.490214.608234.467730.026-0.067-0.08020110110
.................................
2024-12-25202412251475282.9411.8600011.9200012.0200011.840000.0500.0800.05520241225
2024-12-26202412261000074.7011.9200011.8600011.9300011.780000.0510.0870.06220241226
2024-12-27202412271290012.2811.8700011.8300011.9000011.660000.0440.0890.06720241227
2024-12-30202412301351846.3611.7800011.9500011.9700011.780000.0520.1000.07420241230
2024-12-31202412311475367.3311.9300011.7000011.9900011.700000.0200.0860.07620241231
\n", - "

3381 rows × 10 columns

\n", - "
" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 38 + "outputs": [], + "execution_count": 46 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "12fde7bfaddbdf4" }, { "metadata": { "ExecuteTime": { - "end_time": "2025-02-11T14:54:41.578827Z", - "start_time": "2025-02-11T14:54:41.573382Z" + "end_time": "2025-02-13T09:36:52.737860Z", + "start_time": "2025-02-13T09:36:51.459915Z" } }, "cell_type": "code", "source": [ + "import calendar\n", + "\n", "cerebro = bt.Cerebro()\n", "\n", "data_feed = bt.feeds.PandasData(dataname=df)\n", - "cerebro.adddata(data_feed)" - ], - "id": "e8d5d0798ade1de8", - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 39 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-11T14:54:41.630454Z", - "start_time": "2025-02-11T14:54:41.626259Z" - } - }, - "cell_type": "code", - "source": [ + "cerebro.adddata(data_feed)\n", "# 初始资金 100,000,000\n", "cerebro.broker.setcash(100000000.0)\n", "# 佣金,双边各 0.0003\n", @@ -311,73 +62,18 @@ "cerebro.addanalyzer(bt.analyzers.TimeReturn, _name='pnl') # 返回收益率时序数据\n", "cerebro.addanalyzer(bt.analyzers.AnnualReturn, _name='_AnnualReturn') # 年化收益率\n", "cerebro.addanalyzer(bt.analyzers.SharpeRatio, _name='_SharpeRatio') # 夏普比率\n", - "cerebro.addanalyzer(bt.analyzers.DrawDown, _name='_DrawDown') # 回撤" - ], - "id": "3b96d94a8ef3b7d4", - "outputs": [], - "execution_count": 40 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-02-11T14:54:42.085236Z", - "start_time": "2025-02-11T14:54:41.716867Z" - } - }, - "cell_type": "code", - "source": [ + "cerebro.addanalyzer(bt.analyzers.DrawDown, _name='_DrawDown') # 回撤\n", + "\n", + "\n", "# 创建策略类\n", - "class DoubleMAStrategy(bt.Strategy):\n", - " \"\"\"\n", - " 这是一个基于简单移动平均线交叉的策略。\n", - " 参数:\n", - " - params = (short_window, long_window)\n", - " short_window: 短期均线窗口(默认 10 天)\n", - " long_window: 长期均线窗口(默认 30 天)\n", - " \"\"\"\n", - " params = (\n", - " ('short_window', 10), # 短期均线窗口\n", - " ('long_window', 30) # 长期均线窗口\n", - " )\n", - "\n", - " def __init__(self):\n", - " # 初始化短期和长期移动平均线\n", - " self.sma_short = bt.indicators.SimpleMovingAverage(\n", - " self.data.close, period=self.params.short_window, plotname='Short SMA'\n", - " )\n", - " self.sma_long = bt.indicators.SimpleMovingAverage(\n", - " self.data.close, period=self.params.long_window, plotname='Long SMA'\n", - " )\n", - "\n", - " # 记录交易状态(是否持仓)和订单信息\n", - " self.order = None\n", - " self.is_in_position = False\n", - "\n", + "class TestStrategy(bt.Strategy):\n", " def next(self):\n", - " \"\"\"\n", - " 在每个交易日执行的逻辑。\n", - " \"\"\"\n", - " # 检查是否有待处理的订单,如果有则跳过\n", - " if self.order:\n", - " return\n", - "\n", - " # 获取当前的短期和长期均线值\n", - " sma_short_value = self.sma_short[0]\n", - " sma_long_value = self.sma_long[0]\n", - "\n", - " # 如果短期均线向上穿过长期均线,且没有持仓\n", - " if sma_short_value > sma_long_value and not self.is_in_position:\n", - " # 发出买入信号\n", - " self.log(f'BUY CREATE, {self.data.close[0]:.2f}')\n", - " self.order = self.buy() # 下买单\n", - " self.is_in_position = True\n", - "\n", - " # 如果短期均线向下穿过长期均线,且有持仓\n", - " elif sma_short_value < sma_long_value and self.is_in_position:\n", - " # 发出卖出信号\n", - " self.log(f'SELL CREATE, {self.data.close[0]:.2f}')\n", - " self.order = self.sell() # 下卖单\n", - " self.is_in_position = False\n", + " curr_date = self.datetime.date()\n", + " _, last_day_month = calendar.monthrange(curr_date.year, curr_date.month)\n", + " if curr_date.day == 1:\n", + " self.buy()\n", + " elif curr_date.day == last_day_month:\n", + " self.sell()\n", "\n", " def log(self, txt, dt=None):\n", " \"\"\"\n", @@ -386,57 +82,30 @@ " dt = dt or self.datas[0].datetime.date(0)\n", " print(f'{dt.isoformat()}, {txt}')\n", "\n", - " def notify_order(self, order):\n", - " \"\"\"\n", - " 订单状态改变时调用。\n", - " \"\"\"\n", - " if order.status in [order.Submitted, order.Accepted]:\n", - " # 订单提交和接受时,无需处理\n", - " return\n", - "\n", - " # 检查订单是否已完成\n", - " if order.status in [order.Completed]:\n", - " if order.isbuy():\n", - " self.log(\n", - " f'BUY EXECUTED, Price: {order.executed.price:.2f}, Cost: {order.executed.value:.2f}, Comm: {order.executed.comm:.2f}'\n", - " )\n", - " elif order.issell():\n", - " self.log(\n", - " f'SELL EXECUTED, Price: {order.executed.price:.2f}, Cost: {order.executed.value:.2f}, Comm: {order.executed.comm:.2f}'\n", - " )\n", - "\n", - " # 或者订单因某些原因被拒绝\n", - " elif order.status in [order.Canceled, order.Margin, order.Rejected]:\n", - " self.log('Order Canceled/Margin/Rejected')\n", - "\n", - " # 重置订单\n", - " self.order = None\n", - "\n", "\n", "# 将编写的策略添加给大脑,别忘了 !\n", - "cerebro.addstrategy(DoubleMAStrategy)\n", + "cerebro.addstrategy(TestStrategy)\n", "\n", "print('初始资金: %.2f' % cerebro.broker.getvalue())\n", "results = cerebro.run()\n", "print('最终资金: %.2f' % cerebro.broker.getvalue())\n", - "\n", "# 获取分析结果\n", "strat = results[0]\n", "print('夏普比率:', strat.analyzers._SharpeRatio.get_analysis()['sharperatio'])\n", "print('最大回撤:', strat.analyzers._DrawDown.get_analysis()['max']['drawdown'])\n", "\n", - "# 返回日度收益率序列\n", - "daily_return = pd.Series(strat.analyzers.pnl.get_analysis())\n", - "# 打印评价指标\n", - "print(\"--------------- AnnualReturn -----------------\")\n", - "print(strat.analyzers._AnnualReturn.get_analysis())\n", - "print(\"--------------- SharpeRatio -----------------\")\n", - "print(strat.analyzers._SharpeRatio.get_analysis())\n", - "print(\"--------------- DrawDown -----------------\")\n", - "print(strat.analyzers._DrawDown.get_analysis())\n", + "# # 返回日度收益率序列\n", + "# daily_return = pd.Series(strat.analyzers.pnl.get_analysis())\n", + "# # 打印评价指标\n", + "# print(\"--------------- AnnualReturn -----------------\")\n", + "# print(strat.analyzers._AnnualReturn.get_analysis())\n", + "# print(\"--------------- SharpeRatio -----------------\")\n", + "# print(strat.analyzers._SharpeRatio.get_analysis())\n", + "# print(\"--------------- DrawDown -----------------\")\n", + "# print(strat.analyzers._DrawDown.get_analysis())\n", "\n", "# 绘制结果图表\n", - "cerebro.plot(style='candlestick')" + "cerebro.plot(style='candlestick', width=20, height=10)" ], "id": "45f8133af2348b95", "outputs": [ @@ -445,253 +114,9 @@ "output_type": "stream", "text": [ "初始资金: 100000000.00\n", - "2011-02-21, BUY CREATE, 4.49\n", - "2011-02-22, BUY EXECUTED, Price: 4.49, Cost: 4.49, Comm: 0.00\n", - "2011-03-23, SELL CREATE, 4.52\n", - "2011-03-24, SELL EXECUTED, Price: 4.52, Cost: 4.49, Comm: 0.00\n", - "2011-03-31, BUY CREATE, 4.52\n", - "2011-04-01, BUY EXECUTED, Price: 4.52, Cost: 4.52, Comm: 0.00\n", - "2011-05-23, SELL CREATE, 5.03\n", - "2011-05-24, SELL EXECUTED, Price: 5.00, Cost: 4.52, Comm: 0.00\n", - "2011-07-05, BUY CREATE, 4.89\n", - "2011-07-06, BUY EXECUTED, Price: 4.86, Cost: 4.86, Comm: 0.00\n", - "2011-08-02, SELL CREATE, 4.78\n", - "2011-08-03, SELL EXECUTED, Price: 4.71, Cost: 4.86, Comm: 0.00\n", - "2011-09-06, BUY CREATE, 4.60\n", - "2011-09-07, BUY EXECUTED, Price: 4.63, Cost: 4.63, Comm: 0.00\n", - "2011-09-13, SELL CREATE, 4.64\n", - "2011-09-14, SELL EXECUTED, Price: 4.65, Cost: 4.63, Comm: 0.00\n", - "2011-09-21, BUY CREATE, 4.79\n", - "2011-09-22, BUY EXECUTED, Price: 4.74, Cost: 4.74, Comm: 0.00\n", - "2011-09-22, SELL CREATE, 4.69\n", - "2011-09-23, SELL EXECUTED, Price: 4.61, Cost: 4.74, Comm: 0.00\n", - "2011-10-28, BUY CREATE, 4.79\n", - "2011-10-31, BUY EXECUTED, Price: 4.79, Cost: 4.79, Comm: 0.00\n", - "2011-11-21, SELL CREATE, 4.48\n", - "2011-11-22, SELL EXECUTED, Price: 4.47, Cost: 4.79, Comm: 0.00\n", - "2012-01-30, BUY CREATE, 4.70\n", - "2012-01-31, BUY EXECUTED, Price: 4.70, Cost: 4.70, Comm: 0.00\n", - "2012-03-16, SELL CREATE, 4.61\n", - "2012-03-19, SELL EXECUTED, Price: 4.59, Cost: 4.70, Comm: 0.00\n", - "2012-04-23, BUY CREATE, 4.61\n", - "2012-04-24, BUY EXECUTED, Price: 4.61, Cost: 4.61, Comm: 0.00\n", - "2012-05-17, SELL CREATE, 4.48\n", - "2012-05-18, SELL EXECUTED, Price: 4.44, Cost: 4.61, Comm: 0.00\n", - "2012-08-08, BUY CREATE, 4.23\n", - "2012-08-09, BUY EXECUTED, Price: 4.22, Cost: 4.22, Comm: 0.00\n", - "2012-08-23, SELL CREATE, 4.11\n", - "2012-08-24, SELL EXECUTED, Price: 4.10, Cost: 4.22, Comm: 0.00\n", - "2012-10-29, BUY CREATE, 3.66\n", - "2012-10-30, BUY EXECUTED, Price: 3.66, Cost: 3.66, Comm: 0.00\n", - "2012-11-22, SELL CREATE, 3.72\n", - "2012-11-23, SELL EXECUTED, Price: 3.73, Cost: 3.66, Comm: 0.00\n", - "2012-12-11, BUY CREATE, 3.99\n", - "2012-12-12, BUY EXECUTED, Price: 4.00, Cost: 4.00, Comm: 0.00\n", - "2013-04-02, SELL CREATE, 5.79\n", - "2013-04-03, SELL EXECUTED, Price: 5.82, Cost: 4.00, Comm: 0.00\n", - "2013-05-14, BUY CREATE, 5.46\n", - "2013-05-15, BUY EXECUTED, Price: 5.46, Cost: 5.46, Comm: 0.00\n", - "2013-06-17, SELL CREATE, 5.45\n", - "2013-06-18, SELL EXECUTED, Price: 5.51, Cost: 5.46, Comm: 0.00\n", - "2013-08-05, BUY CREATE, 4.54\n", - "2013-08-06, BUY EXECUTED, Price: 4.51, Cost: 4.51, Comm: 0.00\n", - "2013-12-05, SELL CREATE, 6.14\n", - "2013-12-06, SELL EXECUTED, Price: 6.15, Cost: 4.51, Comm: 0.00\n", - "2014-02-17, BUY CREATE, 5.47\n", - "2014-02-18, BUY EXECUTED, Price: 5.44, Cost: 5.44, Comm: 0.00\n", - "2014-02-27, SELL CREATE, 5.14\n", - "2014-02-28, SELL EXECUTED, Price: 5.10, Cost: 5.44, Comm: 0.00\n", - "2014-04-03, BUY CREATE, 4.92\n", - "2014-04-04, BUY EXECUTED, Price: 4.89, Cost: 4.89, Comm: 0.00\n", - "2014-07-17, SELL CREATE, 5.33\n", - "2014-07-18, SELL EXECUTED, Price: 5.31, Cost: 4.89, Comm: 0.00\n", - "2014-07-28, BUY CREATE, 5.99\n", - "2014-07-29, BUY EXECUTED, Price: 6.02, Cost: 6.02, Comm: 0.00\n", - "2014-08-28, SELL CREATE, 5.64\n", - "2014-08-29, SELL EXECUTED, Price: 5.64, Cost: 6.02, Comm: 0.00\n", - "2014-10-31, BUY CREATE, 6.13\n", - "2014-11-03, BUY EXECUTED, Price: 6.21, Cost: 6.21, Comm: 0.00\n", - "2015-01-21, SELL CREATE, 8.02\n", - "2015-01-22, SELL EXECUTED, Price: 7.97, Cost: 6.21, Comm: 0.00\n", - "2015-03-13, BUY CREATE, 8.34\n", - "2015-03-16, BUY EXECUTED, Price: 8.40, Cost: 8.40, Comm: 0.00\n", - "2015-05-15, SELL CREATE, 10.40\n", - "2015-05-18, SELL EXECUTED, Price: 10.23, Cost: 8.40, Comm: 0.00\n", - "2015-06-04, BUY CREATE, 11.02\n", - "2015-06-05, BUY EXECUTED, Price: 11.24, Cost: 11.24, Comm: 0.00\n", - "2015-06-23, SELL CREATE, 10.06\n", - "2015-06-24, SELL EXECUTED, Price: 10.09, Cost: 11.24, Comm: 0.00\n", - "2015-10-19, BUY CREATE, 7.58\n", - "2015-10-20, BUY EXECUTED, Price: 7.54, Cost: 7.54, Comm: 0.00\n", - "2015-12-08, SELL CREATE, 8.05\n", - "2015-12-09, SELL EXECUTED, Price: 8.02, Cost: 7.54, Comm: 0.00\n", - "2015-12-25, BUY CREATE, 8.35\n", - "2015-12-28, BUY EXECUTED, Price: 8.37, Cost: 8.37, Comm: 0.00\n", - "2016-01-05, SELL CREATE, 7.67\n", - "2016-01-06, SELL EXECUTED, Price: 7.68, Cost: 8.37, Comm: 0.00\n", - "2016-03-10, BUY CREATE, 6.83\n", - "2016-03-11, BUY EXECUTED, Price: 6.80, Cost: 6.80, Comm: 0.00\n", - "2016-04-28, SELL CREATE, 7.17\n", - "2016-04-29, SELL EXECUTED, Price: 7.16, Cost: 6.80, Comm: 0.00\n", - "2016-06-08, BUY CREATE, 7.07\n", - "2016-06-13, BUY EXECUTED, Price: 7.04, Cost: 7.04, Comm: 0.00\n", - "2016-09-14, SELL CREATE, 7.43\n", - "2016-09-19, SELL EXECUTED, Price: 7.42, Cost: 7.04, Comm: 0.00\n", - "2016-10-28, BUY CREATE, 7.52\n", - "2016-10-31, BUY EXECUTED, Price: 7.50, Cost: 7.50, Comm: 0.00\n", - "2016-12-21, SELL CREATE, 7.51\n", - "2016-12-22, SELL EXECUTED, Price: 7.50, Cost: 7.50, Comm: 0.00\n", - "2017-01-24, BUY CREATE, 7.60\n", - "2017-01-25, BUY EXECUTED, Price: 7.60, Cost: 7.60, Comm: 0.00\n", - "2017-03-17, SELL CREATE, 7.63\n", - "2017-03-20, SELL EXECUTED, Price: 7.62, Cost: 7.60, Comm: 0.00\n", - "2017-05-31, BUY CREATE, 7.54\n", - "2017-06-01, BUY EXECUTED, Price: 7.54, Cost: 7.54, Comm: 0.00\n", - "2017-08-17, SELL CREATE, 8.67\n", - "2017-08-18, SELL EXECUTED, Price: 8.62, Cost: 7.54, Comm: 0.00\n", - "2017-08-29, BUY CREATE, 9.71\n", - "2017-08-30, BUY EXECUTED, Price: 9.72, Cost: 9.72, Comm: 0.00\n", - "2017-09-28, SELL CREATE, 9.05\n", - "2017-09-29, SELL EXECUTED, Price: 9.08, Cost: 9.72, Comm: 0.00\n", - "2017-10-18, BUY CREATE, 9.73\n", - "2017-10-19, BUY EXECUTED, Price: 9.68, Cost: 9.68, Comm: 0.00\n", - "2017-12-14, SELL CREATE, 10.82\n", - "2017-12-15, SELL EXECUTED, Price: 10.73, Cost: 9.68, Comm: 0.00\n", - "2018-01-04, BUY CREATE, 11.02\n", - "2018-01-05, BUY EXECUTED, Price: 10.99, Cost: 10.99, Comm: 0.00\n", - "2018-02-08, SELL CREATE, 10.43\n", - "2018-02-09, SELL EXECUTED, Price: 10.05, Cost: 10.99, Comm: 0.00\n", - "2018-04-23, BUY CREATE, 9.63\n", - "2018-04-24, BUY EXECUTED, Price: 9.68, Cost: 9.68, Comm: 0.00\n", - "2018-05-07, SELL CREATE, 8.99\n", - "2018-05-08, SELL EXECUTED, Price: 9.01, Cost: 9.68, Comm: 0.00\n", - "2018-07-27, BUY CREATE, 7.82\n", - "2018-07-30, BUY EXECUTED, Price: 7.88, Cost: 7.88, Comm: 0.00\n", - "2018-08-17, SELL CREATE, 7.45\n", - "2018-08-20, SELL EXECUTED, Price: 7.52, Cost: 7.88, Comm: 0.00\n", - "2018-08-24, BUY CREATE, 8.48\n", - "2018-08-27, BUY EXECUTED, Price: 8.47, Cost: 8.47, Comm: 0.00\n", - "2018-11-19, SELL CREATE, 9.17\n", - "2018-11-20, SELL EXECUTED, Price: 9.09, Cost: 8.47, Comm: 0.00\n", - "2019-01-16, BUY CREATE, 8.86\n", - "2019-01-17, BUY EXECUTED, Price: 8.91, Cost: 8.91, Comm: 0.00\n", - "2019-05-10, SELL CREATE, 10.72\n", - "2019-05-13, SELL EXECUTED, Price: 10.42, Cost: 8.91, Comm: 0.00\n", - "2019-06-19, BUY CREATE, 11.05\n", - "2019-06-20, BUY EXECUTED, Price: 11.14, Cost: 11.14, Comm: 0.00\n", - "2019-09-03, SELL CREATE, 12.22\n", - "2019-09-04, SELL EXECUTED, Price: 12.23, Cost: 11.14, Comm: 0.00\n", - "2019-09-09, BUY CREATE, 12.55\n", - "2019-09-10, BUY EXECUTED, Price: 12.47, Cost: 12.47, Comm: 0.00\n", - "2019-11-18, SELL CREATE, 14.05\n", - "2019-11-19, SELL EXECUTED, Price: 14.05, Cost: 12.47, Comm: 0.00\n", - "2019-12-19, BUY CREATE, 14.14\n", - "2019-12-20, BUY EXECUTED, Price: 14.14, Cost: 14.14, Comm: 0.00\n", - "2020-01-23, SELL CREATE, 13.28\n", - "2020-02-03, SELL EXECUTED, Price: 11.95, Cost: 14.14, Comm: 0.00\n", - "2020-04-24, BUY CREATE, 11.31\n", - "2020-04-27, BUY EXECUTED, Price: 11.36, Cost: 11.36, Comm: 0.00\n", - "2020-05-26, SELL CREATE, 11.14\n", - "2020-05-27, SELL EXECUTED, Price: 11.15, Cost: 11.36, Comm: 0.00\n", - "2020-06-08, BUY CREATE, 11.84\n", - "2020-06-09, BUY EXECUTED, Price: 11.85, Cost: 11.85, Comm: 0.00\n", - "2020-06-18, SELL CREATE, 11.09\n", - "2020-06-19, SELL EXECUTED, Price: 11.06, Cost: 11.85, Comm: 0.00\n", - "2020-07-06, BUY CREATE, 13.63\n", - "2020-07-07, BUY EXECUTED, Price: 14.17, Cost: 14.17, Comm: 0.00\n", - "2020-07-30, SELL CREATE, 11.62\n", - "2020-07-31, SELL EXECUTED, Price: 11.54, Cost: 14.17, Comm: 0.00\n", - "2020-08-18, BUY CREATE, 13.17\n", - "2020-08-19, BUY EXECUTED, Price: 13.13, Cost: 13.13, Comm: 0.00\n", - "2020-12-18, SELL CREATE, 15.96\n", - "2020-12-21, SELL EXECUTED, Price: 15.90, Cost: 13.13, Comm: 0.00\n", - "2021-01-08, BUY CREATE, 17.25\n", - "2021-01-11, BUY EXECUTED, Price: 17.38, Cost: 17.38, Comm: 0.01\n", - "2021-03-02, SELL CREATE, 18.81\n", - "2021-03-03, SELL EXECUTED, Price: 18.75, Cost: 17.38, Comm: 0.01\n", - "2021-04-08, BUY CREATE, 18.74\n", - "2021-04-09, BUY EXECUTED, Price: 18.87, Cost: 18.87, Comm: 0.01\n", - "2021-04-14, SELL CREATE, 17.96\n", - "2021-04-15, SELL EXECUTED, Price: 18.04, Cost: 18.87, Comm: 0.01\n", - "2021-04-23, BUY CREATE, 20.24\n", - "2021-04-26, BUY EXECUTED, Price: 20.75, Cost: 20.75, Comm: 0.01\n", - "2021-06-18, SELL CREATE, 19.84\n", - "2021-06-21, SELL EXECUTED, Price: 19.79, Cost: 20.75, Comm: 0.01\n", - "2021-08-19, BUY CREATE, 17.82\n", - "2021-08-20, BUY EXECUTED, Price: 17.49, Cost: 17.49, Comm: 0.01\n", - "2021-09-01, SELL CREATE, 15.66\n", - "2021-09-02, SELL EXECUTED, Price: 15.76, Cost: 17.49, Comm: 0.00\n", - "2021-09-15, BUY CREATE, 17.10\n", - "2021-09-16, BUY EXECUTED, Price: 16.91, Cost: 16.91, Comm: 0.01\n", - "2021-09-24, SELL CREATE, 15.20\n", - "2021-09-27, SELL EXECUTED, Price: 15.07, Cost: 16.91, Comm: 0.00\n", - "2021-10-15, BUY CREATE, 17.22\n", - "2021-10-18, BUY EXECUTED, Price: 17.04, Cost: 17.04, Comm: 0.01\n", - "2021-11-08, SELL CREATE, 15.26\n", - "2021-11-09, SELL EXECUTED, Price: 15.31, Cost: 17.04, Comm: 0.00\n", - "2021-12-13, BUY CREATE, 16.00\n", - "2021-12-14, BUY EXECUTED, Price: 15.91, Cost: 15.91, Comm: 0.00\n", - "2021-12-22, SELL CREATE, 15.23\n", - "2021-12-23, SELL EXECUTED, Price: 15.24, Cost: 15.91, Comm: 0.00\n", - "2022-04-06, BUY CREATE, 14.36\n", - "2022-04-07, BUY EXECUTED, Price: 14.35, Cost: 14.35, Comm: 0.00\n", - "2022-05-05, SELL CREATE, 13.42\n", - "2022-05-06, SELL EXECUTED, Price: 13.15, Cost: 14.35, Comm: 0.00\n", - "2022-06-27, BUY CREATE, 12.69\n", - "2022-06-28, BUY EXECUTED, Price: 12.68, Cost: 12.68, Comm: 0.00\n", - "2022-07-15, SELL CREATE, 11.60\n", - "2022-07-18, SELL EXECUTED, Price: 11.60, Cost: 12.68, Comm: 0.00\n", - "2022-08-31, BUY CREATE, 11.37\n", - "2022-09-01, BUY EXECUTED, Price: 11.28, Cost: 11.28, Comm: 0.00\n", - "2022-09-27, SELL CREATE, 10.83\n", - "2022-09-28, SELL EXECUTED, Price: 10.78, Cost: 11.28, Comm: 0.00\n", - "2022-11-16, BUY CREATE, 10.54\n", - "2022-11-17, BUY EXECUTED, Price: 10.53, Cost: 10.53, Comm: 0.00\n", - "2023-02-13, SELL CREATE, 12.32\n", - "2023-02-14, SELL EXECUTED, Price: 12.35, Cost: 10.53, Comm: 0.00\n", - "2023-05-11, BUY CREATE, 11.46\n", - "2023-05-12, BUY EXECUTED, Price: 11.43, Cost: 11.43, Comm: 0.00\n", - "2023-05-23, SELL CREATE, 10.89\n", - "2023-05-24, SELL EXECUTED, Price: 10.88, Cost: 11.43, Comm: 0.00\n", - "2023-07-25, BUY CREATE, 10.70\n", - "2023-07-26, BUY EXECUTED, Price: 10.64, Cost: 10.64, Comm: 0.00\n", - "2023-08-22, SELL CREATE, 10.38\n", - "2023-08-23, SELL EXECUTED, Price: 10.37, Cost: 10.64, Comm: 0.00\n", - "2024-01-24, BUY CREATE, 8.52\n", - "2024-01-25, BUY EXECUTED, Price: 8.52, Cost: 8.52, Comm: 0.00\n", - "2024-04-02, SELL CREATE, 9.64\n", - "2024-04-03, SELL EXECUTED, Price: 9.62, Cost: 8.52, Comm: 0.00\n", - "2024-04-03, BUY CREATE, 9.55\n", - "2024-04-08, BUY EXECUTED, Price: 9.52, Cost: 9.52, Comm: 0.00\n", - "2024-04-12, SELL CREATE, 9.19\n", - "2024-04-15, SELL EXECUTED, Price: 9.20, Cost: 9.52, Comm: 0.00\n", - "2024-04-25, BUY CREATE, 9.69\n", - "2024-04-26, BUY EXECUTED, Price: 9.67, Cost: 9.67, Comm: 0.00\n", - "2024-06-12, SELL CREATE, 9.94\n", - "2024-06-13, SELL EXECUTED, Price: 9.95, Cost: 9.67, Comm: 0.00\n", - "2024-07-11, BUY CREATE, 9.91\n", - "2024-07-12, BUY EXECUTED, Price: 9.90, Cost: 9.90, Comm: 0.00\n", - "2024-08-01, SELL CREATE, 10.05\n", - "2024-08-02, SELL EXECUTED, Price: 10.00, Cost: 9.90, Comm: 0.00\n", - "2024-08-23, BUY CREATE, 10.25\n", - "2024-08-26, BUY EXECUTED, Price: 10.28, Cost: 10.28, Comm: 0.00\n", - "2024-09-09, SELL CREATE, 9.64\n", - "2024-09-10, SELL EXECUTED, Price: 9.65, Cost: 10.28, Comm: 0.00\n", - "2024-09-27, BUY CREATE, 11.18\n", - "2024-09-30, BUY EXECUTED, Price: 11.37, Cost: 11.37, Comm: 0.00\n", - "2024-11-11, SELL CREATE, 11.60\n", - "2024-11-12, SELL EXECUTED, Price: 11.58, Cost: 11.37, Comm: 0.00\n", - "2024-12-11, BUY CREATE, 11.73\n", - "2024-12-12, BUY EXECUTED, Price: 11.73, Cost: 11.73, Comm: 0.00\n", - "最终资金: 99999999.28\n", - "夏普比率: -397881.8123929003\n", - "最大回撤: 1.3845487341405394e-05\n", - "--------------- AnnualReturn -----------------\n", - "OrderedDict({2011: -9.213936280616508e-10, 2012: 1.915670733154684e-09, 2013: 2.964960210682932e-08, 2014: 2.2974054214586204e-08, 2015: 1.4307666162949317e-10, 2016: 3.4014060457110418e-09, 2017: 1.4808521964226884e-08, 2018: -1.3726451753015567e-08, 2019: 4.0747820229114495e-08, 2020: -3.001912651789951e-08, 2021: -6.445832656520878e-08, 2022: -1.589108589161725e-08, 2023: -2.338556348568943e-09, 2024: 6.482463899004642e-09})\n", - "--------------- SharpeRatio -----------------\n", - "OrderedDict({'sharperatio': -397881.8123929003})\n", - "--------------- DrawDown -----------------\n", - "AutoOrderedDict({'len': 946, 'drawdown': 1.1915326811452441e-05, 'moneydown': 11.91532814502716, 'max': AutoOrderedDict({'len': 946, 'drawdown': 1.3845487341405394e-05, 'moneydown': 13.845488891005516})})\n" + "最终资金: 99982677.31\n", + "夏普比率: -249.45833106775427\n", + "最大回撤: 0.03266399519865984\n" ] }, { @@ -710,7 +135,7 @@ "" ], "text/html": [ - "
" + "
" ] }, "metadata": {}, @@ -722,12 +147,12 @@ "[[
]]" ] }, - "execution_count": 41, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 41 + "execution_count": 45 } ], "metadata": {