利用Python抢回在蚂蚁森林把逝去的能量

Python34

目录

4 Python——uiautomator2库安装

1 蚂蚁森林简介

蚂蚁森林是一项旨在带动公众低碳减排的公益项目,每个人的低碳行为在蚂蚁森林里可计为"绿色能量"。"绿色能量"积累到一定程度,就可以用手机申请在生态亟需修复的地区种下 一棵真树 ,或者在生物多样性亟需保护的地区"认领"保护权益。

蚂蚁森林在各地的生态修复项目,是由蚂蚁集团向公益机构捐赠资金,由公益机构组织种植养护等具体工作,并由当地林业部门进行业务监管,所有项目都有对应的捐赠协议、验收报告。 [23]

2019年9月19日,中国"蚂蚁森林"项目获 联合国 " 地球卫士奖 "

据生态环境部2021年"全国低碳日"主场活动公布的数据:蚂蚁森林从2016年上线5年来,已累计带动超过6.13亿人参与低碳生活,产生"绿色能量"2000多万吨。

为了激励社会公众的低碳生活,5年来蚂蚁森林参与到全国11个省份的生态修复工作,累计种下3.26亿棵树,其中在甘肃、内蒙古均超过1亿棵。 同时,蚂蚁森林还在全国10个省份设立了18个公益保护地,守护野生动植物1500多种。通过在各地的生态环保项目,蚂蚁森林累计创造了种植、养护、巡护等238万人次的绿色就业机会,为当地群众带来劳动增收3.5亿元。

蚂蚁集团公开声明:每年投入蚂蚁森林数亿的费用属于纯公益捐赠。蚂蚁森林种下的树一经捐出,就属于国家、属于社会,未来如果这些树木产生碳汇,将全部用于公益。蚂蚁森林从未参与过碳交易。 如果蚂蚁森林里记录的个人碳减排量未来能交易,产生的所有收益将属于用户个人,不属于蚂蚁森林。

2 逝川长叹

在以前,容易忽略支护宝的我来说,很多能量被好友抢来,然后一直想找一个机会把失去的能量大范围的抢回来,苦于代码能力有限,一直没落实,最近很想弄,不在逝川长叹,也让别人羡慕我。

干货主要有:

① 200 多本 Python 电子书(和经典的书籍)应该有

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且可靠的练手项目及源码)

④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

Python学习交流Q群101677771

3 结果展示

过几分钟再偷,赚大了,哈哈哈!

4 Python——uiautomator2库安装

UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。Uiautomator2是在Uiautomator之上的python的接口封装,简单来说 Uiautomator2可以看到手机当前屏幕上有哪些控件,其坐标是啥,并且还可以模拟点击。

下面我们讲讲安装uiautomator2库的方法(我常用的)。

5 Python代码实现

Original: https://www.cnblogs.com/sn5200/p/15959129.html
Author: Python可乐的呀
Title: 利用Python抢回在蚂蚁森林把逝去的能量



相关阅读1

Title: 利用VAR模型科学管理仓位,提升策略效率

利用Python抢回在蚂蚁森林把逝去的能量

更多精彩内容, 欢迎关注公众号:数量技术宅,也可添加技术宅 个人微信号:sljsz01,与我交流。

期货行情瞬息万变,保证金体系决定了期货交易的杠杆属性。保证金放多了,资金利用率低,放少了,可能在大幅度的行情波动中造成强平的结果,甚至成为最终盈利和亏损的界限。所以,需要有一个衡量标准,为我们的仓位设置提供参考,VaR模型是科学管理仓位,提升策略效率的一个不错的选择。

VaR模型简述

在我们决定仓位的时候,我们其实需要考虑两个重要变量,一个是可能发生的亏损金额,另一个是发生亏损的可能性。用通俗的语言来打个比方,在99%置信区间下,Var值为2w,那么意味着每次交易亏掉2w权益的可能性是1%。具体公式:

VaR风险度 = 一定置信度下的VaR值/权益 * 100%

VaR模型的计算方法

VaR计算方法很多,比如历史模拟法、蒙特卡洛模拟法、核函数法、半参数法、参数法等。

本次我们使用参数法中的Delta-正太模型:

在服从正态分布的假设下,资产Var值为:

式中,$\bar\mu$是资产期望收益,$\bar\sigma$为标准差,$\delta_t$是要计算的时间长度,$Z {1-\alpha}$是从正太分布表中查到的对应于置信度水平$1-\alpha$的Z值,比如$\alpha = 0.01$的$Z{1-\alpha}=2.326$。

