张墨轩的技术宅

不忘初心,方得始终

功夫编译系统心得总结

1.yarn工具可以理解为node下npm工具的升级版
2.cross-env,cross-var是node下的一个包(工具),用于解决跨平台环境变量设置问题
3.pipenv是一个python程序 用于建立python虚拟环境(带包管理器),Pipfile包含依赖,Pipfile.lock能有效解决依赖版本问题(注意和anconda中conda create创建的python环境在概念上进行区分和对比)
4.conan(柯南)也是一个python程序,用于C++包管理(配置执行文件:conanfile.py)
5.electron-builder electron程序编译工具,关于electron的简单理解就是把JavaScript,HTML 和 CSS和一个本地浏览器内核(包含v8-js解析引擎)打包到一起,成为一个可执行文件,而其中js代码是用ts代码开发,然后将ts代码通过typescript编译(转换)成js代码,关于typescript请自行百度
6.webpack js打包工具

core部分:
因为我装的anconda是3.8版本的,所以首先利用conda create -n创建了一个py37的环境,然后切换到这个py37的环境下,然后开始进行下面的工作
首先运行yarm 更新所有的node依赖包,然后生成yarn.lock文件,yarn.lock能有效解决依赖版本问题
然后利用pipenv安装python虚拟环境,并在这个环境下把所有需要的包装好
然后利用conan安装所有需要的C++包
然后调用python/build.py进行编译(内部通过cmake-js进行编译) 【2.2版本后改成利用conan通过conanfile.py文件操作
然后利用setup.py打包成wheel包【2.2版本后改成利用conan通过conanfile.py文件操作
然后通过python/build.py freeze打包成可执行文件(内部调用pyinstaller)【2.2版本后改成利用conan通过conanfile.py文件操作

app部分:
首先运行electron-builder install-app-deps安装相应依赖
然后调用.electron-kungfu/build.js和electron-builder进行编译和打包

功夫采用c/c++, python, js/ts/electron, js/node 混合开发,其中js/node和C++之间采用node的N-API机制交互,关于N-API请自行百度node-addon-api/node-gyp等。python与C++之间采用pybind11库进行混合编程, pybind11可实现C++11标准和Python之间的无缝操作,具体请自行百度

这里顺便说下cython机制, cython可以简单理解为开发了一种新的语言,这个语言语法类似python,然后编译的基本流程是首先通过Cython.Build.cythonize将cython代码编译(转换)为C++代码,然后通过setup函数调用本地安装的C++编译器将C++代码编译成二进制模块,然后就可以被python给调用了。开源项目AlgoPlus就采用了cython机制.

当我们用pip安装包(轮子文件)的时候,因为有些包内部采用了比如C++开发,并不一定是纯python,那么如果官方没有提供编译好的版本的话,那么就需要下载相应源码到本机进行实时编译,虽然这个过程是自动进行的,但是因为本地编译环境的原因,常常出错,所以我们一般 最好别用太新的版本的python,比如python3.7比较稳定发布时间也很长了,所以与之对应的包基本都有编译好的版本,出问题的概率相对较小,但如果用较新版本的python,比如3.8版本,甚至3.9版本,它们很多包仓库里面还没有编译好的版本,需要安装的时候本地编译,出错概率大大加大,所以开发建议用py37的版本。

多因子指数增强模型

项目概览:

本项目通过构建多因子模型实现了沪深300指数增强策略,流程包括原始数据获取、因子生成、因子预处理、单因子检验、收益预测模型及风险模型等,具体流程如图:

指数增强模型结构.png


强大的异步架构量化平台(alphahunter)

alphahunter是一个基于Python原生异步库(asyncio)实现的异步事件驱动开源量化策略研究/策略回测/量化交易/高频做市平台,本系统实现数据采集,存储,推送,研究,仿真模拟,线上模拟,实盘等全流程量化研究交易支持,各步骤规则,配置,接口高度统一,异步框架提高系统综合性能。

中低频基础框架如下图所示:

浅谈去中心化交易所生态

DeFi, 去中心化金融, 包含很多内容, 其中非常重要的一个领域就是去中心化交易所了.

简单把交易生态分成三个角色: <交易所>, <做市商>, <交易者>

