php怎么做数据交互,PHP是什么?
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
主要特点编辑
(一)开源性和免费性
由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP 运行环境的使用也是免费的。 [1]
(二)快捷性
PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。 [1]
(三)数据库连接的广泛性
PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。 [1]
(四)面向过程和面向对象并用
在PHP语言的使用中,可以分别使用面向过程和面向对象, 而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言是做不到的。 [1]
优点编辑
(一)流行,容易上手
PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。 [1]
(二)开发职位很多
在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。 [1]
(三)仍然在不断发展
PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后,一直在提供更高性能的应用。 [1]
(四)可植入性强
PHP 语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。 [2]
(五)拓展性强
PHP 语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高。
有初学者学习python实用的编辑器吗?
最近看到学习群里面的小伙伴,对于Python IDE都比较纠结,希望找到一些适合自己的、Python开发工具。小编向企业级大佬请教之后,给大家分享几款Python开发工具,供正在纠结用哪种开发工具的小伙伴们参考~
对于学习Python的小伙伴,小编首推的Pycharm。
首先,PyCharm用于一般IDE具备的功能,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制
另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython。
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。
其次是sublime text啦,看看下图,是不是觉得很漂亮呢?它就是sublime text~~
Sublime Text 支持多种编程语言的语法高亮、拥有优秀的代码自动完成功能,还拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时调用。支持 VIM 模式,可以使用Vim模式下的多数命令。支持宏,简单地说就是把操作录制下来或者自己编写命令,然后播放刚才录制的操作或者命令。
Sublime Text 还具有良好的扩展能力和完全开放的用户自定义配置与神奇实用的编辑状态恢复功能。支持强大的多行选择和多行编辑。强大的快捷命令"可以实时搜索到相应的命令、选项、snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦。即时的文件切换。随心所欲的跳转到任意文件的任意位置。多重选择功能允许在页面中同时存在多个光标。
还有Jupyter, Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式 。
最后就是最基本的nopad++,最开始的时候是实用这款作为开发工具进行基础练习。
Notepad++是一套自由软件的纯文本编辑器。该软件以GPL发布,有完整的中文化接口及支持多国语言撰写的功能(采用万国码UTF-8技术)。它的功能比Windows中的记事本(Notepad)强大,除了可以用来制作一般的纯文字的帮助文档,也十分适合用作撰写电脑程序的编辑器。
小编建议在学习Python基础的时候还是多使用Python自带的IDLE。IDLE是开发python程序的基本IDE(集成开发环境),具备基本的IDE的功能,是非商业Python开发的不错的选择。当安装好python以后,IDLE就自动安装好了,不需要另外去找。
同时,使用Eclipse这个强大的框架时IDLE也可以非常方便的调试Python程序。基本功能:语法加亮;段落缩进;基本文本编辑;TABLE键控制;调试程序。
如果小伙伴们有其他好用的Python IDE,欢迎在下边留言哈~~~
开发一个app有多难?
对面坐着好几排软件研发人员,隔壁坐着一堆技术支持,这题我来回答下。开发APP难吗?其实这个问题就类似我们问:“做菜难吗?”
不一样的菜,难度不可同日而语
APP也是同样,要问其难度如何,具体要看做什么样的APP,大概有以下三种情况:
1、自娱自乐型APP开发目的:纯粹练习/自娱自乐之作
参与人员:单个懂编程人员完成难度:★★
这种APP开发方式的难点在于:因为缺乏经验导致的技术难题,解决方案也简单:学。
2、小范围自用型APP开发目的:满足自家企业的日常办公需求;参与人员:企业IT部门两三个人;完成难度:★★★★★这类软件很多工作党都体会过,企业常常会有一些个性化需求,市场上没找到合适软件,就自己研发了一个。这类软件研发面临的难点比较多:
①因为技术人员缺乏相关软件的研发经验,进度缓慢;②研发是IT部门,使用者多是业务部门,研发人员就必须从业务人员角度考虑体验问题,中间的磨合困难自不必说;③随着企业的需求不断增加,研发人员需要不断补充软件功能,二次开发逃不了;④一旦相关研发人员离职,因为技术门槛,很容易留下一堆摊子无人解决。
3、面向整个市场的APP开发目的:靠软件实现盈利目标参与人员:一整个企业完成难度:★★★★★★★★★★这类软件通常面向整个市场,以上的每一步都必须走通。这里面起码涉及产品经理、研发、测试、UI设计师、视觉设计师、市场、运营、销售、技术支持等数十个岗位人员的共同协作。除此之外,还要考虑两个重要问题:①软件功能与用户需求之间的调和。很多人常常只用到一个软件5%的功能,剩下的95%都是各类用户提了需求之后不断完善的。这个不难理解,大家不妨回想一下当年的QQ和现在的QQ;②由于市场竞争激烈,软件须有极高的创新能力,且能在合适的时间出现、并切准目标用户需求。PHP可以自学吗?
黑马程序员搭建环境PHP简介什么是PHP
PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言。它的语法接近 C,Java 和 Perl,而且容易学习。该语言让 Web 开发人员快速的书写动态生成的网页。PHP前身:Personal HomePage,个人主页,使用Perl语言开发的一种写个人主页的语言PHP:PHP Hypertext Preprosessor,php超文本预处理器,底层使用C语言PHP发展史
Rasmus Lerdorf :创建者1994:1.0,个人perl,非常简单(简陋)1996:2.0,C底层,变的相对比较强大1998:3.0,zendEngine,联合zend公司共同管理和维护PHP,zendEngine(zend引擎)用户高效的解析php代码2000:4.0,session+输出缓冲等,session技术(会话技术),2004:5.0,zend引擎2代,增加新技术(面向对象更新,命名空间,异常)2015:7.0,新版的ZendEngine引擎,性能提升,新特性(异常)平台支持(window,Linux,UNIX)数据库支持(Sqlserver,mysql,Oracle,Access)静态网站与动态网站的区别
静态网站:web1.0时代动态网站:web2.0时代网站
Website的中文名称是网站,是指在互联网上,根据一定的规则,使用HTML、PHP等代码语言制作的用于展示特定内容的相关网页的集合,有可供管理人员操作的后台及用户使用的前台。简单地说,Website是一种通讯工具,就像布告栏一样,人们可以通过Website来发布自己想要公开的资讯,或者利用Website来提供相关的网络服务。人们可以通过网页浏览器来访问Website,获取自己需要的资讯或者享受网络服务。静态网站特点
1.网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;2.静态网页的内容相对稳定,因此容易被搜索引擎检索;3.静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;4.静态网页的交互性较差,在功能方面有较大的限制。动态网站特点
1.交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后Web发展的潮流。2.自动更新:即无须手动更新HTML文档,便会自动生成新页面,可以大大节省工作量。3.因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。此外动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀。在动态网页网址中有一个标志性的符号——“?”网站基本概念服务器概念
服务器(server),也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。服务器:能够提供服务的机器,取决于机器上所安装的软件(服务软件)Web服务器:提供web服务(网站访问),就需要安装web服务软件,Apache,tomcat,iis等IP的概念
IP:Internet Protocol,网络之间互联协议。网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性。(每台电脑都有一个唯一的IP地址)域名
域名(Domain Name),是由一串用点分隔的名字组成(www.itcast.cn)的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。特殊IP:127.0.0.1,代表本机特殊域名:localhostDNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。用户输入域名localhost—》DNS(localhost 127.0.0.1)--》服务器电脑端口
端口(Port),可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。用户输入域名localhost:端口—》DNS(localhost 127.0.0.1)--》服务器电脑—》软件(服务)Web程序的访问流程
Web分为两类:静态网站和动态网站浏览器发起访问—》DNS解析域名—》服务器电脑---》服务软件静态网站访问
动态网站访问
动态网站访问流程与静态差不多,但是会多出几个内容:服务器端解析、数据库安装Apache安装Apache软件
1、 获取Apache安装软件2、 双击安装即可:指定对应的路径:E:server/apache3、选择安装模式:使用自定义模式4、 选择安装位置Apache的目录结构说明
Httpd.exe的详细应用
1、 服务器进程:运行之后才能够工作2、 用来查看Apache具有哪些功能以及配置文件是否有错:httpd或者httpd.exe(文件所在目录)2.1 查看使用的模块:httpd -M2.2 验证配置文件是否有效:httpd –t配置默认站点
1、 让Apache确定服务器上访问的位置:网站文件夹所在位置Httpd.conf:DocumentRoot2、 方便用户使用名字访问对应的网站:给文件夹对应的取一个别名Httpd.conf:ServerName端口可以单独实现:httpd.conf:listen3、 凡是涉及到Apache配置文件的修改,那么需要重启Apache才能生效4、 实现DNS域名解析:通常默认站点都是本地DNS:hosts文件安装与配置PHP安装PHP语言
1、 获取PHP安装文件:建议去官网2、 解压缩3、 安装:将解压后的文件放到E:/server/,重命名PHP5PHP的目录结构说明
php.exe的应用
PHP.exe就是可以解析PHP代码转变成HTML代码从而让浏览器可以解析的。1、 通过CMD控制器进入到php.exe所在目录2、 通过php.exe运行命令来指定要解析的PHP脚本就可以:php.exe -f PHP文件所在路径配置Apache加载PHP模块
1、 Apache加载PHP模块:在Apache的主配置文件(httpd.conf)中加载对应的PHP提供的模块LoadModule php5_module PHP所提供的模块链接所在路径2、 Apache分配工作给PHP模块:如果是PHP代码就交给PHP处理:文件后缀判断.php结尾肯定是PHP代码AddType application/x-httpd-php .php3、 将PHP的配置文件加载到Apache配置文件中:共同生效3.1 在Apache中指定PHP配置文件所在路径PHPIniDir php.ini所在路径3.2 php.ini文件默认是不存在的,是以development和production格式存在,需要格式化说明:PHP的配置文件已经加入到Apache的配置项中,意味着php.ini的修改需要Apache重启才会生效。安装与配置MySQL安装MySQL软件
1、 获取MySQL安装软件2、 双击安装即可:没有特殊情况的直接下一步就可以完成3、 选择custom,自定义安装:选择安装路径3.1 软件安装目录:server/mysql3.2 数据安装目录:server/mysql/data4、 在完成安装之后,要实现配置5、 选择详细配置(默认的)6、 选择开发环境:默认的7、 选择功能:默认8、 并发设置(建议手动)9、 配置访问环境10、 字符集设定:系统字符集11、 服务安装:将MySQL作为windows下的一个服务启动12、 输入root(超级管理员)的用户密码13、 等待配置:4个都是勾表示安装成功MySQL的目录结构说明 Bin目录的常用命令
软件设计结构:C/S和B/SC/S:Client客户端/Server服务端,用户需要安装客户端产品才能访问服务器,而且只能访问一种软件(当前自己)B/S:Browser浏览器/Server服务端,用户只需要安装浏览器,就可以访问所有的服务器(B/S架构服务)MySQL的访问流程
Mysql是一款C/S架构的软件,需要通过客户端来访问服务端(MySQL提示也提供了其他模式的访问:通过一些插件扩展来充当客户端)1、 启用MySQL客户端:mysql.exe,该软件本身可以通过CMD控制台运行本身客户端:mysql.exeMysql.exe通过cmd运行2、 MySQL客户端访问服务端需要进行寻找匹配:连接认证连接:IP和端口确认,如果是本地都可以省略-h主机地址----》-hlocalhost(可以是IP)-P端口---》-P3306认证:通过用户名和密码进入服务器-u用户名---》-uroot,不可以省略(匿名用户除外)-p密码---》-proot3、 退出命名:\q注意:通常连接认证的时候密码不建议明文,可以在输入-p之后回车,系统会再次让输入密码,这个时候就是密文PHP连接MySQL数据库
PHP本身不具备操作MySQL数据库的能力,需要借助PHP操作MySQL的扩展来实现。1、 PHP加载MySQL扩展:php.ini文件中2、 PHP中所有的扩展都是在ext文件夹中,需要制定扩展所在路径:extension_dir3、 php.ini已经被Apache加载,所以需要重启才会生效。设定PHP的系统时区
通过php.ini中的timezone配置项来实现配置虚拟主机
一台服务器很贵,如果只能部署一个网站,那么非常浪费。所以需要通过其他渠道来实现一台主机上部署多个网站。什么是虚拟主机
虚拟主机:Virtual machine,并不存在真实的主机,但是可以提供真实主机所实现的功能。通俗的讲,虚拟主机就是将计算机中不同的文件夹进行不同的命名,然后可以实现让服务器(Apache)根据用户的需求从不同的文件夹(网站)中读取不同的内容。虚拟主机的分类
在Apache中,可以将虚拟主机划分成两类:1、 基于IP的虚拟主机:一台电脑上有多个IP,每个IP对应一个网站原理:电脑默认只有一个IP,因为通常只配有一个网卡;但是有的电脑(服务器居多)可以配置多个网卡,每个网卡可以绑定一个IP地址。2、 基于域名的虚拟主机:一台电脑上只有一个IP,但是IP下可以制作多个网站,但是需要给每个网站不同的名字(虚拟主机名)搭建基于域名的虚拟主机
在Apache中,虚拟主机的搭建有两种方式:1、 在主配置文件中搭建:需要手动开启虚拟主机(基于域名)NameVirtualHost *:802、 在专门的虚拟主机配置文件中配置2.1 在主配置文件中加载虚拟主机配置文件(httpd.conf):虚拟主机配置文件已经开启了虚拟主机NameVirtualHost2.2 虚拟主机从配置文件(extra/httpd-vhosts.conf)中配置虚拟主机①增加一个对应的站点文件夹位置:DocumentRoot②增加主机名字:文件夹的别名:ServerName③ 增加域名解析DNS:hosts④需要给当前设定的站点(目录)访问权限<Directory ‘站点目录’>Order Deny,Allow //没有顺序关系:实际顺序有意义Deny from 指定的范围Allow from 指定范围/all</Directory>⑤ 配置访问列表:当访问是一个目录时候(没有指定具体要访问的文件)Options Indexes [FollowSymLinks],如果访问目录,那么列表显示所有文件⑥ 当用户访问指定目录不指定文件的时候,通常需要系统指定一个默认文件DirectoryIndex 默认的文件列表,使用空格分离注意:如果说网站中整个网站根目录允许访问,但是其中还有其他文件夹不允许访问:可以增加多个Directory标签,针对不同的文件夹3、 一旦启用虚拟主机配置文件,那么默认的主机地址localhost就不再生效,如果想要生效:为localhost增加单独的虚拟主机python一般用来做什么?
Python是一门编程语言,应用非常广泛,我用来做金融数据分析,量化投资。
探讨问题与分析思路
本文以Python为量化工具,主要探讨以下三个问题:
(1)指数定投的优势与劣势在哪?
(2)指数定投受哪些因素影响,是不是时间越长越好?
(3)指数定投策略如何优化?
编程软件:基于Python3.7的Jupyter Notebook,使用到的库包括numpy、pandas、matplotlib、pyecharts和tushare等。
数据来源:使用tushare pro开源包获取上证指数、深证指数、沪深300、上证50、中小板和创业板1991-2018年数据,其中中小板和创业板是2011年-2018年数据。
源代码:Talk is cheap, show me the code (废话少数,放码过来!),关注微信公众号:Python金融量化(id:tkfy920),回复"指数定投源码”免费获取下载地址。
01
国内指数价格走势
首先,对A股几个常用的指数历史走势进行可视化分析,直观反映不同期间股价涨跌情况,其次,计算各期间股指的累计收益率,为后面的指数定投对比分析做铺垫。
各指数自上市交易以来累计收益率情况:区间拉长,各有千秋。
牛市区间累计收益率情况:'2013-01-01':'2015-06-12':牛市来了,创业板身板轻,飞得更高(摔下来也疼)。
倒V形区间收益率情况:'2011-01-01':'2018-12-24':辛辛苦苦八九年,最后回到解放前。
2018年以来累计收益率:'2018-01-01':'2018-12-24'。怎一个“惨”字了得,中小板跌到妈都不认得。
各指数自上市以来累计收益率和年化平均收益率:上证综指自1990年12月以来累计收益率达到322.98%,但是几何年平均收益率也只有5.29%,低于中证500、沪深300和中小板指。
02 指数定投策略
指数定投策略:即每月于固定日期使用固定金额投资指数基金。如将每月月初发的工资3000元用于投资指数基金。
下面运用Python定义指数定投的回测函数,假定无风险理财产品收益率为4%(假设而已),每月月初(或者月末)定投3000元购买指数基金,计算各期间累计收益率和累计定投资金。先来看第一个问题,指数定投在什么情况下优于一次性投资以及无风险理财(银行定期存款)呢?
微笑曲线(V或W形态):不难理解,指数定投的优势在于规避择时,不怕踩坑,通过长期定额投资分摊成本,当股指呈微笑形走势的时候,一定是优于一次性投资的,但是否能获得较高回报,还得看右侧回升的幅度大小。如选取区间2007年10月17日至2015年6月12日,该期间是股指自1990年以来的历史高点6124点开始下跌,然后反弹至5178点,即假设你运气碰巧那么差,在最高点当接盘侠,然后每个月继续傻乎乎的补仓,然后终于运气来了,在2015年高点全部清仓。如下图所示,如果你在高点一次性买入然后长期持有,期间累计收益率是-16.48%,而定投的累计收益率却高达101.03%(每月月初投入),无风险理财的期间累计收益率也只有16.28%。
小微曲线:上图选择的“微笑曲线”很优美,刚好是股指两头高(右侧高才是关键),中间低,因此通过每月定投不断分摊长期成本,获得超额收益率。那如果右侧不是很高呢?再来看另一个区间,2007年10月17日(6124高点)至2009年07月20日(3333低点),如下图所示,区间累计收益率为-62.31%(佛性),理财累计收益率3.62%,每月月初定投的累计收益率仍然有15.64%(每月月底定投是17.96%,其实统计分析二者并无显著差异)。可见,一次性买入长期持有策略对择时的要求非常高,一旦踩了坑(高点接盘),将很难翻身,而长期定投策略则规避了择时的困扰,在股指短期波动向下,中长期向上反弹的走势中优势凸显。
难过曲线(倒V或M形态):有微笑曲线,当然也有难过曲线。正所谓,有阴必有阳,有涨必有跌,有得必有失。什么情况下定投指数策略处于劣势呢?将回测区间拉长,考察指数从低点-高点-低点、经历两次大的牛熊转换时,指数定投策略的累计收益率情况。如下图所示,选取区间2006年10月01日(2000多点)至2018年12月24日(2000多点),相当于经过了12年多,股指差不多又回到起点。一次性买入期间累计收益率为36.6%,理财定投累计收益率为27.63%,但是指数定投累计收益率却为-7.39%(-7.46%),可见,指数定投并非时间越长越好,也并非一直比一次性买入持有策略好。
单边牛市:即起点为最低点,终点为最高点。选取区间2014年07月1日至2015年06月12日进行回测。如下图所示,一次性投入并持有的策略明显优于定投策略。通过上述分析,不难发现,一次性买入并持有策略对择时要求非常高,即同时在买点和卖点精准把握才能获取超额收益率,而定投指数策略对买点并无要求,但要求卖点出现在右侧才能获取超额收益。换句话说,指数定投并非毫无目的的一直做长期定额投资,而是要结合一些择时指标判断拐点进行“止盈”,才能获取较高的累计收益率。
03
其他指数情况
股票指数是反映股票市场总的价格水平变化的指标。一般是选取有代表性的一组股票,采取价格加权平均计算得到。各种指数具体的股票选取和计算方法是不同的,只看单一股票指数可能难以反映总体情况。下面对照分析上证指数、深证指数、沪深300、上证50、中小板和创业板指数,由于创业板是2010年才推出,因此下面的分析主要考察2011年-2018年区间。
单边牛市:考察期间2014年07月01日至2015年06月12日,创业板定投累计收益率最高,达到124.3%,并且定投累计收益率居然高于一次性投入的累计收益率;而上证50定投累计收益率最低,只有63.22%。
倒V形(右侧高于左侧):考察区间2011年08月01日至2016年12月24日,创业板累计收益率仍然是最高的,除了创业板外,指数定投策略的收益率均高于一次性投入持有策略。
难过曲线:考察期间2011年08月01日至2018年12月24日,该区间内,上证综指、深证成指、中证500和中小板指累计收益率均出现了负数,但定投策略亏损较少,其他几个指数仍有正的收益率,除创业板外,指数定投策略仍然优于一次性投入持有策略。
单边下行:考察期间2015年06月12日至2018年12月24日,毫无疑问,单边下行的时候,定投不断分摊了长期成本,累计亏损率要低于一次性投入。此外,单边下行的时候,期间内创业板累计跌幅是最大的,正所谓风水轮流转,山水有相逢。
2018年情况:2018年国内外形势云诡波谲,内外夹击,经济持续下行,股票市场首当其冲,各大指数均出现了大幅下跌,股民怨声载道。年初至今,中小板累计亏损高达45.12%(定投:-24.66%)。可见,起风的时候,身子轻的猪可以飞得更高,但摔下来的时候也更惨!
通过上述分析,不难看出指数定投的优势与劣势,以及什么条件下可以获得较好的累计收益率。巴菲特建议个人投资者最好的投资方式是指数定投,尤其是对于收入来源于每月固定薪酬的普通散户。为什么倡导指数定投?其实背后的逻辑是很清晰的,即股市受当前受各方因素叠加影响,短期波动较大,形势不明朗,但是对股市长期走势抱有很大希望,这时候做指数定投将是一个不错的投资策略,尽管短期内可能承受较大的亏损压力。最后引用基金观察网上的一张图片进行“长期国运向好,中期估值合理,短期情绪恐慌,所以此时不定投,啥时再定投?”
(图片来源:基金观察网)
05 结语
本文使用Python对A股几个常见的指数历史行情进行了可视化分析,通过构建指数定投策略函数,对不同区间指数定投策略进行了历史回测,全面展示了指数定投策略的优劣势、适用性与局限性。华尔街曾流传着一句话:“要在市场中准确地踩点入市,比在空中接住一把飞刀更难。”可见择时是非常困难的,指数定投则规避了这一选择,通过采取分批买入法,克服了只选择一个时点进行买进和卖出的缺陷,不断分摊和均衡长期成本,因此指数定投在中长期看好、短期波动较大的行情中优势明显。股票市场短期内是噪音交易占主导,无论你使用的量化技术多么复杂高深,可以战胜市场的唯一方式依然是获取概率优势。大道至简,只有简单的策略,才能在长期投资中保持高度的稳定概率优势。
更多干货请关注微信公众号:Python金融量化