Skip to content

February 28, 2020

5

投资时的情绪问题

作者: physixfan

虽然很多人理性上都知道一件事情叫做 “time in the market beats timing the market” 或者说“不要择时”,但是真正在股市急速下跌的时候还能保持理性是比较难的。这周SP500指数下跌了10%+。每到这个时候,很多人都在想:我是不是该卖VOO了?我是不是该大举入场抄底了?我是不是该买3x反指SQQQ甚至恐慌指数VXX了?我的确认识有高手平时的仓位就是100% VTI然后现在依然很淡定只偶尔看盘不操作的,不过我自认为我还做不到这种境界。

我目前主要的投资方式还是在 Adaptive Risk Parity 这个策略及其变种上,当然,并不是全都是3x的UPRO/TMF,我还有很大一部分仓位在不加杠杆的VOO/EDV上,总杠杆率是大于1但小于3的。其实这个 adaptive 的策略实际上也是一种 timing the market 的策略:它在试图用上个月的 volatility 去预测下个月的 volatility。本质上来讲,这种 timing 策略可能和均线理论一样完全无效,即固定一个40/60或55/45的比例也许最后效果也没差别。不过我自认为这种只改变portfolio里面俩东西的比例的 timing 策略有一定的好处:你如果严格执行这种策略,就不会有把钱撤出市场的冲动。这就比 naive 的 timing the market 好多了,永远不把钱撤出市场就不会错过大的涨势。因此我个人认为这样的 timing 策略可以有效缓解投资时的情绪问题,帮助 stay the course。

近期股市跌得特别迅速,于是有一些读者在问我是如何应对的。我的实际应对就是前两天开始我就提前 rebalance 了一下,但是我要强调一下这个操作完全没有理论依据,完全就是为了满足我的心理需求的。我个人感觉在市场明显 volatility 变大的时候也许应该适当增加一下 rebalance 频率,不过再重复一遍这个想法完全没有理论依据。大家也请不要把我当做投资方面的大神,我也只是刚开始学习投资没多久的萌新,也在不断学习/犯错中,我只是比大部分人更喜欢分享自己的心得而已…【更新】后来的走势其实打脸打的piapiapia,完全stay the course才是正解,提前rebalance、根据波动率降杠杆之类的骚操作都是会导致回报率降低的。投资这个策略需要信仰,千万不可以因为短期波动而止损。

