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

腾讯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安装包,无运行时的字符冲突问题。共享百度网盘地址

产品经理懂点儿技术

从事产品工作以来,对于产品经理是否要懂技术这个话题,我的回答从来都是必须懂点儿啊。

想象下产品经理完全不懂技术,设计的产品方案应该会有两种情况:第一种情况,囿于他人的实现无法突破现状。产品经理经常观摩把玩竞品,发现竞品哪点实现得好,则复制再应用到自家产品上。商业产品环境中,这种现象再普遍不过了。但简单复制竞品会严重限制产品的创新性和实现的优雅性。

第二种情况是,产品方案天马行空。天马行空本非完全的坏事,具体到执行层面需要详细而谦逊地与技术人员沟通,虽然沟通成本会因此成倍增加。

产品或保守或激进,沟通成本增加是产品完全不懂技术的主要弊端。

产品和技术应是双剑合璧的组合。产品可以为技术找到最闪耀的发光点,技术可以为产品实现最优雅的互动。

微信的面对面建群、长按识别二维码问世时,优雅畅快的实现方式确实惊艳了我,不禁内心暗道,要是我肯定想不到这种实现,妈的用着太爽了!

不谙技术,不了解其中远离会大大限制产品经理的发挥空间,很难创造出微信里那惊艳四方的方案。

若要补齐短板除了产品自学技术原理、保持对产品实现的敏感外,技术与产品的琴瑟和谐也是非常棒的。产品将希望达成的目的和技术沟通,技术耐心地与产品一同想办法,碰撞出优雅的实现。问题是实际产品环境中这种和谐可望而不可得。

反正我没得到过。

客户端版本兼容的因与果

Web网页版本发布后,新老用户在浏览器里看到的都是最新版本,因而不存在版本兼容问题。准确地说,Web网页的url结构更新后,通过老url访问可能会出现404情况。但这种问题在Web很好解决,所以总体而言,Web的版本兼容问题是几乎不存在的。

客户端发布版本与Web差异很大。客户端所有代码封装打包发布市场,用户下载并安装应用到手机或桌面。新版本必须重新安装才能更新老版本,否则老版本将一直运行。所以客户端版本兼容是产品经理必须面对的问题。

版本兼容的根本原因:原有特性的变更。 Continue reading 客户端版本兼容的因与果