月度归档:2015年08月

优矿量化大赛循环赛即通联量化实验室python平台

什么是『优矿』——通联量化实验室

『优矿』是您的私人金融量化分析的平台。我们旨在打破金融量化的壁垒,为广大量化爱好者提供华尔街专业量化机构的装备。通过提供高质量的海量金融数据与高性能的分析工具,共襄智慧与金融在大数据时代的红利。

  • 社区 :我们聚集了一批量化从业者、量化爱好者,他们开放各种想法、算法、策略,共享思维碰撞带来的灵感;
  • 开始研究 :我们为每个用户提供了独立安全的研究开发环境,您在『开始研究』中的所有内容都是您私有的;
    • 同时您还可以将研究成果、或者问题一键分享至『社区』,让更多的人发现你,并在讨论中获得提升。
    • 甚至您还可以将感兴趣的『社区』内容,一键克隆至您个人的研究开发环境『开始研究』。
  • 模拟交易 :您可以将开始研究中的策略,一键发布,进行实盘模拟。

在 开始研究 中,您可以通过编写python 2.7代码,快速实现各种金融数据分析、量化策略研究、定价模型分析。我们提供了:

  • 海量金融大数据
    • 提供包括市场行情、财报、宏观、基于文本分析的股票关联数据等,通过简单的DataAPI便可获取(所有提供的数据请见 DataAPI帮助);
  • 交易回测框架
    • 我们提供了quartz交易回测框架,使得用户可以专注于描述交易算法逻辑,而不必关心底层的实现细节,同时快速获得策略表现评估。
  • 金融计算分析库
    • 我们提供了CAL——金融计算分析库,涵盖金融计算的方方面面,包括定价、风险指标分析、数值计算等等。CAL让金融分析高度模块化,方便专业金融人士在此基础之上设计自己的模型。

优矿帮助

S1EP3 一句话理解Pandas 笔记

网上有朋友专门写了S1EP3 一句话理解Pandas,我在学习中…..

import codecs
import requests
import numpy as np
import scipy as sp
import pandas as pd
import datetime
import json
r = requests.get(“http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data”)
with codecs.open(‘S1EP3_Iris.txt’,’w’,encoding=’utf-8′) as f:
f.write(r.text)

 

其中with 是py2.6开始 缺省引入,with 语句作为 try/finally 编码范式的一种替代,用于对资源访问进行控制的场合。

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
4.4,2.9,1.4,0.2,Iris-setosa
4.9,3.1,1.5,0.1,Iris-setosa

with codecs.open('S1EP3_Iris.txt','r',encoding='utf-8') as f:
lines = f.readlines()
for line in lines:
print (line,)

5.1,3.5,1.4,0.2,Iris-setosa

4.9,3.0,1.4,0.2,Iris-setosa

4.7,3.2,1.3,0.2,Iris-setosa

4.6,3.1,1.5,0.2,Iris-setosa

快速识别结构化数据

irisdata = pd.read_csv(‘S1EP3_Iris.txt’,header = None, encoding=’utf-8′)
irisdata

148  6.2  3.4  5.4  2.3  Iris-virginica
149  5.9  3.0  5.1  1.8  Iris-virginica

[150 rows x 5 columns]
>>>

 

快速的操作元数据
26 5.0 3.4 1.6 0.4 Iris-setosa
27 5.2 3.5 1.5 0.2 Iris-setosa
28 5.2 3.4 1.4 0.2 Iris-setosa
29 4.7 3.2 1.6 0.2 Iris-setosa
… … … … … …
120 6.9 3.2 5.7 2.3 Iris-virginica
121 5.6 2.8 4.9 2.0 Iris-virginica
122 7.7 2.8 6.7 2.0 Iris-virginica
123 6.3 2.7 4.9 1.8 Iris-virginica
124 6.7 3.3 5.7 2.1 Iris-virginica
125 7.2 3.2 6.0 1.8 Iris-virginica
126 6.2 2.8 4.8 1.8 Iris-virginica
127 6.1 3.0 4.9 1.8 Iris-virginica
128 6.4 2.8 5.6 2.1 Iris-virginica
129 7.2 3.0 5.8 1.6 Iris-virginica
130 7.4 2.8 6.1 1.9 Iris-virginica
131 7.9 3.8 6.4 2.0 Iris-virginica
132 6.4 2.8 5.6 2.2 Iris-virginica
133 6.3 2.8 5.1 1.5 Iris-virginica
134 6.1 2.6 5.6 1.4 Iris-virginica
135 7.7 3.0 6.1 2.3 Iris-virginica
136 6.3 3.4 5.6 2.4 Iris-virginica
137 6.4 3.1 5.5 1.8 Iris-virginica
138 6.0 3.0 4.8 1.8 Iris-virginica
139 6.9 3.1 5.4 2.1 Iris-virginica
140 6.7 3.1 5.6 2.4 Iris-virginica
141 6.9 3.1 5.1 2.3 Iris-virginica
142 5.8 2.7 5.1 1.9 Iris-virginica
143 6.8 3.2 5.9 2.3 Iris-virginica
144 6.7 3.3 5.7 2.5 Iris-virginica
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica
150 rows × 5 columns
In [4]:
cnames = [‘sepal_length’,’sepal_width’,’petal_length’,’petal_width’,’class’]
irisdata.columns = cnames
irisdata
Out[4]:

