2018年5月13日日曜日

python-binanceを使ってみているのだけれど、かゆいところに手が届かない。

少し関数を作ってみたので共有まで。

# 自分の持っているコイン一覧(BTC除く)をリストで返す関数(遅い)
# >>> get_my_coin_list()
# >>> ['ETH', 'DNT', 'MCO']
g_account = client.get_account()['balances']
def get_my_coin_list ():    
    lst = []
    for bal in g_account:
        basset = bal['asset']
        bfree = float(bal['free'])
        blocked = float(bal['locked'])
        ttl = bfree + blocked
        if ttl == 0 or basset == 'BTC':
            continue
        elif ttl < float(client.get_symbol_info(basset+'BTC')['filters'][1]['minQty']):
            continue
        else:
            lst.append(basset)
    return lst

# あるコインの現在価格(ティッカー/対BTC)を返す関数
# >>> get_current_price('ETH')
# >>> 0.080845
g_tickers = client.get_all_tickers()
def get_current_price (sym):
    return float((i for i in g_tickers if i['symbol'] == sym+'BTC').__next__()['price'])

# あるコインをいくつ自分が持っているかを返す関数
# >>> get_current_amount('ETH')
# >>> {'asset': 'ETH', 'free': '0.47080900', 'locked': '0.00000000'}
g_account = client.get_account()['balances']
def get_current_amount (sym):
    return (i for i in g_account if i['asset'] == sym).__next__()

# 全てのコイン(BTCとペアがあるもののみ)を返す関数
# >>> get_all_coin_lst()
# >>> ['ETH', 'LTC', 'BNB', 'NEO', ... (省略)
g_tickers = client.get_all_tickers()
def get_all_coin_list ():
    lst = []
    for t in g_tickers:
        if t['symbol'].endswith('BTC'):
            lst.append(t['symbol'][0:-3])
    return lst

# 自分の持っているコインの合計(BTC換算)を返す関数
# >>> get_my_asset()
# 0.009220648101
def get_my_asset ():
    lst = get_my_coin_list()
    ast = 0.0
    for l in lst:
        a = get_current_amount(l)
        ast += (float(a['free']) + float(a['locked'])) * get_current_price(l)
    a = get_current_amount('BTC')
    ast += (float(a['free']) + float(a['locked']))
    return ast

# 持っているコイン全てにストップロス注文を行う関数(ムダが多いのは歴史的経緯)
# >>> stop_loss_orders(0.9)
#     引数の0.9は、現在値の0.9倍にストップロスを入れる、という意味
# >>> Stop-Loss, ETH, 0.07291600, 0.470, 0.03427052
# >>> Stop-Loss, ICN, 0.00011859, 290.000, 0.03439110
g_account = client.get_account()['balances']
def stop_loss_orders (num):
    for bal in g_account:
        basset = bal['asset']
        bfree = float(bal['free'])
        blocked = float(bal['locked'])
        ttl = bfree + blocked
        if ttl == 0 or basset == 'BTC':
            continue
        elif ttl < float(client.get_symbol_info(basset+'BTC')['filters'][1]['minQty']):
            continue
        else:
            sym = basset
            b = bfree
            s = client.get_symbol_info(sym+'BTC')
            mq = float(s['filters'][1]['minQty'])
            mp = float(s['filters'][0]['minPrice'])
            i = get_current_price(sym)
            qty = round(math.floor(b / mq) * mq, 10)
            p = "%.8f" % round(math.floor(float(i) * num / mp) * mp, 10)
            o = client.create_order(
                symbol = sym+'BTC',
                side = SIDE_SELL,
                type = ORDER_TYPE_STOP_LOSS_LIMIT,
                timeInForce = TIME_IN_FORCE_GTC,
                quantity = qty,
                price = p,
                stopPrice = p)
            print('Stop-Loss, {0}, {1:.8f}, {2:.3f}, {3:.8f}'.format(sym, float(p), qty, float(p) * qty))

