为您推荐:
精华内容
最热下载
问答
  • 601KB nodeprefererer 2019-05-08 19:06:46
  • 2.17MB nodeprefererer 2019-04-18 10:22:32
  • 664KB sublinephp 2019-05-14 11:12:02
  • 580KB sublinephp 2019-05-14 11:10:52
  • 555KB nodeprefererer 2019-05-08 19:16:02
  • 1.28MB nodeprefererer 2019-05-07 16:47:32
  • 超级计算机(supercomputers)通常是指由数百数千甚至更多的处理器(机) 超级计算机 超级计算机 组成的、能计算普通PC机和服务器不能完成的大型复杂课题的计算机。超级计算机是计算机中功能最强、运算速度最快、...

    超级计算机(supercomputers)通常是指由数百数千甚至更多的处理器(机)
    超级计算机

    超级计算机
    组成的、能计算普通PC机和服务器不能完成的大型复杂课题的计算机。超级计算机是计算机中功能最强、运算速度最快、存储容量最大的一类计算机,是国家科技发展水平和综合国力的重要标志。超级计算机拥有最强的并行计算能力,主要用于科学计算。在气象、军事、能源、航天、探矿等领域承担大规模、高速度的计算任务。在结构上,虽然超级计算机和服务器都可能是多处理器系统,二者并无实质区别,但是现代超级计算机较多采用集群系统,更注重浮点运算的性能,可看着是一种专注于科学计算的高性能服务器,而且价格非常昂贵。一般的超级计算器耗电量相当大,一秒钟电费就要上千,超级计算器的CPU至少50核也就是说是家用电脑的10倍左右,处理速度也是相当的快,但是这种CPU是无法购买的,而且价格要上千万。
    网络计算机

    服务器Server

    专指某些高性能计算机,能通过网络,对外提供服务。相对于普通电脑来说,稳定性、安全性、性能等方面都要求更高,因此在CPU、芯片组、内存、磁盘系统、网络等硬件和普通电脑有所不同。服务器是网络的节点,存储、处理网络上80%的数据、信

    息,在网络中起到举足轻重的作用。它们是为客户端计算机提供各种服务的高性能的计算机,其高性能主要表现在高速度的运算能力、长时间的可靠运行、强大的外部数据吞吐能力等方面。服务器的构成与普通电脑类似,也有处理器、硬盘、内存、系统总线等,但因为它是针对具体的网络应用特别制定的,因而服务器与微机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在差异很大。服务器主要有网络服务器(DNS、DHCP)、打印服务器、终端服务器、磁盘服务器、邮件服务器、文件服务器等。

    工作站Workstation

    是一种以个人计算机和分布式网络计算为基础,主要面向专业应用领域,具备强大的数据运算与图形、图像处理能力,为满足工程设计、动画制作、科学研究、软件开发、金融管理、信息服务、模拟仿真等专业领域而设计开发的高性能计算机。它属于一种高档的电脑,一般拥有较大屏幕显示器和大容量的内存和硬盘,也拥有较强的信息处理功能和高性能的图形、图像处理功能以及联网功能。

    无盘工作站是指无软盘、无硬盘、无光驱连入局域网的计算机。在网络系统中,把工作站端使用的操作系统和应用软件被全部放在服务器上,系统管理员只要完成服务器上的管理和维护,软件的升级和安装也只需要配置一次后,则整个网络中的所有计算机就都可以使用新软件。所以无盘工作站具有节省费用、系统的安全性高、易管理性和易维护性等优点,这对网络管理员来说具有很大的吸引力。

    无盘工作站的工作原理是由网卡的启动芯片(Boot ROM)以不同的形式向服务器发出启动请求号,服务器收到后,根据不同的机制,向工作站发送启动数据,工作站下载完启动数据后,系统控制权由Boot ROM转到内存中的某些特定区域,并引导操作系统。

    根据不同的启动机制,目前比较常用无盘工作站可分为RPL 和PXE。RPL 为Remote Initial Program Load 的缩写,此技术常用于Windows95 中。PXE 是RPL 的升级品,它是Preboot Execution Environment的缩写。两者不同之处在于RPL 是静态路由,而PXE 是动态路由,其通信协议采用TCP/IP,实现了与Internet 连接高效而可靠,它常用于Windows98、Windows NT、Windows2000、Windows XP 、Windows 7、Windows8、Windows10中 。

    集线器

    集线器(HUB)是一种共享介质的网络设备,它的作用可以简单的理解为将一些机器连接起来组成一个局域网,HUB 本身不能识别目的地址。集线器上的所有端口争用一个共享信道的带宽,因此随着网络节点数量的增加,数据传输量的增大,每节点的可用带宽将随之减少。另外,集线器采用广播的形式传输数据,即向所有端口传送数据。如当同一局域网内的A 主机给B 主机传输数据时,数据包在以HUB 为架构的网络上是以广播方式传输的,对网络上所有节点同时发送同一信息,然后再由每一台终端通过验证数据包头的地址信息来确定是否接收。其实接收数据的一般来说只有一个终端节点,而现在对所有节点都发送,在这种方式下,很容易造成网络堵塞,而且绝大部分数据流量是无效的,这样就造成整个网络数据传输效率相当低。另一方面由于所发送的数据包每个节点都能侦听到,容易给网络带来一些不安全隐患。

    交换机

    交换机(Switch)是按照通信两端传输信息的需要,用人工或设备自动完成的方法把要传输的信息送到符合要求的相应路由上的技术统称。广义的交换机就是一种在通信系统中完成信息交换功能的设备,它是集线器的升级换代产品,外观上与集线器非常相似,其作用与集线器大体相同。但是两者在性能上有区别:集线器采用的是共享带宽的工作方式,而交换机采用的是独享带宽方式。即交换机上的所有端口均有独享的信道带宽,以保证每个端口上数据的快速有效传输,交换机为用户提供的是独占的、点对点的连接,数据包只被发送到目的端口,而不会向所有端口发送,其它节点很难侦听到所发送的信息,这样在机器很多或数据量很大时,不容易造成网络堵塞,也确保了数据传输安全,同时大大的提高了传输效率,两者的差别就比较明显了。

    路由器

    路由器(Router)是一种负责寻径的网络设备,它在互联网络中从多条路径中寻找通讯量最少的一条网络路径提供给用户通信。路由器用于连接多个逻辑上分开的网络,为用户提供最佳的通信路径,路由器利用路由表为数据传输选择路径,路由表包含网络地址以及各地址之间距离的清单,路由器利用路由表查找数据包从当前位置到目的地址的正确路径,路由器使用最少时间算法或最优路径算法来调整信息传递的路径。路由器是产生于交换机之后,就像交换机产生于集线器之后,所以路由器与交换机也有一定联系,并不是完全独立的两种设备。路由器主要克服了交换机不能向路由转发数据包的不足。

    交换机、路由器是一台特殊的网络计算机,它的硬件基础CPU、存储器和接口,软件基础是网络互联操作系统IOS。

    交换机、路由器和PC机一样,有中央处理单元CPU,而且不同的交换机、路由器,其CPU一般也不相同,CPU是交换机、路由器的处理中心。

    内存是交换机、路由器存储信息和数据的地方,CISCO交换机、路由器有以下几种内存组件:

    ROM(Read Only Memory)存储交换机、路由器加电自检(POST:Power-On Self-Test)、启动程序(Bootstrap Program)和部分或全部的IOS。交换机、路由器中的ROM是可擦写的,所以IOS是可以升级的。

    RAM(Random Access Memory)与PC机上的随机存储器相似,提供临时信息的存储,同时保存着当前的路由表和配置信息。

    NVRAM(Nonvolatile Random Access Memory)存储交换机、路由器的启动配置文件。NVRAM是可擦写的,可将交换机、路由器的配置信息拷贝到NVRAM中。

    FLASH闪存,是可擦写的,也可编程,用于存储CISCO IOS的其它版本,用于对交换机、路由器的IOS进行升级。

    接口用作将交换机、路由器连接到网络,可以分为局域网接口和广域网接口两种。由于交换机、路由器型号的不同,接口数目和类型也不尽一样。常见的接口主要有以下几种:

    高速同步串口,可连接DDN,帧中继(Frame Relay),X.25,PSTN(模拟电话线路)。

    同步/异步串口,可用软件将端口设置为同步工作方式。

    AUI端口,即粗缆口。一般需要外接转换器(AUI-RJ45),连接10/100Base-T以太网络。

    ISDN端口,可以连接ISDN网络(2B+D),可作为局域网接入Internet 之用。

    AUX端口,该端口为异步端口,主要用于远程配置,也可用于拔号备份,可与MODEM连接。支持硬件流控制(Hardware Flow Control)。

    Console端口,该端口为异步端口,主要连接终端或运行终端仿真程序的计算机,在本地配置交换机、路由器。不支持硬件流控制。

    展开全文
    weixin_45044981 2019-06-03 10:33:34
  • 我们单单把图画了出来,那是不是就可以在策略中用了?当然不是。拿之前的统计举例,可以看见两个比较明显的问题 先看紫色标注的位置,那里统计的胜率很高。如果们选择在5日收益率1.17时买入,会怎么样?首先5日...

    我们经常在抓反弹时感觉像在抓一只刺猬,不知道该怎么下手。左侧交易会不会买在半山腰?右侧交易会不会进场太晚?什么时候买入真是让人头疼。切莫苦恼,你完全可以通过历史数据统计判断反弹的时机。今天公众号给大家介绍一种简单的统计方法,它不能保证抓反弹次次成功,但可以让你对多错少,累积起来就是真实的收益!

    动机
    股票的价格会以它的均线为中心进行波动。也就是说,当标的价格由于波动而偏离移动均线时,它将调整并重新归于均线。那么如果我们如果能捕捉偏离股价的回归,就可以从此获利。本篇要讲的是,统计历史数据中价格偏离所对应的反弹幅度,选择胜率最高的偏离度作为入场信号。

    波动大小的相对性

    举实例来说。下图是某支股票的 60 分钟线,中间紫色曲线为股价的 5 日均线。可以看出在蓝色线段标明的时间里,股价波动平缓。在两个粉色箭头处,股价比均线分别高 4.1% 和低 5.9%。这些波动较前段时间更为剧烈,可以告诉我们股价发生了偏离。
    在这里插入图片描述
    再看下图,这是同一支股票在另一段时间的 60 分钟线。这段时间里价格波动幅度大,在粉色箭头的位置,价格和均线的差距分别为5.3% 和 5.1%,但我们不将其视为显著的价格偏离。
    在这里插入图片描述
    标准差
    标准差(standard deviation),通常用小写希腊字母 σ(sigma,读“西格玛”)表示。通俗地讲,一组数据的标准差就是这组数据离均值的普遍差距。标准差的计算公式为
    在这里插入图片描述
    如果这组数据的波动较大,那么 σ 相应也会较大;相反的,如果这组数据波动小,那么 σ 会更接近零。

    举例来说,假设我们有一组数据 A=(1,0,0,0,0−1,0,0,0,0),如下
    在这里插入图片描述
    它的平均值是 0,标准差是

    在这里插入图片描述
    ‍‍这时如果下一项出现的数据是x11=1,可以算出它和均值的差是2.23倍标准差,可以被视为是一个较大的波动。
    在另一种情况里,假设我们的数据是 B=(1,−1,1,−1,1,−1,1,−1,1,−1)如下图
    在这里插入图片描述
    可以直观地看出波动较大。这组数据同样是均值等于0,它的标准差是
    在这里插入图片描述
    ‍‍‍‍‍明显比数据 ‍‍‍‍A的标准差更大。这时如果出现新的数据 x11,由于它和均值的差距等同于标准,我们不认为它是一个很大的波动。

    有了这个概念,我们可以构造一种利用标准差来测量当日股价波动幅度的方法。取过去N天收盘价,并取其标准差 σ,设今日股价为P并且N日日均线值为MAN
    在这里插入图片描述
    这个值得含义是,相较过去N天的价格,今日股价与均值的偏差为 ρ倍的标准差。如果绝对值ρ比较大,我们判定今日价格波动比历史波动更为突出;反之绝对值ρ比较小,我们判定今日的波动很普通,就叫它“N日偏离倍数”。

    偏离倍数和赢输的统计

    我们没法凭空预测偏离倍数在多大的情况下价格会反弹,也不能盲目地认为偏离倍数越高越好。我们干脆穷举,对历史上所有的偏离倍数(范围),统计其后后股价的走势,然后将胜率最高的偏离倍数视为入场信号,在其出现时买入。

    ‍‍
    统计的对象
    现代金融理论认为,证券价格的时间序列在大部分时间服从随机游走,但是在一些特定的时刻(比如基本面发生变化,或者供需关系发生变化),价格序列会偏离随机游走,并且选择向上或者向下的方向。当价格在脱离随机游走时,通常都会产生一些现象或征兆,就是我们常说的“信号”,如果我们捕捉到这些信号,就可以赚取收益。

    我们使用利用股票的历史数据计算各种各样的指标(比如MACD,RSI),就是为了通过指标的数值来判断是否出现信号。但很多时候指标的使用是粗糙并且模糊的,比如“当RSI低于20时买入”是一个发出信号的标准,但为什么是20呢?18或者22会不会效果更好?我们想通过历史统计来分析这个问题,那么进行统计的对象就有两个:指标出现的数值,以及出现该数值之后的涨跌结果。

    指标

    一般而言,一支股票的指标是一个函数Ind(T),它输入的是时间T(确切地说还有时间T之前的所有股票数据),返回的是在那个时间点的指标数值。比如说,我们要考量的指标是过去5天的收益率,那么指标的输出就是今日收盘价除以五天前收盘价的商再减1。

    结果

    结果指的就是,我们认为指标所预测的事件到底有没有发生,由此把结果分为“赢”、“平”和“输”。举例来说,假设我们认为过去5天的收益率越高,未来两天的收益率就越大;那我们要观测的结果就是未来两天交易量的情况,如果未来两天的平均交易量大于今天的110%,就记作“赢”,小于今天的100%就记作“输”,其余情况记作“平”。这里“赢平输”的计算标准有一定拍脑袋的成分,这么做的缺点就是统计的数据不全面,优点是结果更直观更方便应用,并且如果统计结果不理想,我们可以更改输赢的决定方法再重新来过。

    指标和结果的统计

    数据统计

    一、提取历史所有交易日的股票数据,并去掉停牌日的信息;
    二、记录每一天的指标和输赢结果。对于每一个不停牌的交易日T,做:
    a. 计算当日的指标Ind(T),方便统计需要,四舍五入到合适的小数点位;
    b. 计算从T日起观测的输赢结果;
    c. 记录事件组(Ind(T),赢或平或输)。
    三、统计指标的某个值出现后赢和平和输分别发生过多少次。

    举例个简单的例子。假设我们认为过去5天涨得越多则未来五天越可能跌。那么把五日收益率设为指标;未来第五天收盘价小于今日收盘价则记为赢,大于记输,等于则记平。

    首先收集数据,注意要把停牌时的数据去掉,这里是从06年2月2日到16年2月2日。

    prices = get_price('002200.XSHE', start_date="2006-02-02", 
    end_date="2016-02-02", frequency='daily', fields=['close'], 
    skip_paused=True)['close']
    import pandas as pddef get_stats(prices):
        # 设置一个计数器
        i = 5
        # 设置一个空list
        data = []    # 从第一个到倒数第二个价格
        while i < len(prices)-4:        # 计算五日收益率,留小数点后2位
            ratio = 0.01 * ((prices[i]/prices[i-5]) //0.01)        # 如果第五天收盘价更低
            if prices[i+4] < prices[i]:            # 那结果记赢
                result = 'win'
            # 如果第五天收盘价更高
            if prices[i+4] > prices[i]:            # 结果记输
                result = 'lose'
            # 收盘价不变的话
            if prices[i] == prices[i+4]:            # 记平
                result = 'even'
            # 看看该比例有无记载过
            ratio_recorded = False
            # 翻看data
            for data_dict in data:            # 如果比例被记载过
                if data_dict['value'] == ratio:                # 那就好,更新输赢
                    data_dict[result] += 1
                    # 记载过为是
                    ratio_recorded = True
            # 如果翻完了发现没记载过,
            if ratio_recorded == False:            # 那么就记载下来
                data_dict = {'value':ratio, 'win':0, 'lose':0, 'even':0}
                data_dict[result] += 1
                data.append(data_dict)        # 别忘更新i
            i += 1
        # 转换成DataFrame
        df = pd.DataFrame(data,  columns=['value', 'win','even', 'lose'])    # 按照value列从小到大排序
        df = df.sort(['value'], ascending = True)return(df)
    

    在这里插入图片描述
    制图

    把统计好的数据画出来就可以看出效果了。基于以上数据的特性,我们要画一个叠加条状图。该图的x坐标轴是指标的值,y轴则是该指标值出现的次数,并按颜色划分成“赢平输”叠加的条状图。代码如下:

    Import matplotlib.pyplot as plt# 设置图的大小
    
    fig_size = plt.rcParams["figure.figsize"]
    fig_size[0] = 15
    fig_size[1] = 10# 把统计的DataFrame中竖列抽出来
    
    values = stats['value']
    wins = stats['win']
    evens = stats['even']
    loses = stats['lose']# 画输的数目,颜色为红
    
    p1 = plt.bar(values, loses, width = 0.008, color='r')# 画平的数目,颜色为黄,底部在输之上
    p2 = plt.bar(values, evens, width= 0.008,  bottom = loses, color='y')# 画赢的数目,颜色为绿,底部在输+平之上
    p3 = plt.bar(values, wins, width=0.008, bottom = evens+loses, color='g')# 标注坐标轴和注释
    
    plt.ylabel('输赢结果',size = 15)
    plt.xlabel('收盘价除以22',size = 15)
    plt.legend((p1[0], p2[0],p3[0]), ('输', '平','赢'))
    

    在这里插入图片描述
    在这里插入图片描述
    这样就可以清晰地看到一些规律。

    合理地使用统计结果
    我们单单把图画了出来,那是不是就可以在策略中用了?当然不是。拿之前的统计举例,可以看见两个比较明显的问题

    在这里插入图片描述
    先看紫色标注的位置,那里统计的胜率很高。如果们选择在5日收益率1.17时买入,会怎么样?首先5日收益率正好为1.17的概率很小,可能若干年都不出现信号。其次,可以看见它右边的1.18的胜率并不高,那么实际上当指标计算出为1.175时就无法合理判断。

    再看棕色框起的区域,这里只有赢没有输,但是这个区域中样本量太小了,完全无法保证统计结果的准确性。

    选择胜率最高的区间

    一个可行的解决办法,是设定一个指标区间的宽度w,并且设定最低数据比θ。如果一个宽度为w的x轴区间里的数据量占总数据量的θ以上,我们就计算并记录该区间里的输赢比;如果区间内数据比例少于θ,我们则抛弃该区间。最后选出输赢比最高的区间作为产生信号的指标值。

    比如我们设w=4,那么在1.08到1.11的区间里,赢输比为66:58。

    在这里插入图片描述
    我们要选的是依照该计算方法得到的赢输比最高的区间。

    下面函数的4个输入分别为:
    statistics – 之前算出的DataFrame统计数据
    tick_width – 指标值的最小间隔(跳动值,比如上面的示例里就是0.01)
    least_percentage – 要求区间数据量至少有总数据量的多少
    band_width – 区间的宽度,整数,可理解为进行多少次tick_width的跳动。

    代码如下

    #返回一Series,内容 low=区间低点,high=区间高点,ratio=区间赢输比def find_best_region(statistics, tick_width, least_percentage, band_width):
        # 取出统计df的列
        values = statistics['value']
        loses = statistics['lose']
        wins = statistics['win']
        evens = statistics['even']    # 算总数据量
        num_data = sum(wins) + sum(loses) + sum(evens)    # 起始一list
        mydata = []    # 计算指标统计出的最低值除以间距,取整数,方便后面移动计算。
        low_bound = int(statistics['value'].iloc[0]/tick_width)    # 计算指标统计出的最高值除以间距,减去区间宽度
        high_bound = int(statistics['value'].iloc[-1]/tick_width - band_width + 1)    # 对于上限和下限之间的所有整数
        for n in range(low_bound, high_bound ):        # 选取统计中所对应的区间
            statistics1 = statistics[values >= float(n)*tick_width]
            stat_in_range  = statistics1[values <= float(n + band_width - 1) * tick_width]        # 计算区间中的赢输比。输数加一,避免除以零。
            ratio = float(sum(stat_in_range['win'])) / float(sum(stat_in_range['lose'])+1)        # 计算区间中数据量
            range_data = float(sum(stat_in_range['win']) + sum(stat_in_range['lose']) + sum(stat_in_range['even']))        # 如果区间数据量除以总数据量大于最低数据比
            if range_data / num_data >= least_percentage:            # 记录区间的最低值,最高值,和区间内的赢输比
                mydata.append({'low': float(n) * tick_width, 'high': float(n+band_width) * tick_width, 'ratio': ratio})    # 制作DataFrame
        data_table = pd.DataFrame(mydata)    # 按照赢输比排序
        sorted_table = data_table.sort('ratio', ascending = False)    # 返回第一行return(sorted_table.iloc[0])
    

    对于上面的例子,tick_width = 0.01,再设 least_percentage = 0.03,以及 band_width = 4,计算

    find_best_region(stats,0.01, 0.03, 4)
    

    得到区间[1.12,1.16],区间内输赢比1.43。

    把所有的宽度都计算一遍。做法就是,先固定一个最短的宽度w_0,对于所有宽度为w_0的区间进行上面的计算,然后将宽度换为w_0+1再重复一遍,然后是w_0+2,以此类推,直到达到了设定的最大宽度。最后取这个过程中算出的最大的输赢比,并取相应的区间。

    具体的计算已经由上面的函数完成,现在只要再包装一个函数来迭代地以不同的宽度呼出上面的函数,得到每个长度的最佳区间,再从这里面选出胜率最好的。
    这里输入的statistics,tick_width,least_percentage和之前相同,另外的两个输入是
    least_width – 最短的区间宽度
    most_width – 最大的区间宽度

    代码

    #返回一Series,内容 low=区间低点,high=区间高点,ratio=区间赢输比def find_absolute_best_region(statistics, tick_width, least_percentage, least_width, most_width):
        # 创建标注列的空DF
        columns = ['low', 'high', 'ratio']
        df = pd.DataFrame(columns = columns)    # 对于所有在最短和最长标准之间的宽度
        for band_width in range(least_width, most_width + 1):        # 运行上面函数,得到该宽度的最佳区间
            best_width_region = find_best_region(statistics, tick_width, least_percentage, band_width)        # 将结果加入DF
            df = df.append(best_width_region, ignore_index = True)    # 将赢输比从大到小排列
        sorted_table = df.sort('ratio', ascending = False)    # 返回第一行return(sorted_table.iloc[0])
    

    还是同样的例子,这次least_percentage选0.05,最小宽度least_width=2,最大宽度most_width=30。然后

    find_absolute_best_region(stats, 0.01, 0.05, 2, 30)
    

    得到宽度为19的区间[1.12,1.31],这之间的赢输比为1.72,这也是使用该指标时保证5%数据量的情况下的最大赢输比!

    偏离倍数和赢输的统计

    按照文中的思路,我们要计量的指标是上一节中介绍的 N 日偏离倍数 ρ。另外,我们只记录 ρ小于-1和大于等于-1,那说明价格偏离不大,则不构成回归信号。

    以某股票从 2006 年到 2016 年的数据为例,统计结果如下:

    在这里插入图片描述

    我们设置参数:区间宽度最小数据比w=5,C塔=0.05,通过计算,得到区间为[-2.6,3.1],区间数据如下:

    在这里插入图片描述
    也就是说,根据历史统计,如果当偏离倍数在-3.1和-2.6之间时买入该股票,输赢的预期是27:12,还有2次平局。

    回测

    其实策略的主要部分已经完成,只要加上对资金和仓位的管理,就可以构成一个可运行的策略。这里我们就构建一个很简单的方案。

    设定如上一节所述每的参数:均线天数N,统计输赢天数T,止盈倍数u,止损倍数d,区间宽度w,和最小数据比Cta。每交易日执行以下操作:

    一、全仓卖出应当止盈或止损的股票,或持有超过 T天的股票;

    二、执行上一节的统计方法来更新每一支股票的最佳偏离倍数区间;

    三、如果空仓,选定任意一支偏离倍数在最佳区间内的股票并全仓买入,如果所有股票都不符合则空仓。买入时记录止盈线u倍和止损d倍,并且设如果T日内未触碰止盈或止损线,也全部卖出。

    来看一看回测结果。以下回测使用的股票池只包含 1 或 2 支标的股,这样便于看出策略对于个股发出的信号。文章最后的策略代码只适用于小规模的股票池;对于更大的股票池,信号会更加密集,因此需要调整每支股票的持仓量并且分别止盈止损,读者可以自行进行修改,或等待量化课堂未来的文章。另外,我们的回测从 2011 年开始,这样保证回测开始时就有一定的历史数据储备。

    结语

    首先是均值回归核心思路:

    价格偏离均线太多就会弹回来

    然后是,我们怎么判断偏离多少呢?

    价格减去均线除以历史波动的标准差可以丈量偏离的程度

    判断入场的话…

    利用历史统计的偏离倍数对应的输赢率判断入场时机

    最后还要指出,本篇文章旨为抛砖引玉,展示一种思路。文中的统计方法比较粗糙,策略也比较简单。想要在实战中应用的话,还需要进一步拓展、打磨并结合其他的方法,才能构造出一套成熟的交易策略。

    部分核心代码

     mydata = []        # 在所有位置不会溢出的位置
            for n in range(min(values), max(values) - (g.band_width-1)):            # 取在n和(n+宽度)之间的DF行
                stat_in_range = statistics[(values >= n) & (values <= n+g.band_width-1)]            # 赢除输(这里输+1,因为可能输=0)
                ratio = float(sum(stat_in_range['win'])) / float((sum(stat_in_range['lose']) + 1))            # 这区间数据总量
                range_data = float(sum(stat_in_range['win']) + sum(stat_in_range['lose']) + sum(stat_in_range['even']))            # 如果数据量超过预设的临界值
                if range_data / num_data >= g.least_percentage:                # 记录区间的输赢比
                    mydata.append({'low': n, 'high': n+g.band_width, 'ratio': ratio})        # 区间统计转换成DF
            data_table = pd.DataFrame(mydata)        # 按输赢比排序
            sorted_table = data_table.sort('ratio', ascending = False)        # 取第一行
            stock_best_range = sorted_table.iloc[0]
            stock_best_ranges[security] = stock_best_range    # 输出结果
        return(stock_best_ranges)# --代码块11.# 获取买入信号# 输出一list该买入的股票def buy_signals(stock_best_ranges, context):
        to_buy = [] 
        for security in g.security:
            stock_best_range = stock_best_ranges[security]        # 看现价
            current_price = attribute_history(security,1, '1d', 'close').iloc[0,0]        # 取倍数区间低点
            low = float(stock_best_range['low'])        # 取倍数区间高点
            high = float(stock_best_range['high'])        # 取赢率
            ratio = float(stock_best_range['ratio'])        # 获取历史收盘价
            h = attribute_history(security, g.ma_length, '1d', ['close'], skip_paused=True)['close']        # 计算均线
            ma = mean(h)        # 计算标准差
            sigma  = std(h)        # 算现价的偏离倍数
            times_sigma = (current_price - ma) / sigma        # 如果在该买的区间里
            if low <= 10 * times_sigma and 10 *times_sigma <= high:            # 加入买入列表
                to_buy.append(security)    return(to_buy)# --代码块12.# 获取卖出信号# 输出一list该卖出的股票def sell_signals(context): 
        to_sell = []    # 对于仓内所有股票
        for security in context.portfolio.positions:        # 取现价
            current_price = history(1, '1m', 'close', security).iloc[0,0]        # 查卖出条件
            conditions = g.sell_conditions[security]        # 看看是不是该卖了
            if current_price >= conditions['high'] or current_price <= conditions['low'] or conditions['days'] <= 0:            # 加入卖出信号,确保没有重复
                to_sell.append(security)        # 如果不需要卖
            else:            # 日数减1
                g.sell_conditions[security]['days'] -= 1
        return(to_sell)# ---代码块13.# 卖出函数def sell_stocks(to_sell, to_buy, context):
        for security in to_sell:        # 如果也在买入名单里
            if security in to_buy:            # 从卖出信号中删掉
                pass
            # 不该买的话
            else:            # 全卖掉
                order_target(security, 0)            # 如果没有卖干净呢
                if security in context.portfolio.positions:                # 把天数清零
                    g.sell_conditions[security]['days'] = 0# ---代码块14.# 买入函数def buy_stocks(to_buy, context):
        # 有多少钱
        cash_per_stock = context.portfolio.portfolio_value    if len(context.portfolio.positions) == 0:        # 对于所有买单里的股票
            for security in to_buy:
                order_value(security, cash_per_stock)            if security in context.portfolio.positions:                # 看现价
                    current_price = attribute_history(security,1, '1d', 'close').iloc[0,0]                # 获取历史收盘价
                    h = attribute_history(security, g.ma_length, '1d', ['close'], skip_paused=True)['close']                # 计算均线
                    ma = mean(h)                # 计算标准差
                    sigma  = std(h)                # 止损线
                    low = current_price - g.loss_times_sigma * sigma                # 止盈线
                    high = current_price + g.profit_times_sigma * sigma                # 在全局变量中记录卖出条件
                    g.sell_conditions[security] = {'high': high, 'lo
    
    展开全文
    nodeprefererer 2019-05-10 11:34:16
  • 中国股市创立以来的二十多年间,股市从公开的投融资...新兴的量化交易正在尝试提供一种理性投资的解决方案,通过大量的计算建立科学的盈利模型,为股民指引投资策略。最近AlphaGo的成功更让我们不禁期待人工智能未...

    你还在看电脑面前盯盘看K线吗? 你还在为一次亏损寝食难安,为一次盈利欣喜若狂吗? 如果是,那也许你就OUT了。随着量化交易的蓬勃发展,一群统计狗、程序猿们已经开始使用计算机模型进行交易了,这些程序用不休眠,无人值守,24小时为你监控市场,产生利润。真有那么好的事吗?这不就是印钞机了吗?

    请看下面分解。

    1、你是否坚信市场的有效性?
    在这里插入图片描述
    量化交易的获利来源于市场的无效性。如果市场服从随机游走,那大部分金融机构都可以关门了,还炒什么股啊。如果市场是有效的,那可能一个人一辈子都碰不到大牛市。持续不断的上涨的K线排列,概率该有多小啊。一个比较现实的假设是,市场在一定程度上是无效的,单纯的价格序列中存在大量的获利机会。

    2、概率的游戏
    在这里插入图片描述
    量化交易是概率的游戏,一个交易策略是否能够盈利,关键看胜率和盈亏比。胜率是盈利次数占总交易数的百分比,盈亏比是平均盈利和平均亏损的倍数关系。这两者需要平衡,也很难兼顾。例如,玩彩票盈亏比很高,胜率很低,所以总体是亏损的。

    3、一个概率取胜的例子
    在这里插入图片描述
    上图是个高盈亏比低胜率策略的策略。虽然盈利的交易很稀疏,但是却远离零点,亏损交易很密集,但紧贴零点,所以从右边的资金曲线上看,策略总体上是盈利的。所以,量化交易者会坦然的接受亏损,也会正确的看待盈利,它们只是交易系统的一个部分。

    4、量化交易策略的构建
    4.1思路部分
    在这里插入图片描述
    下面用一个例子来说明一个交易策略的生产过程。某交易员发现,价格突破了一些关键点位后,会向着突破的方向持续发展。于是我们设计一个简单的突破策略:当价格突破近期高低点时,相应的做多或做空。

    4.2准备条件
    在这里插入图片描述
    接下来,就要进行进一步细化,做成一个模型。需要回答这么几个问题:

    1、时间框架是怎样的? 小时线、日线还是周线?

    2、如何定义高低点? 往回看几跟K线?

    3、进场后如何止损? 固定点位止损还是ATR(平均真实波动)止损?

    4.3代码实现
    在这里插入图片描述
    将上述问题具体化以后,就用程序代码将它们予以实现。国内比较普遍使用的是tradeblazer和multicharts。当然,技术实力较强的交易者也可以选择自行开发交易平台,用java,python等语言予以实现。

    4.4参数优化
    在这里插入图片描述
    在策略构建的初期,一些参数是待定的。如均线的K线条数,止损点位,止盈点位等。这些参数都可以用遍历的方法进行优化,也就是说,穷举各种参数的组合,找到使盈利最大化的那一套参数。

    4.5继续优化

    在这里插入图片描述

    这里,我们对止盈点位和止损点位进行了优化,绘制了一副3D优化图。X和Y轴分别代表被优化的参数,即止盈点和止损点,Z轴代表目标函数,即盈利。我们可以看到,盈利在不同的参数组合情况下高低起伏,呈现出了一个个山峰、平原和低谷。

    那么,我们是否应该选择那些山峰呢?

    其实不是。因为选择这些山峰可能会带来一个问题,就是过度拟合。表现过好的参数组合满足了过去市场的某种特殊情况,只要参数发生微小变化,策略表现就会急剧下降,这就是”山峰”的含义。相比而言,目标函数的“平原”区是更为稳定的参数,因为参数在这个范围内变化,策略表现是稳定的。

    所以我们要选择平原。下面这幅图是参数经过优化后的策略表现,资金曲线图表现出剧烈的波动,这反应了策略思路本身存在缺陷,高低点的突破并不能对价格起到很好的预测作用,参数优化并不能解决策略思路本身的问题。

    5、回测
    5.1样本内回测
    在这里插入图片描述
    一个量化策略的运行逻辑
    5.2样本外回测
    在这里插入图片描述

    如果我们找到了一个可行的策略,又选择了合适的参数,策略回测表现让人满意,下一步就是样本外测试了。样本外测试的目的,是用新的数据对策略进行检验,考验策略的盈利能力。

    在之前的测试中,我们已经使用了一部分的历史数据。策略是在这些历史数据中被“训练”出来的,很容易出现过度拟合的问题。极端情况下,只要参数数量足够多,我们是可以轻易的通过历史数据训练出100%胜率的策略。但这样的策略并不具有通用性,如果用新的数据测试这样的策略,结果一定是糟糕的。

    这就是我们进行样本外测试的原因。样本外数据也是历史数据,只是我们在测试初期预留出来的,没有碰过,是“干净”的数据。如果策略在新数据下的表现不好,那么这样的策略仅仅是过度拟合的结果。上图就是一个过度拟合的例子,策略盈利在样本外数据中急剧下降。

    5.3蒙特卡罗测试

    一个量化策略的运行逻辑
    下一个测试是蒙特卡洛实验。在试验中,我们模拟未来市场可能出现的各种变化,考察策略是否足够健壮。这些变化可能是价格的变化,也可能是参数的变化,还有可能是交易顺序的重新排序,不一而足。借助实验软件,我们可以进行上千次的重复实验,看看策略是否还能生存下来。
    在这里插入图片描述
    上图是蒙特卡罗的实验结果,红线代表原市场条件的测试结果,绿色代表最恶劣的5%的市场条件,紫色代表实验平均结果。可以看到,策略在最差的5%情况下,仍然能够维持盈利,说明策略是健壮的。

    6、策略举例
    6.1三均线策略
    在这里插入图片描述

    下面分别介绍一下策略的种类。从策略的交易思路看,大致可分为趋势策略(动量策略)和逆势策略(均值回转策略)。两种策略分别适应于不同的品种和市场条件。趋势策略的常见例子是均线交叉策略。短均向上突破长均做多,向下突破做空。趋势策略捕捉了市场的冲动情绪,当价格上涨时,大量交易者非理性的跟进,价格下跌时,人们又急剧恐慌。趋势策略者就可以“顺应趋势”,追涨杀跌,让“趋势成为朋友”。

    6.2布林带策略

    一个量化策略的运行逻辑
    逆势策略则相反,逢高卖出,逢低买入。在某些市场的某些时段中,价格确实存在这样的高低震荡的情况,逆势者容易利用这样的价格属性频繁的积累微小利润。但是,市场总是趋势与震荡并存,我们很难判断市场何时震荡,何时趋势,有没有解决办法呢?当然有,如下策略。

    6.3跨期套利策略
    在这里插入图片描述
    我们要把思路打开,将目光从单个品种转向多个品种的组合价差上,也就是常说的配对交易。例如不同到期日的期货合约价差就存在高度的相关性。

    例如,我们将两个不同到期日橡胶合约的价格序列放在一张图上,就可以看到他们之间的高度相关性。虽然两个合约各自的价格呈现出趋势属性,但它们的价差是稳定的震荡属性。

    在这里插入图片描述
    我们通过震荡策略,交易两者的价差,就可以获得比较稳定的收益。价差组合的方式有很多,并不局限于两个品种,我们可以通过下列通用公式,配置出无数个可能盈利的价差组合。

    哪个组合式可以盈利的呢?需要我们自己去挖掘。而目前我们量化家的策略超市,直接把有效的策略提供给选择使用。

    在这里插入图片描述

    7、风控管理
    马丁格尔仓位管理
    一个优秀的策略不仅能给我们带来持续稳定的收益,同时在风控上的把握也是极为关键。正如一辆汽车在量产之前需要持续不断的测试同样的道理。

    而在投资市场中,只要超出无风险利率,就会存在波动,存在波动,就有可能带来亏损,所以你会发现,哪怕你投资一个极为优秀的基金或是股票,每年所带给你的年化回报也并非一成不变的,甚至有时候,行情不好,遇到熊市还会出现不小的亏损。

    事实是任何投资项目都应该首先关注风险。

    而量化交易对于风控的把握会着重从仓位的管理出发。仓位管理,就是决定某一策略分配多少资金的问题,初学者往往过分执迷于策略思路本身的盈利,而忽略了仓位管理。实际上,仓位是量化交易最重要的环节。即使拥有了盈利的策略,如果仓位管理不当,完全可能爆仓出局。

    下面我们来探讨一个有趣的仓位管理方法,叫martingale.这是一种死扛型的仓位管理机制,每经历一次亏损,我们在下次交易时就把仓位放大一倍,一旦盈利,我们就把仓位恢复到初始值。例如,当经历了3次连续亏损之后,仓位数分别是,1,2,4。如果第4次交易盈利了,我们就把仓位恢复到1。

    展开全文
    nodeprefererer 2019-05-08 18:31:38
  • 【主要内容】 1.发送错误报告 【故障现象】在使用IE浏览网页的过程中,出现“Microsoft Internet Explorer遇到问题需要关闭……”的信息提示。此时,如果单击“发送错误报告”按钮,则会创建错误报告,单击“关闭”...

    【主要内容】

    1.发送错误报告

    【故障现象】在使用IE浏览网页的过程中,出现“Microsoft Internet Explorer遇到问题需要关闭……”的信息提示。此时,如果单击“发送错误报告”按钮,则会创建错误报告,单击“关闭”按钮之后会引起当前IE窗口关闭;如果单击“不发送”按钮,则会关闭所有IE窗口。

    【故障点评】这是IE为了解用户在使用中的错误而设计的一个小程序,不过我可不想当微软的“免费测试员”,更何况每天它都会面对成千上万的报告,谁知道有没有在意我的报告问题呢?

    【故障解决】

    针对不同情况,可分别用以下方法关闭IE发送错误报告功能:

    ①对IE 5.x用户,执行“控制面板→添加或删除程序”,在列表中选择“Internet Explorer Error Reporting”选项,然后单击“更改/删除”按钮,将其从系统中删除。

    ②对Windows 9x/Me/NT/2000下的IE 6.0用户,则可打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\Software \Microsoft\Internet Explorer\Main],在右侧窗格创建名为IEWatsonEnabled的DWORD双字节值,并将其赋值为0。

    ③对Windows XP的IE 6.0用户,执行“控制面板→系统”,切换到“高级”选项卡,单击“错误报告”按钮,选中“禁用错误报告”选项,并选中“但在发生严重错误时通知我”,最后单击“确定”按钮。

    2.IE发生内部错误,窗口被关闭

    【故障现象】在使用IE浏览一些网页时,出现错误提示对话框:“该程序执行了非法操作,即将关闭……”,单击“确定”按钮后又弹出一个对话框,提示“发生内部错误……”。单击“确定”按钮后,所有打开的IE窗口都被关闭。

    【故障点评】该错误产生原因多种多样,内存资源占用过多、IE安全级别设置与浏览的网站不匹配、与其他软件发生冲突、浏览网站本身含有错误代码……这些情况都有可能,需要耐心加以解决。

    【故障解决】

    ①关闭过多的IE窗口。如果在运行需占大量内存的程序,建议IE窗口打开数不要超过5个。

    ②降低IE安全级别。执行“工具→Internet选项”菜单,选择“安全”选项卡,单击“默认级别”按钮,拖动滑块降低默认的安全级别。

    ③将IE升级到最新版本。IE 6.0 SP1

    可使用以IE为核心的浏览器,如MyIE2。它占用系统资源相对要少,而且当浏览器发生故障关闭时,下次启动它,会有“是否打开上次发生错误时的页面”的提示,尽可能地帮你挽回损失。

    3.出现运行错误

    【故障现象】用IE浏览网页时弹出“出现运行错误,是否纠正错误”对话框,单击“否”按钮后,可以继续上网浏览。

    【故障点评】可能是所浏览网站本身的问题,也可能是由于IE对某些脚本不支持。

    【故障解决】

    ①启动IE,执行“工具→Internet选项”菜单,选择“高级”选项卡,选中“禁止脚本调试”复选框,最后单击“确定”按钮即可。

    ②将IE浏览器升级到最新版本。

    4.IE窗口始终最小化的问题

    【故障现象】每次打开的新窗口都是最小化窗口,即便单击“最大化”按钮后,下次启动IE后新窗口仍旧是最小化的。

    【故障点评】IE具有“自动记忆功能”,它能保存上一次关闭窗口后的状态参数,IE本身没有提供相关设置选项,不过可以借助修改注册表来实现。

    【故障解决】

    ①打开“注册表编辑器”,找到[HKEY_ CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\Old WorkAreas],然后选中窗口右侧的“OldWorkAreaRects”,将其删除。

    ②同样在“注册表编辑器”中找到[HKEY_CURRENT_USER\Software \Microsoft\Internet Explorer\Main],选择窗口右侧的“Window_Placement”,将其删除。

    ③退出“注册表编辑器”,重启电脑,然后打开IE,将其窗口最大化,并单击“往下还原”按钮将窗口还原,接着再次单击“最大化”按钮,最后关闭IE窗口。以后重新打开IE时,窗口就正常了!

    5.IE无法打开新窗口

    【故障现象】在浏览网页过程中,单击超级链接无任何反应。

    【故障点评】多半是因为IE新建窗口模块被破坏所致。

    【故障解决】单击“开始→运行”,依次运行“regsvr32 actxprxy.dll”和“regsvr32 shdocvw.dll”将这两个DLL文件注册,然后重启系统。如果还不行,则可以将mshtml.dll、urlmon.dll、msjava.dll、browseui.dll、oleaut32.dll、shell32.dll也注册一下。

    6.脱机却无法浏览本机上的网页

    【故障现象】通过IE的“脱机浏览”功能,我们差不多能浏览所有已经下载到本地硬盘的网页内容,这对拨号上网的用户来说更是省钱的一大法宝。但有时,目标网页虽然在硬盘上,但是却提示“无法浏览”。

    【故障点评】这多半是由于你修改了系统时间,引起了IE历史记录的错乱。

    【故障解决】

    ①可用直接在“临时文件夹”中搜索的方法来激活它。按下Win+F,在“包含文字”处输入部分记忆中的关键字,在“搜索”处按“浏览”按钮选择IE临时文件夹的地址,如“C:\WINDOWS\Temporary Internet Files”,单击“开始查找”,在结果列表里双击目标页打开。

    ②可以尝试用腾讯的TE等浏览器来脱机浏览。

    7.联网状态下,浏览器无法打开某些站点

    【故障现象】上网后,在浏览某些站点时遇到各种不同的连接错误。

    【故障点评】这种错误一般是由于网站发生故障或者你没有浏览权限所引起。

    【故障解决】针对不同的连接错误,IE会给出不同的错误信息提示,比较常见的有以下几个:

    ①提示信息:404 NOT FOUND这是最为常见的IE错误信息。主要是因为IE不能找到你所要求的网页文件,该文件可能根本不存在或者已经被转移到了其他地方。

    ②提示信息:403 FORBIDDEN常见于需要注册的网站。一般情况下,可以通过在网上即时注册来解决该问题,但有一些完全

    “封闭”的网站还是不能访问的。

    ③提示信息:500 SERVER ERROR通常由于所访问的网页程序设计错误或者数据库错误而引起,你只有等待对方网页纠正错误后再浏览了。

    8.IE无法重新安装

    【故障现象】IE不能正常使用,在重装时却提示“发现系统中有该版本的IE”而拒绝安装;“添加或删除程序”中又没有卸载选项。

    【故障点评】“重装”是解决IE故障的“终极大法”,也是初级用户的法宝。

    【故障解决】

    IE 6.0的重装有两种方法:

    方法1:打开“注册表编辑器”,找到[HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{89820200-ECBD-11cf-8B85-00AA005B4383}],将IsInstalled的DWORD值改为0就可以了。

    方法2:放入Windows XP安装盘,在“开始→运行”窗口键入“rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 %windir%\Inf\ie.inf”。

    恶意网页原因,解决方法:

    1、默认主页修改

    现象描述:一些网站为了提高自己的访问量和做广告宣传,利用IE的漏洞,将访问者的IE不由分说地进行修改。一般改掉你的起始页和默认主页,为了不让你改回去,甚至将IE选项中的默认主页按钮变为失效的灰色。不愧是网络流氓的一惯做风。

    解决办法:

    1.起始页的修改。展开注册表到HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main,在右半部分窗口中将"Start Page"的键值改为"about:blank"即可。同理,展开注册表到HKEY_CURRENT_USER\Software\Microsoft\ Internet Explorer\Main,在右半部分窗口中将"Start Page"的键值改为"about:blank"即可。

    注意:有时进行了以上步骤后仍然没有生效,估计是有程序加载到了启动项的缘故,就算修改了,下次启动时也会自动运行程序,将上述设置改回来,解决方法如下:

    运行注册表编辑器Regedit.exe,然后依次展开HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run主键,然后将下面的"registry.exe"子键(名字不固定)删除,最后删除硬盘里的同名可执行程序。退出注册编辑器,重新启动计算机,问题就解决了。

    2、默认主页的修改。运行注册表编辑器,展开HKEY_LOCAL_MACHINE\Software \Microsoft\Internet Explorer\Main\,将Default-Page-URL子键的键值中的那些恶意网站的网址改正,或者设置为IE的默认值。

    3、篡改地址栏文字

    现象描述:中招者的IE地址栏下方出现一些莫名其妙的文字和图标,地址栏里的下拉框里也有大量的地址,并不是你以前访问过的。

    解决办法:1.地址栏下的文字。在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\ToolBar下找到键值LinksFolderName,将其中的内容删去即可。

    地址栏中无用的地址。在HKEY_CURRENT_USER\Software

    展开全文
    weixin_45044981 2019-06-03 10:01:23
  • sublinephp 2019-05-07 13:39:24
  • sublinephp 2019-05-14 11:19:39
  • weixin_45044981 2019-06-04 09:59:00
  • weixin_45044981 2019-06-04 10:00:47
  • weixin_45044981 2019-06-06 09:40:53
  • weixin_45044981 2019-06-06 09:42:52
  • weixin_45044981 2019-06-06 09:41:57
  • weixin_45044981 2019-06-06 09:39:03
  • weixin_45044981 2019-06-06 09:38:02
  • weixin_45044981 2019-06-04 09:54:34
  • weixin_45044981 2019-06-04 10:02:29
  • weixin_45044981 2019-06-03 10:30:07
  • weixin_45044981 2019-06-06 09:39:55
  • weixin_45044981 2019-06-04 09:57:59
  • weixin_45044981 2019-06-03 09:59:23
  • weixin_45044981 2019-06-03 10:00:27
  • weixin_45044981 2019-06-03 10:03:26
  • 1.35MB weixin_39840924 2019-07-25 10:35:35
  • weixin_33962621 2016-08-19 09:10:00
  • nodeprefererer 2019-04-17 14:36:24

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

快牛策略