Ⅰ 没有目标函数的优化问题。 1、目标函数是有的,只是和变量没有显式。 2、目标函数是可以通过实测得到。
遗传算法。NSGA2。举个最简单的例子,给出一组这4个变量的值,你确定出相应的目标函数,那如果遍历完所有的解呢,就确定了所有的目标函数值。没有明确的关系应该指的是不能用解析式表达出来吧,能用仿真或者程序计算就行了,遗传算法是可以没有表达式的。网上有相应的程序,也可以用matlab的工具箱。http://www.pudn.com/downloads123/sourcecode/math/detail522443.html
Ⅱ python量化哪个平台可以回测模拟实盘还不要钱
Python量化投资框架:回测+模拟+实盘
Python量化投资 模拟交易 平台 1. 股票量化投资框架体系 1.1 回测 实盘交易前,必须对量化交易策略进行回测和模拟,以确定策略是否有效,并进行改进和优化。作为一般人而言,你能想到的,一般都有人做过了。回测框架也如此。当前小白看到的主要有如下五个回测框架: Zipline :事件驱动框架,国外很流行。缺陷是不适合国内市场。 PyAlgoTrade : 事件驱动框架,最新更新日期为16年8月17号。支持国内市场,应用python 2.7开发,最大的bug在于不支持3.5的版本,以及不支持强大的pandas。 pybacktest :以处理向量数据的方式进行回测,最新更新日期为2个月前,更新不稳定。 TradingWithPython:基于pybacktest,进行重构。参考资料较少。 ultra-finance:在github的项目两年前就停止更新了,最新的项目在谷歌平台,无奈打不开网址,感兴趣的话,请自行查看吧。 RQAlpha:事件驱动框架,适合A股市场,自带日线数据。是米筐的回测开源框架,相对而言,个人更喜欢这个平台。 2 模拟 模拟交易,同样是实盘交易前的重要一步。以防止类似于当前某券商的事件,半小时之内亏损上亿,对整个股市都产生了恶劣影响。模拟交易,重点考虑的是程序的交易逻辑是否可靠无误,数据传输的各种情况是否都考虑到。 当下,个人看到的,喜欢用的开源平台是雪球模拟交易,其次是wind提供的模拟交易接口。像优矿、米筐和聚宽提供的,由于只能在线上平台测试,不甚自由,并无太多感觉。 雪球模拟交易:在后续实盘交易模块,再进行重点介绍,主要应用的是一个开源的easytrader系列。 Wind模拟交易:若没有机构版的话,可以考虑应用学生免费版。具体模拟交易接口可参看如下链接:http://www.dajiangzhang.com/document 3 实盘 实盘,无疑是我们的终极目标。股票程序化交易,已经被限制。但对于万能的我们而言,总有解决的办法。当下最多的是破解券商网页版的交易接口,或者说应用爬虫爬去操作。对我而言,比较倾向于食灯鬼的easytrader系列的开源平台。对于机构用户而言,由于资金量较大,出于安全性和可靠性的考虑,并不建议应用。 easytrader系列当前主要有三个组成部分: easytrader:提供券商华泰/佣金宝/银河/广发/雪球的基金、股票自动程序化交易,量化交易组件 easyquotation : 实时获取新浪 / Leverfun 的免费股票以及 level2 十档行情 / 集思路的分级基金行情 easyhistory : 用于获取维护股票的历史数据 easyquant : 股票量化框架,支持行情获取以及交易 2. 期货量化投资框架体系 一直待在私募或者券商,做的是股票相关的内容,对期货这块不甚熟悉。就根据自己所了解的,简单总结一下。 2.1 回测 回测,貌似并没有非常流行的开源框架。可能的原因有二:期货相对股票而言,门槛较高,更多是机构交易,开源较少; 去年至今对期货监管控制比较严,至今未放开,只能做些CTA的策略,另许多人兴致泱泱吧。 就个人理解而言,可能wind的是一个相对合适的选择。 2.2 模拟 + 实盘 vn.py是国内最为流行的一个开源平台。起源于国内私募的自主交易系统,2015年初启动时只是单纯的交易API接口的Python封装。随着业内关注度的上升和社区不断的贡献,目前已经一步步成长为一套全面的交易程序开发框架。如官网所说,该框架侧重的是交易模块,回测模块并未支持。 能力有限,如果对相关框架感兴趣的话,就详看相关的链接吧。个人期望的是以RQAlpha为主搭建回测框架,以雪球或wind为主搭建模拟框架,用easy系列进行交易。
Ⅲ 学习多目标优化需要掌握哪些python知识
多目标优化
目标优化问题一般地就是指通过一定的优化算法获得目标函数的最优化解。当优化的目标函数为一个时称之为单目标优化(Single-
objective Optimization Problem,
SOP)。当优化的目标函数有两个或两个以上时称为多目标优化(Multi-objective Optimization Problem,
MOP)。不同于单目标优化的解为有限解,多目标优化的解通常是一组均衡解。
多目标优化算法归结起来有传统优化算法和智能优化算法两大类。
1. 传统优化算法包括加权法、约束法和线性规划法等,实质上就是将多目标函数转化为单目标函数,通过采用单目标优化的方法达到对多目标函数的求解。
2. 智能优化算法包括进化算法(Evolutionary Algorithm, 简称EA)、粒子群算法(Particle Swarm Optimization, PSO)等。
Pareto最优解:
若x*∈C*,且在C中不存在比x更优越的解x,则称x*是多目标最优化模型式的Pareto最优解,又称为有效解。
一般来说,多目标优化问题并不存在一个最优解,所有可能的解都称为非劣解,也称为Pareto解。传统优化技术一般每次能得到Pareo解集中的一个,而
用智能算法来求解,可以得到更多的Pareto解,这些解构成了一个最优解集,称为Pareto最优解。它是由那些任一个目标函数值的提高都必须以牺牲其
他目标函数值为代价的解组成的集合,称为Pareto最优域,简称Pareto集。
Pareto有效(最优)解非劣解集是指由这样一些解组成的集合:与集合之外的任何解相比它们至少有一个目标函数比集合之外的解好。
求解多目标优化问题最有名的就是NSGA-II了,是多目标遗传算法,但其对解的选择过程可以用在其他优化算法上,例如粒子群,蜂群等等。这里简单介绍一下NSGA-II的选择算法。主要包含三个部分:
1. 快速非支配排序
要先讲一下支配的概念,对于解X1和X2,如果X1对应的所有目标函数都不比X2大(最小问题),且存在一个目标值比X2小,则X2被X1支配。
快速非支配排序是一个循环分级过程:首先找出群体中的非支配解集,记为第一非支配层,irank=1(irank是个体i的非支配值),将其从群体中除去,继续寻找群体中的非支配解集,然后irank=2。
2. 个体拥挤距离
为了使计算结果在目标空间比较均匀的分布,维持种群多样性,对每个个体计算拥挤距离,选择拥挤距离大的个体,拥挤距离的定义为:
L[i]d=L[i]d+(L[i+1]m−L[i−1]m)/(fmaxm−fminm)
L[i+1]m是第i+1个个体的第m目标函数值,fmaxm 和 fminm是集合中第m个目标函数的最大和最小值。
3. 精英策略选择
精英策略就是保留父代中的优良个体直接进入子代,防止获得的Pareto最优解丢失。将第t次产生的子代种群和父代种群合并,然后对合并后的新种群进行非支配排序,然后按照非支配顺序添加到规模为N的种群中作为新的父代。
Ⅳ 请问国内哪家量化平台比较好
推荐澎博财经的真格量化。云端运行,行情和交易速度都经过专业优化。
支持期货、期权和50ETF的tick级别回测。
有完善的文档和培训教程。
支持编程语言为Python2.7和Python3.5.
上手很快,对用户非常友好。
Ⅳ 基于DEAP库的Python进化算法从入门到入土--(六)多目标遗传算法 NSGA-II
在很多实际工程问题中,我们的优化目标不止一个,而是对多个目标函数求一个综合最优解。例如在物流配送问题中,不仅要求配送路径最短,还可能需要参与运输车辆最少等。
多目标优化问题的数学模型可以表达为:
多目标优化问题通常具有如下特点:
对于多目标优化问题,传统方法是将原问题通过加权方式变换为单目标优化问题,进而求得最优解。该方法具有两大问题:
遗传算法具有多点多方向搜索的特征,在一次搜索中可以得到多个Pareto最优解,因此更适合求解多目标优化问题。
而当前用于求解多目标优化问题的遗传算法一般有两种思路:
NSGA-II(nondominated sorting genetic algorithm II)是2002年Deb教授提出的NSGA的改进型,这个算法主要解决了第一版NSGA的三个痛点:
针对这三个问题,在NSGA-II中,Deb提出了快速非支配排序算子,引入了保存精英策略,并用“拥挤距离”(crowding distance)替代了共享(sharing)。
在介绍NSGA-II的整体流程之前,我们需要先了解快速非支配排序和拥挤距离的定义。
解的支配关系与Pareto最优解
下图表示了解之间的支配和强支配关系:
下图表示了一个最小化问题解集中的Pareto最优解和Pareto弱最优解:
快速非支配排序步骤
快速非支配排序就是将解集分解为不同次序的Pareto前沿的过程。
它可以描述为:
DEAP实现
DEAP内置了实现快速非支配排序操作的函数 tools.emo.sortNondominated
tools.emo.sortNondominated(indivials, k, first_front_only=False)
参数:
返回:
拥挤距离的定义
在NSGA II中,为了衡量在同一个前沿中各个解质量的优劣,作者为每个解分配了一个拥挤距离。其背后的思想是 让求得的Pareto最优解在objective space中尽量分散 。也就有更大可能让解在Pareto最优前沿上均匀分布。
DEAP实现
DEAP中内置了计算拥挤距离的函数 tools.emo.assignCrowdingDist
tools.emo.assignCrowdingDist(indivials)
参数:
返回:
比较操作
根据快速非支配排序和拥挤距离计算的结果,对族群中的个体进行排序:
对两个解 ,
在每个迭代步的最后,将父代与子代合为一个族群,依照比较操作对合并后族群中的个体进行排序,然后从中选取数量等同于父代规模的优秀子代,这就是NSGA-II算法中的精英保存策略。
DEAP实现
DEAP内置了实现NSGA-II中的基于拥挤度的选择函数 tools.selNSGA2 用来实现精英保存策略:
tools.selNSGA2(indivials, k, nd='standard')
参数:
返回:
这里选用ZDT3函数作为测试函数,函数可表达为:
其Pareto最优解集为
这里为了方便可视化取 。
下图给出了该函数在Decision Space和Objective Space中的对应:
其pareto最优解在Objective Space中如下图红点所示:
将结果可视化:
得到:
可以看到NSGA-II算法得到的Pareto最优前沿质量很高:最优解均匀分布在不连续前沿的各个线段上;同时在最优前沿以外没有个体存在。