预测2021欧洲世界杯
- 世界杯预测结果
- 预测的原理是什么?
- 周易算卦原理
- 算命可以解决的问题
- 善易者不卜
- 人工智能预测原理
- 预测模型:逻辑回归
- 算法可以预测的问题
- 可以单挑整个华尔街的算法
- 现代足球
世界杯预测结果
预测2021年欧洲世界杯,也是一道考试题目,因为出题老师是一个二十多年忠贞不渝的荷兰小球迷,还列出了一排福利:
- 荷兰进八强,请XXX
- 荷兰进四强,请XXXX
- 荷兰进二强,请XXXXX
- 荷兰进决赛,请XXXXXX
我不懂足球,甚至我一直听的都是河南(荷兰)……但是没关系,像算法就是在训练一种新的认知,一种信息时代的思维方式。
虽然它也是人思维的一部分,但和常人的思维方式完全不同,是伴随计算机出现的,结合人的逻辑、数学思维的思维。
训练好这种思维后,就是要把这种思维方式用到其他学科领域中去,可以带给人、产业的认知升级。 最需要考虑的一个问题就是,如何把那个领域的问题转化为信息或者数学问题,这也正是大部分计算机科学家做的事情。
现在我们预测2021年欧洲世界杯,荷兰VS捷克预测结果:
- 荷兰的胜率是 46.6%
- 打平概率是 31.3%
- 捷克获胜概率是 22.1%
荷兰赢的概率是46%,捷克赢的概率是22%,但今天我们知道最后是捷克赢了。
那是我预测错了么?这不是预测错了 —— 机器说了捷克有22%的可能性会赢,现在捷克赢了,也不过就是概率为22%的事件发生了而已。
你必须得能区分什么叫运气不好,什么叫决策错误。
我们都不能保证每一次预测都正确,但是可以保证决策系统的正确,我们要预测很多、很多把,所以,我们在乎的是一个能够以大概率预测对的科学决策系统,而不是某一把的输赢。
我们模型,总的预测结果:
-
八强 八场预测对了五场,预测成功率为62.5%。
-
四强 四场比赛预测成功了三场,预测成功率为 75%。
-
二强 二场比赛预测成功了一场,预测成功率为 50%。
-
决赛 预测英格兰胜出
P.S. 写在博客里的话,仅供个人复盘,不构成投资、赌博建议。
预测的原理是什么?
这就要回到最早期,原始人打完猎以后,把肉吃了,用骨头——上次行动的残余物作为一个介质,去获取天意。他们一般会把动物的骨头放在火上烤,骨头上就会出现裂纹。
至于裂纹到底意味着什么,只有部落的权威知道——这个权威既是部落的政治首领,也是部落的教主,他看见裂纹以后,会告诉其他人:“哦,今天应该朝东南方向打猎,会打到不少猎物”。
在中国,有两种方法,占和卜。卜是象形字,就是一个个裂纹;占比较复杂,是把一种特殊的草——蓍草,割下来晒干,剪成整齐的小棍,用来作为一种计算的工具,就像算盘是一种计算工具一样。
通过占卜的复杂操作,我们可以得出一组数据,这些数据由两种数组成:阳数和阴数,也可以简化成1和0。由1和0组成的6个数位的数字,就叫一卦。
周易算卦原理
我在算命先生身上学了一点点周易。
其实相对于算命,我更喜欢拉着他聊天,请他和我说说各种神异之事,因为他有另一套世界观,和另外一套世界运转的规律,也能自圆其说,让生活变得丰富多彩。
最喜欢他的有得必有失,有失必有得。
总体上来说,算命的人比算命这件事更有趣。
话说回来,无论是网上的、开店的、摆摊的、电脑程序的,各种打着《周易》旗号算卦的,其实绝大多数都不是《周易》正宗,而是京房纳甲、子平八字之类的东西,甚至就是一堆“以其昏昏使人昭昭”的大杂烩,反正只要能搬出一串可怕的专业术语把人吓到就好。
只因为《周易》招牌最老,字号最硬,所以谁都想借《周易》的名号。
我们可以有一个很简单的辨别方法:“大师”只要让你报出生日期之类的个人信息,我们就能判定这不正宗。
因为算卦的基本原则是对具体的事情算卦,而不是泛泛地算一个人的未来命运。
那么,究竟什么才是正宗的《周易》算法呢?
先想好要预测什么事,而后用五十根蓍草来做运算。蓍草是一种很特殊的植物,找不到的话不妨就拿五十个围棋子。
经过十八轮演算就可以算出一卦。为什么说“女大十八变”而不是“十七变”、“十九变”,源头就在这里。只有经过十八变,这才完整了,成熟了,发生质变了。
算出一卦之后,再从本卦求出变卦,对照《周易》里的卦爻辞就可以占卜吉凶了。
翻开周易,一共六十四卦,每一卦都有卦辞和爻辞。第一卦是乾卦,内容如下:
- 乾:元亨利贞。
- 初九:潜龙勿用。
- 九二:见龙在田,利见大人。
- 九三:君子终日乾乾,夕惕若厉无咎。
- 九四:或跃在渊,无咎。
- 九五:飞龙在天,利见大人。
- 上九:亢龙有悔。
- 用九:见群龙无首,吉。
从头看起:“乾”是卦名,跟在卦名后面的“元亨利贞”就是卦辞。
如果我们遇到需要以乾卦卦辞定吉凶的情况,那么“元亨利贞”就是我们的答案(凶或者吉),“元亨利贞”用现在的话来说,就是大吉大利~
一卦由六爻构成,每一爻还会有自己的爻辞,也就是解释吉凶祸福的语句。
乾卦六爻,从下往上依次是初九、九二、九三、九四、九五、上九。
以“初九”例,“初”用作定位,表示这个爻是卦里边的第一爻;“九”用作定性,表示这一爻是阳爻。
再看“九二”,“九”是定性,表示阳爻;“二”是定位,表示这是卦里的第二爻。
以此类推,“上九”,“上”是定位,表示这一爻是卦里的第六爻,位置在最上边;“九”是定性,表示这一爻是阳爻。
在定性规则里,“九”表示阳,“六”表示阴。
算命可以解决的问题
先说说不能解决的问题:
⒈问题不能太泛泛:算卦的基本原则是对具体的事情算卦,而不是泛泛地算一个人的未来命运。所以说,凡是让你报出出生日期或什么私人信息,说你一生注定大富大贵,一定是骗子来的。
⒉问题不能太具体:我们常会看到质疑算卦大师的人这么说:“你要是真会算,就把下期彩票的中奖号码算出来!”,这种质疑,其实也是不懂《周易》的表现,《周易》本来就处理不来这种预测。
比较合乎规范的提问应该是这样的:“我打算去买彩票,这一去到底是吉是凶,拜托您老人家给我算上一卦!”
如果演算的最终结果是“潜龙勿用”,意思就是:最好别去,就算你真是一条龙,这种时候你也应该低头趴着。
答案仅此而已吗,没有更细节的内容吗?
是的,《周易》只能预测到这种程度,那种预测出很多细节的传说要么是对《周易》的神化,要么出自算卦大师的个人发挥。
好吧,我们倒也可以接受这种程度的预测,但它到底准不准呢?
我可以很负责任地说:准,百分之百的准!
不是我迷信,而是因为这是一个不可证伪的结论。
也许你不服气,那么,让我们设想一种情况:虽然你拿到了“潜龙勿用”的爻辞,但你不在乎一点小钱,还是去买了彩票,竟然还中了!
这是不是就能证明《周易》不可靠呢?——当然不能,《周易》是可靠的,之所以没有应验,只能说明给你算卦的那个人学艺不精。
那如果给你算卦的人是公认的易学第一高手呢?那依然不能证伪什么,道理很简单:塞翁失马焉知非福,塞翁得马焉知非祸,彩票的小胜利当中隐伏着大的灾祸,多少中了彩票的人众叛亲离,家破人亡,盲目投资,倾家荡产,安稳已是万幸,之所以让你“潜龙勿用”,不是说你中不到彩票。
好吧,再追加一个条件:如果你中彩票后,一辈子顺风顺水,最后得了善终,是不是总可以盖棺论定了呢?
也不可以,灾难难道一定应在你的头上吗,难道就不能应在你子孙头上吗?
因为在古代思维里,家族属性重于个人属性,不像我们今天这样强调个人。这是古代社会的一种普世现象,从家族意识到个体意识的转变发生得相当晚近。
无论追加怎样的条件,都无法证伪——用来解读吉凶祸福的卦爻辞晦涩难懂,很难从文字里读出准确的涵义。
其实无论是怎样的命,算出来总有好的部分,也总有坏的部分。人性又从来贪图圆满,好的部分会欣然领受,觉得理所应当。但是对于坏的部分却根本放不下,就会请命师改命。
无论是哪一种,结局只会有两个,一种是有效,一种是无效。
-
如果是有效,那就会发展到要求长期化,固定化。
-
如果是无效,那就更糟糕了,人心会认为算得准,但是解法不灵,因此要去别处求取解法。于是,没完没了。本来没什么事,对付着也都能活。但是一旦动心起念,那就会在这条路上越走越远。到处找大师算命,感觉是一定要算出满意的一命来才能停止,但这又怎么可能有停止的时候?不断的向外求取,最后,只会让自己的心不安宁。
有得必有失,你要一样东西,必然会失去另一样。命里有时终须有,命里无时莫强求。
《周易》算卦最精彩是《左传》卦例:史苏预测韩原之战,史苏不但把韩原之战的结局预测准了,甚至连战争细节——车抛锚了——都讲到了,但史苏的神奇还不止于此,接下来他还准确预测出了韩原之战的后续事件,时间、地点、人物清清楚楚,但最后,晋献公最追悔的也是这副卦。
善易者不卜
善易者不卜,意思是一个精通易理的人完全可以未卜先知,也就没必要靠占卜来预测未来了。
因为《周易》阐释了许多诸如“物极必反”、“阴阳相济”之类的物理与人生的基本规律,只要你掌握了这些规律,自然拥有了一定的预测能力,所谓“君子见一叶落而知秋,尝一勺而知鼎镬”。
如果你深谙人情世故,又擅于捕捉微表情的话,能够仔细感知事物的发展变化,做到未雨绸缪,不懂易理也可以做出同样的预测。
人生的问题,我觉得有些是能想明白的,有些是不可能想明白的。
-
在价值观的问题上是比较容易想明白的,人生中什么东西重要,什么东西不重要,对我来说已经是很清楚了,我觉得更加重要的是让自己的精神愉快,让自己的精神丰富,让自己变得优秀,这个非常重要。
-
有些东西是没法想明白的,比如说生死问题,很多大师都没有想明白,对于这些想不明白的问题,我采取的态度就是说不要和自己较劲了,这不是自己能解决的问题,这是神的问题,让神来去回答吧。
人工智能预测原理
巫术也好,周易也好,智能技术也好,不管有多大的差别,它们的相通之处就是获取认知,把隐藏在现象背后的秘密挖掘出来。
大体来说,他们都是先确立一种算法,而后收集数据,并通过这些数据得出对未来的预测;都是通过对现在的状况、未来的趋势和走向,作出相应的决策。
今天的人工智能,也可以说是一种基于最前沿科技的特殊“巫术”,它的功能是预测未来,手段是确立算法、收集数据。
只是在《周易》的原初算法里,算法其实不重要,工具才重要,这个工具就是一种叫做蓍草的神奇植物。
之所以工具比算法重要,因为占卜工具扮演着灵媒的角色,吉凶祸福并不是某一套算法算出来的,而是灵媒帮我们向祖先神灵问出来的。
寿命决定灵性:人越老越精,物越老越灵,所以蓍草和乌龟可以充当灵媒。
人工智能和《周易》算卦又不同,人工智能准不准,学习数据说的算!
人的认知的形成也是如此,中医里的望闻问切都是数据的收集,当然,有经验的老中医存储的数据不仅仅只是通过望闻问切而获取的单个数据,而是他头脑当中存储了过往生活中的大量数据,经过我们不知道的复杂计算,得出一系列判断,而后给出一个处方。
但要找到所有球队的详细数据真是件头疼的事情,毕竟球队那么多。
所以只能在有限的数据下,完成分析。首先从Kaggle下载各个球队历年的比赛数据。
- https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017
第一步是用一个数学模型代替真实世界。
比如我要预测一场足球比赛,我的预测模型可以是双方球员的能力值决定比赛结果。我只考虑了射门、传球、防守各项能力的对比,但是像裁判执法是否公正,天气之类的因素我就忽略了。任何模型总要忽略一些东西。
第二步,选择算法。
比如蒙特卡罗模拟,是对你的模型进行若干次的模拟。我的模型里包括22个 AI 球员,他们各自代表一名真实球员的能力值。我可以据此用计算机模拟10万场比赛,看看有多少场是主队赢了,有多少场是客队赢了,算出概率,公布预测结果。
比如逻辑回归,我们有两支球队的所有出场球员信息、历史交锋成绩、比赛时间、主客场、裁判和天气等信息,根据这些信息预测球队的输赢。假设比赛结果记为y,赢球标记为1,打平标记为0,输球标记为-1,算出概率,公布预测结果。
预测模型:逻辑回归
思路是这样的:先对两组数据集进行探索性分析,找出跟预测有关联的特征,进行处理数据,而后用一个机器学习模型进行训练,最后将模型配置到数据集上。
# 导入需要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.ticker as ticker
import matplotlib.ticker as plticker
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression# 加载数据
data = pd.read_csv('archive/results.csv') # 数据下载:https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017# 查看数据
data.head()
# 数据预处理:进球数差异、确定比赛输出(输、平、赢)
win = []
n = len(data['home_team'])for x in range(n): # 从 0 开始到 n-1if data['home_score'][x] > data['away_score'][x]:win.append(data['home_team'][x]) # 赢elif data['home_score'][x] < data['away_score'][x]:win.append(data['away_team'][x]) # 输else:win.append('平')data['winning_team'] = win
data['goal_difference'] = np.absolute( data['home_score'] - data['away_score'] ) # 净胜球数 = 主场得分 - 客场得分
data.head()
# 重点看荷兰(Netherlands🇳🇱)的比赛统计结果
df = data[ (data['home_team'] == 'Netherlands') | (data['away_team'] == 'Netherlands') ]
Netherlands = df.iloc[:]
print(Netherlands) # 查看荷兰所有数据
# 筛选出欧洲杯入选队伍
eurocup_teams = ['Wales', 'Denmark', 'Italy', 'Austria', 'Netherlands', 'Czech Republic', 'Belgium', 'Portugal', 'Croatia', 'Spain', 'France', 'Switzerland', 'Endland', 'Germany', 'Sweden', 'Ukraine']df_teams_home = data[ data['home_team'].isin(eurocup_teams) ]
df_teams_away = data[ data['away_team'].isin(eurocup_teams) ]
df_teams = pd.concat( (df_teams_home, df_teams_away) )
df_teams.drop_duplicates()
df_teams.count()
# 越是近期的数据,越有价值,假设我们只要 1960年 之后的比赛
year = []
for x in df_teams['date']:year.append( int( x[:4] ) )
df_teams['match_year'] = year
df_teams_1960 = df_teams[ df_teams.match_year >= 1960 ]
df_teams_1960.count()
# 去掉不会影响到比赛结果的数据,我们用每个国家的胜率和主队等情况来预测比赛结果,因此诸如比赛地点、时间这些信息可以去掉。
df_teams_1960 = df_teams.drop(['date', 'home_score', 'away_score', 'tournament', 'city', 'country', 'goal_difference', 'match_year', 'neutral'], axis=1)# 结果数字化:主场获胜为类别2,平局为类别1,客场获胜为类别0
df_teams_1960 = df_teams_1960.reset_index(drop = True)
df_teams_1960.loc[ df_teams_1960.winning_team == df_teams_1960.home_team, 'winning_team' ] = 2
df_teams_1960.loc[ df_teams_1960.winning_team == '平', 'winning_team' ] = 2
df_teams_1960.loc[ df_teams_1960.winning_team == df_teams_1960.away_team, 'winning_team' ] = 0
df_teams_1960.head()
# 输入数据数字化处理,转化为[0,1]的onehot数据
final = pd.get_dummies(df_teams_1960, prefix = ['home_team', 'away_team'], columns = ['home_team', 'away_team'] )# 将数据按照7:3划分为训练数据、测试数据
X = final.drop(['winning_team'], axis = 1)
y = final['winning_team']
y = y.astype('int')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30, random_state = 42)
final.head()
# 建立逻辑回归模型
logreg = LogisticRegression()
logreg.fit( X_train, y_train )
score = logreg.score( X_train, y_train )
score2 = logreg.score( X_test, y_test )print('训练成绩:', '%.3f'%(score))
print('测试成绩:', '%.3f'%(score2))
'''
考虑到欧洲杯比赛场地通常不是参赛队伍所在国家,因此需要一个灵活的方式调整主客场
这里根据FIFA的排名,假定FIFA排名靠前的队伍,相对的球迷人数也更多,有一定的主场优势
FIFA排名:https://us.soccerway.com/teams/rankings/fifa/?ICID=TN_03_05_01
'''
ranking = pd.read_csv('datasets/fifaranking_2021.csv') # 排名数据
fixtures = pd.read_csv('datasets/euro_cup2021.csv') # 欧洲杯数据# List for storing the group stage games
pred_set = [] # Create new columns with ranking position of each team
fixtures.insert( 1, 'fisrt_position', fixtures['Home Team'].map( ranking.set_index('Team')['Position'] ) )
fixtures.insert( 2, 'second_position', fixtures['Away Team'].map( ranking.set_index('Team')['Position'] ) )# We only need the group stage games, so we have to slice the dataset
fixtures = fixtures.iloc[ :48, : ]
fixtures.tail()
# 分组预测
predictions = logreg.predict(pred_set)
for x in range( fixtures.shape[0] ):print( backup_pred_set.iloc[i, 0] + 'VS' + backup_pred_set.iloc[i, 1] )if predictions[x] == 2:print('Win: ' + backup_pred_set.iloc[i, 0])elif predictions[x] == 1:print('平')elif predictions[x] == 0:print('Win: ' + backup_pred_set.iloc[i, 1])print( backup_pred_set.iloc[i, 0] + '预测胜的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][2]) )print( backup_pred_set.iloc[i, 0] + '预测平的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][1]) )print( backup_pred_set.iloc[i, 1] + '预测胜的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][0]) )print("")
而后就可以看到八强的预测结果。
至此,我们完成了八强的预测。当然了,实际上八强预测对了5支队伍,为了对4强做出更准确的预测,我们使用实际晋级的8强队伍作为预测目标,再次进行分析即可。
一直到冠军,预测2021年欧洲世界杯的冠军是英格兰。
完整代码:
# 导入需要的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.ticker as ticker
import matplotlib.ticker as plticker
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression# 加载数据
data = pd.read_csv('archive/results.csv')# 查看数据
data.head()# 数据预处理:进球数差异、确定比赛输出(输、平、赢)
win = []
n = len(data['home_team'])for x in range(n): # 从 0 开始到 n-1if data['home_score'][x] > data['away_score'][x]:win.append(data['home_team'][x]) # 赢elif data['home_score'][x] < data['away_score'][x]:win.append(data['away_team'][x]) # 输else:win.append('平')data['winning_team'] = win
data['goal_difference'] = np.absolute( data['home_score'] - data['away_score'] ) # 净胜球数 = 主场得分 - 客场得分
data.head()# 重点看荷兰(Netherlands🇳🇱)的比赛统计结果
df = data[ (data['home_team'] == 'Netherlands') | (data['away_team'] == 'Netherlands') ]
Netherlands = df.iloc[:]
print(Netherlands) # 查看荷兰所有数据# 筛选出欧洲杯入选队伍
eurocup_teams = ['Wales', 'Denmark', 'Italy', 'Austria', 'Netherlands', 'Czech Republic', 'Belgium', 'Portugal', 'Croatia', 'Spain', 'France', 'Switzerland', 'Endland', 'Germany', 'Sweden', 'Ukraine']df_teams_home = data[ data['home_team'].isin(eurocup_teams) ]
df_teams_away = data[ data['away_team'].isin(eurocup_teams) ]
df_teams = pd.concat( (df_teams_home, df_teams_away) )
df_teams.drop_duplicates()
df_teams.count()# 越是近期的数据,越有价值,假设我们只要 1960年 之后的比赛
year = []
for x in df_teams['date']:year.append( int( x[:4] ) )
df_teams['match_year'] = year
df_teams_1960 = df_teams[ df_teams.match_year >= 1960 ]
df_teams_1960.count()# 去掉不会影响到比赛结果的数据,我们用每个国家的胜率和主队等情况来预测比赛结果,因此诸如比赛地点、时间这些信息可以去掉。
df_teams_1960 = df_teams.drop(['date', 'home_score', 'away_score', 'tournament', 'city', 'country', 'goal_difference', 'match_year', 'neutral'], axis=1)# 结果数字化:主场获胜为类别2,平局为类别1,客场获胜为类别0
df_teams_1960 = df_teams_1960.reset_index(drop = True)
df_teams_1960.loc[ df_teams_1960.winning_team == df_teams_1960.home_team, 'winning_team' ] = 2
df_teams_1960.loc[ df_teams_1960.winning_team == '平', 'winning_team' ] = 2
df_teams_1960.loc[ df_teams_1960.winning_team == df_teams_1960.away_team, 'winning_team' ] = 0
df_teams_1960.head()# 输入数据数字化处理,转化为[0,1]的onehot数据
final = pd.get_dummies(df_teams_1960, prefix = ['home_team', 'away_team'], columns = ['home_team', 'away_team'] )# 将数据按照7:3划分为训练数据、测试数据
X = final.drop(['winning_team'], axis = 1)
y = final['winning_team']
y = y.astype('int')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30, random_state = 42)
final.head()# 建立逻辑回归模型
logreg = LogisticRegression()
logreg.fit( X_train, y_train )
score = logreg.score( X_train, y_train )
score2 = logreg.score( X_test, y_test )print('训练成绩:', '%.3f'%(score))
print('测试成绩:', '%.3f'%(score2))'''
考虑到欧洲杯比赛场地通常不是参赛队伍所在国家,因此需要一个灵活的方式调整主客场
这里根据FIFA的排名,假定FIFA排名靠前的队伍,相对的球迷人数也更多,有一定的主场优势
FIFA排名:https://us.soccerway.com/teams/rankings/fifa/?ICID=TN_03_05_01
'''
ranking = pd.read_csv('datasets/fifaranking_2021.csv')
fixtures = pd.read_csv('datasets/euro_cup2021.csv') # List for storing the group stage games
pred_set = [] # Create new columns with ranking position of each team
fixtures.insert( 1, 'fisrt_position', fixtures['Home Team'].map( ranking.set_index('Team')['Position'] ) )
fixtures.insert( 2, 'second_position', fixtures['Away Team'].map( ranking.set_index('Team')['Position'] ) )# We only need the group stage games, so we have to slice the dataset
fixtures = fixtures.iloc[ :48, : ]
fixtures.tail()# 分组预测
predictions = logreg.predict(pred_set)
for x in range( fixtures.shape[0] ):print( backup_pred_set.iloc[i, 0] + 'VS' + backup_pred_set.iloc[i, 1] )if predictions[x] == 2:print('Win: ' + backup_pred_set.iloc[i, 0])elif predictions[x] == 1:print('平')elif predictions[x] == 0:print('Win: ' + backup_pred_set.iloc[i, 1])print( backup_pred_set.iloc[i, 0] + '预测胜的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][2]) )print( backup_pred_set.iloc[i, 0] + '预测平的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][1]) )print( backup_pred_set.iloc[i, 1] + '预测胜的概率', '%.3f'%(logreg.predict_proba(pred_set)[i][0]) )print("")
算法可以预测的问题
我们的大脑非常善于在没有规律的地方找出规律来,而这也是一种迷信。
在任何一个文明中,都包含着一个重要的文化软件——宗教。
宗教的本质是想象:设定有一个在控制和管理这个有形世界的主宰者,人的生存和行动要具有有效性的话,就必须要洞悉这个顶级上司的种种意图,否则,所有的行为要么是无效的,要么会导致巨大的灾难。
因此,所有文明中都有对这个看不见的、超越于人之上的力量和规律进行揣测的种种手段,巫术和宗教就是其中最重要的。
但是有些地方就是随机的,没有规律的,你要从没有规律的地方找出规律,也是迷信。
比如股市,股价的走法,基本上是随机的。
经济学有一个概念:有效市场。
有效市场里,买卖双方,都既不会感到占了便宜,也不会感到吃亏。有效市场里任何时候都是买卖的好时候。这是因为,在有效市场里,你无法真正预测一件商品未来价格的走向。
比如,你坐在路边一个餐馆里吃饭,你发现外面人来人往的街道上有一张一百元的钞票,那你是否应该出去把钞票捡起来呢?
经济学家不会出去捡的。街上那么多人,如果真的是张钞票,肯定早就被人捡走了!
换句话说,经济学家认为对于钞票而言,人来人往的街道是一个“有效市场”。
在有效市场里所有机会都会迅速被人填补,一张百元大钞不太可能等着被你发现。
如果股市是个有效市场,它就不存在什么靠谱的赚钱机会,股价的所有波动都可以说是没什么意义的。看什么K线、什么突破位、阻力位、什么人工智能之类的概念,就都没用……
那股市是个有效市场吗?我们要用数学方法来证明这一点。
一般的股票在比较长的一段时间里,都会有一个上涨或者下降的总趋势。如果经济形势和股票的基本面都很好,它在长期一定会上涨,这不是随机的。
但是股市中的日常行为,用所谓的技术分析去搞微观操作,那基本上没有意义。
如果把长期的总涨幅拉成一条直线,而后把这条直线作为“大势”,从股价波动曲线中减掉,那么剩下的那些涨落,基本上就是随机行走。
所以现在的股市是个相当有效的市场。当然这里面有个悖论。如果股市真的是绝对有效,股价走向完全随机,那人们就不用分析股市规律了……可是这样的话股市就会变得无效;而如果股市无效,人们就会又愿意来分析它的规律,股市又会变得有效。所以任何一个股市都不可能100%有效,还会有一定的规律存在。
这就好比说你在森林里打猎。如果这个森林中有很多特别好的猎手,那只要猎物一出现就会被人抓住,所以猎物就会越来越少,也会越来越小,越来越不好抓。但你永远都不能说森林里没有猎物,因为如果真的没有猎物,所有的猎手就都走了,走了之后,森林里又会有猎物。
所以现实是森林里总会有些小小的猎物,股市中总会有些小小的规律可以让人获利。
比如在1990年代,有人发现一个效应叫“一月上涨效应”。每年圣诞节股市封盘之前,很多交易员为了能安安心心过个年,会把手里持有的股票给卖了。所以12月底的时候,股价会稍微低一点。过完新年交易员们回来上班,又会再买股票,这就导致一月初的股价会相对于十二月底有一个上涨。
这个现象在1990年代确实存在,但是今天已经不存在了。为什么?因为规律一旦让人发现,就会被逆向操作。现在我知道一月份股价会上涨,那我就应该在十二月底买一些股票,等到一月卖出!等到人们利用这个规律赚钱的时候,这个规律就消失了。
可以单挑整个华尔街的算法
文艺复兴的赚钱方法应该是高频交易。
“高频交易”是个什么概念呢?
比如你自己做股票交易,从看到一个行情,到自己在计算机前填好表格下单,到完成交易,可能最快也需要一分钟。
高频交易不是一秒钟交易一次,也不是一毫秒交易一次,也不是一微秒交易一次,而是最快可以在 6400 万分之一秒内交易一次 —— 为了抢那么一点点时间,要架设专门的信息传递网络。
高频交易的决策完全是由人工智能根据算法完成的,人不参与具体的决定。高频交易公司每天会完成无数比交易,TA在乎的不是一次交易的输赢,而是无数次交易积累下来的统计学优势。
高频交易有俩个最重要的好处。
- 对新信息的消化速度
让人工智能自动监测、读取、理解、分析消息,并且立即完成交易。
这种情况下只需要几百毫秒甚至更短的时间,消息就已经反映在股价之中了。
常规来说,从新闻发布,到交易员阅读、理解这条新闻、到评估这个新闻对该公司股价应该有多大的影响,到完成交易操作,到公司股价达到新的均衡点,大约需要十五分钟。
也就是在散户还没听说这个新闻的时候,这个新闻已经过时了。
- 我的算法能抓住股市的趋势
可以用足球比赛打个比方,之前的总结中有通过逻辑回归和蒙特卡罗算法预测世界杯,但这些算法是一次性预测的,真正好的预测算法不该如此简单、粗暴。
我们设想一下,如果在比赛进行之中交易,是一个什么情形。
比如这场是A对M,赛前大家判断双方胜率各占 50%。
比赛进行到上半场 15 分钟的时候,A进了一个球。
这时候你应该大大提高A的胜率,而且场上每一分钟的僵持都在让赔率发生变化,毕竟比赛时间是有限的:每多僵持一分钟,平局的可能性就增大一点点。
现在人工智能参与赌球,并且开展了高频交易。
我们设想,从场上形成一个可能进球的危险局面,到把球真的打进,大概需要两秒钟的时间。
整个过程是比如说,一次秒传、前场形成单刀球、前锋带球突破防线、起脚射门、观众判断球的飞行路线有戏、守门员没跟上、球越过门线形成合法进球。
这两秒钟之内,进球的概率在发生着急剧的变化!
人跟不上这个变化,但是人工智能可以。
如果人工智能在每一次刚刚形成单刀球的时候,大举加大A获胜的押注,而后在判断这次射门会失败的时候,立即减小这个押注,你说这是不是就等于抓住了足球的必然趋势。
高频交易就如同看着慢放 6400 万倍的足球比赛押注。
人工智能是看着球飞行路线上每千万分之一秒都买进卖出。
如果你的反应比比赛进程慢,你只能说足球没规律;如果你的反应比比赛快那么多,比赛对你可能是必然事件。
本质上来说。文艺复兴赌的是,我的操作速度,比市场回归均衡的速度快。
文艺复兴公司本质上把股票交易变成了一个计算机可以解决的信息问题。
里面的计算机算法最早是最大熵模型,最大熵的原则就是要充分利用所有已知信息,而不要猜测任何未知信息,而把每次获得的新信息当成筛子,来帮助进一步的投资决策。
这种高频交易算法都是军备竞赛的局面:今天你有个好使的新算法,你就赚钱;过段时间这个算法就会不好使,那时候我发现了新的算法,你就得着急了。
不过事实证明,像文艺复兴公司这样,一家领先做大,而后用最好的待遇积累最厉害的人才,长时间保持一个算法上的领先优势,是可能的。
现代足球
奥运会刚刚结束,我们知道中国在奥运会拿了很多金牌,排名第二,(摒弃情感)但是,尽管如此,中国在竞技体育上的成就相当有限,不是排名和金牌数量的问题。
中国在跳水和乒乓球上拿了很多金牌,但这并不能说明中国跳水队和乒乓球队是伟大的队伍 —— 因为这些项目的竞争度和交流度非常低。
而射击和举重这些项目根本就不能算竞技体育。中国擅长的,几乎都是观众不在乎的项目。
说到影响力最大的还是三大球(足球、篮球、排球),特别是男足,是高度竞争、高度交流、完全职业化的竞技项目,是世界第一运动(叙利亚交战各方会为了收看一场足球赛临时停火,就离谱)。
足球流行的根本原因是英国当初在世界各地的殖民统治,英语也是如此。
正因为足球的影响力巨大(远超其他球类),如果您真的有钱,我们可以玩的更高级一点,当数量级发生变化的时候,逻辑就会不一样。
现在的老板喜欢投资足球俱乐部,老实说这不是一个好生意,但他们也不是为了做生意,他们真正想要的是拥有一支高水平球队。
拥有一支球队很光荣!这钱花的有意思!每周看着自己的球队跟人比赛,这种感觉很爽!把一支球队做大做强比捧红什么女明星的成就感大多了。你们周末约高尔夫,我说我去不了,因为我的国际米兰队有一场重要比赛我得去坐镇!
低水平富人买名牌衣物,中等水平富人买私人飞机,高水平富人买球队。其实……还有更高水平的富人直接影响美国大选。
具体来说,我们该怎么从零开始搭建一支高水平球队呢?
现在的问题是,我们水平的确不高,所以要做一次归因分析。
比如这次东京奥运会,中国男子三大球却 37 年来首次集体无缘奥运会,而中国女子三大球全部晋级东京奥运会。
如果您可以承受一番凶猛的言论,请往下看 —— 虽然中国女足经常赢球,但事实是中国女足远远不如中国男足,女足和男足是完全不同的两个项目,根本就没有可比性,女足的成熟度很低,中国女足是在跟其他国家的一帮业余选手瞎玩。
中国男子三大球进不了奥运会,我们肯定会非常惋惜 —— 但平心而论,也许中国三子三大球配不上奥运会。
比如中国男篮,2012 年伦敦奥运会、2016 年里约奥运会,中国队都是小组赛五场全败。
比如男足也是经常刷新水准,最近连越南都不如了。
像这样的球队凭什么非得要一届不落地参加奥运呢?没有巨星的中国队需要奥运会,奥运会不需要没有巨星的中国队。
以前江湖武林,有崆峒、武当、少林、峨眉、昆仑五大派,但功夫都密不外传,所以武术门派之间没有充分的交流。
如果武术门派之间充分交流,像现在职业足球这样每周打一场联赛,那么不同打法很快就能分出高下,而后所有门派的人都会去学习最高级的那个打法。
那么最后结果就是所有人都使用同样的打法比赛。
三十年以前,足球是一个有明显不同风格的运动,比如英格兰爱打长传冲吊,南美洲足球则主打脚法细腻,有时候一个人盘带动不动就能过好几个人,还有什么“欧洲拉丁派”。
今天我们看世界杯,这些风格就都不那么明显了。巴西队也追求快速推进,英格兰也不打长传冲吊了,这就是充分竞争和充分交流的结果。
现代足球只有一种正确打法,那就是欧洲大陆足球的打法。
这个打法的特点是讲整体、多传球、快速推进、避免粘球盘带。
这不是一种风格,这是足球这个运动的正确比赛方法,是充分交流、充分竞争自然形成的。
如果对参加英超、意甲、德甲、西甲联赛的队伍做过统计,会发现TA们本质上都是这种打法。
打法都是这个打法,之所以还有差别,在别对这个打法的完成度的技艺水平区别。
抓住这个大局,我们就知道中国足球为什么是现在这个位置了。简单地说就是中国足球不是这套打法的圈内人,我们在圈外。
对于现代足球来说,欧洲教练挑选球员不看身高,也不怎么看绝对奔跑速度,最关键的就看传球和跑位(随时找三角形路线、在局部保证人数占优、快传快做动作、时刻对对手保持压迫力)。
毕竟 90分钟 比赛里,真正球在你脚下的时间,平均只有 53.4秒。剩下的那 89分钟零6.6秒 你都在跑位。
从这个意义上说,现代足球就好像是国际象棋。这是一个位置决定胜负的游戏。
下国际象棋得用脑子,得从小科学训练,足球也是这样。
正是因为现代足球是个专业性非常强的项目,这就意味着需要从小 —— 甚至是从六岁就开始按照这个体系进行训练。
比如说,如果你不知道球该怎么踢,你可能会觉得喜欢盘带过人的孩子很不错,应该纵容他自由发挥 —— 那就大错特错了。
现代足球训练要求从六岁开始就得练快速传球和无球跑动、树立战术意识。
如果你家小孩从小不是这么练的,那就练废了。足球不再是十二岁了还在街头踢野球、而后长大还能成名的项目了。
为什么中国足球不行?因为中国足球长期以来都没有一个按照现代足球打法科学训练的青训系统。
足球水平跟国家人口总数关系不大 —— 但是跟参加科学训练的小球员人数关系很大。
只要有一个现代化的青训体系,根本不需要全民足球,只要有几个省市重点搞一下就可以了。
毕竟,中国要钱有钱、要人有人,只要方法得当,怎么可能不厉害!
可惜以前中国从未好好搞过现代化青训。国产教练文化水平低根本不懂现代足球,有的还收受家长的贿赂。等到想学国外,又走了很多弯路,比如学巴西。青训的正确办法是请欧洲教练到中国来。
在亚洲,澳大利亚文化上离欧洲更近,很多球员在欧洲踢球。日本和韩国的青训体系一直比中国正规。这三个队,中国现在确实比不了。亚洲其他国家,包括伊朗在内,其实跟中国一样,都是现代足球圈外的人。偶尔也许能出几个天才球员,整体没啥前途。
但是现在中国正在进入现代足球圈子。现在因为投入很大,中国有好几个俱乐部就在搞欧式的青训,所以未来还是可以期待的。
除了教练外,足球十分依靠明星,像每一支英超球队都至少有一位当家球星, 每一个能拿好成绩的 NBA 和 NFL 球队都基本上都得依赖一位巨星。
如果他们受伤,球队下一场比赛就打不好;如果他们受伤太严重,球队这个赛季就没指望。
教练能协调战术打法,但是教练不可能告诉每个球员该怎么做每一个动作,全靠个人发挥。
匪夷所思的射门、神来之笔的组织、碾压式的速度和对抗,不是主教练能安排出来的。在最理想的情况下,主教练的安排能把球星发挥提高 10% 到 15%,但是仅此而已。
教练最多是个厨师,他手艺再好也不能把香菇炒成海参。
所以,我们现在的问题不是怎么管理香菇、青菜和葱,而是去哪找海参。
以球星而论,现在中国足球搞归化球员,是当前唯一正确的做法。
有些人反对中国足球搞归化球员的理由是要 “展示本民族体能和智力”。
其实中华民族的体能和智力藏是藏不住的,根本无需展示。竞技体育是展示你这个国家有没有明星、吸引不吸引明星、能不能容得下明星的地方。
有人说中国反正什么都好,就算足球不行也没关系。
目前为止,活着的中国人之中,没有几个全世界范围的明星。中国足球不行,中国电影行吗?中国的歌曲行吗?中国人写的小说有几本是深受全世界人民喜爱的?现在有多少重大科学发现是中国科学家做出来的?有多少个中国品牌是被全世界追捧的呢?
中国目前各行各业都缺明星,我们面临的问题,都是怎么从香菇青菜,改成葱烧海参!
这时候我们最应该关心的不是怎么管理香菇、青菜和葱,而是去哪找海参?
是制造培养生长明星的土壤重要,还是采取各种措施去全球挖为主?
真要干事儿就别管他是哪里的,只要愿意为我所用,就赶紧挖过来。
您可能无法想象现在足球竟然成了唯一的希望。