精华内容
下载资源
问答
  • 2021-01-19 16:17:50

    买卖时间的选择与买进价格的选择是一切趋势预判与大盘交易策略制定的2个最重要的考量因素。因为所有重大的趋势转折,几乎都会发生“在一个重要的时间,见到一个重要的价位”之后。

    但是把握了时间与价位,不一定能保证我们赢钱。无论是重要的时间还是重要的价位,说到底都只是一种选项、概率,而非必然。所有重大的趋势转折,几乎都发生“在一个重要的时间,见到一个重要价位”之后,但不是所有的时间与价位的重合点都会发生重大的转折。因此,在把握了时间与价位后,还有一个非常重要的问题就是仓位管理。

    说到仓位管理,我首先想到的是一本《迷失的天才》。这是一个发生在美国的真实故事,说的是一位天才的数学教授在大学生中网罗了一批数学天才,关起门来训练他们玩21点。然后指挥他们转战于各个赌场,通过相互间的配合,赢了很多钱,最终又成为各大赌场的黑名单中人与追杀对象。

    21点的游戏规则是,大家围桌而坐,由专人依次发牌,每个人都可根据自己手中的牌点,决定继续要还是不要。大家都停止要牌后,就摊牌比大小。在21点范围内,谁大谁就赢,超过21点就算爆掉,为无条件输家。所有的闲家都可根据自己的意愿停止要牌,只有庄家的牌点必须大于16点。在这样的规则下,剩下的牌中,大点子牌越多,庄家爆掉的可能性越大。因此,这群数学天才们将7计为0点;小于7的牌算作小牌,计为-1;大于7的算作大牌,计为+1。赌场玩21点一般都以3副牌为一局,3副牌中,小于和大于7的牌都为72张。3副牌共152张,玩到一半时,剩下几十张牌中,大点子牌占大多数时,庄家爆掉的可能性就会迅速上升。

    因此,他们总是几人一组装作谁都不认识谁,进入赌场,由其中的一位先在某一张牌桌上以很小的赌注玩。他的任务是计算剩下的牌中正数与负数的比例。一旦达到理想比例,就发出一个暗号,然后离开牌桌,将座位让给某一个闻讯前来的同伴。

    21点本质上一种随机游戏,每个人的输赢概率理论上均为50%,但由于当牌点一样大时为庄家赢,因此,庄家实际赢率为51%强。

    但是,通过上述方式,这帮数学天才可使自己的赢率超过52%。新来的同伴只要加大下注金额,理论上就能赢钱。况且新来的同伴还会根据手中的牌点大小,成倍提高或适当减少下注金额,进一步提高赢的概率。就用这种方法,这群数学天才几乎横扫了美国所有的赌场,为自己赢得了相当可观的金钱。

    在这场游戏中,最难的是在大家将牌摊开的一瞬间,你能快速而准确地记住已出现过的大牌与小牌数量、计算出这一局还剩多少张牌、大牌与小牌的比例,而且要不动声色,不能让人察觉你在观察其他人摊开来的牌。这需要很高的数学天分。至于玩的方法则非常简单,说到底就是一个输赢概率和下注数量:赢的概率越高,下注的数额越大。

    如果把下注金额看作股票仓位,那么在上述例子中,这群数学天才赢就赢在仓位管理上。在一局牌刚开始时,由于闲家赢的概率宏观上不到49%,因此他们只是以小小的注额玩玩,也就是以轻仓为主。偶尔拿到一手好牌,比如牌点非常接近于21点时,才稍稍下大一点的注,把仓位提高一点。当剩下的牌局明显地有利于闲家时,就以重仓为主。当宏观上赢面居大,微观上又拿了一手好牌时,就把仓位提高到最大限度。

     

    好的仓位管理都来自赌场经验。在这方面,最有名的是凯利公式。在这一公式中,我们需要考虑的是3个参数:涨跌概率?如果上涨,幅度有多大?如果下跌,幅度有多大?然后再以下列公式计算出我们应该有的持仓比例:

    持仓比例=(可能的上涨幅度×上涨概率-可能的下跌幅度)÷可能的上涨幅度

    以08年的1664点为例,上证指数见到1664点的第二天,我刚巧去第一财经广播电台,晨光说我们有一档直播节目,既然你来了就做一期吧。于是赶鸭a子上架,做了一期关于股市的直播节目。在节目中,笔者旗帜鲜明地说出了自己观点:全线满仓,死了我也认!

    当时大家对后市预测纷呈,有看1500点的,有看1300点的,也有看1200点甚至更低的。我之所以亮出全线满仓的观点,并不是说我当时就认为1664点肯定是铁底——老实说,直到当年的12月份,我依然无法确认1664点就是调整的最低点。而是各个方面的分析结果告诉我,1664点结束调整的概率已达到了80%;如果上涨,收益可超过60%;如果继续下跌,损失大约为10%。根据凯利公式,我们可在这里建立超过80%的仓位。

    首先,历史上3波最大的调整,其下跌幅度依次为73%、78%、55%,平均约69%。而从6124点下跌到1664点,跌幅已达73%。考虑到78%的这波调整(1558点到325点)在中途有过一次长达5个月的中期整理,而中途没有出现过中期整理的那波调整(1429点到386点)幅度为73%,因此,1664点结束调整的概率至少已超过了70%。

    其次,按照笔者曾经提出过的观点,以94年7月的最低收盘指数333点为起点,所有333的黄金倍数都为重要的价位。而333的5倍为1665点。把这一因素加上去,1664点后大盘上涨概率可提高到80%以上。

    其三,根据技术分析的基本原理,原高点突破后会成为日后的支撑点。那么,6124点前上证指数一共有如下几个高点:2245点、1765点、1558点。一**调整最多跌破前面2个高点,而不会跌破第3个高点,即所谓事不过三。2245点、1756点都未能阻挡住大盘下跌,那么1500点几乎可肯定会成为大盘的最低点。这样,情况就变得非常简单,在1664点买进,如果继续下跌,我们所承受的损失约为10%。如果上涨呢?按照0.236为最低返回比例计算,1664+(6124-1664)×0.236=2716点,盈利为63%。

    (80×63-10)÷63=80

    以凯利公式来计算持仓比例,永远得不到100%的结果,只要结果大于70%,就可视为“可满仓”。

    整个2010年,我提醒我们客户满仓的次数仅2次,一次是2010年春节前一周,一次是2319点之前一周。提醒大家将仓位降到30%以下也只有2次,分别是3181点前2天和3186点当天。这并不是因为我能确认那就是最低点或最高点——如能确认,2次3180点应该叫大家清仓才对,而是运用仓位管理公式的结果。

    并不是当仓位管理公式的计算结果大于70%后我们都可满仓操作。这里还需考虑2个问题:一个是预期上涨的幅度有多大,一个是我们的资金量有多大。

    以2661点来说,从时间与价位两个角度分析,后市上涨概率也是大于80%,而且盈亏比也可达到3比1以上的程度,根据凯利公式,也是一个可以满仓的时点,但我只建议将仓位保持在60%-70%,原因是我最多只能看到10%的预期上升空间。这样的预期盈利空间,对小资金足够,但对大资金却无法大赌特赌,就好比一个最大下注金额只能是100元的赌场,是无法拿100万去赌的。

    股市与赌场,性质不同,道理一样,没有彻底摊牌前,一切分析预测,获得的都只是一种可能、一种概率。如果把这种可能与概率当做绝对和必然,那不是一个初出茅庐的愣头青,就是一个江湖骗子,或是一个赌红了眼的赌徒。至于怕着**说自己的XXX线如何神奇,XX指标如何绝对,那不用说,肯定是炒股炒得倾家荡产后来做股神,骗几个授课费的。

    一切皆为可能,一切皆有概率,把可能与概率转化为我们的持仓策略,才能真正让我们的投资建立在脚踏实地的基础上。

    ----------------------------------------------------------------------------------------------

    推荐阅读:

    1.一个量化策略师的自白(好文强烈推荐)

    2.股票期货经典的量化交易策略都在这里了!(源码)

    3.期货/股票数据大全查询(历史/实时/Tick/财务等)

    4.史上最全的Python定量金融三方库汇总

    5.干货 | 量化选股策略模型大全

    6.量化金融经典理论、重要模型、发展简史大全

    更多相关内容
  • 量化仓位管理的一点想法源码 附图 通达信.doc
  • 常用的仓位管理方法

    2022-04-24 11:12:28
    常用的仓位管理方法一共有三种:漏斗形仓位管理、矩形仓位管理以及金字塔仓位管理法。 1、漏斗形仓位管理 又称倒金字塔管理法。 这种管理在于初始进场资金量比较小,仓位比较轻,如果单边行情持续,则后市逐步加仓...

    在投资中,有几件很重要的事儿,一是买什么,二是买多少,三是何时卖。
    其中,买什么的关键在于选择一只品牌,何时卖的关键在于如何止盈。而买多少则关系到仓位管理的问题。

    一、仓位管理

    仓位控制是风险控制的前提,在投资的生涯里,仓位决定成败。没有仓位管理的意识是大部分投资者亏损的主要原因。
    常用的仓位管理方法一共有三种:漏斗形仓位管理、矩形仓位管理以及金字塔仓位管理法。

    1、漏斗形仓位管理

    又称倒金字塔管理法。
    在这里插入图片描述
    这种管理在于初始进场资金量比较小,仓位比较轻,如果单边行情持续,则后市逐步加仓,加仓比例越来越大,进而摊薄成本。
    这种方法,仓位控制呈下方小、上方大的一种形态,很像一个漏斗,所以称为漏斗形的仓位管理方法。
    优点在于初始风险比较小,在不爆仓的情况下,漏斗越高,盈利越可观。
    但值得注意的是,漏斗型仓位管理法强调越跌越买,承担风险较大,个人投资者需谨慎使用。
    事实上,要使用漏斗型仓位管理法,最重要的一点是投资对象必须有反弹甚至反转的可能。
    这种方法适合于左侧交易,简单来说就是抄底的过程,获得的是未来可能出现的主升浪。

    展开全文
  • 这一次我们创建一个简单的EA交易,它可以取得当前交易品种的仓位属性并且在人工交易的时候在自定义信息面板上显示它们。信息面板将使用图形对象创建,显示的信息在每当有订单时都会刷新,这将比系列中的前一篇文章...

    简介

    这一次我们创建一个简单的EA交易,它可以取得当前交易品种的仓位属性并且在人工交易的时候在自定义信息面板上显示它们。信息面板将使用图形对象创建,显示的信息在每当有订单时都会刷新,这将比系列中的前一篇文章("MQL5 Cookbook: 获取仓位属性")中每次必须人工运行脚本要方便得多。

    开发一个EA交易

    让我们从图形对象开始,为了创建信息面板,我们需要用于背景,抬头,名称以及仓位属性值的对象。背景和抬头将需要一个不随价格移动的长方形,长方形可以通过长方形标签或者文本图形对象创建, 名字和对象属性值可以用文本标签来制作。

    在我们继续编写代码之前,我们先要准备信息面板的布局,这样做的方便之处是我们可以通过在设置窗口中快速修改任何属性来自定义信息面板的外观。

    每个对象都有一个设置窗口,可以通过选择对象的右键菜单中打开,设置窗口也可以从对象列表 (Ctrl+B)打开,您可以选择所需的对象并点击属性。信息面板的布局显示如下,它也可以用于在写代码的时候估算大小和坐标。当信息面板的代码完成以后,您需要人工删除这些布局对象,因为EA交易无法“看到”它们,也就无法从图表上删除它们。

    图 1. 准备信息面板的布局.

    图 1. 准

    展开全文
  • 海龟策略作为一个公开 几十年的策略依然被很多人青睐和使用,就在于其对于仓位的管理,充分考虑了风险在仓位管理中的重要性。 固定分数法 这里,笔者根据 《资金管理方法及其应用》这本书介绍固定分数法的资金...

    引言

    在上一次我们提到了凯利公式,很多人可能会想去套用凯利公式到我们的投资策略里面去,但是实际操作中, 我们会发现,很多量化平台,回测数据并不够,譬如说,掘金量化平台,它提供了胜率,收益情况等,但是 并没有赔率的结果,那么,我们是不是就不能去进行相应的凯利公式计算了呢?

    凯利公式的套用

    其实换一种思路,我们完全自己在策略中进行运算,笔者这里简单起见,对沪深 300 指数进行买入和平仓 操作,交易策略用的是双均线策略,为了看出策略在交易标的上的胜率与赔率表现,笔者每次都是满仓买入 满仓卖出,同时,简单起见同时为了看到足够多的交易,这里用了 1 分钟数据择时,不再加入 T+1 限制。 策略代码如下所示:

    # coding=utf-8
    
    """
    双均线策略
    """
    from gm.api import *
    from datetime import datetime
    from datetime import date
    from datetime import timedelta
    from collections import deque
    import numpy as np
    import talib
    
    # 常用常量设置
    DATE_STR = "%Y-%m-%d"
    TIME_STR = "%Y-%m-%d %H:%M:%S"
    HIST_WINDOW = 50
    LIMIT_LISTED_MONTH = 2
    SHORT_PERIOD = 5
    LONG_PERIOD = 10
    
    def init(context):
        stock = 'SHSE.000300'
        context.stock_prices = deque(maxlen=HIST_WINDOW)
        context.risk_ratio = 1.0
        context.entry_price = 0.
        context.profit = 0.
        context.loss = 0.
        context.win_counter = 0
        context.loss_counter = 0
        start_today = datetime.strftime(date.today()-timedelta(days=1), DATE_STR)
    
        history_bars = history_n(symbol=stock,
                                frequency='60s',
                                count=HIST_WINDOW,
                                end_time=start_today,
                                adjust=ADJUST_PREV,
                                adjust_end_time=context.backtest_end_time)
        for bar in history_bars:
            context.stock_prices.append(bar.close)
    
        subscribe(stock, '60s')
    
    def on_bar(context, bars):
    
        # ----------------------- 策略执行 -----------------------------------------
        # 数据不足数据滑窗要求,返回
        if len(context.stock_prices) < HIST_WINDOW:
            return
    
        pos = context.account().position(symbol=bars[0].symbol, side=PositionSide_Long)
        open_vol = int(context.account().cash.available * context.risk_ratio /bars[0].close/100)*100
        # 指标计算
        closes = np.array(context.stock_prices)
    
        ma5 = talib.SMA(closes, SHORT_PERIOD)
        ma10 = talib.SMA(closes, LONG_PERIOD)
    
        if ma5[-2] < ma10[-2] and ma5[-1] >= ma10[-1]:
            flag_golden_cross = True
            flag_dead_cross = False
        elif ma5[-2] > ma10[-2] and ma5[-1] <= ma10[-1]:
            flag_dead_cross = True
            flag_golden_cross = False
        else:
            flag_dead_cross = False
            flag_golden_cross = False
    
        if pos is None and flag_golden_cross:
            order_volume(symbol=bars[0].symbol,
                         volume=open_vol,
                         side=OrderSide_Buy,
                         order_type=OrderType_Limit,
                         position_effect=PositionEffect_Open,
                         price=bars[0].open)
            context.entry_price = bars[0].open
        if pos is not None and flag_dead_cross:
            order_volume(symbol=bars[0].symbol,
                         volume=pos.volume,
                         side=OrderSide_Sell,
                         order_type=OrderType_Limit,
                         position_effect=PositionEffect_Close,
                         price=bars[0].open)
            if bars[0].open > context.entry_price:
                context.profit = context.profit + (bars[0].open - context.entry_price)*pos.volume
                context.win_counter += 1
            else:
                context.loss = context.loss + (context.entry_price - bars[0].open)*pos.volume
                context.loss_counter += 1
    
        # ----------------------- 数据填充 -----------------------------------------
        context.stock_prices.append(bars[0].close)
    
        if datetime.strftime(bars[0].eob, TIME_STR) == context.backtest_end_time:
            print("总盈利为: ", context.profit, "\n"
                "总亏损为: ", context.loss, "\n",
                "实际盈利为: ", context.profit-context.loss)
            print("盈利次数为: ", context.win_counter, "\n", 
                "亏损次数为: ", context.loss_counter, 
                "胜率为: ", context.win_counter/(context.win_counter+context.loss_counter))
            print("平均每次盈利为: ", context.profit/context.win_counter, "\n", 
                "平均每次亏损为: ", context.loss/context.loss_counter, "\n",
                "盈亏比为: ", context.profit*context.loss_counter/context.loss/context.win_counter)
    
    if __name__ == '__main__':
        run(strategy_id='5127bcbb-8da3-11e8-9ce5-f48c50eb367a',
            filename='main.py',
            backtest_initial_cash=10000000,
            mode=2,
            token='64c33fc82f334e11e1138eefea8ffc241db4a2a0',
            backtest_start_time='2015-02-01 09:30:00',
            backtest_end_time='2017-04-05 15:00:00')

    运行结果,得到结果如下:

    可能有读者会奇怪,为何我们自己计算出来的盈亏结果和掘金量化终端显示有差异,其实这里的差异来自于最后 一笔交易,可能策略仅仅做了买入的操作,而没有卖出,导致的浮动盈亏,实际如果读者去下载回测详细记录, 可以看到,如果将总盈利减去浮动盈亏,得到的结果和我们计算的结果一致。

    将策略中的 context.risk_ratio 改为 0.96, 可以看到,回测情况如下所示:

    盈利确实有增加,那么,是不是我们就可以按照凯利公式去进行投资了呢?

    讨论

    实际情况下,一般不会有人去按照凯利公式进行仓位配置的,凯利公式又被称为破产公式, 因为回测行情仅仅 针对于回测区间的行情对策略有效性的判断,当行情切换,或者哪怕行情不变,但是不同时间区间内,行情也不会 完全一样,回测时得到的胜率,盈亏比,仅供参考,给出一个大概区间范围,如果真的去按照凯利公式配置自己的 仓位,因为风险放的很大,往往一个极端行情过来,本金就会亏掉大半。

    因此,在我们评估回测绩效的时候, 最大回撤 往往是评估策略风险的极重要指标,因为这表明了在历史行情 中,我们可能承受的最大风险,根据这个风险,我们可以以此来评估配置一个合理的仓位。海龟策略作为一个公开 几十年的策略依然被很多人青睐和使用,就在于其对于仓位的管理,充分考虑了风险在仓位管理中的重要性。

    固定分数法

    这里,笔者根据 《资金管理方法及其应用》这本书介绍固定分数法的资金配置方案,并通过一个简单的示例,试图 给读者一个比较直观的感受。

    固定分数法介绍

    固定分数法是股市交易中最常用的一种方法,它有多种表现形式,但他们都建立在同意原则的基础上。实际使用这 种方法的目的是,让交易系统在每次交易中确定好投注的资金比例。 这种交易方式不同于凯利公式,其并不涉及到交易系统的各项参数,但却要考虑投资者的心理素质和可承受的损失 数额。

    假设我们可以承受的损失为可用资金的 f%, 用这个可承受损失金额除以我们设定的止损值,就可以得到我们 可以买进的合约数。譬如,我们有 100 万的资金,我们可承受的损失为 10 万,买入的股票我们能承受 50%的亏损,假如股票初始价格为 10 元,那么,我们可以买入股票数目为100000/(10*0.5)=200000 股。

    示例

    不同的可承受风险,对应的收益曲线可能差异巨大,这充分反映出盈亏同源的理念,可承受风险足够大,那么获取 超额收益的可能性也就相应变大;但是,当风险达到一定程度的时候,当交易数目足够多的时候,我们很可能出 出现本金都被亏损完的窘境,因此,确定好一个合理的,可控的风险度对于资金管理至关重要。

    这里,笔者利用双均线,在沪深 300 的成分股上进行简单的交易,代码如下,其中 context.risk_ratio 对应的是可承受的风险,为了避免出现买入股票太多,导致资金不够用的情况,笔者这里简单起见,设定了持仓 股票最多 20 支的限制,同时,由于持仓有不同股票,笔者这里简单采用可承受风险资金除以满足条件股票价格 作为买入股票数目

    from gm.api import *
    import numpy as np
    from collections import deque
    import datetime
    import talib
    
    
    DATE_STR = '%Y-%m-%d'
    TIME_STR = '%Y-%m-%d %H:%M:%S'
    
    
    def init(context):
        print('starting initialization')
        # 股票池
        context.stock_pool = get_constituents('SHSE.000300')
        # 订阅行情
        subscribe(context.stock_pool)
        # 量价信息存储
        context.dict_vol_price = {}
        # 开平仓信息
        context.dict_open_close_signal = {}
        # 时间窗
        context.hist_size = 20
        # 风险暴露
        context.risk_ratio = 0.1
        # 技术指标参数
        context.short_period = 5
        context.long_period = 10
        # 持仓股票种类
        context.set_hold_stock = set()
        context.hold_stock_limit = 20
        # 日期设置
        context.curr_bar_time = context.backtest_start_time
        curr_bar_time = datetime.datetime.strptime(context.curr_bar_time, TIME_STR)
        shift_bar_time = datetime.timedelta(days=1)
        pre_bar_time = datetime.datetime.strftime(curr_bar_time-shift_bar_time, TIME_STR)
        # 开平仓信息
        for stock in context.stock_pool:
            # 初始化开平仓信息
            context.dict_open_close_signal.setdefault(stock, False)
            # 定义存储时间窗内历史信息
            deque_open = deque(maxlen=context.hist_size)
            deque_high = deque(maxlen=context.hist_size)
            deque_low = deque(maxlen=context.hist_size)
            deque_close = deque(maxlen=context.hist_size)
            history_bars = history_n(
                symbol=stock,
                frequency='1d',
                count=context.hist_size,
                end_time=pre_bar_time,
                adjust=ADJUST_PREV,
                adjust_end_time=context.backtest_end_time
            )
            for bar in history_bars:
                deque_open.append(bar.open)
                deque_high.append(bar.high)
                deque_low.append(bar.low)
                deque_close.append(bar.close)
            context.dict_vol_price[stock] = [deque_open, deque_high, deque_low, deque_close]
        print('end initialization')
    
    
    def on_bar(context, bars):
        # 判断是否换日
        if datetime.datetime.strftime(context.now, DATE_STR) != context.curr_bar_time[0:10]:
            context.curr_bar_time = datetime.datetime.strftime(context.now, DATE_STR) + ' 09:30:00'
            # 重置开平仓信号
            for key in context.dict_open_close_signal:
                context.dict_open_close_signal[key] = False
    
        for bar in bars:
            context.dict_vol_price[bar.symbol][0].append(bar.open)
            context.dict_vol_price[bar.symbol][1].append(bar.high)
            context.dict_vol_price[bar.symbol][2].append(bar.low)
            context.dict_vol_price[bar.symbol][3].append(bar.close)
            # 如果用于计算的量不够
            if len(context.dict_vol_price[bar.symbol][0]) < context.hist_size:
                continue
            else:
                algo(context, bar)
    
    
    def algo(context, bar):
        # 获取仓位
        pos = context.account().position(symbol=bar.symbol, side=PositionSide_Long)
        open_vol = int(context.account().cash.available*context.risk_ratio/bar.close/100)*100
    
        # 如果没钱开仓,跳过该股票
        if open_vol <= 0:
            return
    
        # 计算指标
        closes = np.asarray(context.dict_vol_price[bar.symbol][3])
        ma5 = talib.SMA(closes, context.short_period)
        ma10 = talib.SMA(closes, context.long_period)
    
        if ma5[-2] <= ma10[-2] and ma5[-1] > ma10[-1]:
            flag_golden_cross = True
            flag_dead_cross = False
        elif ma5[-2] >= ma10[-2] and ma5[-1] < ma10[-1]:
            flag_dead_cross = True
            flag_golden_cross = False
        else:
            flag_dead_cross = False
            flag_golden_cross = False
    
        if pos is None and flag_golden_cross and len(context.set_hold_stock) < context.hold_stock_limit:
            if context.dict_open_close_signal[bar.symbol] is False:
                order_volume(symbol=bar.symbol,
                             volume=open_vol,
                             side=OrderSide_Buy,
                             order_type=OrderType_Market,
                             position_effect=PositionEffect_Open,
                             price=0,
                             )
                context.dict_open_close_signal[bar.symbol] = True
                context.set_hold_stock.add(bar.symbol)
        if pos is not None:
            if flag_dead_cross or pos.fpnl/pos.vwap <= -1.1 or pos.fpnl/pos.vwap > 1.3:
                if context.dict_open_close_signal[bar.symbol] is False:
                    # print('stock %s at date %s has fpnl %f' %(bar.symbol, context.now, pos.fpnl))
                    order_volume(symbol=bar.symbol,
                                 volume=pos.volume,
                                 side=OrderSide_Sell,
                                 order_type=OrderType_Market,
                                 position_effect=PositionEffect_Close,
                                 price=0,
                                 )
                    context.dict_open_close_signal[bar.symbol] = True
                    context.set_hold_stock.remove(bar.symbol)
    
    if __name__ == '__main__':
        run(strategy_id='e4fa3c86-8cb9-11e8-b011-f48c50eb367a',
            filename='main.py',
            mode=2,
            backtest_initial_cash=10000000,
            token='64c33fc82f334e11e1138eefea8ffc241db4a2a0',
            backtest_start_time='2016-06-17 13:00:00',
            backtest_end_time='2017-08-21 15:00:00')

    当设置 context.risk_ratio 为 0.1 和 0.2 的时候,回测绩效差异已然很大,具体见下图:

    而当风险设置到 0.4 的时候,回测结果甚至已经为负,说明,一味放大风险并不能带来收益率的提高,甚至会 导致不必要的亏损。

    写在最后

    篇幅所限,笔者仅介绍了固定分数法的仓位管理方法,其实,还有包括最优 f 值法,安全 f 值法,固定比例法,变动 比例法,不同仓位管理方法对应了不同的风险偏好,但是有一点是共通的,对于风险的控制,在仓位管理中是非常非常重要, 无论如何强调都不会过分。

    很多读者在炒股的时候,经常都会有满仓去操作的情况,往往持仓的股票一个细微的波动就给自己的心理带来非常大的影响, 于是,要不就是早早地亏损出场,要不就是明明有一波大行情,但是又会在行情到来之前就出场了,如何去选择一个让自己 心理安定,不至于让短期的行情波动去影响自己的心理,一个合理的仓位管理方法尤为重要。

    祝各位读者早日找到一个符合自己的交易逻辑与仓位管理方法出来。

    来源:掘金量化 myquant.cn

    推荐阅读: | 量化交易  | 期货模拟交易 | python量化交易 | 股票数据  | 量化交易策略 | 机器学习算法  | 多因子选股 |  

                       | 双均线策略 |  网格交易法 |  海龟交易法  |  跨期套利  | 行业轮动  | 指数增强  | 跨品种套利 | 日内交易 |

     

    展开全文
  • 关于止盈止损,我刚才讲仓位时讲过一些,先说止损,这个要看具体的仓位大小,假如仓位小的情况下,止损可以设置的比较宽,仓位大的时候止损一定要小,尤其是当你的止损会亏掉你本金10%以上的时候,一定要反思这笔...
  • 大盘涨跌预测及仓位控制思考

    千次阅读 2020-06-24 19:40:02
    今天分享一篇个人在大盘涨跌上的预测及通过涨跌预测延伸的仓位控制思考。 大盘的择时个人一直认为是股票量化中最重要的部分(普通的策略)。一个好的择时方法,虽然可能会让部分盈利变少,但能够大大的降低回撤。很...
  • 仓位管理 V4.3

    2018-06-28 18:49:00
    之前设计的仓位管理算法一直比较有效,往往能在市场的不断的上涨下跌中获利。不过感觉短期变动的仓位占整体的仓位较低,使得盈利较低。所以这个月对仓位管理算法进行了升级,尝试了几个版本。这里做一个记录。 V4.2 ...
  • 当股票价格上涨导致股票资产的仓位超过目标仓位(即50%)时,卖掉多余股票部分并买入债券,反之,当股票价格下跌导致股票资产的仓位低于目标仓位(即50%)时,卖掉部分债券并买入股票。总之就是通过动态调仓使股债维持50...
  • 前一篇文章:"MQL5 Cookbook: 使用不同的打印模式"向我们展示了如何快速写一个脚本来使用三种不同模式打印所需的信息,现在让我们创建一个脚本来向用户显示所有的仓位属性。 我们需要允许用户从脚本的外部参数中...
  • 仓位管理(2): 凯利公式指导投资与多种资金管理方式 来源:掘金量化myquant.cn,  作者:胡琛 (南京师范大学理论物理博士),转载请注明出处! 凯利公式指导投资示例 引言 在上一次我们提到了凯利公式,很多...
  • 第三章 规则一:只持有正确的仓位 Abbex 持仓待涨是天经地义?大师让我们顿悟:不要等出现损失就立即清除不正确的仓位– 永远不要等着市场提醒你已经出错。 我经常询问幽灵,为什么这个规则是如此重要时,幽灵总是说...
  • 茫茫人海,相识即缘,币道且艰。...分批止盈仓位的重要性: 当持有多单时,价位已到达第一目标位(预计还存在第二、 第三目标位),若是此刻全部平仓,再次上涨怎么办?如果再去追进,可想而知进单的点.
  • 引言: 邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。 ... 【必读文章】EOS期现套利,一周时间,15...诺奖得主的仓位分配算法,有效吗? 假...
  • 投资理财-仓位和执行

    千次阅读 2021-08-16 18:07:36
    控制不了仓位的人玩长线会不容易,分批建仓是个好方法。 控制不了情绪的玩短线就不容易,执行纪律是个好方法。但是有些人明明想做短线,做着做着就长线了,有些人想做长线,结果涨的猛一点就立马落袋为安。 好奇怪,...
  • 仓位管理(2): 凯利公式指导投资与多种资金管理方式 来源:掘金量化myquant.cn,  作者:胡琛 (南京师范大学理论物理博士),转载请注明出处! 凯利公式指导投资示例 引言 在上一次我们提到了凯利公式,很多...
  • 选择股票A的人偏保守,虽然赚的少一点,但毕竟风险低,任何情况下都是稳赚。 选择股票B,差的情况只亏20%,好得情况却可赚60%,相当不错的选择。 选择股票C就是富贵险中求,虽然风险高,可能亏去一半,但是翻倍的...
  • 位管理策略的制定一般有两种方式:一是在交易前确定总仓位的规模,设定总保证金占账户资金的比例,然后分配各交易品种占用的资金量。通过计算各品种的波动性,可以得到单个品种的风险,最后加上所有仓位的风险; 第...
  • 有关仓库仓位的管理问题

    千次阅读 热门讨论 2008-09-12 10:10:00
    我有一个做洗涤用品的批发客户,以前这个客户在仓库管理只分为3个区,由于要升级软件,客户提出要做仓位管理,客户把原来的仓库1000平方米的仓库搬到6000平方米的仓库,然后分为60个仓位,每个仓位有100平方米,并用...
  • 一点钱程:区块链概念今日盘中集体暴涨,截至收盘,二三四五、广博股份、文化长城、中元股份、金冠股份、旋即信息、浙大网新、海联金汇、新开普、新湖中宝、科达股份、易见股份等近百只个股涨停。 今日资金全天净流出...
  • 行情数据自身风格转换,也可能导致模型失败,如交易流动性,价格波动幅度,价格波动频率等,而这一点是量化交易难以克服的。   2、模型设计中没有考虑仓位和资金配置,没有安全的风险评估和预防措施,可能导致...
  • 针对这一点,每个人的资金量不一样,所能承受的风险范围也是不一样的。我并没有一个固定的区间给大家, 我就说一下自己的一个理解。 对于新手来说,我建议刚开始的时候,小仓位的去参与期权市场,感受期权市场的一...
  • 财富不入急门,投资且慢一点

    千次阅读 2020-11-03 18:00:00
    在市场上涨时,股票基金为我们赚取好一点的收益,进可攻退可守,让我们的资金处在“涨跌都舒服”的状态。 3. 如何挑选稳健理财产品? 既然前面说到了稳健理财在个人资产结构中有那么重要的位置,那么小慢就再跟大家...
  • 借助周期股特别是化工股牛市,这一年终于赚到了一点利润,前两天到达高峰,大概10万元,算是把前期的窟窿都补上了,结果这两天随着周期股暴跌,瞬间2万块就没了。 一、交易的总体路线 操作了一年,下面是一点个人...
  • 在听到这句话之后,我感到了丝丝的安慰,因为由于一直以来,我的股票仓位都是在重仓地产,地产在直到现在都是在地板位,在年初的时候,我就一直推崇地产和水泥,当时我的分析思路是 在疫情和中美贸易战的情况下,...
  • 如果你很有钱对资金的盈亏不是太在乎,那你可以重一点仓位。如果你指望着在这个市场里面给你儿子赚点奶粉钱,那就还是轻点仓位比较好。 人最大的痛苦就是与市场搏斗的同时还要与自己搏斗。这也是很多交易员失败的一...
  • SAP WM模块配置详解

    万次阅读 多人点赞 2020-01-02 12:54:37
    例如,根据货盘的尺寸,在一个货架区中可容纳一点数量的货盘,如三个欧式货盘或二个工业货盘(100x120)。一个货架区中可容纳一个超尺寸的货盘或数个较窄的货盘。 3)对根据存储单位类型进行的存储的解释如下: 要为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,086
精华内容 834
关键字:

一点仓位

友情链接: MIMO2x2.rar