プログラミングは大学出て以来なので、お行儀悪いところがあればご指摘いただければ幸いです。
基本、「動けば良い」「すごい遅かったチューニング」の発想でやっています。。。

なお、上記関数のご使用はご自身の責任にてお願いします。

2017年12月14日木曜日

ナシーム・ニコラス・タレブ『反脆弱性』感想

『反脆弱性』を読んでいると、「それはどうだろう」とか「そこは触れてくれないのね」というところがいくつかある。そういったところ触れてみる。思いつくままに。

トップダウンの功罪
『反脆弱性』では、おおよそトップダウンはシステムを脆くする(冗長性を失う)から、ボトムダウンが望ましい、という論調で話が進む。でも、会社に勤めていると感じるけれども、個々人の能力がバラバラの中で、大勢の人間で一斉に動こうとするとトップダウンはどうしても必要になる。そして現実問題、能力の高い人ばかりを集めるのは無理だ。
確かに、トップダウンでやっていると、その組織の長が(風邪や事故等で)倒れたときに一気に崩れるかもしれない。あるいは、その長が間違った方向に進んだときに、組織も道連れにされるかもしれない。でもその一方で、能力のない人を自由にやらせても結局どうにもならないわけで、トップダウンは必要悪だと思う。
多分、トップダウンの組織がやるべきことは、トップダウンの中にもボトムアップの構造を組み込んでいくこと、組織を可能な限り分割することだと思う。イメージ的には稲盛さんのアメーバ。
あるいは、そもそも能力がバラバラの人間を集めて一緒に働く(=会社)という考え方が間違っているのかもしれない。

オプションの獲得コスト・維持コスト・心理的コスト
『反脆弱性』では、取り敢えずオプションは沢山持っておけ、と主張されている。しかし現実問題、なかなか完全無料のオプションというものは存在しなくて、どうしても獲得コストや維持コストがかかる。そうでなくとも、心理的コストがかかることが多い。
株を買えば儲かるかもしれない。どの株を買えばいいだろうか。多ければ多いほうが良いから全部の銘柄を買おう、とはなかなかならない。獲得コストが高すぎる。仮に買えたとしても、買った株が下がり続けていたらどうすれば良いのか。維持コストも馬鹿にならない。
また、著者はパーティーに行ってこいという。なぜなら、パーティーにはいろいろな人がいて貴重な経験を積めるかもしれない一方で、参加費は限られている(か無料だ)からだ。だけれども、僕のようなインドア派の人間には、パーティーに行って見知らぬ人と話す心理的コストを看過できない。
オプションを取得する領域を選ぶ際の基準は、もう少し深掘りされるべきだ。

正に非対称(かつ非線形的)なオプションの見付け方
『反脆弱性』は、①正に非対称かつ、②非線形的なペイオフを探せと述べている。①正に非対称とは、損をする可能性は限定的だけれども得をする可能性は無限にあるもの。そして②非線形的とはその得をしたときの大きさが無限(かとても大きい)状態を指す。
要するに、ローリスク・ハイリターンを見付けろと言っている。タレブさん、そんな簡単にローリスク・ハイリターンが見つかるなら、誰も苦労しません。
ちなみに、負に非対称なものは沢山ある。例えば、飛行機は早く目的地に到着したとしても10分がいいところ。その一方で、2~3時間遅れることは普通にある。他にも、例えば社内の誰かに仕事を依頼したとして、予想よりも早く結果が出てくることはないけれども、依頼したことを忘れられることはままある。
著者は脆いものの反対に賭ければ反脆いものに賭けたことと同じと言っているけれど、飛行機の遅れることの反対に賭けるとは、どういうことだろう。

稀少なことはいつ起こる?
『反脆弱性』は、確率ではなくペイオフに目を向けろと言っている。けれどもこれは、夢想家になる一歩手前の発想のように思われる。例えば911テロの発生以前に、「ハイジャックされた飛行機がビルに突っ込むかもしれないから、空港の警備をもっと厳しくするべきだ!」と叫んでもバカだと思われて終わりだっただろう。脆い事象がいつかは崩壊するのはいいとして、その事象が自分の生きている内に起きてくれないと、おいしくない。

