下载
登录
/
注册
主页
论坛
视频
热股
可转债
打开
下载
打开
下载
下载
验证信息
获取验证码
一键领取
打开app查看
打开app查看
研究打板破产的概率,以及破解之道
26-03-28 13:30
364次浏览
道观小生
+关注
博主要求身份验证
登录用户ID:
我不是打板的模式,但是经常听到有人一下子挣了很多,又有人打板归零,所以想模拟一下
使用蒙特卡法,写程序代码模拟打板模式破产的概率。假设打板模式是正数学期望的:年化收益率200%,而最大回撤是-100%(这里的年化收益率和最大回撤,都指的是单利统计,即每天操作1次,按次计算收益率。即10年的收益率求和除以10,是200%,而最大回撤是指每隔3年,连续一段时间的收益率之和为-100%)。如果满仓操作(这里是模拟复利了,但是收益率的分布服从之前单利的情况),统计其净值低于30%的概率。然后对比每次操作采用总资金的20%进行操作,再统计其净值低于30%的概率。时间长度为10年。并画出每次模拟的净值曲线。
参数设置:即收益率的均值0.8%,250个交易日就是200%,标准差是20%,即打板失败吃面可能是几个板,所以很多时候收益>30%,但是也有很都时候亏损大于-30%
mu = 0.008 # 日收益率均值(年化200%)
sigma = 0.2 # 日收益率标准差(可调整)
=== 蒙特卡洛模拟结果 ===模拟次数: 10000
满仓操作 - 最终净值低于10%的概率: 0.9986
满仓操作 - 路径中曾低于10%的概率: 0.9998
20%仓位 - 最终净值低于10%的概率: 0.0151
20%仓位 - 路径中曾低于10%的概率: 0.0558
意思就是说,满仓打板破产的概率几乎是100%,而分仓打板,或每次采用20%的仓位打板,而破产的概率只有1~2%,附上代码和结果图:欢迎批评指正
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体(确保系统有SimHei或Microsoft YaHei)
plt.rcParams[‘font.sans-serif‘] = [
‘SimHei‘, ‘Microsoft YaHei‘] # 用于正常显示中文
plt.rcParams[
‘axes.unicode_minus‘] = False # 用于正常显示负号
# 参数设置
np.random.seed(42) # 固定随机种子,结果可复现
n_days = 2500 # 10年,假设每年250个交易日
n_simulations = 10000 # 蒙特卡洛模拟次数
mu = 0.008 # 日收益率均值(年化400%)
sigma = 0.2 # 日收益率标准差(可调整)
threshold = 0.1 # 破产阈值(净值低于30%)
# 生成收益率序列(形状:n_simulations × n_days)
returns = np.random.normal(mu, sigma, size=(n_simulations, n_days))
# 满仓操作:净值 = 初始1 * 累积乘积(1+r)
nav_full = np.cumprod(1 + returns, axis=1)
# 20%仓位操作:每日收益率 = 0.2 * r
nav_partial = np.cumprod(1 + 0.2 * returns, axis=1)
# 统计破产概率(最终净值低于阈值)
bankrupt_full_final = nav_full[
:, -1] < threshold
bankrupt_partial_final = nav_partial[
:, -1] < threshold
prob_full_final = np.mean(bankrupt_full_final)
prob_partial_final = np.mean(bankrupt_partial_final)
# 统计破产概率(路径中曾低于阈值)
bankrupt_full_path = np.any(nav_full < threshold, axis=1)
bankrupt_partial_path = np.any(nav_partial < threshold, axis=1)
prob_full_path = np.mean(bankrupt_full_path)
prob_partial_path = np.mean(bankrupt_partial_path)
print("=== 蒙特卡洛模拟结果 ===")
print(f"模拟次数: {n_simulations}")
print(f"满仓操作 - 最终净值低于{threshold*100:.0f}%的概率: {prob_full_final:.4f}")
print(f"满仓操作 - 路径中曾低于{threshold*100:.0f}%的概率: {prob_full_path:.4f}")
print(f"20%仓位 - 最终净值低于{threshold*100:.0f}%的概率: {prob_partial_final:.4f}")
print(f"20%仓位 - 路径中曾低于{threshold*100:.0f}%的概率: {prob_partial_path:.4f}")
# 绘制部分模拟路径(前10条)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
for i in range(min(10, n_simulations)):
axes[
0].plot(nav_full, alpha=0.7)
axes[
1].plot(nav_partial, alpha=0.7)
axes[
0].axhline(y=threshold, color=‘r‘, linestyle=‘--‘, label=f‘阈值 {threshold*100:.0f}%‘)
axes[
1].axhline(y=threshold, color=‘r‘, linestyle=‘--‘)
axes[
0].set_title(‘满仓操作净值曲线(前10条)‘)
axes[
1].set_title(‘20%仓位操作净值曲线(前10条)‘)
axes[
0].set_xlabel(‘交易日‘)
axes[
1].set_xlabel(‘交易日‘)
axes[
0].set_ylabel(‘净值‘)
axes[
1].set_ylabel(‘净值‘)
axes[
0].legend()
plt.tight_layout()
plt.show()
打开淘股吧APP
打开淘股吧APP
1
评论(3)
收藏
展开
热门
最新
天润福
26-03-28 18:44
0
👌好
道观小生
26-03-28 14:56
0
理解错误。你是相当于把10万给5个人,每个人还是2万满仓操作。但这种做法是,比如10万本金,实际持仓只有2万,后来总资金做到了20万,拿来做的只有4万,大多数利润用于补仓。而你把10万分给5个人,假如有人做到了20万,他还会把20万全部投入。不知道明白区别没有?
画家Painter
26-03-28 13:52
0
100%仓位 相当于一个单位。(比如10W)
20%仓位也相当于1个单位。(比如2W)但是我后面还有4个单位可以继续玩下去。
理论上,满仓和20%仓位。只是能多玩4次
游戏
而已。
20%看成一个整体。100%看成一个整体。
这结果就是一样的扎心。
刷新
首页
上一页
下一页
末页
提交