sepal_length  sepal_width  petal_length  petal_width           class
0             5.1          3.5           1.4          0.2     Iris-setosa
1             4.9          3.0           1.4          0.2     Iris-setosa

 

快速过滤:

irisdata[irisdata[‘petal_width’]==irisdata.petal_width.max()]

sepal_length  sepal_width  petal_length  petal_width           class
100           6.3          3.3           6.0          2.5  Iris-virginica
109           7.2          3.6           6.1          2.5  Iris-virginica
144           6.7          3.3           5.7          2.5  Iris-virginica

 

快速切片:

irisdata.iloc[::30,:2]

sepal_length  sepal_width
0             5.1          3.5
30            4.8          3.1
60            5.0          2.0
90            5.5          2.6
120           6.9          3.2

快速“MapReduce”

slogs = lambda x:sp.log(x)*x

entpy = lambda x:sp.exp((slogs(x.sum())-x.map(slogs).sum())/x.sum())

irisdata.groupby(‘class’).agg(entpy)

china-stock 0.1.5

china stock

Author: Hao Liu

Install

$ pip install china-stock

Use

Import china-stock module:

>>> import chinastock as cs

Get stock prices information on nearest trading day:

>>> cs.get_stock_today(code='000001', exchange='SZ')

Get historical stock close prices:

>>> cs.get_stock_history(code='000001', exchange='SZ')

Get stock’s adjusted close prices, open, high, low, volume, and change:

>>> cs.get_stock_history_adj(code='000001', exchange='SZ')

Update

07/14/2015:
  • Add get_stock_history and get_stock_history_adj methods
  • get_stock_today method return strings, not datetime

ntp标准时间相关

server 210.72.145.44 perfer   # 中国国家受时中心

server 202.112.10.36             # 1.cn.pool.ntp.org

server 59.124.196.83             # 0.asia.pool.ntp.org

 

国家这个经常失败,于是用了阿里云自己的

ntp 服务器 210.72.145.44
ntp3.aliyun.com
ntp5.aliyun.com
ntp2.cloud.aliyuncs.com

110.75.186.247
110.75.186.248
110.75.186.249

测试下来,也只有ntp2.cloud.aliyuncs.com最好用!

