谷歌的广告业务是如何赚钱的?

1、 为什么用户不讨厌谷歌的广告?

2、 为什么广告主更愿意在谷歌投放广告?

首先来看一个公式:

CPM = coverage * depth * CTR * CPC * 1000

公式的最左边是CPM,意思是每千次展示所产生的收入,CPM越高,意味着谷歌赚的钱就越多。

Coverage指的是“广告覆盖率”。广告覆盖率 = 出现广告的搜索页面 / 所有搜索页面。用过谷歌的都知道,大部分搜索页面是没有广告的。如果你搜索了1000次,只有500次搜索结果上有显示广告,那coverage就是50%。

Depth指的是“平均每页广告数”。即谷歌页面最顶端、最有价值的广告位,如果这个数字是3,那一个页面上出现的广告条数就是3条。

CTR指的是“广告点击率”。这个也很容易理解,同一条广告,我展示了100次,有3次点击,点击率就是3%。

CPC指的是“每次点击产生的费用”。

Continue reading 谷歌的广告业务是如何赚钱的?

Python下载文件的代码

通过Python下载中证行业分类文件

import requests

url = 'http://www.csindex.com.cn/uploads/downloads/other/files/zh_CN/ZzhyflWz.zip'
r = requests.get(url, stream = True)
with open("D:\\zhongzheng.zip", "wb") as Pypdf:
    for chunk in r.iter_content(chunk_size = 1024):
        if chunk:
            Pypdf.write(chunk)

通过Python下载网易金融数据文件

import requests

url = 'http://quotes.money.163.com/service/zycwzb_300525.html?type=report'
myfile = requests.get(url, allow_redirects=True)
open('D:\\300525.csv', 'wb').write(myfile.content)

解压缩zip文件

import zipfile

zip_file = zipfile.ZipFile("D:\\zhongzheng.zip")
print zip_file.namelist()
zip_file.extractall(path="D:\\stockdata")

根据用户行为优化技术实现

腾讯QQ相册

针对用户行为进行分析,发现有大量的用户操作只是拉取相册和图片列表,并没有去查看图片的详细信息。对此,我们对用户索引进行了轻重分离,将列表所需关键信息和其他详细信息分开存储,大大降低了每次操作平均读写的索引数据块大小。
根据对用户行为的分析,最近上传的图片访问量往往最大。为了给用户提供更好的下载体验,在用户上传相册后,我们会预先发送指令给CDN加速点通知它们拉取图片进行缓存,当后续用户的好友进行访问时,能够快速加载,无需回源。

金融数据来源与量化平台

盈透证券API方案,港美股量化实盘交易

 

锐思Resset、国泰安数据库,支持A股和港股股票行情,淘宝购买,支持下载

 

Tushare,支持A股股票历史和实时行情,Python免费安装

 

Rqalpha,支持A股股票日线级别行情,Python本地安装

支持数据获取、算法交易、回测引擎、实盘模拟、数据分析,综合性的量化方案

 

Wind量化接口个人版

A股股票指数和基金行情和财务数据

 

investing.com,国内外指数和外汇历史数据,支持下载

 

新浪财经api,支持外汇股票实时行情,暂无python模块

Continue reading 金融数据来源与量化平台

Python Matplotlib 简单应用

安装

pip install matplotlib

 

绘制单条曲线

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x)) # 如果没有第一个参数 x,图形的 x 坐标默认为数组的索引
plt.show() # 显示图形

输出如下

绘制两条曲线

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), x, np.sin(2*x))
plt.show()

输出如下

自定义曲线外观

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), 'r-.', x, np.cos(x), 'c--')
plt.show()

上述代码展示了两种不同的曲线样式:’r-.’ 和 ‘c–‘。字母 ‘r’ 和 ‘c’ 代表线条的颜色,后面的符号代表线和点标记的类型。

颜色: 蓝色 – ‘b’ ,绿色 – ‘g’ ,红色 – ‘r’ ,青色 – ‘c’, 品红 – ‘m’ ,黄色 – ‘y’,黑色 – ‘k’, 白色 – ‘w’

线: 直线 – ‘-‘ ,虚线 – ‘–‘ ,点线 – ‘:’ ,点划线 – ‘-.’

常用点标记:点 – ‘.’ ,像素 – ‘,’ ,圆 – ‘o’ ,方形 – ‘s’ ,三角形 – ‘^’

输出如下

