菜鸟独白

Python语言非常优美,语法简洁而功能强大,容易上手,学好Python能干很多事情:比如爬虫,数据分析呀,机器学习啊,web开发,其实Python还能帮你赚钱,比如自己做一个量化分析的小工具,去年我就用这个工具赚了一笔。

我个人炒股买基金很多年了,算是一个资深的老股民,炒了这么多年,也没有怎么赚钱,直到我去年自己写了一个量化的小工具,量化投资其实非常有名,很早就在华尔街运用了,越是在不成熟的市场,越容易赚钱!下面我来举一个小例子,来看看用数据量化分析一个基金的投资:

一.基金爬取和清洗

1.数据的爬取

网上有很多网站都有基金的数据,这里我爬取了某财经网站的一只基金!大家都知道去年白酒涨的非常猛,于是我挑一只我比较喜欢的白酒的基金来分析一下

一共是245个交易日的数据(2017/03/16-2017/03/14),有4个重要的维度:基金净值,涨幅,基金净值涨跌,累计净值。

2.数据的清洗

数据爬取之后做基本的处理:

查看有无异常值,有无缺省值:增加一个对上涨和下跌的标识符,用1表示上涨,用-1表示下跌,0表示平我们的交易一定是在周一到周五,所以增加一个维度为星期几处理完的数据如下:

二.数据进行量化分析

量化分析是一门科学,里面有很多知识要学,除了用到Python的数据处理,还有统计学和金融的相关知识,涉及到很多交易模型的设计,对股票分析里面有比如海龟交易法, Fama-French 的三因子模型等等,比较复杂这里,我从基金入手做一个粗浅的分析:

1.统计周一到周五跌的概率

这只基金一年的涨幅大概了近40%,还是相当不错的,买基金最简单的招数就是基金定投,但是周一到周五到底哪一天最划算呢?

我们统计了近一年的交易数据,发现周五下跌的概率比较大,也就是说周五定投比较合适,因为买基金肯定是跌的时候买比较划算.

2.把一年的数据按月进行切片分析

我们把一年的数据按照12个月进行切片,然后看它们的累积涨幅:

发现这个基金全年12个月,只有2个月是跌的,其他10个月都是在涨,而且有5月的涨幅都在5%以上,这样的基金相当牛逼!

也就是说全年有83%的月概率都在上涨,有近四层的月都是涨幅5%以上,要知道很多年化率一年的涨幅才5%,这里一个月就能到达,真是一只好基金啊!

3.定投哪种方式性价比最高

前面我们知道了周五是跌的概率最大的,那么如果我们下面按照三种方法去买基金,看看哪种方式的收益最好,资金占用最小:

每日定投买,不管涨跌,每天买(土豪啊)每周定投买,不管涨跌,每周买(小资啊)双周定投买,不管涨跌,每2周买(白领啊)--------------------每日:--------------------

本金:245000,总额:329048.58,收益:84048.58

总份额:205270.0

收益率:34.31%

--------------------每周一:--------------------

本金:46000,总额:61608.456112,收益:15608.46

总份额:38385.0

收益率:33.93%

--------------------每双周一--------------------

本金:23000,总额:30208.8334057,收益:7208.83

总份额:19192.0

收益率:31.34%

--------------------每周二--------------------

本金:48000,总额:63982.9523013,收益:15982.95

总份额:40317.0

收益率:33.3%

--------------------每双周二--------------------

本金:24000,总额:31617.4115635,收益:7617.41

总份额:19998.0

收益率:31.74%

--------------------每周三--------------------

本金:50000,总额:67292.1152093,收益:17292.12

总份额:41979.0

收益率:34.58%

--------------------每双周二--------------------

本金:25000,总额:32934.0338654,收益:7934.03

总份额:20831.0

收益率:31.74%

--------------------每周四--------------------

本金:50000,总额:67156.8739297,收益:17156.87

总份额:41816.0

收益率:34.31%

--------------------每双周四--------------------

本金:25000,总额:33652.1085203,收益:8652.11

总份额:20993.0

收益率:34.61%

--------------------每周五--------------------

本金:50000,总额:67621.2869066,收益:17621.29

总份额:41897.0

收益率:35.24%

--------------------每双周五--------------------

本金:25000,总额:33625.0310915,收益:8625.03

总份额:21095.0

收益率:34.5%

综上上面几种做法,发现土豪买法,收益其实并不是最高的,还不如白领的每2周买一次呢!而且土豪每日投资法的资金占用是每双周近10倍,资金消耗太大了。而每周投资的方法收益是上面所有策略里面最高的近35%的年收益!

要知道一般的理财产品5个点左右,好一点也就8-9%,35%的年化率其实是非常非常高了!量化投资小试牛刀,就这么厉害,那么有没有办法获得更高的收益,比如在股票市场进行量化呢,当然可以,需要系统的学习量化理论和投资策略模型。

尽管一些人认为区块链是一个等待问题的解决方案,但毫无疑问,这种新技术是计算机的奇迹。但是,区块链到底是什么呢?

区块链

它是比特币或其他加密货币进行交易的数字账本,账本按时间顺序记录并对外公开。

在更一般的术语中,它是一个公共数据库,新数据存储在一个名为块的容器中,并被添加到一个不可变链(后来的区块链)中添加了过去的数据。在比特币和其他加密货币的情况下,这些数据是一组交易记录。当然,数据可以是任何类型的。

区块链技术已经催生了新的、完全数字化的货币,如比特币和莱特币,这些货币并不是由中央政府发行或管理的。因此为那些认为今天的银行系统是骗局或终将失败的人带来了新的自由。区块链所包含的以太坊技术对分布式计算进行了变革创新,它引入了一些有趣的概念,比如智能合约。

在本文中,我将用不到50行的Python2代码来做一个简单的区块链。我称它为SnakeCoin。

首先将定义块将是什么样子。在区块链中,每个块都存储一个时间戳和一个索引。在SnakeCoin中,需要把两者都存储起来。为了确保整个区块链的完整性,每个块都有一个自动识别散列。与比特币一样,每个块的散列将是块索引、时间戳、数据和前块哈希的加密哈希。数据可以是你想要的任何东西。

importhashlibashasherclassBlock:def__init__(self,index,timestamp,data,previous_hash):self.index = indexself.timestamp = timestampself.data = dataself.previous_hash = previous_hashself.hash = self.hash_block()defhash_block(self):sha = hasher.sha256()sha.update(str(self.index) +str(self.timestamp) +str(self.data) +str(self.previous_hash))returnsha.hexdigest()

这一步后有块结构,但现在是创建区块链,所以需要向实际的链中添加块。如前所述,每个块都需要上一个块的信息。但是按照这个说法就有一个问题,区块链的第一个区块是如何到达那里的呢?不得不说,第一个块,或者说是起源块,它是一个特殊的块。在很多情况下,它是手动添加的,或者有独特的逻辑允许添加。

下面将创建一个函数简单地返回一个起源块以便产生第一个区块。这个块是索引0,它具有任意的数据值和“前一个哈希”参数中的任意值。

importdatetimeasdatedefcreate_genesis_block():# Manually construct a block with# index zero and arbitrary previous hashreturnBlock(0,date.datetime.now(),"Genesis Block","0")

现在已经创建好了起源块,接下来需要一个函数,以便在区块链中生成后续的块。这个函数将把链中的前一个块作为参数,创建要生成的块的数据,并使用适当的数据返回新块。当新的块哈希信息来自前面的块时,区块链的完整性会随着每个新块而增加。如果不这样做,外部组织就更容易“改变过去”,用全新的方式取代已有的链条。这一系列的散列可以作为加密的证据,有助于确保一旦将块添加到区块链,它就不能被替换或删除。

defnext_block(last_block):this_index = last_block.index + 1this_timestamp = date.datetime.now()this_data = "Hey! I'm block " + str(this_index)this_hash = last_block.hashreturnBlock(this_index,this_timestamp,this_data,this_hash)

大部分的工作已经完成,现在可以创建区块链了。在这次的示例中,区块链本身是一个简单的Python列表。列表的第一个元素是起源块。当然,还需要添加后续的块,因为SnakeCoin是最小的区块链,这里只添加20个新的块。可以用for循环来生成新块。

# Create the blockchain and add the genesis blockblockchain = [create_genesis_block()]previous_block = blockchain[0]# How many blocks should we add to the chain# after the genesis blocknum_of_blocks_to_add = 20# Add blocks to the chainforiinrange(0,num_of_blocks_to_add):block_to_add = next_block(previous_block)blockchain.append(block_to_add)previous_block = block_to_add# Tell everyone about it!print"Block #{} has been added to the blockchain!".format(block_to_add.index)print"Hash: {} ".format(block_to_add.hash)

下面来测试一下目前产生的区块链。

看到了吧,这就是区块链。如果希望在控制台中查看更多信息,可以编辑完整的源文件并打印每个块的时间戳或数据。

这就是SnakeCoin要提供的所有东西。为了使SnakeCoin规模达到今天生产区块链的规模,必须添加更多的功能,比如服务器层,以跟踪多台机器上的链变化,以及在给定的时间段内限制添加的块数量的工作算法。

python简单程序代码-简单python代码相关推荐

  1. 为什么一个程序中变量只能定义一次_#带你学Python# 从简单程序出发理解Python基本语法

    欢迎回来. 通过上一篇文章,我们第一次触摸了Python,学会了如何用各种不同的方式运行Python的解释器.也介绍了很多工具和开发环境,是不是跃跃欲试了? 到这里,别的python教程就会从数据类型 ...

  2. Python在程序退出前执行代码

    文章目录 问题描述 解决方案 注册函数 装饰器 参考文献 问题描述 在程序退出前执行代码 解决方案 使用内置库 atexit 注册程序退出前要执行的函数,即使程序崩溃,都会执行 注册函数 import ...

  3. python画图程序有图-python画图程序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 今天做的是用python实现画图,画出你想要的图案,只要你的想象力足够丰富,以及 ...

  4. python 打开程序 最大化_@Python 程序员,如何最大化提升编码效率?

    作者 | Enoch CK 译者 | 刘畅 整理 | Jane 出品 | Python大本营 [导语]无论你是一位高级的AI工程师还是学生,你都会在工作或学习过程中需要用到 Python.自 1991 ...

  5. python 重启程序_重新启动Python程序

    我会绕过所有的焦虑,你可能会从试图重新运行自己,把它交给环境. 我的意思是:当程序以特定的"重新启动"代码退出时,有一个控制程序只在循环中运行程序(使用与给定参数相同的参数).这可 ...

  6. python剪刀石头布程序_使用Python Tkinter实现剪刀石头布小游戏功能

    编写剪刀石头布游戏 让我们使用Python 3和Tkinter开发相同的游戏.我们可以将游戏命名为Rock-Paper-Scissors-Lizard-Spock. 规则和玩法 ock crushes ...

  7. python 入门程序_非Python程序员的Python速成课程-如何快速入门

    python 入门程序 This article is for people who already have experience in programming and want to learn ...

  8. python 报价程序_【python】简单爬虫制作(汽车之家易车网报价爬虫)

    首先交代背景,逗逼女朋友每个月要花费半天多的时间去汽车网上找三十多个城市.十多款车型的报价数据,而且他们部门其它人也要做这种繁琐的工作.我在网络卡屎的情况下帮她做了一回,我就打死都想写个程序把这种st ...

  9. python表白程序-如何用Python代码向心爱的姑娘花式表白?

    刚好之前用turtle 写过一个https://www.zhihu.com/video/1058809172984004608 这是我当时自学python第二天写的一个,书上讲到了一个turtle模块 ...

  10. python加密程序_Python 简单的可逆加密程序

    简单加密 1.[代码][Python]代码 #coding=utf-8 ''''' Description: 可逆的加密与解密 Environment: python2.5.x Author:ideh ...

最新文章

  1. 实战篇:一个核心系统 3 万多行代码的重构之旅
  2. Ext2.2系列(50篇)
  3. c语言x的2取模_c语言如何取模运算
  4. DOS中判断进程是否存在的方法
  5. Win10系列:JavaScript 模板绑定
  6. XFBAY学习笔记=++=实验十三 交换机和路由器组合实验
  7. 跨域资源共享(CORS)-漏洞整理
  8. 第 22 章 Node.js 安装
  9. 算法面试java_面试必备——java算法面试题
  10. matlab遗传算法求解车辆路径问题(一)
  11. centos7搭建hexo+nods.j个人博客
  12. Operator ‘==‘ cannot be applied to operands of type ‘byte[]‘ and ‘string‘
  13. java苹果沙盒验证参数问题_java -苹果支付凭证校验
  14. 常用街机模拟器机台设置[更新中](新手看)
  15. Perl笔记:07、以正则表达式进行匹…
  16. python语言下同一个类下有多个函数,其中一个函数想调用另外一个函数里面的变量怎么调用
  17. Word,Excel未保存,突然断电?找回死机后未储存的Word,Excel文件
  18. 你应该成为公司需要的人还是成为自己想成为的人
  19. Windows下将Tomcat8注册为系统服务
  20. Qt linguist的操作流程

热门文章

  1. 第二阶段个人总结11
  2. 总结20121016
  3. 博客园markdown语法扩展
  4. .net core 1.0 实现负载多服务器单点登录
  5. win7如何配置access数据源
  6. 【Android】Android 设置Activity窗体 不显示标题和全屏显示
  7. Oracle WebCenter 11g 快速开发指南--翻译(一)
  8. Chapter10:观察者模式
  9. 夸克浏览器有没有linux,夸克浏览器怎么样?夸克浏览器使用说明
  10. python 贴吧自动回复机-用python itchat写一个微信机器人自动回复