🔴
入学要求
💯
能力测试
🛣️
课程安排
🕹️
研究资源

练习

杠杆收益动态模拟

任务背景:某投资者计划使用3倍杠杆交易苹果股票,需综合考虑借贷利息与市场波动。数据获取与基础计算代码如下:

import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

# 获取苹果2021-2023年日线数据
aapl = yf.download('AAPL',
                 start='2021-01-01',
                 end='2023-12-31')['Close']

# 计算日收益率
returns = aapl.pct_change().dropna()

分析要求

  1. 创建杠杆收益计算函数,需包含以下参数:
    • 本金基数(base_capital)
    • 杠杆倍数(leverage)
    • 年化借款利率(annual_rate)
  1. 可视化对比3倍杠杆与无杠杆的累计收益曲线
  1. 计算最大回撤和夏普比率(假设无风险利率2%)

代码框架

def leveraged_returns(returns, base_capital, leverage, annual_rate):
    """
    输入: 日收益率序列, 本金, 杠杆倍数, 年化利率
    输出: 每日净值序列
    """
    daily_rate = annual_rate / 252
    # 补充你的代码逻辑
    return equity_curve

# 计算不同策略净值
lev3 = leveraged_returns(returns, 1e6, 3, 0.05)
nolev = leveraged_returns(returns, 1e6, 1, 0)

# 可视化代码
plt.figure(figsize=(12,6))
plt.plot(lev3, label='3x杠杆')
plt.plot(nolev, label='无杠杆')
plt.title('杠杆策略收益对比')
plt.legend()
plt.show()

动态杠杆优化设计

问题场景:某量化团队发现固定杠杆策略在波动率变化时表现不稳定,计划开发动态调整系统。基础波动率计算代码如下:

# 计算滚动波动率
vol_window = 20  # 20交易日窗口
rolling_vol = returns.rolling(vol_window).std() * np.sqrt(252)

任务要求

  1. 设计动态杠杆调整函数,规则如下:
    • 当波动率>30%时使用1倍杠杆
    • 波动率20%-30%时使用2倍
    • 波动率<20%时使用3倍
  1. 回测动态策略与固定3倍杠杆的收益差异
  1. 分析两种策略的最大回撤和收益波动比

提示公式

动态杠杆倍数:

lev = np.select([vol>0.3, vol<=0.2], [1,3], default=2)

代码框架

def dynamic_leverage_backtest(returns, rolling_vol):
    equity = [1e6]  # 初始本金
    for i in range(1, len(returns)):
        # 获取当前波动率
        current_vol = rolling_vol.iloc[i]

        # 确定当日杠杆倍数
        # 补充你的判断逻辑

        # 计算当日收益
        # 补充杠杆计算逻辑

        equity.append(current_equity)
    return np.array(equity)

# 执行回测
dyn_equity = dynamic_leverage_backtest(returns, rolling_vol)
fix_equity = leveraged_returns(returns, 1e6, 3, 0.05)

# 结果分析代码
plt.plot(dyn_equity, label='动态杠杆')
plt.plot(fix_equity, label='固定3x')
plt.title('动态杠杆策略对比')
plt.show()

通过这两个练习,可以深入理解杠杆的实际应用效果与风险管理要点。请注意实际交易中还需考虑交易成本、保证金规则等额外因素。