增加标签和标题

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), 'r-x', label='Sin(x)')
plt.plot(x, np.cos(x), 'g-^', label='Cos(x)')
plt.legend() # 展示图例
plt.xlabel('Rads') # 给 x 轴添加标签
plt.ylabel('Amplitude') # 给 y 轴添加标签
plt.title('Sin and Cos Waves') # 添加图形标题
plt.show()

输出结果如下

绘制子图

x=np.linspace(0,2*np.pi,50)
plt.subplot(2,1,1) #(行,列,活跃位置)
plt.plot(x,np.sin(x),'r')
plt.subplot(2,1,2)
plt.plot(x,np.cos(x),'g')
plt.show()

 

散点图

x=np.linspace(0,2*np.pi,50)
y=np.sin(x)
plt.scatter(x,y)
plt.show()

买入卖出股票的优雅实现

使用Python非常优雅地实现买入和卖出股票的计算,如下。

stocks = set(context.stocks) 

holdings = set(get_holdings(context)) 

to_buy = stocks - holdings 

to_sell = holdings - stocks

利用集合的+ -法可以很方便计算当前持仓与目标持仓间需要买入和卖出的股票。

 

集合是无序无重复的元素集,不支持索引和切片,重复值自动剔除。集合支持 x in set, len(set),和 for x in set等操作。

创建集合

1)b=set([6,3,9,15,21]) #set()方法创建

2)a = {‘a’,’i’}  #{}方式创建,但不能为空,否则会默认创建字典

 

增加集合元素

1)add方法。b.add(45) #add方法支持增加单个元素

2)update方法。b.update(a) #update方法支持集合合并

 

删除集合元素

b.remove(9) #原集合删除了元素 9

 

集合的运算

a|b    #求a,b的并集

a&b    #求a,b的交集

a-b    #元素在a中,不在b中

a^b    #集合a除去a&b的交集元素

Python常用函数备忘录

lambda

用法示例:
key=lambda x: abs(x)

相当于传入参数 x,输出结果 abs(x)

max与min

用法示例:
price = {
‘A’:123,
‘B’:450.1,
‘C’:12,
‘E’:444,
}
max_price=max(price.items(),key=lambda x:x[1])

对price.items()的序列求最大值,判断的标准是序列单元的第二个值

sorted

用法示例:
price = {
‘A’:123,
‘B’:450.1,
‘C’:12,
‘E’:444,
}
sorted_price=sorted(price.items(),key=lambda x:x[1],reverse=True)
对price.items()的序列排序,排序的标准是序列单元的第二个值,默认从小到大排序,reverse后从大到小排列。

Python常用金融扩展备忘录

pandas

地址

https://github.com/pandas-dev/pandas

安装

pip install pandas

文档

10分钟学会Pandas

 

numpy

地址

https://github.com/numpy/numpy

安装

pip install numpy

文档

待完善

 

tushare

地址

https://github.com/waditu/tushare

安装

pip install tushare

文档

待完善

 

pandas-datareader

地址

https://github.com/pydata/pandas-datareader

安装

pip install pandas-datareader

文档

待完善

 

talib

地址

https://github.com/mrjbq7/ta-lib

安装

pip install TA-Lib

 

安装报错:failed building wheel for ta-lib

解决方式:

1)下载第三方wheel,http://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib

2)命令行运行:pip install TA_Lib‑0.4.10‑cp27‑cp27m‑win32.whl

 

报错  error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27

解决方式:下载安装 Microsoft Visual C++ 9.0

文档

待完善

Python pip安装扩展包

问题:安装Python后,打开Python解释器,运行 pip install tushare 报错如下

pip install tushare
^
SyntaxError: invalid syntax

 

解决:Windows系统内,pip应当在命令行界面运行。

cmd打开命令行界面,

C:\users\yourname>D:\   #切换到D盘

C:\users\yourname>cd D:\Program Files\Python\Scripts #切换到pip所在目录

C:\users\yourname>pip install tushare #安装tushare

 

添加pip路径到Windows环境变量

C:\users\yourname>set PATH = %PATH%;D:\ProgramData\Anaconda2  #新增环境变量
C:\users\yourname>pip install tushare #安装扩展包

 

成功安装tushare金融数据扩展包~

 

下载安装扩展包,管理员身份运行命令行,执行:python setup.py install

 

Python集成环境Anaconda,集成pip安装包,无运行时的字符冲突问题。共享百度网盘地址