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",
- " date | \n",
- " volume | \n",
- " open | \n",
- " close | \n",
- " high | \n",
- " low | \n",
- " macd | \n",
- " macd_dif | \n",
- " macd_dea | \n",
- " datetime_text | \n",
- "
\n",
- " \n",
- " | datetime | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- " | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 2011-01-04 | \n",
- " 20110104 | \n",
- " 358840.61 | \n",
- " 4.44526 | \n",
- " 4.50145 | \n",
- " 4.54641 | \n",
- " 4.39749 | \n",
- " -0.003 | \n",
- " -0.088 | \n",
- " -0.087 | \n",
- " 20110104 | \n",
- "
\n",
- " \n",
- " | 2011-01-05 | \n",
- " 20110105 | \n",
- " 237462.63 | \n",
- " 4.49302 | \n",
- " 4.47616 | \n",
- " 4.53236 | \n",
- " 4.47054 | \n",
- " 0.003 | \n",
- " -0.085 | \n",
- " -0.087 | \n",
- " 20110105 | \n",
- "
\n",
- " \n",
- " | 2011-01-06 | \n",
- " 20110106 | \n",
- " 206531.27 | \n",
- " 4.47616 | \n",
- " 4.44245 | \n",
- " 4.51831 | \n",
- " 4.41154 | \n",
- " 0.003 | \n",
- " -0.085 | \n",
- " -0.086 | \n",
- " 20110106 | \n",
- "
\n",
- " \n",
- " | 2011-01-07 | \n",
- " 20110107 | \n",
- " 770482.21 | \n",
- " 4.43964 | \n",
- " 4.61104 | \n",
- " 4.71501 | \n",
- " 4.41154 | \n",
- " 0.027 | \n",
- " -0.070 | \n",
- " -0.083 | \n",
- " 20110107 | \n",
- "
\n",
- " \n",
- " | 2011-01-10 | \n",
- " 20110110 | \n",
- " 361872.13 | \n",
- " 4.56046 | \n",
- " 4.49021 | \n",
- " 4.60823 | \n",
- " 4.46773 | \n",
- " 0.026 | \n",
- " -0.067 | \n",
- " -0.080 | \n",
- " 20110110 | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 2024-12-25 | \n",
- " 20241225 | \n",
- " 1475282.94 | \n",
- " 11.86000 | \n",
- " 11.92000 | \n",
- " 12.02000 | \n",
- " 11.84000 | \n",
- " 0.050 | \n",
- " 0.080 | \n",
- " 0.055 | \n",
- " 20241225 | \n",
- "
\n",
- " \n",
- " | 2024-12-26 | \n",
- " 20241226 | \n",
- " 1000074.70 | \n",
- " 11.92000 | \n",
- " 11.86000 | \n",
- " 11.93000 | \n",
- " 11.78000 | \n",
- " 0.051 | \n",
- " 0.087 | \n",
- " 0.062 | \n",
- " 20241226 | \n",
- "
\n",
- " \n",
- " | 2024-12-27 | \n",
- " 20241227 | \n",
- " 1290012.28 | \n",
- " 11.87000 | \n",
- " 11.83000 | \n",
- " 11.90000 | \n",
- " 11.66000 | \n",
- " 0.044 | \n",
- " 0.089 | \n",
- " 0.067 | \n",
- " 20241227 | \n",
- "
\n",
- " \n",
- " | 2024-12-30 | \n",
- " 20241230 | \n",
- " 1351846.36 | \n",
- " 11.78000 | \n",
- " 11.95000 | \n",
- " 11.97000 | \n",
- " 11.78000 | \n",
- " 0.052 | \n",
- " 0.100 | \n",
- " 0.074 | \n",
- " 20241230 | \n",
- "
\n",
- " \n",
- " | 2024-12-31 | \n",
- " 20241231 | \n",
- " 1475367.33 | \n",
- " 11.93000 | \n",
- " 11.70000 | \n",
- " 11.99000 | \n",
- " 11.70000 | \n",
- " 0.020 | \n",
- " 0.086 | \n",
- " 0.076 | \n",
- " 20241231 | \n",
- "
\n",
- " \n",
- "
\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": {