{ "cells": [ { "cell_type": "markdown", "id": "269f1eda-a703-4e4b-b76d-04847dfb8373", "metadata": {}, "source": [ "# 寻参优化" ] }, { "cell_type": "raw", "id": "4672bf94-9a61-4c7d-955e-ae4b727d7d78", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "" ] }, { "cell_type": "markdown", "id": "bdd77792-4c86-4570-b23c-5eb4128df5e8", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 示例策略" ] }, { "cell_type": "markdown", "id": "2f9dd6ef-ac94-4396-a474-c778d088dc41", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "#### 策略参数\n", "\n", "我们继续使用前面教程中的双均线策略,并加入更加两个可优化指标参数:\n", "\n", "* ``min_stock_price``: 最低股价。低价股交易时滑点可能更严重,但价格下限过高,会减少开仓机会。\n", "* ``min_volatility``: 最低波动率。波动率太低的股票,可能长期占用仓位,降低资金利用率;波动率过高的股票,可能日内同时触发止盈/止损,降低回测结果的可靠性,更可能导致当日买入即出现较大亏损。" ] }, { "cell_type": "code", "execution_count": 1, "id": "e3bf2678-6489-47ab-90b9-f928737a5ada", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from tradepy.strategy.base import BacktestStrategy, BuyOption\n", "from tradepy.strategy.factors import FactorsMixin\n", "from tradepy.decorators import tag\n", "\n", "\n", "class MovingAverageCrossoverStrategy(BacktestStrategy, FactorsMixin):\n", "\n", " @tag(outputs=[\"ema10_ref1\", \"sma30_ref1\"], notna=True)\n", " def moving_averages_ref1(self, ema10, sma30) -> pd.Series:\n", " return ema10.shift(1), sma30.shift(1)\n", " \n", " def should_buy(self, orig_open, sma120, ema10, sma30, typical_price, atr,\n", " ema10_ref1, sma30_ref1, close, company) -> BuyOption | None:\n", " if \"ST\" in company:\n", " return\n", " \n", " if orig_open < self.min_stock_price:\n", " return\n", "\n", " volatility = 100 * atr / typical_price\n", " if volatility < self.min_volatility:\n", " return\n", "\n", " if (ema10 > sma120) and (ema10_ref1 < sma30_ref1) and (ema10 > sma30):\n", " return close, 1\n", "\n", " def should_sell(self, ema10, sma30, ema10_ref1, sma30_ref1):\n", " return (ema10_ref1 > sma30_ref1) and (ema10 < sma30)\n", "\n", " def pre_process(self, df: pd.DataFrame) -> pd.DataFrame:\n", " return df.query('market != \"科创板\"').copy()" ] }, { "cell_type": "code", "execution_count": null, "id": "b466e42e-9800-4fd0-a7c3-e52d0486c3f0", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "896121b9-cff4-4a78-8f22-6c77e782097d", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "#### 参数空间\n", "\n", "由于该策略使用静态止盈/止损,止盈/止损点位也应加入可调参数。我们可以设计如下的参数搜寻空间:\n", "\n", "* ``min_stock_price``: [3, 5, 10]\n", "* ``min_volatility``: [2, 4, 7]\n", "* ``止盈``: [4.5, 8]\n", "* ``止损``: [3, 5]\n", "\n", "使用网格搜索时,这一共有 3 x 3 x 2 x 2 = 36组参数。另外,如果策略带有一定随机性(比如当日触发买入信号标的数量,大于`最大开仓数量`时,需要随机选择标的),每组参数还应回测多轮,再以平均收益评估。假设每组跑20轮,最终需要运行 ``36 * 20 = 720`` 次回测。\n" ] }, { "cell_type": "raw", "id": "c26136da-3c77-4c08-94ff-b0a7ee1c5c98", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "
\n", "网格空间会随着参数数量而呈指数增长,只适合参数数量和搜索范围都较少的情况下使用。TradePy未来将支持贝叶斯优化和梯度优化等更加高效的超参数搜索算法。\n", "
" ] }, { "cell_type": "code", "execution_count": null, "id": "f8fc1cd3-ed2b-4a70-a2f8-d9ccca357cd1", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "30ae9c11-7a36-4267-9708-234f58174348", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 寻参计算\n", "\n", "详见如下代码。要特别注意的是, **策略代码需放到Python文件**,在这个例子中,我们将其放在当前工作目录下的 ``ma_cross.py``" ] }, { "cell_type": "code", "execution_count": 3, "id": "d6002fd1-d13a-441e-b111-1de46dfa8bd8", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2023-08-23 20:27:03.539 | INFO | tradepy.optimization.schedulers:__init__:41 - 任务工作目录: /Users/dilu/.tradepy/optimizer/2023-08-23/20:27:03\n" ] } ], "source": [ "from tradepy.optimization.schedulers import OptimizationScheduler\n", "from tradepy.optimization.result import OptimizationResult\n", "from tradepy.core.conf import BacktestConf, StrategyConf, OptimizationConf, SlippageConf\n", "\n", "\n", "conf = OptimizationConf(\n", " repetition=20,\n", " backtest=BacktestConf(\n", " cash_amount=1e6,\n", " broker_commission_rate=0.01,\n", " min_broker_commission_fee=0,\n", " strategy=StrategyConf(\n", " strategy_class=\"ma_cross.MovingAverageCrossoverStrategy\",\n", " take_profit_slip=SlippageConf(\n", " method='max_jump',\n", " params=1\n", " ),\n", " stop_loss_slip=SlippageConf(\n", " method='max_pct',\n", " params=0.1\n", " ),\n", " max_position_opens=10,\n", " max_position_size=0.25,\n", " min_trade_amount=8000,\n", " )\n", " )\n", ")\n", "\n", "param_search_ranges = [\n", " { \"name\": \"min_stock_price\", \"range\": [3, 5, 10] },\n", " { \"name\": \"min_volatility\", \"range\": [2, 4, 7] },\n", " { \"name\": \"stop_loss\", \"range\": [3, 5] },\n", " { \"name\": \"take_profit\", \"range\": [4.5, 8] },\n", "]\n", "\n", "scheduler = OptimizationScheduler(conf, param_search_ranges)\n", "result: OptimizationResult = scheduler.run(data_df=df)" ] }, { "cell_type": "raw", "id": "e8ba05ae-c10e-4517-8b02-ee2f9ec75ab2", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "
\n", "
    \n", "
  1. 止损和止盈是两个特殊的可搜参数,名字必须为 stop_losstake_profit
  2. \n", "
  3. OptimizationScheduler.rundata_df 可以是通过 StocksDailyBarsDepot 加载的原始日K数据,也可以是已经包含了策略指标的。如果是原始数据, OptimizationScheduler 会先调用策略类预生成含指标的回测数据,并保存到本次寻参的工作目录中。
  4. \n", "
\n", "
" ] }, { "cell_type": "markdown", "id": "6d1d8e3c-8c5a-4858-b696-191f5e498f01", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "部分运行日志如下。默认设置下,计算并行数为 **CPU核数 * 0.75** (向下取整),运行时可访问 ``http://localhost:8787`` 查看Dask worker的状态等监控信息。" ] }, { "cell_type": "raw", "id": "58ada604-3cdf-44f9-9bd9-53b7499cf1a0", "metadata": { "editable": true, "raw_mimetype": "text/html", "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "
\n", "
    \n", "
  1. 请根据可用内存来调整并行数,可通过设置 OptimizationScheduler.rundask_args 的worker数量来控制。
  2. \n", "
  3. 每次运行寻参都会创建一些工作目录,位置是 ~/.tradepy/optimizer,时间久了请注意自行清理。
  4. \n", "
\n", "
" ] }, { "cell_type": "markdown", "id": "92e270de-c3c5-484b-910c-e2229fbe1687", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "```\n", "tradepy.optimization.schedulers:__init__:40 - 任务工作目录: /Users/dilu/.tradepy/optimizer/2023-08-21/13:56:47\n", ">>> 获取待计算因子\n", "- 待计算: [sma30, sma120, ema10, typical_price, atr, moving_averages_ref1, ema10_ref1, sma30_ref1]\n", ">>> 计算每支个股的后复权价格以及技术因子\n", "100%|█████████████████████████████████| 5042/5042 [01:03<00:00, 79.60it/s]\n", "tradepy.optimization.schedulers:_output_indicators_df:67 - 回测数据已保存至: /Users/dilu/.tradepy/optimizer/2023-08-21/13:56:47/dataset.pkl\n", "tradepy.optimization.schedulers:run:148 - 启动Dask集群: id=Scheduler-ca6ee5e8-8b84-4bad-bf21-e4b2ccb7c383, dashboard port=8787, \n", "tradepy.optimization.schedulers:_run:210 - 第1次执行\n", "tradepy.optimization.schedulers:__run_once:189 - 获取第1个参数批, 批数量 = 36\n", "tradepy.optimization.schedulers:submit_tasks_and_patch_results:100 - 提交36个任务\n", "tradepy.optimization.worker:run:62 - 开始执行任务: 8d9daaa5-8b60-4f0a-9426-22ffe747ff72\n", "tradepy.optimization.worker:run:62 - 开始执行任务: 4e5d4149-b0df-47b3-bc88-496f1481db7b\n", "tradepy.optimization.worker:run:62 - 开始执行任务: 138f81e3-7cf7-49c3-83c1-e65a1bbc9bc8\n", "tradepy.optimization.worker:run:62 - 开始执行任务: cb12e919-8633-4ee1-8141-91657d8cc637\n", "tradepy.optimization.worker:run:62 - 开始执行任务: c3b4de0c-4cc4-462a-8c13-7da35f5313e0\n", "tradepy.optimization.worker:run:62 - 开始执行任务: d3037570-fc75-44c3-b7bf-5507242500d9\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "dd0d45de-249f-4b4b-b634-23c79ef19313", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "2d7d47f2-5c8b-4bbf-81f6-420ac8f6f848", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 分析结果\n", "\n", "如果以收益率为排序,则最佳一组参数为 ``{ min_stock_price: 3, min_volatility: 2, stop_loss: 5, take_profit: 8 }``,按平均值计,1850%,胜率40.15%,最大回测-19.09%,夏普比率0.88。另外,我们也可以观察到到盈亏比和胜率呈负相关,这也是交易策略的一个普遍规律。" ] }, { "cell_type": "code", "execution_count": 6, "id": "c3f84965-4a37-42a2-b602-05cd8ff5f269", "metadata": { "editable": true, "scrolled": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "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", " \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", "
收益率胜率最大回撤开仓数夏普比率
meanstdmeanstdmeanstdmeanstdmeanstd
min_stock_pricemin_volatilitystop_losstake_profit
3.02.05.08.0185.4321.1640.630.38-19.091.618015.2590.130.880.15
5.02.05.08.0161.0315.5540.300.31-19.351.607703.0578.940.700.12
4.5152.9514.4053.670.32-21.511.898321.3544.740.650.13
3.02.05.04.5152.8413.0453.580.25-19.161.698523.6533.410.650.11
10.02.05.04.5122.5011.1853.480.30-30.243.867369.9046.040.340.12
8.0119.5811.5839.840.33-28.542.336684.1077.820.310.12
3.04.05.08.0107.829.4339.750.31-38.161.826770.1041.680.190.09
10.02.03.08.0102.539.0629.200.28-32.133.227086.1541.320.120.11
3.02.03.08.098.5611.8729.000.39-28.423.938180.9587.920.060.16
5.04.05.08.097.767.9439.470.19-39.021.966506.7540.970.090.08
\n", "
" ], "text/plain": [ " 收益率 胜率 \\\n", " mean std mean \n", "min_stock_price min_volatility stop_loss take_profit \n", "3.0 2.0 5.0 8.0 185.43 21.16 40.63 \n", "5.0 2.0 5.0 8.0 161.03 15.55 40.30 \n", " 4.5 152.95 14.40 53.67 \n", "3.0 2.0 5.0 4.5 152.84 13.04 53.58 \n", "10.0 2.0 5.0 4.5 122.50 11.18 53.48 \n", " 8.0 119.58 11.58 39.84 \n", "3.0 4.0 5.0 8.0 107.82 9.43 39.75 \n", "10.0 2.0 3.0 8.0 102.53 9.06 29.20 \n", "3.0 2.0 3.0 8.0 98.56 11.87 29.00 \n", "5.0 4.0 5.0 8.0 97.76 7.94 39.47 \n", "\n", " 最大回撤 \\\n", " std mean std \n", "min_stock_price min_volatility stop_loss take_profit \n", "3.0 2.0 5.0 8.0 0.38 -19.09 1.61 \n", "5.0 2.0 5.0 8.0 0.31 -19.35 1.60 \n", " 4.5 0.32 -21.51 1.89 \n", "3.0 2.0 5.0 4.5 0.25 -19.16 1.69 \n", "10.0 2.0 5.0 4.5 0.30 -30.24 3.86 \n", " 8.0 0.33 -28.54 2.33 \n", "3.0 4.0 5.0 8.0 0.31 -38.16 1.82 \n", "10.0 2.0 3.0 8.0 0.28 -32.13 3.22 \n", "3.0 2.0 3.0 8.0 0.39 -28.42 3.93 \n", "5.0 4.0 5.0 8.0 0.19 -39.02 1.96 \n", "\n", " 开仓数 夏普比率 \\\n", " mean std mean \n", "min_stock_price min_volatility stop_loss take_profit \n", "3.0 2.0 5.0 8.0 8015.25 90.13 0.88 \n", "5.0 2.0 5.0 8.0 7703.05 78.94 0.70 \n", " 4.5 8321.35 44.74 0.65 \n", "3.0 2.0 5.0 4.5 8523.65 33.41 0.65 \n", "10.0 2.0 5.0 4.5 7369.90 46.04 0.34 \n", " 8.0 6684.10 77.82 0.31 \n", "3.0 4.0 5.0 8.0 6770.10 41.68 0.19 \n", "10.0 2.0 3.0 8.0 7086.15 41.32 0.12 \n", "3.0 2.0 3.0 8.0 8180.95 87.92 0.06 \n", "5.0 4.0 5.0 8.0 6506.75 40.97 0.09 \n", "\n", " \n", " std \n", "min_stock_price min_volatility stop_loss take_profit \n", "3.0 2.0 5.0 8.0 0.15 \n", "5.0 2.0 5.0 8.0 0.12 \n", " 4.5 0.13 \n", "3.0 2.0 5.0 4.5 0.11 \n", "10.0 2.0 5.0 4.5 0.12 \n", " 8.0 0.12 \n", "3.0 4.0 5.0 8.0 0.09 \n", "10.0 2.0 3.0 8.0 0.11 \n", "3.0 2.0 3.0 8.0 0.16 \n", "5.0 4.0 5.0 8.0 0.08 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "metrics_df = result.get_total_metrics()\n", "metrics_df[:10]" ] }, { "cell_type": "code", "execution_count": null, "id": "f52f7f99-2f5e-433d-9cb5-ca39baceba40", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "5a813e80-6492-4766-a43b-9758c90f1c0a", "metadata": {}, "source": [ "最后,我们还可通过热力图,来大致评估参数组表现的有效性。 然而问题是,只有当可调参数数量(维度数)2或3时,才能直接生成直观可视的热力图,而在本教程中有4个可调参数。此时,我们可以利用一些降维算法(比如PCA、t-SNE算法),将4个维度的参数数据映射到2维空间,即可在2维热力图上进行分析。 ``OptimizationResult.plot_performance_metric`` 集成了t-SNE算法实现,当参数组数量 >= 3,会先将参数集映射到2D再生成热力图,并用给定的指标值着色。\n", "\n", "在做映射时,t-SNE算法会在低维空间中保留原高维空间中的数据相似度,**这样我们可以很直观地评估“相似的参数组,是否表现也类似”**。如果一组最佳参数是有效的,在热力图上它的周围也应该是一片“热力高原”,意味该策略确实存在一个符合其盈利能力的参数空间。\n", "\n", "**结果如下**:虽然存在表现显然不行的参数类型(普遍为波动率较大或最低股价太高),但似乎并没有显著优势的参数类型。" ] }, { "cell_type": "code", "execution_count": 5, "id": "71f080a8-0d69-4e48-9e99-dd4f84b392b1", "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "marker": { "color": [ 185.43, 161.03, 152.95, 152.84, 122.5, 119.58, 107.82, 102.53, 98.56, 97.76, 94.17, 94.08, 90.87, 72.05, 71.81, 70.5, 69.58, 68.5, 65.84, 51.93, 51.01, 50.72, 50.69, 47.97, 40.23, 38.55, 38.05, 35.13, 31.98, 31.39, 29.65, 28.83, 28.65, 27.8, 26.65, 25.73 ], "colorscale": [ [ 0, "rgb(255,247,236)" ], [ 0.125, "rgb(254,232,200)" ], [ 0.25, "rgb(253,212,158)" ], [ 0.375, "rgb(253,187,132)" ], [ 0.5, "rgb(252,141,89)" ], [ 0.625, "rgb(239,101,72)" ], [ 0.75, "rgb(215,48,31)" ], [ 0.875, "rgb(179,0,0)" ], [ 1, "rgb(127,0,0)" ] ], "showscale": true }, "mode": "markers", "text": [ "[收益率=185.43]: min_stock_price=3.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=161.03]: min_stock_price=5.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=152.95]: min_stock_price=5.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=152.84]: min_stock_price=3.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=122.5]: min_stock_price=10.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=119.58]: min_stock_price=10.0 \n\n; min_volatility=2.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=107.82]: min_stock_price=3.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=102.53]: min_stock_price=10.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=98.56]: min_stock_price=3.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=97.76]: min_stock_price=5.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=94.17]: min_stock_price=5.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=94.08]: min_stock_price=5.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=90.87]: min_stock_price=3.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=72.05]: min_stock_price=10.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=71.81]: min_stock_price=3.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=70.5]: min_stock_price=10.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=69.58]: min_stock_price=10.0 \n\n; min_volatility=4.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=68.5]: min_stock_price=5.0 \n\n; min_volatility=2.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=65.84]: min_stock_price=10.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=51.93]: min_stock_price=5.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=51.01]: min_stock_price=3.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=50.72]: min_stock_price=5.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=50.69]: min_stock_price=3.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=47.97]: min_stock_price=10.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=4.5", "[收益率=40.23]: min_stock_price=5.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=38.55]: min_stock_price=3.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=38.05]: min_stock_price=10.0 \n\n; min_volatility=7.0 \n\n; stop_loss=5.0 \n\n; take_profit=8.0", "[收益率=35.13]: min_stock_price=10.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=31.98]: min_stock_price=10.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=31.39]: min_stock_price=10.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=29.65]: min_stock_price=5.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=28.83]: min_stock_price=3.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=28.65]: min_stock_price=5.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=27.8]: min_stock_price=5.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0", "[收益率=26.65]: min_stock_price=3.0 \n\n; min_volatility=4.0 \n\n; stop_loss=3.0 \n\n; take_profit=4.5", "[收益率=25.73]: min_stock_price=3.0 \n\n; min_volatility=7.0 \n\n; stop_loss=3.0 \n\n; take_profit=8.0" ], "type": "scatter", "x": [ -95.50928497314453, -100.31423950195312, 59.306583404541016, 64.05766296386719, 13.639066696166992, 70.39337158203125, -82.94906616210938, 63.07798767089844, -107.72559356689453, -87.8187026977539, 52.18246078491211, -111.88227081298828, 65.82304382324219, 10.796248435974121, 79.06100463867188, 25.3913516998291, 61.48965835571289, 73.74273681640625, 54.345008850097656, 10.68001937866211, 1.1147456169128418, -75.74700164794922, -71.53742980957031, 7.860955715179443, -38.48728942871094, -26.26222038269043, 68.9306869506836, 17.62590980529785, -238.68150329589844, 22.368539810180664, 0.715844988822937, 10.409199714660645, 65.16593933105469, -28.59605598449707, 79.7880630493164, -36.26253128051758 ], "y": [ -19.3621883392334, -3.5707571506500244, -65.75657653808594, -54.24131774902344, 57.65755081176758, 75.4726791381836, -15.566580772399902, 65.85311889648438, -21.931671142578125, 0.3368588089942932, -75.73926544189453, -8.217851638793945, -42.22404861450195, 69.79645538330078, -59.58387756347656, 59.95315170288086, 83.70374298095703, -72.46910858154297, 74.06255340576172, -69.21578216552734, -64.65242004394531, 3.057140588760376, -10.74303150177002, 93.56454467773438, 11.899100303649902, -6.383380889892578, 154.3435516357422, 95.06417846679688, -17.02490234375, 72.05030822753906, -50.2471923828125, -54.50849914550781, -82.31713104248047, 8.086801528930664, -46.63190841674805, -2.782599925994873 ] } ], "layout": { "autosize": true, "margin": { "b": 30, "l": 20, "r": 20, "t": 30 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "autorange": true, "range": [ -257.92353488768464, 99.0300946411026 ], "type": "linear" }, "yaxis": { "autorange": true, "range": [ -99.22146551949638, 171.2478861127581 ], "type": "linear" } } }, "image/png": "iVBORw0KGgoAAAANSUhEUgAABE8AAAFoCAYAAACmM9U+AAAAAXNSR0IArs4c6QAAIABJREFUeF7snQl8VNXZ/38zk52EQAiriIL7vhS12rqhoqC4UEWURbQuFLeCIhb/KhHQWhdE3Fr6VgtxQ1q14IILS1Vwx61arSgoKCQkAQLZZ+b/uTeZIcnMhLn3nrucc3/zed/PdDLnnHue7/Mk1W+fe24gGo1GwRcJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEBSAgHKE1YGCZAACZAACZAACZAACZAACZAACZAACaQmQHnC6iABEiABEiABEiABEiABEiABEiABEiCBDghQnrA8SIAESIAESIAESIAESIAESIAESIAESIDyhDVAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAuYIsPPEHDfOIgESIAESIAESIAESIAESIAESIAES8AkByhOfJJphkgAJkAAJkAAJkAAJkAAJkAAJkAAJmCNAeWKOG2eRAAmQAAmQAAmQAAmQAAmQAAmQAAn4hADliU8SzTBJgARIgARIgARIgARIgARIgARIgATMEaA8MceNs0iABEiABEiABEiABEiABEiABEiABHxCgPLEJ4lmmCRAAiRAAiRAAiRAAiRAAiRAAiRAAuYIUJ6Y48ZZJEACJEACJEACJEACJEACJEACJEACPiFAeeKTRDNMEiABEiABEiABEiABEiABEiABEiABcwQoT8xx4ywSIAESIAESIAESIAESIAESIAESIAGfEKA88UmiGSYJkAAJkAAJkAAJkAAJkAAJkAAJkIA5ApQn5rhxFgmQAAmQAAmQAAmQAAmQAAmQAAmQgE8IUJ74JNEMkwRIgARIgARIgARIgARIgARIgARIwBwByhNz3DiLBEiABEiABEiABEiABEiABEiABEjAJwQoT3ySaIZJAiRAAiRAAiRAAiRAAiRAAiRAAiRgjgDliTlunEUCJEACJEACJEACJEACJEACJEACJOATApQnPkk0wyQBEiABEiABEiABEiABEiABEiABEjBHgPLEHDfOIgESIAESIAESIAESIAESIAESIAES8AkByhOfJJphkgAJkAAJkAAJkAAJkAAJkAAJkAAJmCNAeWKOG2eRAAmQAAmQAAmQAAmQAAmQAAmQAAn4hADliU8SzTBJgARIgARIgARIgARIgARIgARIgATMEaA8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9pbvUxbxErMSuDmDgMh7aVkF8nKyIRYUjbfxmuGMWug4Sl4znJn3jqPm5wrWQTwC+7s+kJozCCRzfaisqkFjY1N0zUVnkOEoScBaBBwrT6yVJkZLAiRAAiRAAiRAAiRAAiRAAiRAAiRgFgHKE7PI87wkQAIkQAIkQAIkQAIkQAIkQAIkQAKWIEB5Yok0MUgSIAESIAESIAESIAESIAESIAESIAGzCFCemEWe5yUBEiABEiABEiABEiABEiABEiABErAEAcoTS6SJQZIACZAACZAACZAACZAACZAACZAACZhFgPLELPI8LwmQAAmQAAmQAAmQAAmQAAmQAAmQgCUIUJ5YIk0MkgRIgARIgARIgARIgARIgARIgARIwCwClCdmked5SYAESIAESIAESIAESIAESIAESIAELEGA8sQSaWKQJEACJEACJEACJEACJEACJEACJEACZhGgPDGLPM9LAiRAAiRAAiRAAiRAAiRAAiRAAiRgCQKUJ5ZIE4MkARIgARIgARIgARIgARIgARIgARIwiwDliVnkeV4SIAESIAESIAESIAESIAESIAESIAFLEKA8sUSaGCQJkAAJkAAJkAAJkAAJkAAJkAAJkIBZBChPzCLP85IACZAACZAACZAACZAACZAACZAACViCAOWJJdLEIEmABEiABEiABEiABEiABEiABEiABMwiQHliFnmelwRIgARIgARIgARIgARIgARIgARIwBIE/h/MHIdL6jQMmQAAAABJRU5ErkJggg==", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "result.plot_performance_metric(\"收益率\")" ] }, { "cell_type": "code", "execution_count": null, "id": "1ca35b0c-d861-4016-ab8f-d2583a659e4e", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "797811fa-7498-4913-9d4c-a5137ecef7bb", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ "### 自定义优化算法\n", "\n", "TODO" ] }, { "cell_type": "code", "execution_count": null, "id": "64c78c1f-56d7-4a49-b4c4-3b2dfb1efd03", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.4" } }, "nbformat": 4, "nbformat_minor": 5 }