定投tqqq/upro?(更新,杠杆的利率是多少?)(二更,每天重置杠杆的波动drag又是多少?)
杠杆ETF长期定投在非趋势市场损耗巨大,策略与风险需精算。
1. 关键信息
- 杠杆ETF因每日rebalance产生波动损耗,下跌路径越长损耗越深(#12、#18、#54、#57)。
- 2x SSO与3x UPRO在2000/2008/2022等极端回撤中可能大幅亏损甚至归零(#3、#13、#18)。
- 最优杠杆率≈(期望回报-无风险利率)/波动率²;25%保证金下回撤>50%即爆仓(#61、#69、#73)。
- 借贷成本≈无风险利率(Box Spread),实际年化约4.75%+发行人费用(#79、#81、#83)。
- 多数用户主张避免长持杠杆ETF,建议仓位控制或仅作短线(#2、#21、#29、#67)。
2. 羊毛/优惠信息
无
3. 最新动态
无
4. 争议或不同意见
- 有人认为TQQQ/UPRO长期持有仍可跑赢(#5、#17、#26),但多数强调尾部风险与归零可能(#3、#13、#18)。
- 对“动态杠杆/不对称加仓”策略有效性与回测稳健性存在分歧(#68、#75、#81)。
5. 行动建议
- 慎用长持定投杠杆ETF;优先以期货或个股加杠杆并严格风控。
- 若使用2x/3x ETF,限定回撤阈值并设置强制减仓;避免全仓押注。
- 回测建议包含交易成本、资金费率与极端压力场景(#75、#79、#81)。
这两个etf都太新了,大牛市感觉翻十倍百倍,但是有没有哪里可以模拟一下定投tqqq和upro经历2000和2018股灾那段时间会发生什么?
定投leveraged ETF…..合着给etf manager送钱呗?想加leverage的话直接投NQ futures不就行了
2022, -80% /uploads/short-url/zJyTTOHcJXRkiyxIDDOsuZ7LXxO.png?dl=1
上一个定投upro/tmf的人已经……
我的IRA全部放TQQQ / SPXL 五年了
买股票 借钱 /uploads/short-url/8EUaIshf6WSyvGoCL1EGFQOweoO.jpeg?dl=1
说给楼主听的: https://www.youtube.com/watch?v=LpSagoJD_kM
大伙总是在新高的时候问定投tqqq,下跌的时候这类帖子去哪儿了
SSO这种两倍杠杆的我记得可以跑赢大盘
qin31411: 大伙总是在新高的时候问定投tqqq,下跌的时候这类帖子去哪儿了 哈哈 没错 … 恐惧 >> 贪婪
看到这种帖子,不出两个月必回调个大的
杠杆从来都是丰俭由人,穷人的股市圣杯。但了解杠杆etf的优缺点还是必要的。比如sso是2倍大盘,但最近5年总收益不及真的2倍spy,因为过多的下跌导致震荡损耗。 如果你的预期是一个平稳的不断上涨的市场,杠杆etf可以多加点。但如果你的预期是不断有各种大幅下杀和抓马的股市(比如现在),减少杠杆风险回报比更高。 当然如果你是纯信仰派,就要高回报不在乎adjusted风险是多少,那么别管我说的,买就是了。信仰派战胜一切技术派。
假设100年前就有 VOO,SSO和UPRO,三个潭友刚好在1929/09/13分别梭哈了这三个ETF,那么到20年后的1950元旦,VOO的共涨了 64%, SSO跌了56%, UPRO跌97% 严重怀疑UPRO被多次并股甚至退市?
杠杆的尽头都是爆仓 不要玩火
所以人家不是说要定投了吗。就是要避免这种在最高点一次性买入
下跌的时候定投sqqq呢
終於有人可以提出定投TQQQ UPRO了 就是等這時刻了 現在就差一個 專業分析文 定投TQQQ大勝S&P500+bond 最後結論無腦上車這種
UPRO max drawdown 99.91%, 大概率被清盘,如果不清盘,而且从1910-50坚持每个月定投40年, CAGR: VOO 6.75%, SSO 5.47%, UPRO 0.33%
定投了4年去年卖出去的,从79投到16块,再从16块到89块。最低点那一块400%左右收益,总体一倍多,主要是被后面定投拉高了成本。 刚刚开始定投从79到16真的是每个月新低,我依然没放弃,按照比例跌了80%腰斩再腰斩。你要是心态没崩的话可以试试。
我记得最优杠杆倍率得看波动率,SPY波动率小一点,差不多2x最优,QQQ波动率大一点,1.5x左右最优
怎么总有这种问题,杠杆ETF不是让你长持定投用的。熊市,横盘直接教你做人。当然自信以后只有涨,那梭哈干就完了。
sso qld可以 三倍只能做短线
一直搞不懂/不支持 如果相信科技股N连阳几率比N连阴几率更大我找不到任何唱衰长持TQQQ的原因…? 当然确实风险与机会并存… 长持soxl/个股n倍要我我也不敢这纯属投机赌博 当然前提是最好在回撤的时候慢慢加杠杆 在石膏加杠杆在回撤抛那纯韭菜
MOMOMOMOMO: 一直搞不懂/不支持 如果相信科技股N连阳几率比N连阴几率更大我找不到任何唱衰长持TQQQ的原因…? 视频里解释了。最大的原因就是你长持TQQQ挣少了!用相同风险水平下的其他方案,你可以挣得更多。
我之前看過有人分享 經過一連串我也不懂的計算統計分析 說長期股市最好的槓桿率是1.x 所以買QQQ搭配一些QLD是最好的 不過也看過有人回測過去幾十年 兩倍槓桿etf贏過一倍跟3倍 所以感覺all in QLD USD SSO或許也是合理的
哦那对不起那我这somehow同意 但怎么说呢 感觉如果假定相同资金 投入tqqq确实可能会比qqq挣钱..? qqq历史平均涨幅1.25 跌幅1.31 拿笔/chatgpt算一算只要保证52.5%的天数里上涨的tqqq就会比qqq赚钱,从1999数据开始上涨天数是53.2% (叠甲我是chatgpt算的不保证准确,起始prompt是不妨设回撤窗口是偶数天两两配对,如果是奇数就多加一天0%)
再叠一个哥们现在没任何杠杆etf持仓
/uploads/short-url/5HoMztw1W3pkf3cePu2TkP64cYe.png?dl=1 要定投可以 但是你hold住嗎? /uploads/short-url/7XVYGT6KHPfWZCJkX3Rr1gQWA3U.png?dl=1 懂王最高指示從58k到25k 73k到51k 你心臟受得了嗎
这个不对 应该是比较spy x3 vs sso x1.5 vs upro 如果1比1比较应该是1/3 upro 2/3 cash定期rebalance 估计rebalance了不会输spy多少
年轻人看来来得不久哈哈 上一个在泥潭号召定投upro的是潭主啊喂
俺也一样
仓位小还好,仓位大真的拿不住的 。 但问题是仓位小买tqqq为啥不大仓位买qqq
这不是挺好的吗, vwap够低了
你再说 物理粉物理杀全家了
200均线调仓那个我感觉应该是能跑赢大盘
这种应该是用margin买 buy and hold 始终保持本金的1.5倍意思
直接用margin买效果最好 但是账户波动也大
当年的upro + tmf让多少人亏掉底裤
牛市的时候是这样的,但是熊市膝盖斩是真的坚持不住,而且后续比无杠杆恢复更难;猴市的磨损也吃不消。
豆老师是说这个帖子吗? https://www.uscardforum.com/t/topic/362 /c/investment/stock-market/13 写在前面:我自己这几年对投资有一点自己的心得 但是投资方面的内容很不适合写在https://www.uscreditcardguide.com/zh/上(那里教大家的都是不会亏本的撸毛技术) 现在有了论坛这个平台 大家都能发帖分享自己的想法 地位相对平等了 于是我就在这里分享一下自己的一些想法吧~ 本帖原载于https://www.physixfan.com/risk-parity-touziceluegaijinbandongtaidiaozhenguprohetmfdebili/ 感觉是比较受欢迎的一个投资策略。 【2021.2 更新】更新了"此策略何时失效?"这一章节。 #p-714-h-1零、写在前面 你能承… 我当年还 follow 过,后来老是忘记 rebalance,就放弃了,还是 voo 简单。。。
https://www.uscardforum.com/t/topic/362/1 【2021.2 更新】更新了"此策略何时失效?"这一章节。
这个波动其实还好。看账户大小,早期积累和分散投资程度。个股跌去90%的比比皆是。 三倍etf论投机性大于等于个股,一旦进入赌博范畴任何分析都会失效,只有信仰无敌。
现在应该是百万富翁
买什么不itm leap call
IRA一年七千五而已啊
不如找券商上margin买QQQ
没法上大杠杆 容易margin call
可能怕交税
这个策略22年就失效了吧 不过作者的研究还是挺不错的 这人怎么不出现了
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2741701run
是这样的,又不是complicated product,你自己买自己roll不就完了
Gpt spy 只推荐1.5以内 qqq更少
定投的目的是啥,为了 buy and hold。那么 leveraged ETF 是 “leveraged buy and hold” 吗,不是,因为它每天平衡,涨了就加杠杆,跌了就去杠杆(卖出一部分)。后者也是主要造成除了利息之外的损耗原因,因为跌了之后由于杠杆为了维持 X 倍所以实质是降杠杆了(只要不是一天跌 100/X 了就没有爆仓或者清零的风险),导致即使涨回来了杠杆 ETF 也回不到前高了。 真要 “leveraged buy and hold” 的话就借钱买股票(非投资建议 ),方法很多。杠杆 ETF 有用的地方是你有 timing the market 的能力(上涨的时候杠杆 ETF 会自动加杠杆)并且不想被爆仓。
leveraged etf有不是daily rebalance的,主要是这条有点傻逼 你index fund也是quarterly rebalance the real question you need to ask: 我要的策略,leverage是我自己买underlying/借钱/用衍生品 划算 还是他打包了划算 如果是比较复杂的懒得操作这也有价值
是的,唯一区别是杠杆 ETF 把借钱的成本隐藏起来了可能看着好受点。它这条每天平衡就注定不适合 buy and hold。
不每天平衡的话,杠杆 ETF直接归零的风险就大了。 如果2000年之前就有TQQQ,而且按quarterly rebalance,那么2000年底归零。
所以得控制杠杆率并且保证不断有资金来维持保证金。而且这是必然的,高收益必然就会有高风险。
比如普通的 reg-t 帐户,maintenance requirement 需要至少 25% 以上(一般券商的 house requirement 可能会到 30% 到 40%),那么假设最多 50% 的下跌的话,100 块钱跌到 50 块你仍然可以安全维持大概 1.43 的杠杆率(以 40% 要求算,用 PM 或者期权的话就是算 25%,可以维持 1.6 倍的杠杆率) ,50% 下跌的话杠杆率不能超过 2 不然就清零了。如果你源源不断的资金注入的话那杠杆率还可以再高点(非投资建议)。 Edit:杠杆率算错了,已更正)
这个理解是1.5倍SPY是安全杠杆的意思
对,假设最多只有 50% 的回撤。初始最大杠杆计算公式就是 1 / d + 0.4 * (1 - d),1 表示初始总持仓,你自己的原始资金得还得起已经损失的 d 和剩余持仓的 40%。 回撤 d 最大初始杠杆 10% 2.17x 20% 1.92x 30% 1.72x 40% 1.56x 50% 1.43x 60% 1.32x 70% 1.22x 80% 1.14x 90% 1.06x 25% 的 margin 要求的话: 回撤 d 最大初始杠杆 10% 3.08x 20% 2.50x 30% 2.11x 40% 1.82x 50% 1.60x 60% 1.43x 70% 1.29x 80% 1.18x 90% 1.08x
注意这只是理论杠杆率,实际操作中会有更多限制,比如 reg-t 有初始 50% margin requirement 要求所以杠杆率是不能超过 2 的,并且不是所有的持仓都能 marginable。 还有就是如果真遇上市场或者某只股票大跌券商一般会提高其相应的 maintenance requirement,去年解放日很多股票的 maintenance requirements 就被提高了,
泥潭账户不都应该是portfolio margin吗
fidelity 需要面试,有点麻烦,而且其实用期权的话也能达到 PM 类似的效果。
普通人懒得折腾直接买VOO 和SSO 每个季度rebalance 不也能达到1.5X 的效果嘛 感觉也没啥缺点
长持LFTE是可以的,但你得有个计划 要么是根据信号来进行交易,要么是配上一堆uncorrelated hedge assets然后长持 长持LFTE的优势就是,不卖就没有tax event并且永远不会有margin call,缺点就是杠杆磨损和ETF本身可能解散;一个不算优缺点而是feature的是每日/每月reset杠杆,这样杠杆率一直是恒定的 目前的共识就是SSO/QLD这种2X大盘杠杆ETF就算遇上2008重临,存活的可能性也很高
可以根据MA来决定risk on/off 然后根据volatility决定2x还是3x 根据rate变化决定用不用持有bond
这个最优杠杆率从数学上讲好像是可以根据 Kelly Criterion 算出来的,公式是 期望回报率 / 波动率平方。 比如 10% 回报率,波动率 18%,最右杠杆率就是 3.1 左右,参考 https://www.tradingview.com/chart/SPX/foGwCNHi-Kelly-Criterion-Why-You-SHOULD-Use-Leverage-And-By-How-Much/ 感觉是不是可以根据 vix,年平均回报率弄一个动态调节杠杆率的 ETF,这样既能最大程度防止不被爆仓又能吃到杠杆的复利。
按你的计算回撤10%就爆仓了 这也太容易爆仓了 我觉得这个最优杠杆不靠谱
是的,但它主要是因为我们没法精准预测 回报率 / Edge 和波动率。从那个例子来看 18% 的波动率意味着每天(假设每天 rebalance)的期望波动率是一点几左右,几乎不可能回撤 10%。
可以试试这个 https://testfol.io/tactical?s=jfFRAtOoT0u 可以通过继续加 gold 和 managed future 来降 drawdown
这个3.1x没算借贷成本。假设大盘年化收益12%,借贷成本5%,volitility18%,那么这个ratio大约是2.16x。 2x LETF可能还行,毕竟没有margin call风险,margin account可不敢2x
是的,回报率得是减去无风险利率(不仅仅是借贷成本,买入 SPX 本身也就意味着损失了无风险利率本身的机会成本,凯利公式算的就是如何确定 optimal bet size 使得风险和回报相同)之后的,准确的说应该说 (期望回报率 - 无风险利率) / 波动率平方。 我发现 wiki 里头写的比那篇 tradindview 的文章更好,还有不少其他的论文引用(比如 rebalancing 是每天做还是是每月做更好): https://en.wikipedia.org/wiki/Kelly_criterion https://en.wikipedia.org/wiki/Kelly_criterion In probability theory, the Kelly criterion (or Kelly strategy or Kelly bet) is a formula for risk allocation with the sizing a sequence of bets by maximizing the long-term expected value of the logarithm of wealth, which is equivalent to maximizing the long-term expected geometric growth rate. John Larry Kelly Jr., a researcher at Bell Labs, described the criterion in 1956. The practical use of the formula has been demonstrated for gambling, and the same idea was used to explain diversification...
跑了下回测(是 AI 生成的代码,所以有没有 bug 未知),假设年回报率是 10% 的话,用 vix 来预测波动率,使用真实利率数据,从 2007 年起开始回测(压力测试 08 年大跌)这个策略可以稳定跑赢 SSO 或者 UPRO: /uploads/short-url/37MxV0081DopZSBiqelGK9RpBgH.jpeg?dl=1 同时如果是简单的 ”leveraged buy and hold” 但每天 rebalance 使得杠杆率不会由于标的上涨而下降的话,那么 1.49(最高的不会导致在 08 年爆仓的初始杠杆,假设 25% 保证金率)的杠杆率就可以跑赢 SSO 和 UPRO, 同时可以更快从大跌中恢复,大概 11/12 年左右(模拟的 UPRO 要到 17 年多才能从 08 年的大跌回本,模拟的 SSO 也到等到 15 年左右): /uploads/short-url/xnjtEKHbUAb7OGFCLaF7vu1RMqf.jpeg?dl=1 /uploads/short-url/dAyMK4hJ8I7gAqWirkFYBmn6moB.jpeg?dl=1 Edit: 第一个回测没有考虑杠杆 ETF 的管理费,所以 return 更高,第二三个回测加上了 0.9% 的管理费。
有考虑税务上的事吗
你让AI按照25%税率算个after tax return 我的经验是一年平均调仓超过3次after tax return基本就被搞死了
这是一个用户名: 有考虑税务上的事吗 回测 2 和 3 都是 ”leveraged buy and hold” 所以没有卖出的动作,调仓只是一直加仓维持杠杆率。 回测 1 所以说是要弄一个 ETF 来 buy and hold。
ETF调仓也是有成本的,leveraged ETF的杠杆一般是走total return swap,成本一般至少是libor rate (目前4.75%左右?) + issuer premium (0.5-1%)
是的,回测里都算了无风险利率,回测 2 和 3 加上了 0.9% 的管理费所以 return 还更低一点。
对,你这里考虑了杠杆的利息支出吗?3X的话目前大概是10%的样子,1.5X就算2.5%吧
用的是当年的近似无风险利率 IRX,13 周国债收益率。
bumblebee: ETF调仓也是有成本的,leveraged ETF的杠杆一般是走total return swap,成本一般至少是libor rate (目前4.75%左右?) + issuer premium (0.5-1%) 好像得用libor rate,现在都是5%左右,前两年甚至超过6%了
Libor 就是近似无风险利率吧,我用的是市场无风险利率 / box spread。最近看 John Hull 的那本 options, futures 书都已经把 Libor phase out 了:
还没仔细 review AI 生成的代码(稍微改了下),先贴一下, 回测 1: import yfinance as yf import pandas as pd import numpy as np import matplotlib.pyplot as plt # ========================================== # 1. 策略参数设置 # ========================================== MU = 0.10 # 标普500历史年化预期收益率 (10%) MAX_LEV = 4.0 # 最大杠杆限制 START_DATE = "2006-01-01" END_DATE = "2023-12-31" print("正在下载数据 (SPY, VIX, ^IRX)...") # ========================================== # 2. 下载数据 # ========================================== spy = yf.download("SPY", start=START_DATE, end=END_DATE, auto_adjust=False)[['Adj Close']] spy.columns = ['SPY'] vix = yf.download("^VIX", start=START_DATE, end=END_DATE)[['Close']] vix.columns = ['VIX'] # 下载 13周国债收益率作为无风险利率 (Annual %) irx = yf.download("^IRX", start=START_DATE, end=END_DATE)[['Close']] irx.columns = ['RF_Rate'] # 合并数据并处理缺失值 df = spy.join([vix, irx]).dropna() # ========================================== # 3. 计算每日收益率与 Kelly 杠杆率 # ========================================== df['SPY_Ret'] = df['SPY'].pct_change() # 使用昨天的 VIX 和昨天的无风险利率来决定今天的动作 df['VIX_Prev'] = df['VIX'].shift(1) df['RF_Annual_Prev'] = df['RF_Rate'].shift(1) / 100 # 转换为小数 # VIX 转化为方差 df['Variance'] = (df['VIX_Prev'] / 100) ** 2 # 动态 Kelly 杠杆: f = (mu - r_dynamic) / Variance df['Kelly_Lev'] = (MU - df['RF_Annual_Prev']) / df['Variance'] df['Kelly_Lev'] = df['Kelly_Lev'].clip(lower=0, upper=MAX_LEV) # ========================================== # 4. 计算策略收益率 (使用动态借贷成本) # ========================================== # 每日无风险利率 df['daily_rf'] = df['RF_Annual_Prev'] / 252 # 动态 Kelly ETF 收益率 df['Kelly_Ret'] = df['Kelly_Lev'] * df['SPY_Ret'] - (df['Kelly_Lev'] - 1.0).clip(lower=0) * df['daily_rf'] # 模拟 SSO (固定 2 倍) df['SSO_Ret'] = 2.0 * df['SPY_Ret'] - 1.0 * df['daily_rf'] # 模拟 UPRO (固定 3 倍) df['UPRO_Ret'] = 3.0 * df['SPY_Ret'] - 2.0 * df['daily_rf'] df = df.dropna() # ========================================== # 5. 计算累计净值 # ========================================== df['SPY_Cum'] = (1 + df['SPY_Ret']).cumprod() df['SSO_Cum'] = (1 + df['SSO_Ret']).cumprod() df['UPRO_Cum'] = (1 + df['UPRO_Ret']).cumprod() df['Kelly_Cum'] = (1 + df['Kelly_Ret']).cumprod() # ========================================== # 6. 绘图与结果展示 # ========================================== plt.figure(figsize=(14, 8)) plt.plot(df.index, df['Kelly_Cum'], label='Dynamic Kelly (Real RF)', color='purple', linewidth=2) plt.plot(df.index, df['UPRO_Cum'], label='Simulated UPRO (3x)', color='red', alpha=0.7) plt.plot(df.index, df['SSO_Cum'], label='Simulated SSO (2x)', color='orange', alpha=0.7) plt.plot(df.index, df['SPY_Cum'], label='SPY (1x)', color='black', alpha=0.9, linestyle='--') plt.title('Dynamic Kelly ETF vs Fixed Leverage (Using ^IRX as Real RF)') plt.yscale('log') plt.ylabel('Cumulative Return') plt.xlabel('Date') plt.legend() plt.grid(True, which="both", ls="--", alpha=0.5) plt.tight_layout() plt.show() print("\n=== 最终累计净值 (基于真实无风险利率) ===") print(f"SPY (1x) : ${df['SPY_Cum'].iloc[-1]:.2f}") print(f"SSO (2x) : ${df['SSO_Cum'].iloc[-1]:.2f}") print(f"UPRO (3x) : ${df['UPRO_Cum'].iloc[-1]:.2f}") print(f"Kelly Dynamic: ${df['Kelly_Cum'].iloc[-1]:.2f}") 回测 2 和 3: # 1. 安装必要的金融数据获取库(Colab 环境专用) !pip install yfinance -q import yfinance as yf import pandas as pd import numpy as np import matplotlib.pyplot as plt # ========================================== # 核心参数设置 # ========================================== TICKER = "SPY" START_DATE = "2007-01-01" # 包含 2008 年次贷危机进行极限压力测试 END_DATE = "2024-01-01" INITIAL_CAPITAL = 10000 # 你的策略参数:不对称加仓 (1.4 倍) TARGET_LEVERAGE = 1.49 # 融资成本更新:使用 Box Spread,借贷成本直接等于无风险利率,无额外利差 MAINTENANCE_MARGIN = 0.25 # 维持保证金率 25% (Box Spread 本质是期权组合,这里作为账户风控参考线) # 对标的 2x ETF 参数 (模拟 SSO) ETF_LEVERAGE = 2.0 ETF_EXPENSE_RATIO = 0.009 # 管理费 0.9% 年化 # ========================================== # 1. 下载市场数据 # ========================================== print(f"正在从 Yahoo Finance 下载 {TICKER} 和利率数据,请稍候...") # 下载标普 500 和 13周美债收益率 (^IRX 作为基准无风险利率) data = yf.download([TICKER, '^IRX'], start=START_DATE, end=END_DATE)['Close'] # 数据清洗 df = pd.DataFrame() df['SPY'] = data[TICKER] # ^IRX 原始数据是百分比 (如 5.0 代表 5%),需转换为小数 (0.05) df['RiskFreeRate'] = data['^IRX'].ffill() / 100 df = df.dropna() df['SPY_Return'] = df['SPY'].pct_change() df = df.dropna() # ========================================== # 2. 运行回测逻辑 # ========================================== print("正在逐日模拟测算策略...") custom_equity_list = [] etf_equity_list = [] base_equity_list = [] # 初始化资金 c_equity = INITIAL_CAPITAL c_asset = c_equity * TARGET_LEVERAGE c_debt = c_asset - c_equity is_custom_busted = False # 爆仓标记 e_equity = INITIAL_CAPITAL b_equity = INITIAL_CAPITAL for date, row in df.iterrows(): daily_return = row['SPY_Return'] rf_rate_annual = row['RiskFreeRate'] # 将年化利率转换为日利率 (按 252 个交易日计) # 更新点:使用 Box Spread,你的借贷成本与机构(ETF)一样,仅为无风险利率 daily_borrow_rate = rf_rate_annual / 252 daily_er = ETF_EXPENSE_RATIO / 252 # --- A. 基准:买入持有 SPY --- b_equity = b_equity * (1 + daily_return) base_equity_list.append(b_equity) # --- B. 2x Daily ETF (SSO 模拟) --- # 收益 = (基础收益 * 2) - (借入1倍资金的机构利息) - 每日管理费 etf_daily_ret = (daily_return * ETF_LEVERAGE) - (daily_borrow_rate * (ETF_LEVERAGE - 1)) - daily_er e_equity = e_equity * (1 + etf_daily_ret) if e_equity < 0: e_equity = 0 etf_equity_list.append(e_equity) # --- C. 你的策略:不对称动态杠杆 (Box Spread 融资) --- if is_custom_busted: custom_equity_list.append(0) continue # 1. 资产随市场涨跌 c_asset = c_asset * (1 + daily_return) # 2. 债务产生每日利息 (使用无风险利率) c_debt = c_debt * (1 + daily_borrow_rate) # 3. 计算最新净资产 c_equity = c_asset - c_debt # 4. 检查是否触发强平风险 # (注意:Box Spread 是欧式期权,不会被提前行权,但如果底层资产大幅缩水导致券商判定你的账户整体净资产不足以覆盖潜在亏损,仍会触发 Margin Call 强平底层 SPY 资产) if c_asset <= 0 or (c_equity / c_asset) <= MAINTENANCE_MARGIN: is_custom_busted = True custom_equity_list.append(0) continue # 5. 不对称重置规则:只在上涨时加仓 current_leverage = c_asset / c_equity if current_leverage < TARGET_LEVERAGE: # 杠杆率降低了 (说明赚了),用 Box Spread 借更多钱买入,补齐 1.4x 杠杆 c_asset = c_equity * TARGET_LEVERAGE c_debt = c_asset - c_equity # 如果 current_leverage >= TARGET_LEVERAGE (亏损),不动,债务锁定不变 custom_equity_list.append(c_equity) # 存入 DataFrame df[f'Custom Strategy ({TARGET_LEVERAGE}x, Box Spread)'] = custom_equity_list df[f'{ETF_LEVERAGE}x ETF (SSO Proxy)'] = etf_equity_list df['SPY (Buy & Hold)'] = base_equity_list # ========================================== # 3. 统计结果与绘图 # ========================================== def calc_max_drawdown(series): roll_max = series.cummax() drawdown = series / roll_max - 1.0 return drawdown.min() print("-" * 60) print(f"回测结果 ({START_DATE} 至 {END_DATE}):") print(f"初始资金: ${INITIAL_CAPITAL:,.2f}") print("-" * 60) for col in ['SPY (Buy & Hold)', f'{ETF_LEVERAGE}x ETF (SSO Proxy)', f'Custom Strategy ({TARGET_LEVERAGE}x, Box Spread)']: final_val = df[col].iloc[-1] mdd = calc_max_drawdown(df[col]) print(f"【{col}】") if final_val == 0: print(f" 最终资金: $0.00 (已触发极端回撤红线)") print(f" 最大回撤: -100.00%") else: print(f" 最终资金: ${final_val:,.2f}") print(f" 最大回撤: {mdd*100:.2f}%") print("-" * 60) # 绘制对数收益曲线 plt.figure(figsize=(12, 6)) plt.plot(df.index, df[f'Custom Strategy ({TARGET_LEVERAGE}x, Box Spread)'], label=f'Custom Asymmetric Margin ({TARGET_LEVERAGE}x)', color='red', linewidth=2) plt.plot(df.index, df[f'{ETF_LEVERAGE}x ETF (SSO Proxy)'], label=f'{ETF_LEVERAGE}x Daily ETF', color='blue', alpha=0.7) plt.plot(df.index, df['SPY (Buy & Hold)'], label='SPY Base', color='black', alpha=0.5) plt.yscale('log') plt.title(f'Logarithmic Equity Curve: Custom {TARGET_LEVERAGE}x (Box Spread Rate) vs {ETF_LEVERAGE}x ETF vs SPY') plt.ylabel('Portfolio Value (Log Scale)') plt.xlabel('Date') plt.grid(True, which="both", ls="--", alpha=0.5) plt.legend() plt.show()