ペイオフは予測できる?
著者は、「確率は予測できないが、ペイオフは予想できる」と言う。本当だろうか。

行き過ぎた自然崇拝
著者は「飲み物についていえば、少なくとも1000年前から存在し、その適切性が実証 されているもの以外は口にしないというのが私のルールだ。なので、私はワイン、水、コーヒーしか飲まない。ソフト・ドリンクは禁止」らしい。やり過ぎだと思う。

予測は無用?
著者は予測を立てるのではなく、オプションを沢山持っておくことが大事だと言っている。しかし個人的な感覚だと、予測を立てるのは大事で、その後に予測を変える柔軟性がないのが問題のように思われる。

おしまい。

2017年12月12日火曜日

ナシーム・ニコラス・タレブ『反脆弱性』まとめのまとめ/図解

『反脆弱性』の主張を図を使ってまとめると、下記のようになる。



まず、確率を考える。横軸にある出来事(例えば株で連続で勝った/負けた回数)、縦軸に確率を取る。世間一般の認識では、少し勝ったり少し負けたりすることが一番多くて、極端に勝ったり負けたりはしないことになっている。だけれども、現実世界では下側のグラフにある通り、極端に珍しいことでも起こりうる。

なぜ? 上側のグラフは正規分布に基づいて、平均と分散をパラメータとして渡してあげないといけないのだけれど、このパラメータ推定がとても難しいから。例えば株価の分布を調べようとして、パラメータ推定のために過去50年のデータを使ったとする。でももしそこで、過去100年で最大の暴落が起きたら? 要するに、確率の推定には常にオーバーフィッテングの問題が付きまとう。深くは触れないけれど、推定にはかなりの精度も必要になる(特に分散)。世界を確率で正しく捉えようとするのは難しい。



次に、見返り(ペイオフ)。横軸にはやはり出来事を、縦軸にその見返りを取る。例えば株で勝ったときの勝ち幅が毎回一定ならば、勝ち幅の合計は、当然勝った回数に比例する(上側のグラフのように線形になる)。しかし現実は下側のグラフのように歪んでいて、勝者総取りの体をなしていることが多い。

なぜ? 線形の見返りというのが、とても原始的なものだから。例えば、2頭のライオンがいて、一方が他方より2倍優秀だとしても、だからといって2倍以上の獲物にありつくのはなかなか難しい。でも、ライバルよりも2倍面白い本を書ける小説家の儲けは、そのライバルの4倍以上になる(みんな、面白い方の小説家の本だけを買う)。10倍面白い本を書けるのであれば、その差は100倍以上になるかもしれない。こうして見返りは、出来事に対して不自然に大きくなっていく。



最後に、期待値。横軸に出来事、縦軸に期待値(確率×見返りの値)が取られている。世間一般では、平均的なよくある出来事からそこそこの得・損をするのが普通だと考えられている。しかし現実のところ、よくある出来事がもたらす影響は微々たるもので、稀に起きる出来事こそが大きな影響力を持っている。

なぜ? 勝者総取りの世界では、普通でいること(平均的でいること)に意味がないから。普通にいたとしても、取るものは全て勝者に取られているから、成果が期待できない。


で、どうすればいいの? 期待値のグラフ(現実世界)から導かれる方針は3つ。①左端の大きな損を全力で避けつつ、②真ん中の平凡な事象は相手にせず、③右端の大きな得を狙いにいく。

どういうこと? 言い換えると、①いかにあり得なさそうなことでも、もしそれが起きるとマズイのであれば、全力で保険をかけておく。②いかに頻繁にあることでも、その影響が限定的なのであれば、相手にしない。③稀な出来事でも、もしそれが起こるととても嬉しいのであれば、全力で相場を張っておく。総じて、物事の確率ではなく、その影響(見返り、ペイオフ)に着目する。