从黑帽黑客大会看信息安全技术发展 zt

  新华网旧金山8月9日电(记者马丹)聚焦信息安全风险与技术发展的美国黑帽大会和“防御态势”国际黑客大会8月1日至9日相继在美国拉斯韦加斯举行,研究人员在会上发布安全漏洞破解和安全技术研究的一系列最新情况,讨论攻防策略。

  来自中国的信息安全专家说,汽车安全是今年物联网安全方面的突出课题,而安全防御正引入深度学习技术,这在某种程度上反映出信息安全攻防技术水平将持续螺旋式升高的趋势。

  “揭短”为“补牢”

  一年一度的黑帽大会和黑客大会属于全球信息安全领域的顶级聚会,信息安全专家、厂商、研究人员和各路黑客汇聚一堂。190多名演讲者参加了今年黑帽大会的70多场技术培训和100多场创新研究发布会,参会人员逾万人,盛况超过往年。另外,安全研究人员还在“防御态势”黑客大会举办百余场演示,与会者人数超过黑帽大会。

  虽然这两场会议常被当地媒体称为黑客大聚会,但公开讲解破解之道的黑客大多是以研究为目的的所谓“白帽子黑客”。他们演示的各种安全漏洞和隐患一旦被怀有恶意的黑客利用,后果触目惊心。

  例如,澳大利亚黑客介绍了如何侵入相关系统为活人在线开具死亡证明,从而“杀死”任何人。中国奇虎360的团队演示了以低成本方式仿冒GPS定位信号,可导致手机、汽车用户乃至无人机误入歧途。美国黑客演示了如何对运行Linux计算机操作系统的一支智能步枪进行网络攻击和控制。

  一些研究人员在会前高调披露了他们发现的信息安全问题,备受媒体和业内人士关注,因而成为大会热门议题。比如,安卓手机存在的Stagefright漏洞,被称为所有安卓漏洞之母,可能危害大量手机的安全。研究人员还利用一辆切诺基越野车的车载无线电系统的安全漏洞,通过侵入该车互联网接口,对车辆行驶过程中的转向、油门、刹车等功能加以远程控制。

  奇虎360副总裁谭晓生认为,在不对联网汽车作任何硬件改动的情况下加以远程劫持,意味着相关安全漏洞将带来更大危险。

  深度学习促系统防御

  随着越来越多的物品、设备与互联网连接,物联网安全早已不是新话题。谭晓生说,防范“攻破”物联网是信息安全方面的热点问题,今年的防范热点在汽车安全方面。

  在本次黑帽大会一角,火眼、赛门铁克等众多老牌和新锐信息安全厂商设立展台,推介其信息安全技术、产品和服务。同时,大会也为厂商了解信息安全行业动态、把握防御技术趋势提供良好机会。不管黑客活动出于善意还是恶意,客观上都有助于提升信息安全技术水平。

  从互联网兴起时,就有人开始曝光和利用互联网安全漏洞,迫使一些软件厂商通过发布补丁程序等方式修补信息安全漏洞,防范黑客攻击。有分析人士将目前联网汽车面临的黑客威胁与当年互联网黑客威胁相提并论。谭晓生预测未来在汽车安全方面还会出现更多问题,汽车安全防御值得厂商大力投入和强化。

  在今年的黑帽大会上,一个引人关注的动向是不少信息安全厂商尝试用人工智能领域中的深度学习技术来搜寻网络攻击和威胁。比如,奇虎360的技术人员介绍他们如何研究将深度学习技术用于防御,在海量流量中找出恶意攻击的流量。其他研究人员关于深度学习的演讲也得到良好反响。谭晓生说,这一主题在演讲中的所占比例比去年大为增加,显示信息安全行业正迅速看好深度学习技术。

  他认为,深度学习技术的应用将推动信息安全防御向前迈进,由过去的个体用户防御向系统化防御发展。“但这肯定不是终结,而是攻防态势螺旋式上升的过程。攻击技术走在前面,防御技术随后跟进。当防御技术发挥一定作用时,攻击技术又会有新的发明,从而开始下一个螺旋。”

Magic commands

Magic commands

Summary of magic functions (from %lsmagic):
Available line magics:
%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cd  %clear  %cls  %colors  %config  %connect_info  %copy  %ddir  %debug  %dhist  %dirs  %doctest_mode  %echo  %ed  %edit  %env  %gui  %guiref  %hist  %history  %install_default_config  %install_ext  %install_profiles  %killbgscripts  %ldir  %less  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %macro  %magic  %matplotlib  %mkdir  %more  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %ren  %rep  %rerun  %reset  %reset_selective  %rmdir  %run  %save  %sc  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %varexp  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%cmd  %%debug  %%file  %%html  %%javascript  %%latex  %%perl  %%powershell  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

Python For Finance笔记2

#
# Monte Carlo valuation of European call option
# in Black-Scholes-Merton model
# bsm_mcs_euro.py
#
import numpy as np
# Parameter Values
S0 = 100. # initial index level
K = 105. # strike price
T = 1.0 # time-to-maturity
r = 0.05 # riskless short rate
sigma = 0.2 # volatility
I = 100000 # number of simulations
# Valuation Algorithm
z = np.random.standard_normal(I) # pseudorandom numbers
ST = S0 * np.exp((r – 0.5 * sigma ** 2) * T + sigma * np.sqrt(T) * z)
# index values at maturity
hT = np.maximum(ST – K, 0) # inner values at maturity
C0 = np.exp(-r * T) * np.sum(hT) / I # Monte Carlo estimator
# Result Output
print(‘Value of the European Call Option ‘, C0)

 

输出:

runfile(‘D:/快盘/txt/python/numtest.py’, wdir=’D:/快盘/txt/python’)
Value of the European Call Option 7.97780125163

