V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
chacores

Flask + Pandas 写了一个 TradingView 回测数据深度分析工具

  •  
  •   chacores · Nov 30, 2025 · 1959 views
    This topic created in 149 days ago, the information mentioned may be changed or developed.

    V2EX 的朋友们。

    最近在使用 tradingview ,发现 TradingView 自带的“策略测试器”虽然方便,但导出的报告在很多关键指标上还是不够细致。

    特别是对于股票市场,我需要更关注持仓周期的风险。而且 TV 的报告主要基于“平均值( Mean )”,很容易被几笔极端的运气单误导,我看不到“中位数( Median )”表现,也无法直观评估策略的鲁棒性。

    基于 Flask + Pandas + Pyecharts 撸了一个本地化的深度分析工具,专门用来清洗和分析 TradingView 导出的 CSV 数据。

    拒绝“平均值欺骗”: 原生报告只给平均盈利,加上了中位数盈利。如果平均值远大于中位数,说明策略全靠运气单死撑,实盘风险极大。

    引入蒙特卡洛模拟 (Monte Carlo Simulation) 但是现在是有 bug 的,应该是 csv 文件的局限性导致最后肯定会一样

    MAE vs MFE 交易质量分析: 绘制了最大浮盈 (MFE) 和最大浮亏 (MAE) 的散点图。一眼就能看出是“卖飞了”还是“硬扛单”。

    季节性/周期性效应: 按年份和月份聚合,计算月度回报的加权平均和中位数。

    还有正常每次开仓的间隔,也就是两次仓位之间的中位数时间

    问问论坛里的,有没有做投资的,这样的工具有用吗。 策略我是用社区的指标,用 Gemini 改的,引入 t+1 。然后 webhook 推送给我,我自己还会判断。 买了交易所的实时数据 至少我在 11 月大跌里也盈利了。 谢谢大家

    下面是图片

    1764434680968.png

    3 replies    2025-11-30 15:52:29 +08:00
    Sawyerhou
        1
    Sawyerhou  
       Nov 30, 2025 via Android
    中位数几乎不看,看胜率和盈亏比。

    如果盈亏比高,那么收益主要由少量大收益交易贡献;如果胜率高,那么收益主要由大量小收益交易累积得到;如果胜率、盈亏比都低,那这个策略是亏钱的无效策略。

    平均收益是每笔交易的期望收益,可以跟交易成本比较,有实际含义;中位数收益是纯统计数据,实际交易中无法使用,没有实际含义。

    收益由少量大收益交易贡献,不代表是运气,只是策略的特点,就像做打板的,就是三年不开张,开张吃三年。不是胜率高的策略比盈亏比高的策略好,这就是为什么平均收益更常用,只要赚钱的策略就是好策略,钱怎么赚来的并不重要。

    建议先把已有的指标研究透,含义是什么,怎么用的,然后再新增自己的指标。
    labubu
        2
    labubu  
       Nov 30, 2025
    这个是最好的股票组合回测网站了: https://www.portfoliovisualizer.com/backtest-portfolio#analysisResults
    dominic0312
        3
    dominic0312  
       Nov 30, 2025
    我的经验是,主观手动交易有一定的经验再来做自动化才行,把自动化交易作为辅助手段和次要仓位, 要不然会陷入无限回测的陷阱中; 当然如果你的工作就是无限回测当我没说。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1015 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
    ♥ Do have faith in what you're doing.