おしまい

2017年12月11日月曜日

ナシーム・ニコラス・タレブ『反脆弱性』まとめ その3

最後に、倫理について。

著者は「詐欺を見て詐欺と言わないなら、その人自身が詐欺師である」という黄金律を掲げている。

反脆弱性という考え方を土台にして世界を見ると、明らかに不合理なのに世間では普通に受け入れられていることがいくつもある。それらを指して著者は詐欺だと言い、それらを告発している。

告発されている事柄は下記の通り。

  • 確率・統計
    • 被告人:統計的手法を証拠として使う学者
    • 要点:確率や統計は現実世界を正しく捉えられていないのに、被告人は確率や統計を用いて金融や政策に口を出している。
    • 例示1:確率1%の事象は、めったに起きないが故に正しく確率を推定できない。例えば、過去最悪の津波よりも最悪の津波がいつ来るかは、過去データがないゆえに予測ができない。
    • 例示2:指数関数的な影響をもたらす事象では、2倍のズレが4倍の影響を引き起こし、3倍のズレが9倍の影響を引き起こす。よって最初のパラメータがズレていると議論が台無しになる上に、最初のパラメータ推定は根拠1のせいでとても難しい。シックスシグマはとても信用できない。
    • 例示3:パラメータ推定ではシグナルとノイズの比率を考慮しなければならないのに、なされていない。
  • (人体・伝統・子供への)過度な干渉
    • 被告人:医者、製薬会社、先進国、教育ママ
    • 要点:時代の試練を乗り越えて上手く回っているもの(主に自然)に下手に手を出してはいけない(否定の道)のに、被告人は手を出したがる。
    • 例示1:過度な手術を行ったせいで、かえって死亡者が増えたことがあった(医原病/1930年台の扁桃腺摘出手術)。
    • 例示2:製薬会社は自身の売上を伸ばすため新たな病気を開発(PTSD等)し、過度に干渉(=対象者を薬漬けに)しているように思われる。
    • 例示3:教育ママが子供から失敗の機会を奪い、子供の脆さを助長している。
  • 頭でっかち、口だけ、行動に移さない、身銭を切らない人間
    • 被告人:ジャーナリスト、銀行家
    • 要点:理論を世間に発信して利益を得ているのに、自分ではそれを実行していない人は脆さを人に押し付けている。
    • 例示1:例えば金融ジャーナリストは好きなだけアイデアを言える。そしてそれがあっていても間違っていても、ジャーナリストに被害はない。給料はもらえる。それなのに、それを信じた一般の人々は損をしていることが多々ある。
    • 例示2:金融危機が起きて銀行が公的資金で救済されても、銀行の人間は過去の給料もボーナスも返す必要がない。銀行の人間にはダウンサイドが殆どない。
  • 相反する結果のいいとこ取り
    • 被告人:ジャーナリスト、学者
    • 要点:被告人はあれもこれももっともらしいことを言っておいて、何か事象が起きてから「ほら昔に私はそれを予測していたじゃないか」と言える。実際はその反対のことも言っていたのに、そのことは闇に葬られる。
    • 例示1:学者はいくつかの実験を行い、自分にとって都合のいい結果が出た実験だけを取り上げて世間に発表することができる。
  • 個人の利益と公共の利益のすり替え
    • 被告人:銃のロビイスト
    • 要点:被告人は、本当は自分の利益につながることなのに、さも公共の利益につながるように欺いている。
    • 例示1:銃のロビイストは、銃の所有がアメリカにとって良いことだ、と主張したりする。でもそれは、本当だろうか。
  • 「証拠がないこと」と「ないことの証拠」の取り違え
    • 被告人:喫煙者
    • 要点:被告人は「証拠がない」ことと「ないことの証拠」を取り違えて主張している。(特に自然への)干渉者は、自分の方が証拠を示さなければならない。
    • 例示1:その昔、喫煙者は害があるという「証拠はない」という理屈を元に大きな顔をしていた。もちろんこれは、害が「ないことの証拠」があることとは違い、結局タバコの有害性は一般に知られることになった。