runfile(‘D:/快盘/txt/python/numtest.py’, wdir=’D:/快盘/txt/python’)
Value of the European Call Option  7.99487314053

 

当然了,从google取数据是失败了,局域网伤不起啊!

goog=web.DataReader(‘GOOG’,data_source=”google”,start=’3/14/2009′,end=’4/14/2014′)
Traceback (most recent call last):

File “<ipython-input-23-4e9ceeed5e63>”, line 1, in <module>
goog=web.DataReader(‘GOOG’,data_source=”google”,start=’3/14/2009′,end=’4/14/2014′)

File “C:\Anaconda3\lib\site-packages\pandas\io\data.py”, line 82, in DataReader
retry_count=retry_count, pause=pause)

File “C:\Anaconda3\lib\site-packages\pandas\io\data.py”, line 436, in get_data_google
adjust_price, ret_index, chunksize, ‘google’)

File “C:\Anaconda3\lib\site-packages\pandas\io\data.py”, line 348, in _get_data_from
hist_data = src_fn(symbols, start, end, retry_count, pause)

File “C:\Anaconda3\lib\site-packages\pandas\io\data.py”, line 222, in _get_hist_google
return _retry_read_url(url, retry_count, pause, ‘Google’)

File “C:\Anaconda3\lib\site-packages\pandas\io\data.py”, line 178, in _retry_read_url
“return a 200 for url %r” % (retry_count, name, url))

OSError: after 3 tries, Google did not return a 200 for url ‘http://www.google.com/finance/historical?q=GOOG&startdate=Mar+14%2C+2009&enddate=Apr+14%2C+2014&output=csv’

 

行情还是用tushare好!

print(goog)
open   high  close    low      volume  price_change  p_change  date
2012-08-06  12.00  12.26  12.20  11.95   445725.94          0.19      1.58
2012-08-07  12.23  12.31  12.18  12.13   327227.59         -0.02     -0.16
2012-08-08  12.28  12.36  12.21  12.17   420227.94          0.03      0.25

 

ipython里可以直接画图,只要import pylab就行了

import pylab

a=pylab.linspace(0,10,25)

b=pylab.sin(a)

pylab.plot(a,b,’ro’)

 

conda 简单使用

conda是anaconda里自带的一个工具,结合了pip、virtualENV等多个工具,可以方便的管理python环境和包!

用conda创建一个名叫python2的版本为python2.7的环境。

conda create -n python2 python=2.7
这样就会在Anaconda安装目录下的envs目录下创建python2这个目录。

 

 

向其中安装扩展可以:

直接用 conda install 并用 -n 指明安装到的环境,这里自然就是 python2 。
像 virtualenv 那样,先activate,然后在虚拟环境中安装。
这里突然有一个问题,怎样在IDE中使用创建出来的环境?如果是PyCharm等IDE,直接设置Python安装目录就可以了。那spyder呢?其实spyder就是一个Python的扩展,你需要在虚拟环境中也装一个spyder。

 

$ conda create -n py33test anaconda=1.9 python=3.3 numpy=1.8

$ source activate py33test

Single libraries and packages can be installed using the  conda install command, either
in the general  Anaconda installation:
$ conda install scipy
or for a specific environment, as in:
$ conda install -n py33test scipy
Here,  py33test is the environment we created before. Similarly, you can update single
packages easily:
$ conda update pandas
The packages to download and link depend on the respective version of the package that is
installed. These can be very few to numerous, e.g., when a package has a number of
www.it-ebooks.info
dependencies for which no current version is installed. For our newly created
environment, the updating would take the form:
$ conda update -n py33test pandas
Finally,  conda makes it easy to remove packages with the  remove command from the main
installation or a specific environment. The basic usage is:
$ conda remove scipy
For an environment it is:
$ conda remove -n py33test scipy
Since the removal is a somewhat “final” operation, you might want to dry run the
command:
$ conda remove —dry-run -n py33test scipy
If you are sure, you can go ahead with the actual removal. To get back to the original
Python and  Anaconda version, deactivate the environment:
$ source deactivate
Finally, we can clean up the whole environment by use of  remove with the option  —all :
$ conda remove —all -n py33test
The package manager  conda makes  Python deployment quite convenient. Apart from the
basic functionalities illustrated in this section, there are also a number of more advanced
features available. Detailed documentation is found at http://conda.pydata.org/docs/.