最近Xで面白い記事を見かけました。
著者は、長年どのように「フライホイール」システムをゆっくりと回してきたかを語っています。三つの車輪——キャッシュフロー、コア資産、アルファ——が互いにフィードバックし合っています。最も奥を剥がすと、結局一言に尽きます:まず生き残る方法を考え、十分に長く生き残ってから、複利について語ろう。
このシステムは著者が手動で実践してきたもので、個人の経験と相場感覚に依存しています。しかし、読んでいて一つの考えが浮かびました:それは結局のところ規律の体系であり、規律こそ人間が最も守れず、プログラムが最も守りやすいものなのです。量的な観点から、これを再現できるでしょうか?
再現の考え方は、ゼロから新しい戦略を発明することではなく、引き出しを探ることです:私たちが以前に作成し、実行した既存のいくつかのもの——DCAドルコスト平均法戦略、ロールオーバー戦略、コイン選別エンジン(ハーネス)——のうち、どれの自然な振る舞いが、ちょうどある車輪が要求する振る舞いと一致するでしょうか?一致するものがあれば、それを埋め込み、資金の流れでそれらを閉ループに結びつけます。
この記事の焦点は、「なぜこの三つを選んだのか、それぞれの論理は何か、どのように車輪に適合したのか」を明確に説明することです。
| 原文の理念 | 要求される行動 | 対応する戦略 |
|---|---|---|
| キャッシュフロー | 極端な相場でも強制売却されない | リザーブライン(準備金ライン)メカニズム |
| コア資産 | 買いのみ、売らずに時間の味方になる | DCAドルコスト平均法戦略 |
| アルファ | 最小限のコストで最大の利益を狙い、利益をコアに送る | コイン選別エンジンで対象を見つける + ロールオーバー戦略で取引 |
車輪二:コア資産 ← DCAドルコスト平均法戦略
理念が要求するもの
原文のコア資産の位置付けは、複利を実現し、時間の味方となり、極端な相場でも強制売却されないことです。これは「取引」するためのものではなく、「保有して待つ」ためのものです。含まれるアクションはただ一つ——継続的に買い、自主的に売らないことです。
DCAとは何か
DCAはDollar Cost Averagingの略で、日本語では「ドルコスト平均法」、いわゆる「定期定額投資」のことです。ロジックは極めてシンプル:一定の間隔(例えば7日ごと)で、その時の価格の高低に関わらず、一定金額の資産を買い続けます。
本当の威力は市場下落時に発揮されます:同じ200ドルでも、価格が低い時にはより多くのユニットを購入でき、価格が高い時には少なく購入するため、長期的に実行することで平均取得コストが自然と適正な水準に平準化されます。高値・安値の判断もタイミング選択も不要で、継続的に実行するだけで良いのです。
さらに重要なのは、DCAは設計上、自主的に売却するアクションがないことです——本質的に買うだけで、買ったらそのまま持ち続けます。これにより、本質的には「入ってくるだけで出て行かず、ゆっくり蓄積する」マシンとなります。
なぜこれなのか:行動の同値性
「時間の味方になる」をマシンが実行可能な命令に翻訳すると、「決まったタイミングで買い、決して売らない」となります。これは、DCAから売却ロジックを削除した残りのすべての内容と行動的に等価です。追加の設計は一切不要で、元のDCAの利確売却機能を取り除けば、それがそのままコア資産の車輪の実装になります。
対応コード:
javascript
// N日ごとに、定額でコア資産を購入、買いのみで売らない
if (now - lastDca >= DcaIntervalDays * 86400000) {
var amount = sizeByCash(CoreSymbol, DcaAmount, CoreLeverage, price);
marketOrder(CoreSymbol, "buy", amount);
coreInvested += DcaAmount; // 累積コストを記録、対応する減算は一切発生しない
}
戦略全体の中で、コア資産を売却するロジックは一切見つかりません——これは意図的なもので、「極端な相場でも強制売却されない」に対応しています。
車輪一:キャッシュフロー ← リザーブライン(準備金ライン)メカニズム
理念が要求するもの
原文ではキャッシュフローを最優先に挙げていますが、その意味は「儲けるため」ではなく、「最も乗るべき時に無理に降りることを強いられないため」です。つまり:安定したキャッシュフローが入ってくれば、たとえ市場が暴落し、帳簿上の資産が大幅に減少しても、生活のために資産を売却する必要はなく——耐え抜き、複利が発生するのを待つことができます。
これがシステム全体が機能するための前提条件です。この保証がなければ、コア資産がどれだけ優れていても、大きな下落時に強制的に損切りせざるを得なくなれば、全てが無駄になります。
量的取引でどう等価にするか
キャッシュフローは本質的に口座の外にあるもの——給料、副業、新規公開(IPO)収入などです。コードは収入を虚構で作り出すことはできません。
しかし、コードはその中核的な効果を再現できます:コア資産を決して強制売却しないことです。その方法は、口座内にリザーブラインを設定すること——口座内に常に一定割合のバッファ資金を確保し、どの注文操作もそれに触れてはならないとします。定期定額のリズム自体にこのラインを加えることで、「キャッシュフローが絶え間なく供給され、途切れない」状態をシミュレートします。
実際の取引では、このラインの余裕度は実際にはあなたの外部キャッシュフローが安定しているかどうかに依存します。この部分は三つの車輪の中で最も間接的に再現されるものです——再現するのはその効果であり、そのものではありません。
javascript
// 注文ごとに事前チェック:残高から今回の金額を差し引いた後、リザーブラインを下回らないこと
var reserve = equity * ReserveFloorRatio; // 例:エクイティの10%を確保
if (balance - DcaAmount < reserve) return; // ラインに触れたらスキップ、最後のバッファを守る
車輪三:アルファ ← コイン選別エンジン + ロールオーバー戦略
アルファの車輪は最も複雑で、二つに分けて考える必要があります:対象はどこから来るのか、対象を手に入れた後にどう取引するのか。この二つのことはそれぞれ別の戦略に対応します。
理念が要求するもの
原文では、アルファの意義は「最小限のコストで最大の利益を狙う」ことであり、さらに強調されています:稼いだお金を使い潰してはならず、全てをコア資産に送り込み、元本を拡大するために使うことです。
二つのキーワード:「最小限のコスト」——つまり、一回あたりの損失上限は必ず封じられ、一度のミスで致命的なダメージがあってはいけません。「最大の利益」——つまり、一度成功すれば、その利益をできるだけ伸ばし、小さな利益で逃げてはいけません。これは本質的に非対称な構造です:悪い場合の損失は小さく、良い場合の利益は大きい。
前半:コイン選別エンジン(ハーネス)——適切な対象を見つける
暗号資産市場には何百、何千もの永久契約銘柄があります。ランダムに一つ選んで戦略を適用しても、結果は時間の無駄か、資金を失う可能性が高いです。コイン選別エンジンは「どの通貨で取引すべきか」という問題を解決します。
第一層——出来高フィルター
すべてのUSDT永久契約を、米ドル建て出来高(価格×出来高)の降順で並べ、上位120銘柄を残します。
なぜ出来高を第一フィルターにするのか?出来高の大きい通貨には二つの利点があります:一つは流動性が十分で、注文時に売買スプレッドによるコストが大きくならないこと。もう一つは十分な数の参加者が存在し、捉えやすいトレンドが形成されやすいことです。出来高の小さいアルトコインは価格操作されやすく、優れた戦略でも適用すれば無効になります。
第二層——移動平均線バックテストスコア
各候補通貨について、複数の移動平均線パラメータの組み合わせ(例:MA5/20、MA10/30、MA20/60)で過去のバックテストを実行し、各組み合わせの主要指標:勝率(利益を得た取引の割合)、リスクリワード比(平均利益額/平均損失額)、最大ドローダウン、シグナル回数を計算します。これらの結果を加重して総合スコアにします。
このステップの目的は、「この通貨において移動平均線戦略が過去に本当に有効だったか」を確認することです。すべての通貨が明確なトレンドを持つわけではなく、長期レンジ相場の通貨では移動平均線のシグナルはすべて偽ブレイクアウトになります——そのような通貨は事前に除外し、弾薬を無駄にしません。
第三層——爆発力加点
スコアにさらに二つの動的因子を追加します:
- ボラティリティ分位:現在のATR(平均トゥルーレンジ、価格変動の指標)が過去データのどのパーセンタイルに位置するか。高い位置にあるほど、現在の変動が過去と比較して大きいことを示し、大相場が出やすくなります。
- 出来高爆発係数:直近5本のローソク足の平均出来高 ÷ 直近50本の平均出来高。この値が明らかに1より大きい場合は、直近の出来高が過去と比較して異常に増加しており、資金が流入している可能性が高く、「爆発の初期段階」を示します。
この二つの因子を加えることで、静的な過去のパフォーマンスに加えて、「現在異常な動きを見せている」対象を優先するようにします。
最終的にホワイトリストが出力されます。通常は現在の段階で総合スコアが最も高い3~5通貨です。
javascript
// コイン選別エンジン:出来高フィルター → バックテストスコア → 爆発因子 → ホワイトリスト
var pool = tickers
.filter(t => t.Symbol.endsWith("USDT.swap"))
.sort(byQuoteVolumeDesc)
.slice(0, TopVolumeN);
for (var coin of pool) {
var volPct = calcVolPct(records); // ボラティリティ過去分位
var surge = calcVolumeSurge(records); // 直近出来高爆発係数
var bt = bestBacktestScore(records, maParamsList); // 移動平均線バックテスト総合スコア
var score = bt * 0.56 + volPct * VolSurgeBonus + surge * VolSurgeBonus;
if (score >= threshold) whitelist.push(coin);
}
後半:ロールオーバー戦略——少額で大きな利益を狙う
ホワイトリストを得たら、取引手法が必要です。ここでは以前書いたロールオーバー戦略を使用します。そのメカニズムはアルファの非対称性の要求と高度に一致します。
ロールオーバー戦略とは
これは移動平均線クロスシグナルに基づいた先物トレンドフォロー戦略です。
まず移動平均線を理解します:過去N本のローソク足の終値を加重平均したものがEMA(指数平滑移動平均線)です。EMAは最近の価格により高い重みを与え、通常の移動平均線よりも反応が速くなります。クロスシグナルは次の通りです:短期EMA(例:EMA5)が長期EMA(例:EMA10)を下から上に抜けることを「ゴールデンクロス」と呼び、短期的な上昇トレンドが長期より強いことを意味し、買いシグナルです。逆は「デッドクロス」で、売りシグナルです。
「ロールオーバー」とは:毎回利確した後、移動平均線の方向がまだ維持されていれば(つまりトレンドが続いている場合)、すぐに再度ポジションを取り、トレンドに乗り続けることを指します。強いトレンドの中では、この方法で利益を何度もロールオーバーして複利効果を得ることができ、一回の波で終わりではありません。
すべての取引にはハードストップが設定されている:価格が逆方向に一定の幅(例えば-8%)を超えて動いた場合、強制的にポジションをクローズする。このストップにより、1回の取引における最大損失に上限が設けられる——どんなに相場が悪くても、単一取引の損失はこの数字を超えない。これが「極小コスト」のメカニズムの源泉である。
なぜそれが重要なのか:非対称構造のマッチング
アルファには「コストが極小かつ上限付き + 利益はできるだけ大きい」という非対称なリターン構造が求められる。ロールオーバー戦略は本質的にこの構造を備えている:
- ハードストップ = 各ベットの「チケット代」。負けても最大この金額だけ、それ以上は発生しない
- 移動利食い + ロール継続 = 当たった場合、利益をトレンドに乗せて走らせることができ、理論上は上限がない
両者は構造的に同じことの異なる表現である。具体的なコード:
javascript
// コスト上限:ハードストップに達したら即座に離脱——これが各ベットのチケット代上限
if (pnlPct <= -AlphaStopPct) close("ハードストップ");
// 利益を走らせる:ピークが高いほど、許容されるリトレース幅が大きくなり、大きな勝ちに十分な呼吸スペースを与える
var giveback = Math.max(15, maxPnl * 0.3);
if (maxPnl - pnlPct >= giveback) close("移動利食い");
// 利食い後にトレンドが継続している場合、ロールでポジションを維持——利益を複利で運用
if (shouldRoll(records, direction)) openAlpha(direction, price);
有機的統合:アルファの利益をコアに還流させる
銘柄選定エンジンが対象を選び、ロールオーバー戦略がリターンを生むが、それだけでは不十分——元の記事に戻れば、アルファの真の価値は「コア資産に元本を供給すること」である。そのため、資金ラインが必須となる:アルファで得た利益は一方向にコア資産を買い戻すために使い、損失が出た場合、絶対にコアの元本に手を出さない。
javascript
// アルファの実現利益が一定額に達したら、コア資産を買い戻す
if (alphaPnlBank >= AlphaSweepMin) {
var amt = sizeByCash(CoreSymbol, alphaPnlBank, 1, price);
marketOrder(CoreSymbol, "buy", amt); // 利益はコアへ流れ、元本ベースを拡大
coreInvested += alphaPnlBank;
alphaPnlBank = 0;
}
このラインこそが、それぞれ独立していた3つの古い戦略を、「単に別々に動かしている」状態から「互いにフィードバックし合う一つの輪」へと変えたのである:積立は継続的にコアを供給し、銘柄選定エンジンが候補を選び、ロールオーバーで小さな資金で大きな利益を狙い、その利益を再びコアに還流させる。コアが大きくなるにつれ、後で必要となる倍率は小さくなっていく。
ここで定量化が実際に果たしたこと
一言でまとめると:再現の価値は「より賢くなること」ではなく、「より規律を守ること」にある。
元の記事の手法が難しいのは、ロジックが理解しづらいからではなく、人間がそれを実行するのが極めて難しいからである:暴落時に売りたくなる、大きな利益にFOMOで追い入れる、少し負けると止めたくなる、急な資金需要で本来持つべきコア資産を手放してしまう。これらのミスは道理が分からないからではなく、感情が原因である。
コードは強制的に売られることはない(備蓄ラインがバッファになる)、FOMOしない(ホワイトリストとシグナルだけに従う)、止まらない(アルファの小さなコストを失ったら次のエントリーを待ち、コアには決して触れない)。我々はこの理論をより強力にしたわけではない。ただ、その中で最も人間の感情に反する部分を、感情を持たない実行者に委ねただけである。
これはあくまで浅い試みである
はっきり言っておくが、これで終わりではない。そして、一つの部分が明らかに異なる道筋での実装である。
元の記事における真のアルファ——新規上場、プレセール、初期の構造的機会——は、情報とリソースに依存して少額で大きな利益を狙うものである。一方で、ロールオーバー+移動平均線による銘柄選定は、少額で大きな利益を狙う別の実現形態であり、トレンド相場に依存して収益を得る。両者の道筋は異なるが、コアロジックは完全に共通している。レンジ相場では、このトレンド戦略は必然的に小さなストップ損失を繰り返す消耗に直面する。それは本来の機会と相互補完関係にあり、共にアルファの収益源を構成する。真の希少な機会は依然として人間の判断に依存しており、それを獲得した後は手動で同じラインに沿ってコアに還流させる必要がある。
また、バックテストが良好でも、実運用で儲かるとは限らない。手数料、資金調達コスト、スリッページはバックテストでは軽視されがちだが、実運用では少しずつ利益を削る。コードは規律を守るが、保守すべき時に本能的にブレーキを踏むわけではない。
したがって、次にすべきことは、大資金を急いで投入することではなく、まずシミュレーション口座と少額ポジションで長期にわたって運用することである:あのいくつかの輪が互いにフィードバックし合っているか、アルファ部分が実際に利益を生んでいるのか、それとも無駄な努力に終わっているのか。そして、実際のデータを取得し、繰り返し修正を加えていく。
元の記事の言葉は、このシステムの磨き上げにも同様に当てはまる——ゆっくりでも構わない、しかし止まってはいけない。
(以上は一つの考えの記録であり、投資アドバイスを構成するものではありません。)
原文リンク:私がゼロから千万に至ったフライホイール・システム:キャッシュフロー・コア資産・アルファ
戦略ソースコード:フライホイール定量化システム
- 1