これらは『反脆弱性』の本筋からは外れているように見えるのだけれども、同時に著者が力を入れている部分のようにも思える。このトピックに興味のある方は、ぜひご自身で『反脆弱性』を開いていただければと思う。

この記事は、あくまで参考として。次の記事で、図解として『反脆弱性』をまとめてみようと考えています。


2017年12月10日日曜日

ナシーム・ニコラス・タレブ『反脆弱性』まとめ その2

「反脆くなる」方法とはどのようなものか。著者の提案は、「確率・統計を信用せず、見返りに注目せよ」というものである。

『反脆弱性』では(確率的・統計的に)正しい選択肢(起こりやすい選択肢)ばかりに気を取られるのは良くないと述べられている。なぜなら、①確率・統計は見返りを考慮していない(確率ばかりで、期待値に目が行っていない)し、②そもそも確率・統計は現実世界を正しく予測できない(確率1%を見落とす)からだ。毎回(確率的・統計的に)正しい選択を行えたとしても、確率1%で吹っ飛ぶようではいけない。

そこで、確率・統計ではなく、むしろ見返りだけに注目しようというわけである。

どんなにありえないと思える事象だとしても、①確率で制御されておらず(カジノやテレビゲームはダメ)、②論理上ありうるもので、③大きな見返り(できれば無限大)が予測されるような事象でがあれば、それに突っ込めと『反脆弱性』は言っているのだ。確率は予測できなくても、見返りの大きさは予測できる。

例えば、ベンチャー企業は(将来のいつかは分からないけれども)時価総額が10倍にも100倍にもなる可能性がある。オプション取引も、上手く当てれば100倍になる可能性がある。そして、これらは上記の①~③の条件を満たす。

さらに、「正の見返りが指数関数的に大きくなるものを見付けよ」と著者は述べている。例えば仕事で上司に仕事を頼まれて、頑張って1時間で終わらせた場合と、のんびり3時間かけた場合を考える。頑張って仕事を3倍早く終わらせたとき、上司からの評価ものんびりしたときの3倍になるだろうか、それとも3倍以上になるだろうか。もし上司が時間を大切にする人間で、3倍以上の評価をくれるのであれば、それは「正の見返りが指数関数的に大きくなる」と言える。

2倍頑張って4倍(2の2乗)の見返りが得られ、3倍頑張れば8倍(2の3乗)の見返りを期待できるものを見付けることが大事なのだ。どうやって? 2つ方法がある。1つ目は、やはり(無料の)オプションをかき集めること。そしてもう1つが「脆い」ものを見付けて、その逆側に賭けることだ。

1つ目:(無料の)オプション=対抗策を沢山持っておくというのは、冗長化につながり、「脆くない」状態をもたらすのだった。そしてそれと同時に、これは大きな見返りを見付ける役にも立つ。というのは、たとえ何が大きな見返りをもたらすものか分かっていなくても、取り敢えず全体を選択肢として確保しておけば、その内の何かは当たるからだ。そして当たれば見返りは莫大だから、それは全体をキープしておいたコストを優に上回る。

一般に、オプションを沢山持っておけば、物事を深く考える必要はなくなる。単に、大きな見返り(あるいはトラブル)が目の前に現れたときに、そのオプションを使うのを忘れないようにしておけば良い。オプションを沢山持っておくというのは、攻守共に優れた戦略なのだ。

2つ目:①脆くてかつ②みんなが脆いと思っていないものを見付けて、その逆に賭ける。後付けなので説得力には少し欠けるけれども、例えばLTCMが脆い(=確率1%が起こると吹っ飛ぶ)と分かっていたのであれば、LTCMを空売りしておけば儲けることができたでしょう、というお話である。