在期货市场中,只要我们把保证金控制在Var最大亏损百分比以上,我们就可以认为在这一置信水平下,可以极大程度防范风险。

通过Var模型评估风险

数据选择

选取近两年的期货所有品种的连续合约价格,置信度的选择,我们选取了99%和95%两个。

核心代码模块

if len(data[price].dropna()) != 0:

部分品种VAR结果可视化

利用Python抢回在蚂蚁森林把逝去的能量

利用Python抢回在蚂蚁森林把逝去的能量

利用Python抢回在蚂蚁森林把逝去的能量

利用Python抢回在蚂蚁森林把逝去的能量

买入持有 + VAR

那么我们算出了var之后,仓位的变化是否能够改善投资组合的整体表现呢?

为了排除策略的影响,我们让所有品种都采用最简单的买入并持有策略,在这个策略下,使用所有品种平均持仓和根据var进行仓位微调之后,整个策略的表现是否会有影响。

由于我们使用了var1和var5,因此我们以var1的权重weight_var1,记为w1,同样还有w5,w0表示初始权重,所有仓位平均分配。

我们的目标是计算w0,w1,w5的夏普率的差别,看看通过权重的变化,夏普率是否有所改善。

核心代码模块:

for code in list['wind_code']:    tmp = data*float(table[table['code'] == code]['w1'])df['w1'] = tmp.sum(axis = 1)df['w1_return'] = df['w1'].pct_change()mean1 = df['w1_return'].mean()std1 = df['w1_return'].std()sharp1 = 2**0.5*mean1/std1​for code in list['wind_code']:    tmp = data*float(table[table['code'] == code]['w5'])df['w5'] = tmp.sum(axis = 1)df['w5_return'] = df['w5'].pct_change()mean5 = df['w5_return'].mean()std5 = df['w5_return'].std()sharp5 = 2**0.5*mean5/std5

最终我们计算得出:
均值标准差夏普率平均仓位0.00064372690041408 0.01082542031323569 0.08409533179205349 根据var1调仓0.00078209905493337 0.01147973020602057 0.09634852655560597 根据var5调仓0.00078063238309689 0.01148086624921166 0.09615832807729695

可以看到,从夏普率的角度,不论是根据var1调仓还是根据var5调仓,两者数值都有所提高,提高幅度在14.2%。可见,通过VAR模型进行仓位控制,可以在很大程度上,改善投资组合的表现。

VAR仓位管理在量化策略中的表现

我们已经验证了仓位在投资组合当中不可替代的作用,那么在实际的应用表现中,整体仓位比例的变化对于组合的收益率曲线有什么影响。我们以均线策略模型为例,抽取部分策略品种进行体现。从收益率数据的表现看,不管是组合中的品种表现,还是整个组合的表现,var调仓的效果都要比平均仓位的表现要好一些。

部分品种比较曲线,w1代表原始策略表现,w0代表经VAR调整仓位后策略表现:

利用Python抢回在蚂蚁森林把逝去的能量

品种汇总曲线,同样的,w1代表原始策略表现,w0代表经VAR调整仓位后策略表现:

利用Python抢回在蚂蚁森林把逝去的能量

想要 获取本次分享的完整代码,或是任何 关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,一起交流

利用Python抢回在蚂蚁森林把逝去的能量

往期干货分享推荐阅读

数字货币稳定币对网格做市策略

数字货币资金费策略

分享一个年化15%以上的无风险套利机会

网格交易系统开发

通过深度学习股价截面数据分析和预测股票价格

Omega System Trading and Development Club内部分享策略Easylanguage源码

一个真实数据集的完整机器学习解决方案(下)

一个真实数据集的完整机器学习解决方案(上)

如何使用交易开拓者(TB)开发数字货币策略 ;

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的"独孤九剑"

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

如何获取免费的数字货币历史数据

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

Original: https://www.cnblogs.com/sljsz/p/15186922.html
Author: 数量技术宅
Title: 利用VAR模型科学管理仓位,提升策略效率

相关阅读2

Title: 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

一、爬取老番茄B站数据

前几天开发了一个python爬虫脚本,成功爬取了B站李子柒的视频数据,共142个视频,17个字段,含:

视频标题,视频地址,视频上传时间,视频时长,是否合作视频,视频分区,弹幕数,播放量,点赞数,投币量,收藏量,评论数,转发量,实时爬取时间

基于这个Python爬虫程序,我更换了up主的UID,把李子柒的uid换成了老番茄的uid,便成功爬取了老番茄的B站数据。共393个视频,17个字段,字段同上。
这里展示下爬取到的前20个视频数据:
利用Python抢回在蚂蚁森林把逝去的能量
基于爬取的老番茄B站数据,用python做了以下基础数据分析的开发。

二、python数据分析

1、读取数据源

import pandas as pd
df = pd.read_excel('B站视频数据_老番茄.xlsx', parse_dates=['视频上传时间', '实时爬取时间'])  # 读取excel数据

2、查看数据概况

df.head(3)  # 查看前三行数据
df.shape  # 查看形状,几行几列
df.info()  # 查看列信息
df.describe()  # 数据分析
df['是否合作视频'].value_counts()  # 统计:是否合作视频
df['视频分区'].value_counts()  # 统计:视频分区

3、查看异常值

df2 = df[['视频标题', '视频地址', '弹幕数', '播放量',
          '点赞数', '投币量', '收藏量', '评论数', '转发量', '视频上传时间']]  # 去掉不关心的列
df2.loc[df.评论数 == 0]  # 评论数是0的数据
df2.isnull().any()  # 空值
df2.duplicated().any()  # 重复值

4.1、查看最大值(max函数)

df2.loc[df.播放量 == df['播放量'].max()]  # 播放量最高的视频
df2.loc[df.弹幕数 == df['弹幕数'].max()]  # 弹幕数最高的视频

4.2、查看最小值(min函数)

df2.loc[df.投币量 == df['投币量'].min()]  # 投币量最小的视频
df2.loc[df.收藏量 == df['收藏量'].min()]  # 收藏量最小的视频

5.1、查看TOP3的视频(nlargest函数)

df2.nlargest(n=3, columns='播放量')  # 播放量TOP3的视频
df2.nlargest(n=3, columns='投币量')  # 投币量TOP3的视频

5.2、查看倒数3的视频(nsmallest函数)

df2.nsmallest(n=3, columns='评论数')  # 评论数倒数3的视频
df2.nsmallest(n=3, columns='转发量')  # 转发量倒数3的视频

6、查看相关性

# 查看spearman相关性(得出结论:收藏量&投币量,相关性最大,0.98)
df2.corr(method='spearman')

利用Python抢回在蚂蚁森林把逝去的能量

7.1、可视化分析-plot

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
# 可视化效果不好
df2.plot(x='视频上传时间', y=['弹幕数', '播放量', '点赞数', '投币量', '收藏量', '评论数', '转发量'])

利用Python抢回在蚂蚁森林把逝去的能量

7.2、可视化分析-pyecharts

from pyecharts.charts import Line  # 折线图所导入的包
from pyecharts import options as opts  # 全局设置所导入的包
time_list = df2['视频上传时间'].astype(str).values.tolist()
line = (
    Line()  # 实例化Line
    # 加入X轴数据
    .add_xaxis(time_list)
    # 加入Y轴数据
    .add_yaxis("弹幕数", df2['弹幕数'].values.tolist())
    .add_yaxis("播放量", df2['播放量'].values.tolist())
    .add_yaxis("点赞数", df2['点赞数'].values.tolist())
    .add_yaxis("投币量", df2['投币量'].values.tolist())
    .add_yaxis("收藏量", df2['收藏量'].values.tolist())
    .add_yaxis("评论数", df2['评论数'].values.tolist())
    .add_yaxis("转发量", df2['转发量'].values.tolist())
    .set_global_opts(title_opts=opts.TitleOpts(title="老番茄B站数据分析"),
                     legend_opts=opts.LegendOpts(is_show=True),
                     )
    # 全局设置项
)

利用Python抢回在蚂蚁森林把逝去的能量

至此,基础数据分析工作完成了。

三、同步讲解视频

逐行代码视频讲解:
https://www.zhihu.com/zvideo/1455460990275567616

by 马哥python说

Original: https://www.cnblogs.com/mashukui/p/16242980.html
Author: 马哥python说
Title: 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

相关阅读3

Title: 如何在控制台实现一个数据管理系统(包括MYSQL数据库的增删改查)