Read more from Investment
5 Comments Post a comment
  1. Wei Li
    Feb 28 2020

    请教下为什么是VOO/EDV而不是VOO/BND呢?

    Reply
    • Feb 28 2020

      BND 是 total bond,EDV 是 20-30 yr 长期 bond。债券这个东西就是越长期的波动越大,EDV 可以算是不加杠杆的债券基金里波动最大的一个了。BND 在很多地方被推崇是正是因为它波动小比较稳;但是对于 risk parity 的策略来说债券一方波动需要大一点才能去平衡股票一方的波动。

      Reply
  2. fnjinf
    Mar 5 2020

    (t.sales_channel = #dsChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #dsChannelList[].subChannel#)

    )

    apr.main_loan_code = #mainLoanCode#

    (nvl(ap.cur_process_code, m.process_code) = #phaseList[].phaseCode# and nvl(ap.cur_sub_process_code, m.sub_process_code) = #phaseList[].phaseStatus#)

    rm.creditline_tag = #creditLineTag#

    and t.date_apply > TRUNC(sysdate+1) – #countDay#

    t.last_sales_man_code = #salesManCode#

    t.sub_bank_code IN

    #subBankCodeList[]#

    ) tab2

    order by tab2.”applyDate” desc

    order by tab2.”applyDate” asc

    )tab
    <![CDATA[
    where rownum

    (#pageNo#-1) * #pageCount#
    ]]>

    ///////////////////////

    (t.sales_channel = #tkChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #tkChannelList[].subChannel#)

    )

    apr.main_loan_code = #mainLoanCode#

    (nvl(ap.cur_process_code, m.process_code) = #phaseList[].phaseCode# and nvl(ap.cur_sub_process_code, m.sub_process_code) = #phaseList[].phaseStatus#)

    rm.creditline_tag = #creditLineTag#

    and t.date_apply > TRUNC(sysdate+1) – #countDay#
    and t.last_sales_man_code = #salesManCode#
    ) tab2

    order by tab2.”applyDate” desc

    order by tab2.”applyDate” asc

    <![CDATA[
    )tab
    where rownum (to_number(#pageNo#)-1) * to_number(#pageCount#)
    ]]>

    ////////////////

    (t.sales_channel = #tkChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #tkChannelList[].subChannel#)

    )

    apr.main_loan_code = #mainLoanCode#

    (nvl(ap.cur_process_code, m.process_code) = #phaseList[].phaseCode# and nvl(ap.cur_sub_process_code, m.sub_process_code) = #phaseList[].phaseStatus#)

    rm.creditline_tag = #creditLineTag#

    and t.date_apply > TRUNC(sysdate+1) – #countDay#
    and t.referrals_code = #refereeCode#

    order by t.date_apply desc

    order by t.date_apply asc

    <![CDATA[
    )tab
    where rownum (to_number(#pageNo#)-1) * to_number(#pageCount#)
    ]]>

    ////////////////////////

    (t.sales_channel = #dsChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #dsChannelList[].subChannel#)

    )


    m.PRODUCT_LABEL = ’01’

    apr.loan_code = #loanCode#

    apr.main_loan_code = #mainLoanCode#


    nvl(m.PRODUCT_LABEL, ’02’) != ’01’

    and t.date_apply > TRUNC(sysdate+1) – #countDay#

    t.last_sales_man_code = #salesManCode#

    t.sub_bank_code IN

    #subBankCodeList[]#

    rm.creditline_tag = #creditLineTag#

    TRUNC(sysdate+1) – #countDay#

    and ar.ap_loan_valid is null
    ]]>

    ar.um = #salesManCode#

    ar.sub_bank_code IN

    #subBankCodeList[]#


    ar.appoint_no in ( select ad.appoint_no from appl_admit ad join appl_main_info m on ad.apply_no = m.apply_no and m.product_label=’01’)

    ar.main_loan_code = #mainLoanCode#


    ar.appoint_no not in (select ad.appoint_no from appl_admit ad join appl_main_info m on ad.apply_no = m.apply_no and m.product_label =’01’)

    ) tab2
    where 1=1

    (tab2.”phaseCode” = #phaseList[].phaseCode# and tab2.”phaseStatus” = #phaseList[].phaseStatus#)

    order by tab2.”applyDate” desc, tab2.”applyNo”

    order by tab2.”applyDate” asc, tab2.”applyNo”

    )tab
    <![CDATA[
    where rownum
    (#pageNo#-1) * #pageCount#
    ]]>

    /////////////

    (t.sales_channel = #tkChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #tkChannelList[].subChannel#)

    )

    apr.main_loan_code = #mainLoanCode#

    rm.creditline_tag = #creditLineTag#

    and t.date_apply > TRUNC(sysdate+1) – #countDay#
    and t.referrals_code = #refereeCode#

    TRUNC(sysdate+1) – #countDay#
    and ar.REFERRALS_CODE = #refereeCode#
    and ar.ap_loan_valid is null
    ]]>

    ar.main_loan_code = #mainLoanCode#

    ) tab2
    where 1=1

    (tab2.”phaseCode” = #phaseList[].phaseCode# and tab2.”phaseStatus” = #phaseList[].phaseStatus#)

    order by tab2.”applyDate” desc

    order by tab2.”applyDate” asc

    <![CDATA[
    )tab
    where rownum (to_number(#pageNo#)-1) * to_number(#pageCount#)
    ]]>

    //////////////////

    (t.sales_channel = #tkChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #tkChannelList[].subChannel#)

    )

    apr.main_loan_code = #mainLoanCode#

    rm.creditline_tag = #creditLineTag#

    and t.date_apply > TRUNC(sysdate+1) – #countDay#
    and t.last_sales_man_code = #salesManCode#

    TRUNC(sysdate+1) – #countDay#
    and ar.um = #salesManCode#
    and ar.ap_loan_valid is null
    ]]>

    ar.main_loan_code = #mainLoanCode#

    ) tab2
    where 1=1

    (tab2.”phaseCode” = #phaseList[].phaseCode# and tab2.”phaseStatus” = #phaseList[].phaseStatus#)

    order by tab2.”applyDate” desc

    order by tab2.”applyDate” asc

    <![CDATA[
    )tab
    where rownum (to_number(#pageNo#)-1) * to_number(#pageCount#)
    ]]>

    ///////////////////

    (t.sales_channel = #dsChannelList[].salesChannel# and decode(t.sub_channel_1,null,#defaultSubChannel#,t.sub_channel_1) = #dsChannelList[].subChannel#)

    )


    m.PRODUCT_LABEL = ’01’

    apr.loan_code = #loanCode#

    apr.main_loan_code = #mainLoanCode#


    nvl(m.PRODUCT_LABEL, ’02’) != ’01’

    and t.date_apply > TRUNC(sysdate+1) – #countDay#

    t.last_sales_man_code = #salesManCode#

    t.sub_bank_code IN

    #subBankCodeList[]#

    rm.creditline_tag = #creditLineTag#

    ) tab2
    where 1=1

    (tab2.”phaseCode” = #phaseList[].phaseCode# and tab2.”phaseStatus” = #phaseList[].phaseStatus#)

    order by tab2.”applyDate” desc, tab2.”applyNo”

    order by tab2.”applyDate” asc, tab2.”applyNo”

    )tab
    <![CDATA[
    where rownum
    (#pageNo#-1) * #pageCount#
    ]]>

    Reply
  3. fan
    Mar 21 2020

    大神!今天看了你的《最小作用量原理和物理之美》,醍醐灌顶、身心愉悦、功力大增!终身受益。感激不尽!mummmma~

    Reply
    • Mar 22 2020

      哈哈那是我还没读本科的时候写的文章 如果对这个话题感兴趣的话 建议找本物理系的理论力学教材读一读~

      Reply

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments