探讨帖--怎样使自己的交易系统更适合未来的变化,避免过度优化

Discussion in 'Futures' started by youthto, Dec 4, 2007.

  1. 通过对历史数据的分析,运用趋势跟随指标、反转指标、突破指标以及一些头寸管理原则等等,可以在历史数据中发现建仓的机会,有效的管理头寸。

    所谓的优化,通过调整指标参数可以把大亏损单过滤掉,同时留下盈利单,更好的做止赢和止损,截断亏损把盈利放大。但是,没有很好的标准去判定优化是否适合未来的变化,没有很好的标准判定是否过度优化,用历史数据做优化很容易走入过度优化的迷宫里。
    通常,胜率在4成左右比较合适,可是,不代表对历史数据优化后胜率是4成就是好,历史数据也未必是越多越好。
    关于盈利,并不是优化后盈利越大越好,优化后的盈利美只是让交易系统更适合历史数据了,某种程度上会损害交易系统对未来的适应能力。

    有什么好的办法来判定优化的效果吗?
    怎样能令到交易判断模型,更适合未来(不用太久,但至少1、2个月)

    约定
    1.此帖主要针对日内交易,如果是针对长周期的想法请特别说明

    2.此帖主要针对指数期货或商品期货,如果是针对股票交易系统的想法请特别说明
     
  2. 个人认为,200次交易以上,能够尽可能多的涵盖市场出现的模式,多空双向,固定手数还能维持收益曲线的稳定,并且max concequence drawdown<8
     
  3. 针对上面提出的标准

    请问neo_cn前辈,

    200次交易是针对单个指标,还是多个指标,这200次有没有限定要在多长时间内出现

    是1个指标涵盖时要求出现200次交易以上,还是多个指标涵盖时要求出现200次交易

    谢谢!!!
     
  4. 还是结合些例子来说吧,

    有没有人考虑过突变的问题,例如恒指进入8月份,明显活跃了,每分钟变化明显比以前放大,简单的策略,都能比之前获得更好的收益,在这种情况下,之前做的一些严格的限制,可以考虑放宽以获取更大的利润。
    8月、10月都是比较平滑的,9月份相对来说,还可以。
    但是,进入11月,又出现了突变,日内的波动非常的剧烈,非常容易带来很大的亏损,这种幅度和走法,之前都是没法想象的,根据之前2~3年的数据,进行再多的测试、优化,都无法得到一个比较适合11月的系统。
     
  5. 我个人认为,通过对历史数据优化作出的系统可以被看作是自然界中适应了某个阶段某种环境的生物,比如说恐龙,当系统出现突变,比如彗星撞地球,恐龙就要灭绝。

    所以我提出至少要200次交易,而且看来需要明确一下,这200次交易应该是由单一的逻辑和标准(单一系统)在单一市场上的交易次数。因为据我的统计,200次以上的交易需要经历比较长的时间,在比较长的时间内你的系统会遭遇市场的足够多的变故,在足够多的市场形态和模式下运行,经历了足够多的磨难,而表现一直比较稳定,才可以初步说明这个系统“行”。

    而且我发现这种系统的主导思想往往是有理可循的,而非大量数据适应的结果。

    我也举个例子:在《股市潜规则》这个入门级书籍里面有这么一句话:没有只涨不跌的股票,同样也没有止跌不长的股票。当我们把眼光放在日线周期级别,我们可以指出哪里是震荡,哪里是趋势,但若是进一步拉近焦距,我们看1分钟 5分钟 10分钟周期级别数据,那么看到的震荡将更多,也就是说在短线或者超短线上,震荡的模式出现的比较多,因此我在小周期上采用趋势反转系统,我就赌小周期上不会出现太多的连长和连跌,严格控制止损,根据简单的动态(还记得loveice在系统交易年会上的发言吗)超买超卖,在长达四年的5分钟数据上,取得了800次交易上保持收益曲线平滑的效果,但是获利甚微。

    另外,系统交易者必须意识到,在某些经常发生性质突变的市场,恐怕是不适合使用系统交易方法的。

    请各位指正
     
  6. 有理可循,而不仅是大量数据的适应,非常赞同这个观点!

    我现在探索中的系统包含趋势跟随、趋势反转、突破平台等类型的指标,同时也加入头寸管理,我觉得那几个指标是兼容的,不知道各位探索者有没有不同的看法。

    通常的统计,市场的走法是横盘占超过80%,形成趋势占少于20%,但是对于日内系统来说,需要考虑基于分钟的变化,很小的趋势,持续不到30分钟就可以看作是一段小趋势,在这种情况下,趋势跟随的机会也是非常的多的,也可以做出一种微利系统,止赢、止损都设得小一点。不过,价格变化的强度变化后,指标中的参数都需要去调整,否则会出现没机会建仓或机会过多的情况,胜率就没办法控制了。

    通过头寸管理来放大利润,感觉也是一种不错的做法,对于一段大趋势来说,能在反转时就建仓,在小调整时有足够的盈利来守住头寸,最后吃掉趋势中最大的那段,是一件很幸运的事情(在市场里,幸运的事情通常概率都低,所以不容易拿捏)。

    经常发生性质突变的市场,恐怕是不适合使用系统交易方法,赞同,不过如何判断是自己的系统做得不够好,还是目标市场是经常发生性质突变的呢,感觉不容易。
     
  7. neo_cn前辈或其他的坛友,有没有考虑过自主学习系统和自适应系统,人工智能方面的应用,例如人工智能神经网络系统等,有没有人应用过类似的方法来改进自己的系统,模拟人类来学习市场的变化,能说一下经验吗,成功的或是失败的,都好
     
  8. 可以参考一下 Forex Trading System - Encyclopedia of Trading Strategies这本书
    电驴上有下的
    里面介绍了神经网络 和 基因算法两种设计系统的新思路
    这也是我看过的对我启发最大的一本书了
     
  9. 多谢楼上的兄弟!
     
  10. 遗传算法(Genetic Algorithm)是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是有美国Michigan大学J.Holland教授于1975年首先提出来的,并出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》,GA这个名称才逐渐为人所知,J.Hilland教授所提出的GA通常为简单遗传算法(SGA)。
    遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小挑选(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。
     
  11. 遗传算法是一类可用于复杂系统优化的具有鲁棒性的搜索算法,与传统的优化算法相比,主要有以下特点:
    1、 遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接决策变量的实际植本身,而遗传算法处理决策变量的某种编码形式,使得我们可以借鉴生物学中的染色体和基因的概念,可以模仿自然界生物的遗传和进化机理,也使得我们能够方便的应用遗传操作算子。
    2、 遗传算法直接以适应度作为搜索信息,无需导数等其它辅助信息。
    3、 遗传算法使用多个点的搜索信息,具有隐含并行性。
    4、 遗传算法使用概率搜索技术,而非确定性规则。
     
  12. 由于遗传算法的整体搜索策略和优化搜索方法在计算是不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学,下面我们将介绍遗传算法的一些主要应用领域:
    1、 函数优化。
    函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续函数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于一些非线性、多模型、多目标的函数优化问题,用其它优化方法较难求解,而遗传算法可以方便的得到较好的结果。
    2、 组合优化
    随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题、 背包问题、装箱问题、图形划分问题等方面得到成功的应用。
    此外,GA也在生产调度问题、自动控制、机器人学、图象处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。
     
  13. 不谢啊 希望对你有帮助~~
     
  14. 我个人对“自主学习系统和自适应系统,人工智能方面的应用,例如人工智能神经网络系统等”持反对意见。
    也许是因为我曾经尝试过,并且以失败告终,我很清楚我们对这些新技术的了解一定是非常有限的,它发展的速度要快于我们学习他的速度。

    我主要的反对在于:金融时间序列的分析和预测不同于人脸识别、炮弹落点估算这些典型的人工智能方面的应用。 第一 金融时间序列本身就是数字的 第二 即使是最简单的rsi也已经是金融时间序列上成功的模式识别了 第三 也是最关键的一点 金融时间序列的研究重点在判断其未来走势!而非历史数据。

    我深信科技的进展一定会对我们有所帮助,但我们要做出一些选择:对于交易和投资,现存的技术到底够不够用?我们是否需要借助新技术来解决不确定性? 是否能够找到市场中能够让你获利的确定性?是否真的有必要要找到确定性?不确定性中长期获利的方法是否更值得追寻?

    我个人的胡说八道、仅供参考
     
  15. 在穷举计算能够覆盖所有可能性的情况下,换言之,在计算能力能够满足需要的情况下,任何种类优化计算的结果,都已经涵盖在穷举计算的结果里了。
     
  16. 感谢neo_cn前辈!
    感谢laot前辈!
     
  17. 遗传算法是基于生物学的,理解或编程都不太难。下面是遗传算法的一般算法:

    创建一个随机的初始状态

    初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。

    评估适应度

    对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。

    繁殖(包括子代突变)

    带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变)。后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。

    下一代

    如果新的一代包含一个解,能产生一个充分接近或等于期望答案的输出,那么问题就已经解决了。如果情况并非如此,新的一代将重复他们父母所进行的繁衍过程,一代一代演化下去,直到达到期望的解为止。

    并行计算

    非常容易将遗传算法用到并行计算和群集环境中。一种方法是直接把每个节点当成一个并行的种群看待。然后有机体根据不同的繁殖方法从一个节点迁移到另一个节点。另一种方法是“农场主/劳工”体系结构,指定一个节点为“农场主”节点,负责选择有机体和分派适应度的值,另外的节点作为“劳工”节点,负责重新组合、变异和适应度函数的评估。
     
  18. 个人认为穷举只存在理论上的可能性,穷举意味着无限。

    有人曾经提过这样的想法,也许是世界上最优的压缩算法,就是通过一个数学等式,存储一切,这个式子的结果是一个无穷值,这个无穷值里面包含了宇宙中一切的信息,理论上,我们可以通过穷举来找出这个等式,但是,由于计算能力的限制,我们找到的可能性无限接近于0


    计算机的存储是有限的,计算速度也是有限的,人就更不用说了,而我们需要在有限的时间内穷举无限的可能性,计算能力和存储能力都无法得到满足。

    那么,如何定义一个标准,这个标准能使我们在有限的时间,有限的计算速度,有限的存储里面,无限接近这个标准,就是我们把不可能变为可能的途径。

    当然,定义这个标准太难,这个标准也是不断的变化之中的,而且应该说那是一个标准框架,里面定义着各种研究对象所要达到的最优结果。
     
  19. 那个最优结果不是理论上的最优,而是我们在一段时期内可以接受的最优
     

  20. 了解了一下遗传算法,有些东西感觉不错,虽然未有实践,也不妨空谈一下吧,哈哈

    首先,定义我们可以接受的基于历史的盈利标准,需要找出一套解的集合,这个解还是基于现在的技术分析。

    其次,定义我们可以接受的基于短期未来的盈利标准,我们没可能找到一个确定的、未来一直盈利的系统,我们不能把标准定得太高

    再次,通过遗传算法,找出无限接近未来盈利标准的解子集

    最后,一切都在变化之中,只有变化是不变的,我们之前做的东西都需要一直不断的优化,最优的解子集,通过适应未来的变化来不断优化自己,就像生物适应它周围的环境

    当这个事情开始之后,让它停下来的理由,就是进化失败了,其实,还是不确定,只是最大程度上接近自己希望的结果。
     
    Last edited by a moderator: Dec 18, 2007