为了方便的实现记录数据、修改数据没有精力去做一个完整的系统去管理数据。因此,在python的控制台直接实现一个简易的数据管理系统,包括数据的增删改查等等。只需要在控制台层面调用相应的功能调用查询、修改等功能,这里记录一下实现过程。

利用Python抢回在蚂蚁森林把逝去的能量

利用Python抢回在蚂蚁森林把逝去的能量

【阅读全文】

创建mysql数据表

使用比较熟悉的数据库客户端来进行操作,这里使用的是navicate客户端来创建好相应的数据表。

创建数据库并指定编码字符集。

CREATE DATABASE `data_boc` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

创建数据记录表boc

CREATE TABLE `boc`  (
  `id_` bigint(255) NOT NULL COMMENT '数据记录编号,ID_作为主键',
  `boc_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `boc_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `boc_email` varchar(24) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `boc_name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`id_`) USING BTREE
)

增删改查

import pymysql as mysql  # 导入mysql驱动器

from pprint import pprint  # 导入美观的数据打印库

确定一下需要实现哪些功能,在控制台打印出功能列表,通过在控制台输入每个功能列表前面的标记来进入后台系统的使用。

def current_menu():
    '''
    功能目录列表展示
    :return:
    '''
    pprint('---------------- 简易数据管理系统 ----------------')
    pprint('系统功能实现:')
    pprint('1- 查询数据列表')
    pprint('2- 新增数据列表')
    pprint('exit- 退出系统')
    pprint('更多功能、暂未实现')

编写数据库连接的创建函数,在修改或查询数据时直接调用。

def cteate_connection():
    '''
    创建数据库连接
    :return:
    '''
    connection = mysql.connect(host='127.0.0.1',
           user='root',
           password='root',
           database='data_boc')
    return connection

编写保存数据的函数用于数据列表新增功能实现。

def set_data():
    '''
    新增数据保存
    :return:
    '''
    pprint('当前进入[2- 新增数据列表]')
    id = input('输入数据编号')
    id = int(id)
    boc_address = str(input('输入详细地址'))
    boc_code = str(input('输入具体编码'))
    boc_email = str(input('输入正确邮箱'))
    boc_name = str(input('输入数据名称'))
    pprint('数据输入完成,开始保存...')
    '''创建数据库接连'''
    connection = cteate_connection()
    cursor = connection.cursor()
    insert_sql = "insert into boc(id_,boc_address,boc_code,boc_email,boc_name) values('%d','%s','%s',%s,%s)" % (
    id, boc_address, boc_code, boc_email, boc_name)
    try:
        cursor.execute(insert_sql)
        connection.commit()
    except:
        connection.rollback()
        print("数据保存出现异常...")
    connection.close()
    pprint('数据保存完成...')

编写数据列表的查询功能函数。

def get_data():
    pprint('当前进入[1- 查询数据列表]')
    '''创建数据库连接'''
    connection = cteate_connection()
    cursor = connection.cursor()
    select_sql = "select * from boc"
    res_list = []
    try:
        cursor.execute(select_sql)
        res = cursor.fetchall()
        for row in res:
            id = row[0]
            boc_address = row[1]
            boc_code = row[2]
            boc_email = row[3]
            boc_name = row[4]
            res_list.append({'数据编号':id,'详细地址':boc_address,'具体编码':boc_code,'邮箱地址':boc_email,'名称':boc_name})
        pprint('数据结果:{}'.format(res_list))
        connection.commit()
    except:
        print("数据查询出现异常...")
    connection.close()
    pprint('数据查询完成...')

启动应用

if __name__ == '__main__':
    while True:
        current_menu()
        chiose_code = input('输入菜单编号:')
        if str(chiose_code) == '2':
            set_data()
        if str(chiose_code) == '1':
            get_data()
        if str(chiose_code) == 'exit':
            break

利用Python抢回在蚂蚁森林把逝去的能量

【往期精选】

自制文档格式转换器,支持 .txt/.xlsx/.csv格式转换...

PyPDF2如何实现按照PDF页码提取后并另存为PDF格式文件?

PyQt5 GUI:百度图片下载器(文末附源码)

浪漫的turtle,送给程序员自己的圣诞树!

PyQt5 GUI && Requests Api 做一个天气查询系统(文末领取完整代码)!

Original: https://www.cnblogs.com/lwsbc/p/15729475.html
Author: Python集中营
Title: 如何在控制台实现一个数据管理系统(包括MYSQL数据库的增删改查)