反脆いものに比べて脆いものの方が見付けやすい。なぜなら、現代社会が全体として
  • 過剰な冗長化を嫌う(最適化・最低コストを愛する)
  • 1つのストーリー・戦略にこだわる(ピボットをかけない)
  • 一極集中・トップダウンに流れる(全体最適化のためにはこれらが必要なため)
  • 変動性を嫌う(1つのストーリーにこだわる以上、ブレられては困る)
という傾向があるため。これらは、先述の脆くない状態を作る方法の反対であって、結果、現代社会はどんどん脆くなっている。

また、少し脱線するが、脆いものの中でも「負の見返りが指数関数的に大きくなるもの」はひときわ脆い。例えば、渋滞を考える。道路上の車が2倍になれば、移動にかかる時間は4倍(2の2乗)程度になると考えられる。3倍になれば、かかかる時間は8倍(2の3乗)だ。被害は一瞬で甚大になる。この手の脆さはオプションをいくら持っていてもカバーしきれない可能性がある。だから、何としても避けなくてはならない。

一度まとめる。「オプションを沢山持っておく」というのが、攻守に渡っての基本戦略である。確率を信じられないのであれば、どんな状況に対しても準備をしておくことだけが大事になる。そして、運良く反脆いものを見付けられたのであれば、それに賭けておけば良い。見付けられなかったとしても、脆いものを見付けて、その反対側に賭けておけば良い。遅かれ早かれ、反脆いものも脆いものも確率1%を食らって、何かしらの利益をもたらしてくれる。

ナシーム・ニコラス・タレブ『反脆弱性』まとめ その1

難しそうに見える主張でも、結論だけを見てみると至って常識的なことを言っている、ということは良くある。

例えば、ウィトゲンシュタインは「論理的に考えるのは超大事だけど、論理だけじゃダメ。その土台としての感性も大事だよね」だし、ソロスは「先読みをすると、先読みの先読みをされる。結果、先読み合戦が始まるから、本質的に市場は予測できないよね」と言っているだけ。もう1つ思いつくところを挙げれば、効率的市場仮説は「市場は頭が良い人だけの集まりになってしまっていて、付け入る隙がない。もう何をやってもムダ」となる。

『反脆弱性』も上下巻の長い本だけれども、結論だけであれば、簡単にまとめられる。

著者自身は最後の章で、「すべてのものは変動性によって得または損をする。脆さとは、変動性や不確実性によって損をするものである」とまとめている。これを僕の言葉で言い換えると、「長い目で見ると予測できないことも、案外起こる。この予測できないことで吹っ飛ぶようじゃいけない」となる。

「予測できない」というのは、本当だろうか。カジノでの確率の計算は大事だし、天気予報はそこそこ当たるし、飛行機は時間通りに飛んでいて旅行の計画だって立てられる。『反脆弱性』は何が「予測できない」と言っているのだろうか。

著者からすると、「成り立ちからして、確率で制御されているもの(カジノ、テレビゲーム等)」以外の、全てが「予測できない」ものである。だから、現実世界のほとんどが「予測できない」ものとして扱われている。この領域では、確率1%(かそれ以下の稀な出来事)も平気で起こると言っているのだ。

だから(カジノやテレビゲームは例外として)、天気予報では晴れの予報でも雨が降ることもあるし、トランジットで絶対に遅れてはいけない飛行機が遅れることもあるし、完璧な旅行の計画が崩れることだってある。この確率1%でも起こりうる、ということを指して著者は「予測できない」と言っているのだ。

次に「吹っ飛ぶ」とはどういうことだろうか。例えば、晴れという天気予報を信じて傘を持たずに外に出て、そのあと雨に振られると困る。でも、「吹っ飛ぶ」と呼べるほどではない。一方ここで、雨なんかではなく、とんでもない大きな台風が来ていたなら、それは「吹っ飛ぶ」可能性があると言える。雷に打たれでもしたら、間違いなく再起不能で「吹っ飛ぶ」。

