好玩的博弈论 - 纳什均衡


均衡

均衡在英文中是equilibrium,是来自经济学中的一个概念。均衡也就是平衡的意思,在经济学中是指相关因素处在一种稳定的关系中,相关因素的量都是稳定值。比如,我们去商场买东西,那我们作为买家和卖家之间是买卖关系,经过讨价还价最终将商品的价格定在了一个数值上,这个数值买卖双方都能结束,这个时候我们就说买家和卖家之间达成了一种均衡。

博弈论中的均衡是指参与者之间经过博弈,最终达成了一个稳定的结果。均衡只是博弈的一种结果,但并不是唯一的结果。博弈的均衡是稳定的,这种稳定点是可以通过计算找到的。我们以一个例子来分析一下博弈中的均衡。

女孩Alice和男孩Bob青梅竹马,对彼此都有好感,但...

Read more

Ubuntu编译安装Python3


背景

因为工作原因,所以经常需要给新机器安装Python3运行环境。所以记录一下安装过程,方便后续查阅。

安装Python

下载源码

Python的源码下载需要到官网下载,地址为:

https://www.python.org/downloads/source/

找到需要的版本进行下载,比如: 3.8.2版本。

安装依赖

在编译安装Python之前,需要先安装一些系统依赖,可以使用如下命令:

sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev  libsqlite3-dev libreadline-d...

Read more

修改django admin里的时间显示格式


在使用Django Admin做一些业务系统时发现它默认的时间格式是类似于:

May 8, 2020, 11:55 a.m.

这对于一般的客户来说,读起来有点麻烦。所以经常会收到反馈是希望有一个易读性更强的时间字段。实现方法很简单,可以这样:

在ModelAdmin中,添加一个新的时间方法,例如:

def formated_time(self, obj):
    return obj.timefield.strftime("%Y-%m-%d %H:%M:%S")

然后指定它对应的ORM中的字段以及字段的说明:

formated_time.admin_order_field = 'tim...

Read more

解决MacOS: certificate verify failed: unable to get local issuer certificate的问题


最近将工作的操作系统从Ubuntu切换到了MacOS。在运行爬虫脚本时,如果抓取HTTP的页面,则没有报错,但是当遇到HTTPS页面时,就出现了这么一个报错:

certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)

出现这个问题的原因是给这个网站的签发证书的CA证书没有在操作系统的root证书列表里。这里有2个可能:

  1. 证书是自签名证书(类似于之前的12306)
  2. CA是一个新的CA,操作系统里没有更新对应的CA证书

对于这个问题可以有2个解决办法:

  1. 在脚本中不校验服务端证书有效性;...

Read more

基金的选择


开扒基金家族

基金可以按四个维度来分类,按投资品种分、按交易渠道分、按运作方式分,按投资方式分。

注意:这四个方法并不是相互独立,而是各有交叉的,同一只基金在不同的分类标准下属于不同的类型。

按投资品种分

货币基金

货币基金用来投资企业债、银行定期存款、地方政府债、国债,比较安全相对收益也比交低,一般在2%-4%左右。

注意:没有投资债券占比要求,除了投资一年内的债券,还可以投资银行定期存款等其它收益比较稳定的有价证券。

货币基金的筛选方法:

  • 收益率:可以通过‘每万份收益’和‘7日年化’这两个指示。
  • 流动性:最好随用随取(T+0)。
  • 成立时间:成立时间3-5年以上比较好。
  • 基金规模...

Read more

使用scikit实现回归


scikit-learn是一个由Python开发的免费开源机器学习库,它提供了现成的功能来实现诸如线性回归分类器、SVM、k-means和神经网络等多种算法,以及一些可以直接用于训练和测试的样本数据集。是目前机器学习应用程序中使用最广泛的库之一。

安装scikit

可以直接使用pip进行安装:

pip install scikit-learn

什么是学习

学习就是人类通过观察、积累经验,掌握某项技能或能力。就好像我们从小学习识别字母、认识汉字,就是学习的过程。而机器学习(Machine Learning),顾名思义,就是让机器(计算机)也能向人类一样,通过观察大量的数据和训练,发现事物规...

Read more

NumPy和Pandas


NumPy和Pandas都是用Python做数据处理时非常好用的库。在一个新同学要使用Python做数据分析处理时,通常都会被推荐使用NumPy和Pandas这2个库。

Numpy提供了很多方便统计计算的功能,比如计算均值(mean函数)和标准差(std函数)。NumPy支持向量计算,例如向量加法、与标量相乘等。而Pandas则更进一步,它是基于NumPy开发的数学分析工具,是为了解决数据分析任务而开发的,用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效、方便很多。

一维数组

既然要做数据分析,那就不能只是分析单个数据了,所以从一维数组的数据分析开始。在NumPy中,一维数...

Read more

Alpha策略


Alpha策略是比较常见的量化策略。

Alpha的含义

Rs = α + Rf + βs(Rm + Rf) + ε

其中 Rs为现货组合的预期收益率, Rf为无风险利率,Rm为市场指数的预期收益,ε为误差项,α衡量了非系统性风险,βs衡量了系统性风险。

Alpha和Beta的关系

市场上常见的指数基金表现为: 如果整个市场涨了,业绩也跟着涨,但如果整个市场跌了,业绩也跟着跌。这是因为它的Beta系数一般在1左右,所以它的收益主要来源于Beta。

但是,如果只是依靠β来获利,那在市场走下坡时,就没有办法做到盈利了。因此我们需要更多考虑alpha参数,使得即使在市场下行时,也能获得正的超额收...

Read more

什么是量化交易


严格来讲,量化交易是运营复杂的统计学方法和数学模型,从庞大的历史数据中海选出能够带来收益的多种"大概率"事件以找出规律、制定策略,并且能用数据模型验证、固化这些规律和策略,然后用计算机来严格、高效地执行。

这一定义涉及统计学、金融学和计算机科学等多门学科,通俗点来说,量化交易是指利用统计学、数学、计算机技术和现代的金融理论来辅助投资者更好地盈利。这些量化的方法可用于分析海量历史数据,也可以用来控制持仓大小、进行风险评估、控制等。

因此,量化交易与传统的主观交易并不是二元对立,量化交易也包含主观交易,比如常见的期货跨市套利策略、期权波动率套利等就属于半自动交易。它们需要交易员综合历史均值回...

Read more

restful API的一些设计思路


什么是restful API

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本身并没有创造新的技术、组件或服务,...

Read more