<交易所>为交易提供基础设施, <做市商>作为流动性提供者, 为交易所提供流动性, <交易者>包括套利交易者, 对冲交易者, 散户, 机构等等.  <交易所>和<做市商>是利益共同体, 一起分享交易手续费等收入, 同时<交易所>还可以发行治理代币, <做市商>通过流动性挖矿方式获取治理代币奖励, 而<交易者>需要支付交易手续费, 如果把交易看成一门生意的话, 其实就是<交易所>和<做市商>一起赚<交易者>的钱.

从交易机制来说传统的中心化交易所和初代的去中心化交易所一般采用的都是订单簿+撮合机制, 本质是人和人交易, 而目前新一代的去中心化交易所大都采用AMM(自动化做市商)机制, 典型代表有Uniswap, Balancer, Curve, Bancor等. 在AMM自动化做市商机制下我们其实是和由智能合约实现的流动性代币对池交易, 在传统的订单簿+撮合机制下要成为做市商还是有一定门槛的, 一般需要有程序员,量化工程师等开发自动化做市程序,如果想更进一步可能还需要构建更巧妙的数学模型,比如将深度强化学习应用于高频做市程序, 然后还需要一定量的资金, 因为交易所一般对做市挂单额度都有要求. 而在智能合约+AMM机制下,做市就变得非常容易, 仅仅只需要向流动性池子按一定比率充值相应的代币就可以完成做市操作.

那么如何参入到游戏中来, 我们还是从<交易所>,<做市商>,<交易者>三个方面来看, 开设交易所, 这个难度显然太大. 成为做市商, 这是一个选项, 前面说了, 对于传统的订单簿+撮合机制, 还需要构建自动化做市程序,  而对于智能合约+AMM机制只需要向流动性池子充值就行, 不过采用AMM机制的去中心化交易所非常多, 各池子收益各不相同, 是否可以针对最优的AMM池子进行投资组合优化呢, 当然是可以的, Yearn Finance就是代表, 本质上不管是流动性挖矿还是staking或者借贷亦或是DEX的AMM, 其都是将代币存入存储池, 然后赚取收益, 完全可以进行投资组合优化. 最后从<交易者>角度看, 可以进行套利交易, 比如搬砖, 比如统计套利, 比如构建数学模型对价格进行预测, 买涨买跌, CTA交易等, 这些其实就属于最经典的量化交易了. 另外还可以做聚合交易, 在中心化交易所领域, AiCoin就是典型代表, 那么在去中心化交易所里面1inch.exchange就是典型代表. 另外就是还有些工具类的可以参入, 因为类似Uniswap这样的去中心化交易所一般只有简单的交易功能, 并没有类似中心化交易所那样全面的比如K线, 成交列表等信息展示功能, 亦或是限价单等功能, 所以像dextools, Unitrade等工具类应用就帮其补全这一块的功能.


一个不错的数字货币量化交易框架

量化交易系统整体架构:

 

OKEX以太坊合约随笔

OKEX上的ETH合约是反向合约,计价货币为USD, 结算货币为ETH, 每张合约价值10USD,  如图:


下面是些简单的公式:

开仓数量eth = 开仓合约数量(张) * 合约价值usd / 开仓价格(usd)

开仓保证金eth = 开仓数量eth / 杠杆倍数

证券从业法律法规数字总结

一、公司法

1.有限责任公司由50个以下股东共同出资设立。

2.预先核准的公司名称保留期为6个月。

3.公司担保的特殊规定:在议决表决时,被担保人不得参加表决。决议的表决由出席会议的其他股东所持表决权的过半数通过,方为有效。

4.有限责任公司注册资本的最低限额为:

  (1)以生产经营为主的公司的注册资本为人民币50万元。

量化交易系统开发的一些随笔

1.信号研究,因子研究,策略研究, 比如说通过各种数学方法如线性回归,金融时间序列分析,统计学习,机器学习等对历史数据进行分析,通过一定的规律找到开仓和平仓的信号(如趋势信号,均值回归信号)

2.把第一步的研究成果写成策略代码,拿历史数据进行回测,看看结果如何

3.如果上一步OK的话,就把策略代码对接实盘(或者先模拟盘),真实跑起来


从软件角度来看上面三个步骤的话,对应有三种软件概念:

1. 策略(信号,因子)研究平台

«1»

Powered By Z-Blog 2.2 Prism Build 140101

Copyright phonegap.me Rights Reserved.