自分の勤めている会社が潰れる可能性はないと、(きっと)多くの人が考えている。でも先述の通り、確率1%のことも起こりうる。そしてそれが起こると食い扶持がなくなって、吹っ飛ぶ。調べたわけではないけれど、日本の原発は日本のトップクラスに頭の良い人達が作っていて、自分が生きている間はトラブルが起きるなんて想像すらしていなかった。でも、確率1%以下のことが起きて、いろいろと吹っ飛んだ。

この「確率的に大丈夫だろう」とか「そんなこと起こらないだろう」といった予測の上に胡座をかいて、いざ確率1%のことが起こると再帰不能になるモノ・システム・考え方を、著者は「脆い」と言っている。
#他にも挙げると、例えば陶器のコップも「脆い」。まさか床に落とされることはないだろうとタカをくくって、いざ床に落とされると、そのコップは吹っ飛ぶ。

1つだけ補足。予測できない出来事は、その定義からして予測できないものである。例えば、防波堤を建設するときに、過去最悪の津波の高さを元にして設計をしたとする。ここで見落とされているのは、昔その過去最悪の津波が来たとき、その津波はそれ以前の最悪の津波よりもさらに最悪な津波だったということである。過去最悪は随時、塗り替えられる。だから、過去最悪を元に未来を予測したとしても、その過去最悪を超す最悪が来る可能性はいくらでもある。よって、過去から未来は「予測できない」(特に確率1%について)。

現実世界が予測できないものだとして、脆くならないためには、どうすれば良いのか。単純である。確率1%が起こるかどうかに関わらず、確率1%に備えておけば良い。著者はこの備えを指して、(無料の)オプションをかき集める、と表現している。ここで、オプションとは「対抗策」くらいの意味合いだと思っておけば良い。何が起きても大丈夫なように備えておく、冗長化を施しておく、という言い方でも良いかもしれない。

人間には目が2つ、耳が2つ、腕が2つ、足が2つ、肺が2つ、腎臓が2つ、ついでに睾丸も2つある(男のみ)。別に1つくらいなくても良さそうなものだが、見事にいずれの器官も冗長化されている。この確率1%が起こりうる現実世界で1億年生き残ってきた人間というシステム(つまり、脆くないシステム)は、冗長化をとても大切にしている。

別の視点で、個人は100年もすれば死んでしまうが、人間という種自体は、数千年は生き延びている(つまり、脆くない)。これは「人間という種」が60億もの(個々人からなる)冗長化を行っているからである。

この冗長化という言葉はいろいろと言い換えることができて、
  • オプション(対抗策)をかき集める
  • 構成単位を分割する(人間という種のように。一極集中は冗長化の正反対)
  • ある程度の変動を維持する※
というのは、ほとんど同じことを指している。

※効率化が突き詰められた全くブレ(=変動)のないシステムでは、冗長部分が全くないために確率1%が起こると一気に崩壊する。逆に言うと、普段からある程度の変動があるようにシステムを設計した方が、それが非常時に冗長として機能するので、望ましい。例えば、国家が経済の周期性(≒変動性)を無理に抑えようとするのは危ないことで、その歪みが必ずどこかで溜まって、一気に崩壊する。一般に、適度なストレスに晒されるようにしておかないと、(人間にしろシステムにしろ)脆くなる。

ここまでで述べてきた「脆くならない」方法は、『反脆弱性』の中では「頑健になる」方法という言葉で表現されている。実はこの先にもう1ステップ、「反脆くなる」方法というものもある。

「頑健になる」方法では、確率1%でいかに吹っ飛ばないようにするか、に主眼が置かれていた。「反脆くなる」方法では、確率1%でいかに得をするか(いかに反対側に吹っ飛ぶか)に主眼が置かれる。

しかし、だいぶ文章が長くなってしまったので、続きはまた次回の記事に。

python-binanceを使ってみているのだけれど、かゆいところに手が届かない。 少し関数を作ってみたので共有まで。 # 自分の持っているコイン一覧(BTC除く)をリストで返す関数(遅い) # >>> get_my_coin_list() # &...