Ecoer Logo

@zaccharles

25

Programming Addict

steemit.com/@zaccharles
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.138USD
STEEM
0.000STEEM
SBD
0.205SBD
Effective Power
5.001SP
├── Own SP
0.679SP
└── Incoming Deleg
+4.322SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.679SP
Delegated Out
0.000SP
Delegation In
4.322SP
Effective Power
5.001SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
0.205SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1106.316406 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7037.343400 VESTS",
  "sbd_balance": "0.205 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

namezaccharles
id561688
rank624,449
reputation854354600
created2018-01-04T18:04:03
recovery_accountsteem
proxyNone
post_count2
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-01-06T22:01:27
last_root_post2018-01-06T22:01:27
last_vote_time2018-01-06T22:01:27
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.205 SBD
savings_sbd_balance0.000 SBD
vesting_shares1106.316406 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7037.343400 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-01-04T21:38:27
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 561688,
  "name": "zaccharles",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7sU7WRu3yQ8kUs2mYbSD2SySuaXi95NMYLUM4WUTTuHQV5FLcT",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM71Cx8yd7Saesa9zPKEmqmfAwQjaNz6nqWLEg4vmgd9B1V98FgB",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7cWGWNy1vd2HpqYcoNmrXEtGfdJqpz2FjeMVJvfXmFEgdtEjVD",
        1
      ]
    ]
  },
  "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac Charles\",\"cover_image\":\"https://i.imgur.com/I0v4MDy.jpg\",\"about\":\"Programming Addict\",\"location\":\"London, UK\"}}",
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac Charles\",\"cover_image\":\"https://i.imgur.com/I0v4MDy.jpg\",\"about\":\"Programming Addict\",\"location\":\"London, UK\"}}",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2018-01-04T21:38:27",
  "created": "2018-01-04T18:04:03",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 2,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779093264
  },
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779093264
  },
  "voting_power": 0,
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "0.205 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2018-01-18T11:32:03",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "vesting_shares": "1106.316406 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7037.343400 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 0,
  "posting_rewards": 79,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2018-01-06T22:01:27",
  "last_root_post": "2018-01-06T22:01:27",
  "last_vote_time": "2018-01-06T22:01:27",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": 854354600,
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 624449
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.322 SP to @zaccharles
2026/05/18 08:34:24
delegatorsteem
delegateezaccharles
vesting shares7037.343400 VESTS
Transaction InfoBlock #106153392/Trx 0f80831aca198ba36eb15cf6007e044735a88ffc
View Raw JSON Data
{
  "trx_id": "0f80831aca198ba36eb15cf6007e044735a88ffc",
  "block": 106153392,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-18T08:34:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "7037.343400 VESTS"
    }
  ]
}
steemdelegated 2.656 SP to @zaccharles
2026/05/13 14:37:45
delegatorsteem
delegateezaccharles
vesting shares4324.410030 VESTS
Transaction InfoBlock #106017365/Trx b3498b3abd86d50a240b21b98d261243ecc0d307
View Raw JSON Data
{
  "trx_id": "b3498b3abd86d50a240b21b98d261243ecc0d307",
  "block": 106017365,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-13T14:37:45",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "4324.410030 VESTS"
    }
  ]
}
steemdelegated 4.329 SP to @zaccharles
2026/04/26 07:42:48
delegatorsteem
delegateezaccharles
vesting shares7049.859156 VESTS
Transaction InfoBlock #105520811/Trx fab8b35dfd4c0aff6faf76fe85c7789c6fd8765b
View Raw JSON Data
{
  "trx_id": "fab8b35dfd4c0aff6faf76fe85c7789c6fd8765b",
  "block": 105520811,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-26T07:42:48",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "7049.859156 VESTS"
    }
  ]
}
2026/03/08 09:42:51
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authorbiillchery
permlinktbkqzh
title
bodyBonjour à tous ! J'ai vu une publicité discrète alors que je cherchais des solutions pour mes actifs à Bordeaux. Je venais de subir des revers. Avec https://quant-aura-ai.org Quant Aura Trading j'ai pu inverser la tendance rapidement. Ma plateforme crypto m'a aidé à reprendre confiance. J'ai gagné de quoi couvrir mes dettes et même un peu plus pour moi.
json metadata{"links":["https://quant-aura-ai.org"],"app":"steemit/0.2"}
Transaction InfoBlock #104118209/Trx cc9ef3826ba6bf047d12655efc24d8a993e35768
View Raw JSON Data
{
  "trx_id": "cc9ef3826ba6bf047d12655efc24d8a993e35768",
  "block": 104118209,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-03-08T09:42:51",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "biillchery",
      "permlink": "tbkqzh",
      "title": "",
      "body": "Bonjour à tous ! J'ai vu une publicité discrète alors que je cherchais des solutions pour mes actifs à Bordeaux. Je venais de subir des revers. Avec https://quant-aura-ai.org Quant Aura Trading j'ai pu inverser la tendance rapidement. Ma plateforme crypto m'a aidé à reprendre confiance. J'ai gagné de quoi couvrir mes dettes et même un peu plus pour moi.",
      "json_metadata": "{\"links\":[\"https://quant-aura-ai.org\"],\"app\":\"steemit/0.2\"}"
    }
  ]
}
steemdelegated 2.682 SP to @zaccharles
2026/01/24 06:11:27
delegatorsteem
delegateezaccharles
vesting shares4366.679814 VESTS
Transaction InfoBlock #102878622/Trx bd6618f7abc48054e5eb2183e6fe320ca5d6c607
View Raw JSON Data
{
  "trx_id": "bd6618f7abc48054e5eb2183e6fe320ca5d6c607",
  "block": 102878622,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-01-24T06:11:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "4366.679814 VESTS"
    }
  ]
}
steemdelegated 2.782 SP to @zaccharles
2024/12/18 01:20:06
delegatorsteem
delegateezaccharles
vesting shares4530.899011 VESTS
Transaction InfoBlock #91324813/Trx 8ba9db18f7ca92ea43dd7af68e841e818bb6b60b
View Raw JSON Data
{
  "trx_id": "8ba9db18f7ca92ea43dd7af68e841e818bb6b60b",
  "block": 91324813,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2024-12-18T01:20:06",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "4530.899011 VESTS"
    }
  ]
}
steemdelegated 2.886 SP to @zaccharles
2023/11/14 16:59:30
delegatorsteem
delegateezaccharles
vesting shares4700.032543 VESTS
Transaction InfoBlock #79878915/Trx 4d8d4fb1ebdc3d32950c5c7306040a8f144e88f0
View Raw JSON Data
{
  "trx_id": "4d8d4fb1ebdc3d32950c5c7306040a8f144e88f0",
  "block": 79878915,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-14T16:59:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "4700.032543 VESTS"
    }
  ]
}
steemdelegated 4.690 SP to @zaccharles
2023/09/22 13:06:24
delegatorsteem
delegateezaccharles
vesting shares7636.941329 VESTS
Transaction InfoBlock #78366114/Trx 691d552125cdcfc94ae9cd426b47d35163f91a87
View Raw JSON Data
{
  "trx_id": "691d552125cdcfc94ae9cd426b47d35163f91a87",
  "block": 78366114,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-22T13:06:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "7636.941329 VESTS"
    }
  ]
}
steemdelegated 4.826 SP to @zaccharles
2022/11/03 20:12:39
delegatorsteem
delegateezaccharles
vesting shares7858.992767 VESTS
Transaction InfoBlock #69123424/Trx 3b09e4e1206a6e9bacb093dfe657070b121c24dd
View Raw JSON Data
{
  "trx_id": "3b09e4e1206a6e9bacb093dfe657070b121c24dd",
  "block": 69123424,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T20:12:39",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "7858.992767 VESTS"
    }
  ]
}
steemdelegated 4.961 SP to @zaccharles
2022/01/18 01:10:57
delegatorsteem
delegateezaccharles
vesting shares8079.100368 VESTS
Transaction InfoBlock #60826401/Trx 242b3ae165c0bf800e7a98e8ea91eb876444ea5c
View Raw JSON Data
{
  "trx_id": "242b3ae165c0bf800e7a98e8ea91eb876444ea5c",
  "block": 60826401,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-18T01:10:57",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8079.100368 VESTS"
    }
  ]
}
steemdelegated 5.075 SP to @zaccharles
2021/06/14 08:16:15
delegatorsteem
delegateezaccharles
vesting shares8263.294656 VESTS
Transaction InfoBlock #54616605/Trx 1082111cf241d66c9e8ef0fc3c77db3c1d96ad6d
View Raw JSON Data
{
  "trx_id": "1082111cf241d66c9e8ef0fc3c77db3c1d96ad6d",
  "block": 54616605,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-14T08:16:15",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8263.294656 VESTS"
    }
  ]
}
2021/04/13 12:44:09
votersfiga
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #52851530/Trx cb1c3042a43f1bcb3bd683a469febac6fcd9c1f9
View Raw JSON Data
{
  "trx_id": "cb1c3042a43f1bcb3bd683a469febac6fcd9c1f9",
  "block": 52851530,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-04-13T12:44:09",
  "op": [
    "vote",
    {
      "voter": "sfiga",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
steemdelegated 5.190 SP to @zaccharles
2020/12/11 18:26:12
delegatorsteem
delegateezaccharles
vesting shares8450.716630 VESTS
Transaction InfoBlock #49363794/Trx 065287b5c42144814f5745b8f40701b10b24d061
View Raw JSON Data
{
  "trx_id": "065287b5c42144814f5745b8f40701b10b24d061",
  "block": 49363794,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T18:26:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8450.716630 VESTS"
    }
  ]
}
steemdelegated 1.175 SP to @zaccharles
2020/12/06 12:01:03
delegatorsteem
delegateezaccharles
vesting shares1912.543513 VESTS
Transaction InfoBlock #49215304/Trx c1d224d2bacb3c5781230df564ef2c1f8b184ef5
View Raw JSON Data
{
  "trx_id": "c1d224d2bacb3c5781230df564ef2c1f8b184ef5",
  "block": 49215304,
  "trx_in_block": 4,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T12:01:03",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 5.200 SP to @zaccharles
2020/11/26 05:42:09
delegatorsteem
delegateezaccharles
vesting shares8467.843247 VESTS
Transaction InfoBlock #48924146/Trx d285e445cda4659724ac64ab2b643fedc12623b5
View Raw JSON Data
{
  "trx_id": "d285e445cda4659724ac64ab2b643fedc12623b5",
  "block": 48924146,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-26T05:42:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8467.843247 VESTS"
    }
  ]
}
steemdelegated 5.318 SP to @zaccharles
2020/05/09 13:06:18
delegatorsteem
delegateezaccharles
vesting shares8659.729843 VESTS
Transaction InfoBlock #43225668/Trx 2ea11bdf3122d0cd54d6da8d23a7a63b75b981da
View Raw JSON Data
{
  "trx_id": "2ea11bdf3122d0cd54d6da8d23a7a63b75b981da",
  "block": 43225668,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T13:06:18",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8659.729843 VESTS"
    }
  ]
}
steemdelegated 1.200 SP to @zaccharles
2020/05/08 17:49:00
delegatorsteem
delegateezaccharles
vesting shares1953.311140 VESTS
Transaction InfoBlock #43203062/Trx 4d0d6b658ea2a8d580851bd7a0181a12e7c5048f
View Raw JSON Data
{
  "trx_id": "4d0d6b658ea2a8d580851bd7a0181a12e7c5048f",
  "block": 43203062,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T17:49:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
steemdelegated 5.326 SP to @zaccharles
2020/04/16 04:33:06
delegatorsteem
delegateezaccharles
vesting shares8672.617291 VESTS
Transaction InfoBlock #42570611/Trx 8cc35df5ca5440c9dd93f420b68f6c0c2533e748
View Raw JSON Data
{
  "trx_id": "8cc35df5ca5440c9dd93f420b68f6c0c2533e748",
  "block": 42570611,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-04-16T04:33:06",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8672.617291 VESTS"
    }
  ]
}
2020/01/04 19:02:45
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorsteemitboard
permlinksteemitboard-notify-zaccharles-20200104t190244000z
title
bodyCongratulations @zaccharles! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@zaccharles/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@zaccharles) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=zaccharles)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #39641393/Trx 7c0e2da4a9bdf4f81530f807388766034aa9670a
View Raw JSON Data
{
  "trx_id": "7c0e2da4a9bdf4f81530f807388766034aa9670a",
  "block": 39641393,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-01-04T19:02:45",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-zaccharles-20200104t190244000z",
      "title": "",
      "body": "Congratulations @zaccharles! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@zaccharles/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@zaccharles) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=zaccharles)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 5.446 SP to @zaccharles
2019/05/12 21:40:54
delegatorsteem
delegateezaccharles
vesting shares8868.234104 VESTS
Transaction InfoBlock #32853617/Trx 2ed8776344ba0dc2b7d0874b53ad646cd71a94c0
View Raw JSON Data
{
  "trx_id": "2ed8776344ba0dc2b7d0874b53ad646cd71a94c0",
  "block": 32853617,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-05-12T21:40:54",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "8868.234104 VESTS"
    }
  ]
}
2019/01/04 19:20:06
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorsteemitboard
permlinksteemitboard-notify-zaccharles-20190104t192006000z
title
bodyCongratulations @zaccharles! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@zaccharles/birthday1.png</td><td>1 Year on Steemit</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@zaccharles)_</sub> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #29168638/Trx 04902d3210c21d6cff4f39a7dc419d4802a749e2
View Raw JSON Data
{
  "trx_id": "04902d3210c21d6cff4f39a7dc419d4802a749e2",
  "block": 29168638,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-01-04T19:20:06",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-zaccharles-20190104t192006000z",
      "title": "",
      "body": "Congratulations @zaccharles! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@zaccharles/birthday1.png</td><td>1 Year on Steemit</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@zaccharles)_</sub>\n\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
2018/06/16 13:17:15
voterkiikoh
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #23373103/Trx d8b71c1d5ca72784ac8f77937e451faf67ef8129
View Raw JSON Data
{
  "trx_id": "d8b71c1d5ca72784ac8f77937e451faf67ef8129",
  "block": 23373103,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-16T13:17:15",
  "op": [
    "vote",
    {
      "voter": "kiikoh",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/06/05 07:52:18
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorgoldenbytes
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180605t075147395z
title
body@@ -62,16 +62,28 @@ ernet - +https://www. coins2ga
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1","links":["https://www.coins2gains.com"]}
Transaction InfoBlock #23050448/Trx 86aef10fad5a6eee6a5a5e182fafc75466ba5bc1
View Raw JSON Data
{
  "trx_id": "86aef10fad5a6eee6a5a5e182fafc75466ba5bc1",
  "block": 23050448,
  "trx_in_block": 69,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-05T07:52:18",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "goldenbytes",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180605t075147395z",
      "title": "",
      "body": "@@ -62,16 +62,28 @@\n ernet - \n+https://www.\n coins2ga\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\",\"links\":[\"https://www.coins2gains.com\"]}"
    }
  ]
}
2018/06/05 07:51:51
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorgoldenbytes
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180605t075147395z
title
bodyFound something interesting regarding direct arbitrage on internet - coins2gains.com
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #23050439/Trx 21dc4d9af379d150d137b76ecfd138ae61d52522
View Raw JSON Data
{
  "trx_id": "21dc4d9af379d150d137b76ecfd138ae61d52522",
  "block": 23050439,
  "trx_in_block": 6,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-06-05T07:51:51",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "goldenbytes",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180605t075147395z",
      "title": "",
      "body": "Found something interesting regarding direct arbitrage on internet - coins2gains.com",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
steemdelegated 5.569 SP to @zaccharles
2018/05/17 03:54:30
delegatorsteem
delegateezaccharles
vesting shares9067.749196 VESTS
Transaction InfoBlock #22498988/Trx 362c51fb83eefc7c4ee30a71b0e4d49d6cd0f508
View Raw JSON Data
{
  "trx_id": "362c51fb83eefc7c4ee30a71b0e4d49d6cd0f508",
  "block": 22498988,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-05-17T03:54:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "9067.749196 VESTS"
    }
  ]
}
2018/04/22 15:10:30
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorpaulvdschee
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180422t151027193z
title
bodyI would like to know more! I enjoy reading your posts, write me back and let me know how your crypto arbitrage bot is doing. :)
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #21793294/Trx a6e4dd84a7972c8810ae87fee7678994fb5d7b1e
View Raw JSON Data
{
  "trx_id": "a6e4dd84a7972c8810ae87fee7678994fb5d7b1e",
  "block": 21793294,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-22T15:10:30",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "paulvdschee",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180422t151027193z",
      "title": "",
      "body": "I would like to know more! I enjoy reading your posts, write me back and let me know how your crypto arbitrage bot is doing. :)",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/04/09 13:18:03
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authormcshpoochen
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180409t131803480z
title
bodyI enjoy reading your posts.
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #21416707/Trx 8617930075b1a24ad879d91d25d60bb4d0033759
View Raw JSON Data
{
  "trx_id": "8617930075b1a24ad879d91d25d60bb4d0033759",
  "block": 21416707,
  "trx_in_block": 79,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-09T13:18:03",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "mcshpoochen",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180409t131803480z",
      "title": "",
      "body": "I enjoy reading your posts.",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/04/09 13:17:51
votermcshpoochen
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #21416703/Trx f22e1016bd582b9d61633ef3b7cf913d878e1208
View Raw JSON Data
{
  "trx_id": "f22e1016bd582b9d61633ef3b7cf913d878e1208",
  "block": 21416703,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-09T13:17:51",
  "op": [
    "vote",
    {
      "voter": "mcshpoochen",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 10000
    }
  ]
}
2018/04/09 13:15:12
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authormcshpoochen
permlinkre-zaccharles-cryptocurrency-triangular-arbitrage-20180409t131511162z
title
bodyGood read. I'm interested what happened with this project over the course of 3 months. Any updates?
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #21416650/Trx f02d30e2b0fa3d7ba21567d992570e3272913ce4
View Raw JSON Data
{
  "trx_id": "f02d30e2b0fa3d7ba21567d992570e3272913ce4",
  "block": 21416650,
  "trx_in_block": 36,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-09T13:15:12",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "mcshpoochen",
      "permlink": "re-zaccharles-cryptocurrency-triangular-arbitrage-20180409t131511162z",
      "title": "",
      "body": "Good read. I'm interested what happened with this project over the course of 3 months. Any updates?",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/04/09 13:14:36
votermcshpoochen
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #21416638/Trx 2431d9a80e8ab526703a8df35ae4797df5e4c37e
View Raw JSON Data
{
  "trx_id": "2431d9a80e8ab526703a8df35ae4797df5e4c37e",
  "block": 21416638,
  "trx_in_block": 39,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-09T13:14:36",
  "op": [
    "vote",
    {
      "voter": "mcshpoochen",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
steemdelegated 18.111 SP to @zaccharles
2018/03/30 19:21:54
delegatorsteem
delegateezaccharles
vesting shares29491.292597 VESTS
Transaction InfoBlock #21136024/Trx eb5b0f0d3b048a90d732bc94c29eaf822635b4de
View Raw JSON Data
{
  "trx_id": "eb5b0f0d3b048a90d732bc94c29eaf822635b4de",
  "block": 21136024,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-30T19:21:54",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "29491.292597 VESTS"
    }
  ]
}
2018/03/18 00:26:51
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authorowenhdp
permlinkre-zaccharles-cryptocurrency-triangular-arbitrage-20180318t002652700z
title
bodyAbsolutely interested! Similar project I found on GitHub using Binance: https://github.com/tiagosiebler/TriangularArbitrage Hope for further update! :)
json metadata{"tags":["cryptocurrency"],"links":["https://github.com/tiagosiebler/TriangularArbitrage"],"app":"steemit/0.1"}
Transaction InfoBlock #20768630/Trx 0ac115cbae9acf419929a1924a4e569f373bebb7
View Raw JSON Data
{
  "trx_id": "0ac115cbae9acf419929a1924a4e569f373bebb7",
  "block": 20768630,
  "trx_in_block": 51,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-18T00:26:51",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "owenhdp",
      "permlink": "re-zaccharles-cryptocurrency-triangular-arbitrage-20180318t002652700z",
      "title": "",
      "body": "Absolutely interested! Similar project I found on GitHub using Binance: \nhttps://github.com/tiagosiebler/TriangularArbitrage\nHope for further update! :)",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"links\":[\"https://github.com/tiagosiebler/TriangularArbitrage\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/03/18 00:25:09
voterowenhdp
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #20768596/Trx e7fc0d2f9b2371be2e3a2dbb41d8022c3287e73b
View Raw JSON Data
{
  "trx_id": "e7fc0d2f9b2371be2e3a2dbb41d8022c3287e73b",
  "block": 20768596,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-18T00:25:09",
  "op": [
    "vote",
    {
      "voter": "owenhdp",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/02/27 17:26:51
voterjasjnr
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #20242376/Trx ed0f37551939de9bf0b3e0cd5d0b8f825ebea3db
View Raw JSON Data
{
  "trx_id": "ed0f37551939de9bf0b3e0cd5d0b8f825ebea3db",
  "block": 20242376,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-27T17:26:51",
  "op": [
    "vote",
    {
      "voter": "jasjnr",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/02/26 18:45:00
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authorsahanov
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180226t184457829z
title
bodyThis is some amazing work here. Please keep on posting. After typing in google triangular crypto arbitrage u were there at the top. The traffic is all yours mate.
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #20215299/Trx ab62a22a5be9bb23b443af9e2e5a15a0ed93fa40
View Raw JSON Data
{
  "trx_id": "ab62a22a5be9bb23b443af9e2e5a15a0ed93fa40",
  "block": 20215299,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-26T18:45:00",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "sahanov",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180226t184457829z",
      "title": "",
      "body": "This is some amazing work here. Please keep on posting. \n\nAfter typing in google triangular crypto arbitrage u were there at the top. The traffic is all yours mate.",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/02/19 04:30:54
parent authorzaccharles
parent permlinkcryptocurrency-linear-arbitrage
authordonnu
permlinkre-zaccharles-cryptocurrency-linear-arbitrage-20180219t043053969z
title
bodyvery interesting article~! R u programer? Can you let me know little more tips?
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #19996681/Trx 731fd06f1314801fb48669f449de591039f5852e
View Raw JSON Data
{
  "trx_id": "731fd06f1314801fb48669f449de591039f5852e",
  "block": 19996681,
  "trx_in_block": 61,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T04:30:54",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-linear-arbitrage",
      "author": "donnu",
      "permlink": "re-zaccharles-cryptocurrency-linear-arbitrage-20180219t043053969z",
      "title": "",
      "body": "very interesting article~!\nR u programer?\nCan you let me know little more tips?",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/02/19 04:21:24
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authordonnu
permlinkre-zaccharles-cryptocurrency-triangular-arbitrage-20180219t042124759z
title
bodyvery interesting article. Could you give me some more specific tips?
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #19996491/Trx 95ebf2954758224c3a198b087692aeb9a0a4e2a1
View Raw JSON Data
{
  "trx_id": "95ebf2954758224c3a198b087692aeb9a0a4e2a1",
  "block": 19996491,
  "trx_in_block": 35,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T04:21:24",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "donnu",
      "permlink": "re-zaccharles-cryptocurrency-triangular-arbitrage-20180219t042124759z",
      "title": "",
      "body": "very interesting article. Could you give me some more specific tips?",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/02/19 04:20:03
voterdonnu
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #19996464/Trx 5ae2a569f9e85078d9d70f44000a633ee39c9d1a
View Raw JSON Data
{
  "trx_id": "5ae2a569f9e85078d9d70f44000a633ee39c9d1a",
  "block": 19996464,
  "trx_in_block": 33,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-19T04:20:03",
  "op": [
    "vote",
    {
      "voter": "donnu",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/02/07 16:05:06
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authoranthonyj68
permlinkre-zaccharles-cryptocurrency-triangular-arbitrage-20180207t160505140z
title
bodyI'm very interested in hearing more!
json metadata{"tags":["cryptocurrency"],"app":"steemit/0.1"}
Transaction InfoBlock #19665403/Trx c1353eab05495c7dbd34c2073b4b959094e2c44c
View Raw JSON Data
{
  "trx_id": "c1353eab05495c7dbd34c2073b4b959094e2c44c",
  "block": 19665403,
  "trx_in_block": 58,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-07T16:05:06",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "anthonyj68",
      "permlink": "re-zaccharles-cryptocurrency-triangular-arbitrage-20180207t160505140z",
      "title": "",
      "body": "I'm very interested in hearing more!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\"],\"app\":\"steemit/0.1\"}"
    }
  ]
}
2018/02/07 16:02:00
voteranthonyj68
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #19665341/Trx da76ed322f3b55e1cc0781779f0ef86e26b086b6
View Raw JSON Data
{
  "trx_id": "da76ed322f3b55e1cc0781779f0ef86e26b086b6",
  "block": 19665341,
  "trx_in_block": 25,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-07T16:02:00",
  "op": [
    "vote",
    {
      "voter": "anthonyj68",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/02/06 21:45:24
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authordtubix
permlinkre-cryptocurrency-triangular-arbitrage-495
title
bodyFollowing you! <p><img src="https://preview.ibb.co/hJ5ArH/up2.png" width="200"/></p>
json metadata
Transaction InfoBlock #19643441/Trx a0d3e7c34ccdb5a9d395258542cabfe4a45a643f
View Raw JSON Data
{
  "trx_id": "a0d3e7c34ccdb5a9d395258542cabfe4a45a643f",
  "block": 19643441,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-06T21:45:24",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "dtubix",
      "permlink": "re-cryptocurrency-triangular-arbitrage-495",
      "title": "",
      "body": "Following you!  <p><img src=\"https://preview.ibb.co/hJ5ArH/up2.png\" width=\"200\"/></p>",
      "json_metadata": ""
    }
  ]
}
2018/02/06 21:45:15
voterdtubix
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight5000 (50.00%)
Transaction InfoBlock #19643438/Trx 8913ebb9f223ce9603718d963438003673da6526
View Raw JSON Data
{
  "trx_id": "8913ebb9f223ce9603718d963438003673da6526",
  "block": 19643438,
  "trx_in_block": 28,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-06T21:45:15",
  "op": [
    "vote",
    {
      "voter": "dtubix",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 5000
    }
  ]
}
2018/02/01 20:52:30
votercarmaniac
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #19498587/Trx f8d5d5236b6b0e61fa6c830ee301bf95f3dd82c1
View Raw JSON Data
{
  "trx_id": "f8d5d5236b6b0e61fa6c830ee301bf95f3dd82c1",
  "block": 19498587,
  "trx_in_block": 32,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-02-01T20:52:30",
  "op": [
    "vote",
    {
      "voter": "carmaniac",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 10000
    }
  ]
}
zaccharlesclaimed reward balance: 0.205 SBD, 0.050 SP
2018/01/18 11:32:03
accountzaccharles
reward steem0.000 STEEM
reward sbd0.205 SBD
reward vests81.915468 VESTS
Transaction InfoBlock #19084452/Trx b2dbef91c86be0e8783613785ac5a101a81988ee
View Raw JSON Data
{
  "trx_id": "b2dbef91c86be0e8783613785ac5a101a81988ee",
  "block": 19084452,
  "trx_in_block": 54,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-18T11:32:03",
  "op": [
    "claim_reward_balance",
    {
      "account": "zaccharles",
      "reward_steem": "0.000 STEEM",
      "reward_sbd": "0.205 SBD",
      "reward_vests": "81.915468 VESTS"
    }
  ]
}
zaccharlesreceived 0.205 SBD, 0.050 SP author reward for @zaccharles / cryptocurrency-linear-arbitrage
2018/01/13 22:01:27
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
sbd payout0.205 SBD
steem payout0.000 STEEM
vesting payout81.915468 VESTS
Transaction InfoBlock #18953103/Virtual Operation #3
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 18953103,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 3,
  "timestamp": "2018-01-13T22:01:27",
  "op": [
    "author_reward",
    {
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "sbd_payout": "0.205 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "81.915468 VESTS"
    }
  ]
}
2018/01/09 15:46:00
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titlePart 1: Crypto Triangular Arbitrage
body@@ -3915,17 +3915,19 @@ t now:%0A%0A -%3E + 22:47:1 @@ -3973,33 +3973,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:17 - BTC @@ -4035,33 +4035,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:17 - BTC @@ -4097,33 +4097,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:17 - BTC @@ -4163,33 +4163,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4225,33 +4225,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4287,33 +4287,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4353,33 +4353,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4415,33 +4415,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4477,33 +4477,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4543,33 +4543,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4605,33 +4605,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4667,33 +4667,35 @@ TH%5D %3E %5BETH-BTC%5D%0A -%3E + 22:47:18 - BTC @@ -4741,17 +4741,19 @@ TH-BTC%5D%0A -%3E + 22:47:1 @@ -4803,16 +4803,21 @@ TH-BTC%5D%0A +** ** %0AWe can
json metadata{"tags":["cryptocurrency","programming","arbitrage","proft","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18830510/Trx 3989b3fd40b31034fc1c736d0cc2a49f4ec70861
View Raw JSON Data
{
  "trx_id": "3989b3fd40b31034fc1c736d0cc2a49f4ec70861",
  "block": 18830510,
  "trx_in_block": 49,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T15:46:00",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Part 1: Crypto Triangular Arbitrage",
      "body": "@@ -3915,17 +3915,19 @@\n t now:%0A%0A\n-%3E\n+   \n  22:47:1\n@@ -3973,33 +3973,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:17 - BTC \n@@ -4035,33 +4035,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:17 - BTC \n@@ -4097,33 +4097,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:17 - BTC \n@@ -4163,33 +4163,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4225,33 +4225,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4287,33 +4287,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4353,33 +4353,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4415,33 +4415,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4477,33 +4477,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4543,33 +4543,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4605,33 +4605,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4667,33 +4667,35 @@\n TH%5D %3E %5BETH-BTC%5D%0A\n-%3E\n+   \n  22:47:18 - BTC \n@@ -4741,17 +4741,19 @@\n TH-BTC%5D%0A\n-%3E\n+   \n  22:47:1\n@@ -4803,16 +4803,21 @@\n TH-BTC%5D%0A\n+** **\n %0AWe can \n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"proft\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/09 08:00:51
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titlePart 1: Crypto Triangular Arbitrage
bodyRecently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas. ![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png) Given how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process. Since I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around. I found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source "C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another. It then waits for the price gap to close and exits these positions. That's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be. So I decided not to run Blackbird and do some further investigation. I didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit. I use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work. The code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market. Bittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit. The result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now: > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] We can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take. The average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds. 3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","proft","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18821213/Trx f1ab090015eba8f0253a45399288cc3d0b5587de
View Raw JSON Data
{
  "trx_id": "f1ab090015eba8f0253a45399288cc3d0b5587de",
  "block": 18821213,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T08:00:51",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Part 1: Crypto Triangular Arbitrage",
      "body": "Recently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas.\n\n![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)\n\nGiven how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process.\n\nSince I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around.\n\nI found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source \"C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges\". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another.  It then waits for the price gap to close and exits these positions.\n\nThat's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be.\n\nSo I decided not to run Blackbird and do some further investigation.\n\nI didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit.\n\nI use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work.\n\nThe code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market.\n\nBittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit.\n\nThe result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now:\n\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n\nWe can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take.\n\nThe average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds.\n\n3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"proft\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/09 08:00:42
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
titlePart 2: Crypto Linear Arbitrage
bodyIn [my previous post](https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage), I wrote about my investigation into profitable triangular arbitrage opportunities in the cryptocurrency market. Triangular arbitrage is when you start with currency A, trade it for currency B, then trade that for C, and finally trade C back to A. Due to market inefficiencies, this can sometimes result in having more of currency A than you had at the beginning. The result of my initial investigation was that these opportunities seem to occur about one to three times a minute when filtering out those with profit below 1% (considering trading fees). At that time, I was polling Bittrex's API roughly every 250ms. Sometimes an opportunity would be printed out once, and sometimes multiple times. That meant some were present for longer than others. Given there are three trades in triangular arbitrage, and each trade takes time, some opportunities may not be around long enough to be actionable. Time for some more coding! ![](https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png) Until now, the program was only outputting each opportunity as it came along, so I changed it to keep track of them. Afterwards, the program wrote a message when a new one opened, when it closed, and the duration for which it was open. Below are a few examples. 22:24:37 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% 22:24:40 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (3.144s) 22:24:41 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% 22:24:41 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (0.243s) 22:27:38 + BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% 22:27:42 - BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% (3.812s) ** ** It's interesting to see that an `ETH > VIB > BTC > ETH` opportunity was open for 3.144s, closed for about a second, then reopened at 1.33% again for only 243ms. We may have been able to trade the first one successfully, but the second closed quite quickly. Some opportunities close even quicker than this, while others are open for anywhere up to 30 seconds. That's very inefficient, but the problem is that the inefficiency is unpredictable... right? Bittrex has three base currencies; `BTC`, `ETH`, and `USDT`. I call these base currencies because you can buy most altcoins with them. In the above example, you can see two opportunities started and ended with `ETH`, and one with `BTC`. In fact, after observing for a day, I noticed that around half started with `ETH` and the other half with `BTC`, while only a small amount started with `USDT`. I happily hold both `BTC` and `ETH`, which made me question the point of trading back to the starting currency, which incurs an additional fee. What if we only followed the opportunity path from `ETH` to `BTC`, and then stopped? Likewise, we'd keep the `ETH` when starting with `BTC`. This strategy is what I'm calling linear arbitrage. I ran this strategy in observation mode for almost 48 hours capturing 2,314 opportunities above 1%. You can take a look at [the data](https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing) if you like. Here's a summary: | |Min|Avg|Max| |-----|-------------|-----------|--------------| |**Profit**|1.00%|1.90%|14.80%| |**Duration**|0.030s|5.050s|156.520s| The most commonly inefficient currencies were [FUN](https://coinmarketcap.com/currencies/funfair/), [XLM](https://coinmarketcap.com/currencies/stellar/), [DGB](https://coinmarketcap.com/currencies/digital-bullion-gold/), [SNT](https://coinmarketcap.com/currencies/status/), [ADA](https://coinmarketcap.com/currencies/cardano/), and [ENG](https://coinmarketcap.com/currencies/enigma-project/). Each of these gave above 100 opportunities each, but I'm not convinced there is anything to read into here. More importantly is the fact some opportunities are open for as little as 30ms. There are two trades in linear arbitrage, and that's barely enough time to place a single order. You could solve this by owning all altcoins and doing both trades simultaneously, but I'd rather avoid that. Some of the shorter-lived opportunities may be market-manipulating bots placing small orders which get eaten up quickly. Perhaps the duration can be predicted based on the order size. I ran the strategy in trade-mode very briefly. The results were mixed, so I think this is going to be an essential part of deciding to trade. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","profit","crypto"],"image":["https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png"],"links":["https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage","https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing","https://coinmarketcap.com/currencies/funfair/","https://coinmarketcap.com/currencies/stellar/","https://coinmarketcap.com/currencies/digital-bullion-gold/","https://coinmarketcap.com/currencies/status/","https://coinmarketcap.com/currencies/cardano/","https://coinmarketcap.com/currencies/enigma-project/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18821210/Trx e4f8e9dfcd051c9651b10b4b9904ebfb9f5b9443
View Raw JSON Data
{
  "trx_id": "e4f8e9dfcd051c9651b10b4b9904ebfb9f5b9443",
  "block": 18821210,
  "trx_in_block": 16,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T08:00:42",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "title": "Part 2: Crypto Linear Arbitrage",
      "body": "In [my previous post](https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage), I wrote about my investigation into profitable triangular arbitrage opportunities in the cryptocurrency market. Triangular arbitrage is when you start with currency A, trade it for currency B, then trade that for C, and finally trade C back to A.\nDue to market inefficiencies, this can sometimes result in having more of currency A than you had at the beginning.\n\nThe result of my initial investigation was that these opportunities seem to occur about one to three times a minute when filtering out those with profit below 1% (considering trading fees).\nAt that time, I was polling Bittrex's API roughly every 250ms. Sometimes an opportunity would be printed out once, and sometimes multiple times. That meant some were present for longer than others. Given there are three trades in triangular arbitrage, and each trade takes time, some opportunities may not be around long enough to be actionable.\n\nTime for some more coding!\n\n![](https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png)\n\nUntil now, the program was only outputting each opportunity as it came along, so I changed it to keep track of them. Afterwards, the program wrote a message when a new one opened, when it closed, and the duration for which it was open. Below are a few examples.\n\n    22:24:37 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33%\n    22:24:40 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (3.144s)\n    22:24:41 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33%\n    22:24:41 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (0.243s)\n    22:27:38 + BTC-BAT > BAT-ETH > ETH-BTC @ 2.06%\n    22:27:42 - BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% (3.812s)\n  \n** **\nIt's interesting to see that an `ETH > VIB > BTC > ETH` opportunity was open for 3.144s, closed for about a second, then reopened at 1.33% again for only 243ms. We may have been able to trade the first one successfully, but the second closed quite quickly. Some opportunities close even quicker than this, while others are open for anywhere up to 30 seconds. That's very inefficient, but the problem is that the inefficiency is unpredictable... right?\n\nBittrex has three base currencies; `BTC`, `ETH`, and `USDT`. I call these base currencies because you can buy most altcoins with them. In the above example, you can see two opportunities started and ended with `ETH`, and one with `BTC`.\nIn fact, after observing for a day, I noticed that around half started with `ETH` and the other half with `BTC`, while only a small amount started with `USDT`. I happily hold both `BTC` and `ETH`, which made me question the point of trading back to the starting currency, which incurs an additional fee.\n\nWhat if we only followed the opportunity path from `ETH` to `BTC`, and then stopped? Likewise, we'd keep the `ETH` when starting with `BTC`. This strategy is what I'm calling linear arbitrage.\nI ran this strategy in observation mode for almost 48 hours capturing 2,314 opportunities above 1%. You can take a look at [the data](https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing) if you like. Here's a summary:\n\n| |Min|Avg|Max|\n|-----|-------------|-----------|--------------|\n|**Profit**|1.00%|1.90%|14.80%|\n|**Duration**|0.030s|5.050s|156.520s|\n\nThe most commonly inefficient currencies were [FUN](https://coinmarketcap.com/currencies/funfair/), [XLM](https://coinmarketcap.com/currencies/stellar/), [DGB](https://coinmarketcap.com/currencies/digital-bullion-gold/), [SNT](https://coinmarketcap.com/currencies/status/), [ADA](https://coinmarketcap.com/currencies/cardano/), and [ENG](https://coinmarketcap.com/currencies/enigma-project/). Each of these gave above 100 opportunities each, but I'm not convinced there is anything to read into here. More importantly is the fact some opportunities are open for as little as 30ms. There are two trades in linear arbitrage, and that's barely enough time to place a single order. You could solve this by owning all altcoins and doing both trades simultaneously, but I'd rather avoid that.\n\nSome of the shorter-lived opportunities may be market-manipulating bots placing small orders which get eaten up quickly. Perhaps the duration can be predicted based on the order size. I ran the strategy in trade-mode very briefly. The results were mixed, so I think this is going to be an essential part of deciding to trade.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"profit\",\"crypto\"],\"image\":[\"https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png\"],\"links\":[\"https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage\",\"https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing\",\"https://coinmarketcap.com/currencies/funfair/\",\"https://coinmarketcap.com/currencies/stellar/\",\"https://coinmarketcap.com/currencies/digital-bullion-gold/\",\"https://coinmarketcap.com/currencies/status/\",\"https://coinmarketcap.com/currencies/cardano/\",\"https://coinmarketcap.com/currencies/enigma-project/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/09 08:00:33
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titlePart 1: Crypto Triangular Arbitrage
bodyRecently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas. ![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png) Given how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process. Since I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around. I found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source "C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another. It then waits for the price gap to close and exits these positions. That's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be. So I decided not to run Blackbird and do some further investigation. I didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit. I use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work. The code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market. Bittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit. The result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now: > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] We can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take. The average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds. 3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18821207/Trx a80bb19c6616a6e4016dfa223e214736843e74de
View Raw JSON Data
{
  "trx_id": "a80bb19c6616a6e4016dfa223e214736843e74de",
  "block": 18821207,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-09T08:00:33",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Part 1: Crypto Triangular Arbitrage",
      "body": "Recently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas.\n\n![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)\n\nGiven how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process.\n\nSince I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around.\n\nI found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source \"C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges\". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another.  It then waits for the price gap to close and exits these positions.\n\nThat's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be.\n\nSo I decided not to run Blackbird and do some further investigation.\n\nI didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit.\n\nI use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work.\n\nThe code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market.\n\nBittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit.\n\nThe result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now:\n\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n\nWe can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take.\n\nThe average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds.\n\n3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
steemdelegated 18.240 SP to @zaccharles
2018/01/08 19:33:24
delegatorsteem
delegateezaccharles
vesting shares29700.599062 VESTS
Transaction InfoBlock #18806290/Trx e8877224c294b8722bf9642ea653dbcd408e7fcb
View Raw JSON Data
{
  "trx_id": "e8877224c294b8722bf9642ea653dbcd408e7fcb",
  "block": 18806290,
  "trx_in_block": 33,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-08T19:33:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "zaccharles",
      "vesting_shares": "29700.599062 VESTS"
    }
  ]
}
2018/01/08 10:01:21
votercliffxuan
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #18794877/Trx dc0972309d857e50f861cc01838de39dabbb9316
View Raw JSON Data
{
  "trx_id": "dc0972309d857e50f861cc01838de39dabbb9316",
  "block": 18794877,
  "trx_in_block": 37,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-08T10:01:21",
  "op": [
    "vote",
    {
      "voter": "cliffxuan",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 10000
    }
  ]
}
2018/01/06 23:59:36
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
titleCryptocurrency Linear Arbitrage
body@@ -3190,28 +3190,16 @@ %7CMin -imum%7CAverage%7CMaximum +%7CAvg%7CMax %7C%0A%7C-
json metadata{"tags":["cryptocurrency","programming","arbitrage","profit","crypto"],"image":["https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png"],"links":["https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage","https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing","https://coinmarketcap.com/currencies/funfair/","https://coinmarketcap.com/currencies/stellar/","https://coinmarketcap.com/currencies/digital-bullion-gold/","https://coinmarketcap.com/currencies/status/","https://coinmarketcap.com/currencies/cardano/","https://coinmarketcap.com/currencies/enigma-project/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18754083/Trx 6eef36c0128b2e57ab924e5cf08061cff6ca2a97
View Raw JSON Data
{
  "trx_id": "6eef36c0128b2e57ab924e5cf08061cff6ca2a97",
  "block": 18754083,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T23:59:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "title": "Cryptocurrency Linear Arbitrage",
      "body": "@@ -3190,28 +3190,16 @@\n %7CMin\n-imum%7CAverage%7CMaximum\n+%7CAvg%7CMax\n %7C%0A%7C-\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"profit\",\"crypto\"],\"image\":[\"https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png\"],\"links\":[\"https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage\",\"https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing\",\"https://coinmarketcap.com/currencies/funfair/\",\"https://coinmarketcap.com/currencies/stellar/\",\"https://coinmarketcap.com/currencies/digital-bullion-gold/\",\"https://coinmarketcap.com/currencies/status/\",\"https://coinmarketcap.com/currencies/cardano/\",\"https://coinmarketcap.com/currencies/enigma-project/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/06 23:58:48
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
titleCryptocurrency Linear Arbitrage
body@@ -2504,16 +2504,22 @@ and the +other half wit @@ -2848,18 +2848,20 @@ tarting -at +with %60BTC%60.
json metadata{"tags":["cryptocurrency","programming","arbitrage","profit","crypto"],"image":["https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png"],"links":["https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage","https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing","https://coinmarketcap.com/currencies/funfair/","https://coinmarketcap.com/currencies/stellar/","https://coinmarketcap.com/currencies/digital-bullion-gold/","https://coinmarketcap.com/currencies/status/","https://coinmarketcap.com/currencies/cardano/","https://coinmarketcap.com/currencies/enigma-project/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18754067/Trx f2848aa222222a9c9abb558ada1f3e9f346ec657
View Raw JSON Data
{
  "trx_id": "f2848aa222222a9c9abb558ada1f3e9f346ec657",
  "block": 18754067,
  "trx_in_block": 17,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T23:58:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "title": "Cryptocurrency Linear Arbitrage",
      "body": "@@ -2504,16 +2504,22 @@\n and the \n+other \n half wit\n@@ -2848,18 +2848,20 @@\n tarting \n-at\n+with\n  %60BTC%60. \n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"profit\",\"crypto\"],\"image\":[\"https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png\"],\"links\":[\"https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage\",\"https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing\",\"https://coinmarketcap.com/currencies/funfair/\",\"https://coinmarketcap.com/currencies/stellar/\",\"https://coinmarketcap.com/currencies/digital-bullion-gold/\",\"https://coinmarketcap.com/currencies/status/\",\"https://coinmarketcap.com/currencies/cardano/\",\"https://coinmarketcap.com/currencies/enigma-project/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/06 22:33:33
voterhr1
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight5 (0.05%)
Transaction InfoBlock #18752367/Trx 0a198624aad853aa6d1192250707fe2c98f38325
View Raw JSON Data
{
  "trx_id": "0a198624aad853aa6d1192250707fe2c98f38325",
  "block": 18752367,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T22:33:33",
  "op": [
    "vote",
    {
      "voter": "hr1",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 5
    }
  ]
}
2018/01/06 22:11:09
voterstachu
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #18751921/Trx 0da4909528b9ab4ed03a2a168b026bc61ebc97a2
View Raw JSON Data
{
  "trx_id": "0da4909528b9ab4ed03a2a168b026bc61ebc97a2",
  "block": 18751921,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T22:11:09",
  "op": [
    "vote",
    {
      "voter": "stachu",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 10000
    }
  ]
}
2018/01/06 22:01:27
voterzaccharles
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #18751727/Trx 89955680ef546f7c1e393eca3e73dc3512aede02
View Raw JSON Data
{
  "trx_id": "89955680ef546f7c1e393eca3e73dc3512aede02",
  "block": 18751727,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T22:01:27",
  "op": [
    "vote",
    {
      "voter": "zaccharles",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "weight": 10000
    }
  ]
}
2018/01/06 22:01:27
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-linear-arbitrage
titleCryptocurrency Linear Arbitrage
bodyIn [my previous post](https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage), I wrote about my investigation into profitable triangular arbitrage opportunities in the cryptocurrency market. Triangular arbitrage is when you start with currency A, trade it for currency B, then trade that for C, and finally trade C back to A. Due to market inefficiencies, this can sometimes result in having more of currency A than you had at the beginning. The result of my initial investigation was that these opportunities seem to occur about one to three times a minute when filtering out those with profit below 1% (considering trading fees). At that time, I was polling Bittrex's API roughly every 250ms. Sometimes an opportunity would be printed out once, and sometimes multiple times. That meant some were present for longer than others. Given there are three trades in triangular arbitrage, and each trade takes time, some opportunities may not be around long enough to be actionable. Time for some more coding! ![](https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png) Until now, the program was only outputting each opportunity as it came along, so I changed it to keep track of them. Afterwards, the program wrote a message when a new one opened, when it closed, and the duration for which it was open. Below are a few examples. 22:24:37 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% 22:24:40 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (3.144s) 22:24:41 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% 22:24:41 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (0.243s) 22:27:38 + BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% 22:27:42 - BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% (3.812s) ** ** It's interesting to see that an `ETH > VIB > BTC > ETH` opportunity was open for 3.144s, closed for about a second, then reopened at 1.33% again for only 243ms. We may have been able to trade the first one successfully, but the second closed quite quickly. Some opportunities close even quicker than this, while others are open for anywhere up to 30 seconds. That's very inefficient, but the problem is that the inefficiency is unpredictable... right? Bittrex has three base currencies; `BTC`, `ETH`, and `USDT`. I call these base currencies because you can buy most altcoins with them. In the above example, you can see two opportunities started and ended with `ETH`, and one with `BTC`. In fact, after observing for a day, I noticed that around half started with `ETH` and the half with `BTC`, while only a small amount started with `USDT`. I happily hold both `BTC` and `ETH`, which made me question the point of trading back to the starting currency, which incurs an additional fee. What if we only followed the opportunity path from `ETH` to `BTC`, and then stopped? Likewise, we'd keep the `ETH` when starting at `BTC`. This strategy is what I'm calling linear arbitrage. I ran this strategy in observation mode for almost 48 hours capturing 2,314 opportunities above 1%. You can take a look at [the data](https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing) if you like. Here's a summary: | |Minimum|Average|Maximum| |-----|-------------|-----------|--------------| |**Profit**|1.00%|1.90%|14.80%| |**Duration**|0.030s|5.050s|156.520s| The most commonly inefficient currencies were [FUN](https://coinmarketcap.com/currencies/funfair/), [XLM](https://coinmarketcap.com/currencies/stellar/), [DGB](https://coinmarketcap.com/currencies/digital-bullion-gold/), [SNT](https://coinmarketcap.com/currencies/status/), [ADA](https://coinmarketcap.com/currencies/cardano/), and [ENG](https://coinmarketcap.com/currencies/enigma-project/). Each of these gave above 100 opportunities each, but I'm not convinced there is anything to read into here. More importantly is the fact some opportunities are open for as little as 30ms. There are two trades in linear arbitrage, and that's barely enough time to place a single order. You could solve this by owning all altcoins and doing both trades simultaneously, but I'd rather avoid that. Some of the shorter-lived opportunities may be market-manipulating bots placing small orders which get eaten up quickly. Perhaps the duration can be predicted based on the order size. I ran the strategy in trade-mode very briefly. The results were mixed, so I think this is going to be an essential part of deciding to trade. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","profit","crypto"],"image":["https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png"],"links":["https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage","https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing","https://coinmarketcap.com/currencies/funfair/","https://coinmarketcap.com/currencies/stellar/","https://coinmarketcap.com/currencies/digital-bullion-gold/","https://coinmarketcap.com/currencies/status/","https://coinmarketcap.com/currencies/cardano/","https://coinmarketcap.com/currencies/enigma-project/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18751727/Trx 89955680ef546f7c1e393eca3e73dc3512aede02
View Raw JSON Data
{
  "trx_id": "89955680ef546f7c1e393eca3e73dc3512aede02",
  "block": 18751727,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T22:01:27",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-linear-arbitrage",
      "title": "Cryptocurrency Linear Arbitrage",
      "body": "In [my previous post](https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage), I wrote about my investigation into profitable triangular arbitrage opportunities in the cryptocurrency market. Triangular arbitrage is when you start with currency A, trade it for currency B, then trade that for C, and finally trade C back to A.\nDue to market inefficiencies, this can sometimes result in having more of currency A than you had at the beginning.\n\nThe result of my initial investigation was that these opportunities seem to occur about one to three times a minute when filtering out those with profit below 1% (considering trading fees).\nAt that time, I was polling Bittrex's API roughly every 250ms. Sometimes an opportunity would be printed out once, and sometimes multiple times. That meant some were present for longer than others. Given there are three trades in triangular arbitrage, and each trade takes time, some opportunities may not be around long enough to be actionable.\n\nTime for some more coding!\n\n![](https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png)\n\nUntil now, the program was only outputting each opportunity as it came along, so I changed it to keep track of them. Afterwards, the program wrote a message when a new one opened, when it closed, and the duration for which it was open. Below are a few examples.\n\n    22:24:37 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33%\n    22:24:40 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (3.144s)\n    22:24:41 + ETH-VIB > VIB-BTC > BTC-ETH @ 1.33%\n    22:24:41 - ETH-VIB > VIB-BTC > BTC-ETH @ 1.33% (0.243s)\n    22:27:38 + BTC-BAT > BAT-ETH > ETH-BTC @ 2.06%\n    22:27:42 - BTC-BAT > BAT-ETH > ETH-BTC @ 2.06% (3.812s)\n  \n** **\nIt's interesting to see that an `ETH > VIB > BTC > ETH` opportunity was open for 3.144s, closed for about a second, then reopened at 1.33% again for only 243ms. We may have been able to trade the first one successfully, but the second closed quite quickly. Some opportunities close even quicker than this, while others are open for anywhere up to 30 seconds. That's very inefficient, but the problem is that the inefficiency is unpredictable... right?\n\nBittrex has three base currencies; `BTC`, `ETH`, and `USDT`. I call these base currencies because you can buy most altcoins with them. In the above example, you can see two opportunities started and ended with `ETH`, and one with `BTC`.\nIn fact, after observing for a day, I noticed that around half started with `ETH` and the half with `BTC`, while only a small amount started with `USDT`. I happily hold both `BTC` and `ETH`, which made me question the point of trading back to the starting currency, which incurs an additional fee.\n\nWhat if we only followed the opportunity path from `ETH` to `BTC`, and then stopped? Likewise, we'd keep the `ETH` when starting at `BTC`. This strategy is what I'm calling linear arbitrage.\nI ran this strategy in observation mode for almost 48 hours capturing 2,314 opportunities above 1%. You can take a look at [the data](https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing) if you like. Here's a summary:\n\n| |Minimum|Average|Maximum|\n|-----|-------------|-----------|--------------|\n|**Profit**|1.00%|1.90%|14.80%|\n|**Duration**|0.030s|5.050s|156.520s|\n\nThe most commonly inefficient currencies were [FUN](https://coinmarketcap.com/currencies/funfair/), [XLM](https://coinmarketcap.com/currencies/stellar/), [DGB](https://coinmarketcap.com/currencies/digital-bullion-gold/), [SNT](https://coinmarketcap.com/currencies/status/), [ADA](https://coinmarketcap.com/currencies/cardano/), and [ENG](https://coinmarketcap.com/currencies/enigma-project/). Each of these gave above 100 opportunities each, but I'm not convinced there is anything to read into here. More importantly is the fact some opportunities are open for as little as 30ms. There are two trades in linear arbitrage, and that's barely enough time to place a single order. You could solve this by owning all altcoins and doing both trades simultaneously, but I'd rather avoid that.\n\nSome of the shorter-lived opportunities may be market-manipulating bots placing small orders which get eaten up quickly. Perhaps the duration can be predicted based on the order size. I ran the strategy in trade-mode very briefly. The results were mixed, so I think this is going to be an essential part of deciding to trade.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"profit\",\"crypto\"],\"image\":[\"https://steemitimages.com/DQmNYeC2WomiTCrTrjgEsittZHsXm8vCF4qQVS2iRTQSZXV/image.png\"],\"links\":[\"https://steemit.com/cryptocurrency/@zaccharles/cryptocurrency-triangular-arbitrage\",\"https://docs.google.com/spreadsheets/d/1Aw4q3MV4q_c9wEeR4WdM_B_lGUTxjNwRp0bQes0T1no/edit?usp=sharing\",\"https://coinmarketcap.com/currencies/funfair/\",\"https://coinmarketcap.com/currencies/stellar/\",\"https://coinmarketcap.com/currencies/digital-bullion-gold/\",\"https://coinmarketcap.com/currencies/status/\",\"https://coinmarketcap.com/currencies/cardano/\",\"https://coinmarketcap.com/currencies/enigma-project/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/06 19:43:24
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
bodyRecently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas. ![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png) Given how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process. Since I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around. I found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source "C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another. It then waits for the price gap to close and exits these positions. That's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be. So I decided not to run Blackbird and do some further investigation. I didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit. I use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work. The code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market. Bittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit. The result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now: > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] We can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take. The average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds. 3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18748973/Trx 959eb02ee108aed68866ecff4631899332efc03d
View Raw JSON Data
{
  "trx_id": "959eb02ee108aed68866ecff4631899332efc03d",
  "block": 18748973,
  "trx_in_block": 15,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T19:43:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "Recently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas.\n\n![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)\n\nGiven how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process.\n\nSince I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around.\n\nI found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source \"C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges\". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another.  It then waits for the price gap to close and exits these positions.\n\nThat's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be.\n\nSo I decided not to run Blackbird and do some further investigation.\n\nI didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit.\n\nI use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work.\n\nThe code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market.\n\nBittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit.\n\nThe result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now:\n\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n\nWe can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take.\n\nThe average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds.\n\n3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/06 19:43:09
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage (1)
bodyRecently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas. ![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png) Given how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process. Since I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around. I found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source "C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another. It then waits for the price gap to close and exits these positions. That's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be. So I decided not to run Blackbird and do some further investigation. I didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit. I use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work. The code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market. Bittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit. The result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now: > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC] > 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC] > 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC] We can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take. The average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds. 3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18748968/Trx 79e0a63b7b6aebaf7b03772463a438aa0ddcf29f
View Raw JSON Data
{
  "trx_id": "79e0a63b7b6aebaf7b03772463a438aa0ddcf29f",
  "block": 18748968,
  "trx_in_block": 29,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-06T19:43:09",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage (1)",
      "body": "Recently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas.\n\n![](https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)\n\nGiven how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your funds between the exchanges and repeat the process.\n\nSince I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around.\n\nI found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source \"C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges\". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another.  It then waits for the price gap to close and exits these positions.\n\nThat's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be.\n\nSo I decided not to run Blackbird and do some further investigation.\n\nI didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit.\n\nI use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work.\n\nThe code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market.\n\nBittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit.\n\nThe result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now:\n\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:17 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.56%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.15%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.07%): [BTC-PAY] > [PAY-ETH] > [ETH-BTC]\n> 22:47:18 - BTC (0.08%): [BTC-WAVES] > [WAVES-ETH] > [ETH-BTC]\n> 22:47:19 - BTC (0.48%): [BTC-ANT] > [ANT-ETH] > [ETH-BTC]\n\nWe can see that at 22:47:18, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take.\n\nThe average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds.\n\n3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/05 09:27:51
votercliffxuan
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #18707879/Trx 1f16afda2e5963b156b7adff99527845c4774652
View Raw JSON Data
{
  "trx_id": "1f16afda2e5963b156b7adff99527845c4774652",
  "block": 18707879,
  "trx_in_block": 37,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-05T09:27:51",
  "op": [
    "vote",
    {
      "voter": "cliffxuan",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/01/05 07:47:09
parent authorzaccharles
parent permlinkcryptocurrency-triangular-arbitrage
authorsteem-network
permlinkre-cryptocurrency-triangular-arbitrage-20180105t074707
title
body<html> <p>Congratulations <a href="/@zaccharles" target="_blank">@zaccharles</a>, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.</p> <hr> <div class="pull-left"><img src="https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif" alt="Thumbs up for Steem Network´s strategy" title="I suggest Steem Network´s strategy" width="320" height="222"></div> <h1>The proven road to boost your personal success in this amazing Steem Network</h1> <p>Do you already know that awesome content will get great profits by following these <a href="/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-04" target="_blank" alt="Steem Network" title="Follow Steem Network´s suggestions to boost your success">simple steps</a>, that have been worked out by experts?</p> </html>
json metadata{"tags": ["steem-network"], "users": ["steem-network", "zaccharles"], "image": ["https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif"], "links": ["/@zaccharles", "/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-04"], "community": "steem-network", "app": "steem-network/1.0.1", "format": "html"}
Transaction InfoBlock #18705866/Trx 8b53657fa49ffe6cd267add7c974ba2e45ec5b50
View Raw JSON Data
{
  "trx_id": "8b53657fa49ffe6cd267add7c974ba2e45ec5b50",
  "block": 18705866,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-05T07:47:09",
  "op": [
    "comment",
    {
      "parent_author": "zaccharles",
      "parent_permlink": "cryptocurrency-triangular-arbitrage",
      "author": "steem-network",
      "permlink": "re-cryptocurrency-triangular-arbitrage-20180105t074707",
      "title": "",
      "body": "<html>\n<p>Congratulations <a href=\"/@zaccharles\" target=\"_blank\">@zaccharles</a>, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.</p>\n<hr>\n<div class=\"pull-left\"><img src=\"https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif\" alt=\"Thumbs up for Steem Network´s strategy\" title=\"I suggest Steem Network´s strategy\" width=\"320\" height=\"222\"></div>\n<h1>The proven road to boost your personal success in this amazing Steem Network</h1>\n<p>Do you already know that awesome content will get great profits by following these <a href=\"/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-04\" target=\"_blank\" alt=\"Steem Network\" title=\"Follow Steem Network´s suggestions to boost your success\">simple steps</a>, that have been worked out by experts?</p>\n</html>",
      "json_metadata": "{\"tags\": [\"steem-network\"], \"users\": [\"steem-network\", \"zaccharles\"], \"image\": [\"https://steemitimages.com/DQmaAdLUJ3yaSkmcmWECWyPGPWcjfbCoZ8Tu4RM6H4DbjCi/steem-network-thumbs-up.gif\"], \"links\": [\"/@zaccharles\", \"/steem-network/@steem-network/spread-your-posts-through-this-proven-strategy-and-get-great-profits-in-return--for-posts-created-at-2018-01-04\"], \"community\": \"steem-network\", \"app\": \"steem-network/1.0.1\", \"format\": \"html\"}"
    }
  ]
}
2018/01/04 23:32:36
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
body@@ -934,31 +934,35 @@ our -USD from Gemini to GDAX +funds between the exchanges and
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18695979/Trx 64b38c0521f54e093970c3278d54a3294e4233ff
View Raw JSON Data
{
  "trx_id": "64b38c0521f54e093970c3278d54a3294e4233ff",
  "block": 18695979,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T23:32:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "@@ -934,31 +934,35 @@\n our \n-USD from Gemini to GDAX\n+funds between the exchanges\n  and\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/04 23:01:57
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
body@@ -291,16 +291,106 @@ ideas.%0A%0A +!%5B%5D(https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)%0A%0A Given ho
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown","image":["https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png"]}
Transaction InfoBlock #18695366/Trx c1ac72052b607c03a19bef960eb2d0a315be5c41
View Raw JSON Data
{
  "trx_id": "c1ac72052b607c03a19bef960eb2d0a315be5c41",
  "block": 18695366,
  "trx_in_block": 43,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T23:01:57",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "@@ -291,16 +291,106 @@\n ideas.%0A%0A\n+!%5B%5D(https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png)%0A%0A\n Given ho\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\",\"image\":[\"https://steemitimages.com/DQmVXfHNgb4bcwJu3cB3ZBdixiyNFfqwXmb1XbjqMBtooH4/image.png\"]}"
    }
  ]
}
2018/01/04 21:40:03
required auths[]
required posting auths["zaccharles"]
idfollow
json["follow",{"follower":"zaccharles","following":"cryptovestor","what":["blog"]}]
Transaction InfoBlock #18693728/Trx 91d4718a1bca04c20d9a191db3d236e634eaeb6e
View Raw JSON Data
{
  "trx_id": "91d4718a1bca04c20d9a191db3d236e634eaeb6e",
  "block": 18693728,
  "trx_in_block": 42,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:40:03",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "zaccharles"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"zaccharles\",\"following\":\"cryptovestor\",\"what\":[\"blog\"]}]"
    }
  ]
}
zaccharlesupdated their account properties
2018/01/04 21:38:27
accountzaccharles
memo keySTM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
json metadata{"profile":{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac Charles","cover_image":"https://i.imgur.com/I0v4MDy.jpg","about":"Programming Addict","location":"London, UK"}}
Transaction InfoBlock #18693696/Trx 85e26e598681f1d9e323702b9a4a13ab50b8f0ea
View Raw JSON Data
{
  "trx_id": "85e26e598681f1d9e323702b9a4a13ab50b8f0ea",
  "block": 18693696,
  "trx_in_block": 52,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:38:27",
  "op": [
    "account_update",
    {
      "account": "zaccharles",
      "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac Charles\",\"cover_image\":\"https://i.imgur.com/I0v4MDy.jpg\",\"about\":\"Programming Addict\",\"location\":\"London, UK\"}}"
    }
  ]
}
2018/01/04 21:32:48
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
body@@ -3848,33 +3848,31 @@ .15%25): %5BBTC- -%3E WAVES%5D -- %3E %5BWAVES-%3EET @@ -3864,39 +3864,36 @@ S%5D %3E %5BWAVES- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D%0A%3E 22:47 @@ -3920,37 +3920,32 @@ BTC- -%3E ANT%5D -- %3E %5BANT- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -3980,37 +3980,32 @@ BTC- -%3E PAY%5D -- %3E %5BPAY- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4032,33 +4032,31 @@ .15%25): %5BBTC- -%3E WAVES%5D -- %3E %5BWAVES-%3EET @@ -4048,39 +4048,36 @@ S%5D %3E %5BWAVES- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D%0A%3E 22:47 @@ -4104,37 +4104,32 @@ BTC- -%3E ANT%5D -- %3E %5BANT- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4164,37 +4164,32 @@ BTC- -%3E PAY%5D -- %3E %5BPAY- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4216,33 +4216,31 @@ .15%25): %5BBTC- -%3E WAVES%5D -- %3E %5BWAVES-%3EET @@ -4232,39 +4232,36 @@ S%5D %3E %5BWAVES- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D%0A%3E 22:47 @@ -4288,37 +4288,32 @@ BTC- -%3E ANT%5D -- %3E %5BANT- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4348,37 +4348,32 @@ BTC- -%3E PAY%5D -- %3E %5BPAY- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4400,33 +4400,31 @@ .08%25): %5BBTC- -%3E WAVES%5D -- %3E %5BWAVES-%3EET @@ -4416,39 +4416,36 @@ S%5D %3E %5BWAVES- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D%0A%3E 22:47 @@ -4472,37 +4472,32 @@ BTC- -%3E ANT%5D -- %3E %5BANT- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4532,37 +4532,32 @@ BTC- -%3E PAY%5D -- %3E %5BPAY- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D @@ -4592,17 +4592,15 @@ BTC- -%3E WAVES%5D -- %3E %5BW @@ -4604,31 +4604,28 @@ %5BWAVES- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D%0A%3E 2 @@ -4656,37 +4656,32 @@ BTC- -%3E ANT%5D -- %3E %5BANT- -%3E ETH%5D -- %3E %5BETH- -%3E BTC%5D
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18693583/Trx 638dd4c1e31af2dfcea45e3379831b62b9805843
View Raw JSON Data
{
  "trx_id": "638dd4c1e31af2dfcea45e3379831b62b9805843",
  "block": 18693583,
  "trx_in_block": 23,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:32:48",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "@@ -3848,33 +3848,31 @@\n .15%25): %5BBTC-\n-%3E\n WAVES%5D \n--\n %3E %5BWAVES-%3EET\n@@ -3864,39 +3864,36 @@\n S%5D %3E %5BWAVES-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D%0A%3E 22:47\n@@ -3920,37 +3920,32 @@\n BTC-\n-%3E\n ANT%5D \n--\n %3E %5BANT-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -3980,37 +3980,32 @@\n BTC-\n-%3E\n PAY%5D \n--\n %3E %5BPAY-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4032,33 +4032,31 @@\n .15%25): %5BBTC-\n-%3E\n WAVES%5D \n--\n %3E %5BWAVES-%3EET\n@@ -4048,39 +4048,36 @@\n S%5D %3E %5BWAVES-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D%0A%3E 22:47\n@@ -4104,37 +4104,32 @@\n BTC-\n-%3E\n ANT%5D \n--\n %3E %5BANT-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4164,37 +4164,32 @@\n BTC-\n-%3E\n PAY%5D \n--\n %3E %5BPAY-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4216,33 +4216,31 @@\n .15%25): %5BBTC-\n-%3E\n WAVES%5D \n--\n %3E %5BWAVES-%3EET\n@@ -4232,39 +4232,36 @@\n S%5D %3E %5BWAVES-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D%0A%3E 22:47\n@@ -4288,37 +4288,32 @@\n BTC-\n-%3E\n ANT%5D \n--\n %3E %5BANT-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4348,37 +4348,32 @@\n BTC-\n-%3E\n PAY%5D \n--\n %3E %5BPAY-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4400,33 +4400,31 @@\n .08%25): %5BBTC-\n-%3E\n WAVES%5D \n--\n %3E %5BWAVES-%3EET\n@@ -4416,39 +4416,36 @@\n S%5D %3E %5BWAVES-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D%0A%3E 22:47\n@@ -4472,37 +4472,32 @@\n BTC-\n-%3E\n ANT%5D \n--\n %3E %5BANT-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4532,37 +4532,32 @@\n BTC-\n-%3E\n PAY%5D \n--\n %3E %5BPAY-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n@@ -4592,17 +4592,15 @@\n BTC-\n-%3E\n WAVES%5D \n--\n %3E %5BW\n@@ -4604,31 +4604,28 @@\n  %5BWAVES-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D%0A%3E 2\n@@ -4656,37 +4656,32 @@\n BTC-\n-%3E\n ANT%5D \n--\n %3E %5BANT-\n-%3E\n ETH%5D \n--\n %3E %5BETH-\n-%3E\n BTC%5D\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
2018/01/04 21:31:45
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
body@@ -3823,38 +3823,25 @@ now:%0A%0A%3E -4/01/2018 10 +22 :47:17 -PM - BTC (0 @@ -3892,38 +3892,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:17 -PM - BTC (0 @@ -3957,38 +3957,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:17 -PM - BTC (0 @@ -4026,30 +4026,17 @@ %5D%0A%3E -4/01/2018 10 +22 :47:17 -PM - BT @@ -4091,38 +4091,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4156,38 +4156,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4221,38 +4221,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4290,38 +4290,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4355,38 +4355,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4420,38 +4420,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4489,38 +4489,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4554,38 +4554,25 @@ %3EBTC%5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BTC (0 @@ -4623,30 +4623,17 @@ %5D%0A%3E -4/01/2018 10 +22 :47:18 -PM - BT @@ -4692,30 +4692,17 @@ %5D%0A%3E -4/01/2018 10 +22 :47:19 -PM - BT @@ -4775,19 +4775,16 @@ at -10 +22 :47:18 - PM , tr
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18693562/Trx 14f9525c2e46112c98f95cf93737212327c02ac4
View Raw JSON Data
{
  "trx_id": "14f9525c2e46112c98f95cf93737212327c02ac4",
  "block": 18693562,
  "trx_in_block": 24,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:31:45",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "@@ -3823,38 +3823,25 @@\n now:%0A%0A%3E \n-4/01/2018 10\n+22\n :47:17 \n-PM \n - BTC (0\n@@ -3892,38 +3892,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:17 \n-PM \n - BTC (0\n@@ -3957,38 +3957,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:17 \n-PM \n - BTC (0\n@@ -4026,30 +4026,17 @@\n %5D%0A%3E \n-4/01/2018 10\n+22\n :47:17 \n-PM \n - BT\n@@ -4091,38 +4091,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4156,38 +4156,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4221,38 +4221,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4290,38 +4290,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4355,38 +4355,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4420,38 +4420,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4489,38 +4489,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4554,38 +4554,25 @@\n %3EBTC%5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BTC (0\n@@ -4623,30 +4623,17 @@\n %5D%0A%3E \n-4/01/2018 10\n+22\n :47:18 \n-PM \n - BT\n@@ -4692,30 +4692,17 @@\n %5D%0A%3E \n-4/01/2018 10\n+22\n :47:19 \n-PM \n - BT\n@@ -4775,19 +4775,16 @@\n  at \n-10\n+22\n :47:18\n- PM\n , tr\n",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
zaccharlesupdated their account properties
2018/01/04 21:29:33
accountzaccharles
memo keySTM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
json metadata{"profile":{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac","cover_image":"https://i.imgur.com/I0v4MDy.jpg","about":"Programming Addict","location":"London, UK"}}
Transaction InfoBlock #18693518/Trx efca486e018ebfceecc6250df269969d9b2000f9
View Raw JSON Data
{
  "trx_id": "efca486e018ebfceecc6250df269969d9b2000f9",
  "block": 18693518,
  "trx_in_block": 39,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:29:33",
  "op": [
    "account_update",
    {
      "account": "zaccharles",
      "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac\",\"cover_image\":\"https://i.imgur.com/I0v4MDy.jpg\",\"about\":\"Programming Addict\",\"location\":\"London, UK\"}}"
    }
  ]
}
zaccharlesupdated their account properties
2018/01/04 21:28:12
accountzaccharles
memo keySTM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
json metadata{"profile":{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac","about":"Programming Addict","location":"London, UK"}}
Transaction InfoBlock #18693491/Trx 1398c0b73fff6aff31ce18c98b7752d322081baa
View Raw JSON Data
{
  "trx_id": "1398c0b73fff6aff31ce18c98b7752d322081baa",
  "block": 18693491,
  "trx_in_block": 35,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:28:12",
  "op": [
    "account_update",
    {
      "account": "zaccharles",
      "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac\",\"about\":\"Programming Addict\",\"location\":\"London, UK\"}}"
    }
  ]
}
2018/01/04 21:27:30
voterzaccharles
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
weight10000 (100.00%)
Transaction InfoBlock #18693477/Trx a8b16cdbf769545a428bde8f34639c498e1928e9
View Raw JSON Data
{
  "trx_id": "a8b16cdbf769545a428bde8f34639c498e1928e9",
  "block": 18693477,
  "trx_in_block": 51,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:27:30",
  "op": [
    "vote",
    {
      "voter": "zaccharles",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "weight": 10000
    }
  ]
}
2018/01/04 21:27:30
parent author
parent permlinkcryptocurrency
authorzaccharles
permlinkcryptocurrency-triangular-arbitrage
titleCryptocurrency Triangular Arbitrage
bodyRecently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas. Given how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your USD from Gemini to GDAX and repeat the process. Since I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around. I found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source "C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another. It then waits for the price gap to close and exits these positions. That's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be. So I decided not to run Blackbird and do some further investigation. I didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit. I use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work. The code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market. Bittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit. The result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now: > 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC] > 4/01/2018 10:47:17 PM - BTC (0.56%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC] > 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC] > 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.56%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.15%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.07%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.08%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.07%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC] > 4/01/2018 10:47:18 PM - BTC (0.08%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC] > 4/01/2018 10:47:19 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC] We can see that at 10:47:18 PM, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take. The average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds. 3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage. Are you interested in hearing more about this project? Let me know!
json metadata{"tags":["cryptocurrency","programming","arbitrage","bitcoin","crypto"],"links":["https://www.investopedia.com/terms/a/arbitrage.asp","https://github.com/butor/blackbird","https://bittrex.com/home/api","https://www.linqpad.net/"],"app":"steemit/0.1","format":"markdown"}
Transaction InfoBlock #18693477/Trx a8b16cdbf769545a428bde8f34639c498e1928e9
View Raw JSON Data
{
  "trx_id": "a8b16cdbf769545a428bde8f34639c498e1928e9",
  "block": 18693477,
  "trx_in_block": 51,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:27:30",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "cryptocurrency",
      "author": "zaccharles",
      "permlink": "cryptocurrency-triangular-arbitrage",
      "title": "Cryptocurrency Triangular Arbitrage",
      "body": "Recently, I start looking for more opportunities to make money with cryptocurrencies beyond trading. I'm a professional programmer, so I started, as I usually do, by thinking how I can automate something for a profit. Most exchanges offer at least a half-decent API, so I began thinking of ideas.\n\nGiven how new they are, I assumed cryptocurrency markets would be inefficient and I knew that one way to take advantage of market inefficiencies was arbitrage. [Arbitrage](https://www.investopedia.com/terms/a/arbitrage.asp) opportunities occur when the price of an asset (a coin or token in our case) is trading at a different price on different exchanges. As an example, if Bitcoin is trading at $15,000 on GDAX and $15,050 on Gemini, you could simultaneously buy on GDAX and sell on Gemini, resulting in a $50 profit. You could then transfer your USD from Gemini to GDAX and repeat the process.\n\nSince I don't have a verified account on GDAX (that's a separate story), and I'm not eligible for a Gemini account, I continued looking around.\n\nI found [Blackbird](https://github.com/butor/blackbird) which advertises itself as an open-source \"C++ trading system that does automatic long/short arbitrage between Bitcoin exchanges\". Blackbird says it looks for a price difference, then buys (long) on one exchange and short sells on another.  It then waits for the price gap to close and exits these positions.\n\nThat's nice, but I started feeling suspicious at this point. Not because I thought the developer had written some bot that was going to steal all my coins, but because, personally, I wouldn't have made this code public if it worked. Logically, this bot is supposed to exploit market inefficiencies, which removes those inefficiencies as a result. The more people running the bot, the less profit there would be.\n\nSo I decided not to run Blackbird and do some further investigation.\n\nI didn't want to deal with multiple exchanges or short selling, so I did a bit of reading about a particular kind of arbitrage I'd read about before called triangular arbitrage. Triangular arbitrage is when you start with one currency, use it to buy a second, trade the second for a third, and lastly, trade the third back to the first. As a more concrete example, you could start with BTC, use it to buy ETH, use that ETH to buy LTC, then sell the LTC for BTC. If there is a significant market inefficiency, this will result in profit.\n\nI use Bittrex often, so I started exploring their API. Their [documentation](https://bittrex.com/home/api) is pathetic, but the API is functional. It has an endpoint which provides details of all of Bittrex's markets (271 at the time of writing) including the Bid and Ask prices. These details were all I needed, so I wrote some C# code in [LINQPad](https://www.linqpad.net/), my goto IDE for this sort of trial and error work.\n\nThe code parsed the data into a graph. I'm talking about the kind of graph you could imagine as a bunch of circles (nodes) linked together by lines. The graph consists of a node for each currency, with links between the nodes representing Bittrex markets which could be used to get from one currency to the other, and the current prices of that market.\n\nBittrex has three base currencies; BTC, ETH, and USDT. I wrote a final piece of code which starts at each of these nodes in the graph and finds a triangular path back to where it started. For example, beginning at the BTC node, we could move to the XRP node, then to the USDT node, then back to the BTC node. The code takes Bittrex's 0.25% trade fee into consideration and outputs all of the triangular arbitrage opportunities which would make a profit.\n\nThe result at this point? There are many times when the market is inefficient to theoretically make a profit. Below is some sample of the output from right now:\n\n> 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:17 PM - BTC (0.56%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:17 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.56%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.15%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.15%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.07%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.08%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.07%): [BTC->PAY] -> [PAY->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:18 PM - BTC (0.08%): [BTC->WAVES] -> [WAVES->ETH] -> [ETH->BTC]\n> 4/01/2018 10:47:19 PM - BTC (0.48%): [BTC->ANT] -> [ANT->ETH] -> [ETH->BTC]\n\nWe can see that at 10:47:18 PM, trading BTC for ANT, ANT for ETH, then ETH for BTC would have yielded a 0.56% net profit after subtracting trading fees. The output was quite noisy, and I'm not interested in a 0.01% profit, so I chose to filter out anything below 1%, which reduced it down to about one opportunity every minute or two, give or take.\n\nThe average profit I'm seeing is approximately 1.5%, and the highest I've seen has been 14.55%, which was available for 3.044 seconds.\n\n3.044 seconds? In this post, I've only written about the very first iteration of the program. Over the past week, I've improved it quite a bit which resulted in a strategy change to what I'm calling linear arbitrage.\n\nAre you interested in hearing more about this project? Let me know!",
      "json_metadata": "{\"tags\":[\"cryptocurrency\",\"programming\",\"arbitrage\",\"bitcoin\",\"crypto\"],\"links\":[\"https://www.investopedia.com/terms/a/arbitrage.asp\",\"https://github.com/butor/blackbird\",\"https://bittrex.com/home/api\",\"https://www.linqpad.net/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}"
    }
  ]
}
zaccharlesupdated their account properties
2018/01/04 21:26:51
accountzaccharles
memo keySTM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
json metadata{"profile":{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac"}}
Transaction InfoBlock #18693464/Trx ba73a3b9b5f084c6aa64d902c46e3f2f52b83e0f
View Raw JSON Data
{
  "trx_id": "ba73a3b9b5f084c6aa64d902c46e3f2f52b83e0f",
  "block": 18693464,
  "trx_in_block": 42,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T21:26:51",
  "op": [
    "account_update",
    {
      "account": "zaccharles",
      "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/mkjP0NA.jpg\",\"name\":\"Zac\"}}"
    }
  ]
}
steemcreated a new account: @zaccharles
2018/01/04 18:04:03
fee0.500 STEEM
delegation57000.000000 VESTS
creatorsteem
new account namezaccharles
owner{"weight_threshold":1,"account_auths":[],"key_auths":[["STM7sU7WRu3yQ8kUs2mYbSD2SySuaXi95NMYLUM4WUTTuHQV5FLcT",1]]}
active{"weight_threshold":1,"account_auths":[],"key_auths":[["STM71Cx8yd7Saesa9zPKEmqmfAwQjaNz6nqWLEg4vmgd9B1V98FgB",1]]}
posting{"weight_threshold":1,"account_auths":[],"key_auths":[["STM7cWGWNy1vd2HpqYcoNmrXEtGfdJqpz2FjeMVJvfXmFEgdtEjVD",1]]}
memo keySTM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
json metadata
extensions[]
Transaction InfoBlock #18689412/Trx ee232211b729fbefb61470e968399bb2f7b96deb
View Raw JSON Data
{
  "trx_id": "ee232211b729fbefb61470e968399bb2f7b96deb",
  "block": 18689412,
  "trx_in_block": 33,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-01-04T18:04:03",
  "op": [
    "account_create_with_delegation",
    {
      "fee": "0.500 STEEM",
      "delegation": "57000.000000 VESTS",
      "creator": "steem",
      "new_account_name": "zaccharles",
      "owner": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM7sU7WRu3yQ8kUs2mYbSD2SySuaXi95NMYLUM4WUTTuHQV5FLcT",
            1
          ]
        ]
      },
      "active": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM71Cx8yd7Saesa9zPKEmqmfAwQjaNz6nqWLEg4vmgd9B1V98FgB",
            1
          ]
        ]
      },
      "posting": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM7cWGWNy1vd2HpqYcoNmrXEtGfdJqpz2FjeMVJvfXmFEgdtEjVD",
            1
          ]
        ]
      },
      "memo_key": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr",
      "json_metadata": "",
      "extensions": []
    }
  ]
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac Charles","cover_image":"https://i.imgur.com/I0v4MDy.jpg","about":"Programming Addict","location":"London, UK"}
JSON METADATA
profile{"profile_image":"https://i.imgur.com/mkjP0NA.jpg","name":"Zac Charles","cover_image":"https://i.imgur.com/I0v4MDy.jpg","about":"Programming Addict","location":"London, UK"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://i.imgur.com/mkjP0NA.jpg",
      "name": "Zac Charles",
      "cover_image": "https://i.imgur.com/I0v4MDy.jpg",
      "about": "Programming Addict",
      "location": "London, UK"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://i.imgur.com/mkjP0NA.jpg",
      "name": "Zac Charles",
      "cover_image": "https://i.imgur.com/I0v4MDy.jpg",
      "about": "Programming Addict",
      "location": "London, UK"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM7sU7WRu3yQ8kUs2mYbSD2SySuaXi95NMYLUM4WUTTuHQV5FLcT1/1
Active
Single Signature
Public Keys
STM71Cx8yd7Saesa9zPKEmqmfAwQjaNz6nqWLEg4vmgd9B1V98FgB1/1
Posting
Single Signature
Public Keys
STM7cWGWNy1vd2HpqYcoNmrXEtGfdJqpz2FjeMVJvfXmFEgdtEjVD1/1
Memo
STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7sU7WRu3yQ8kUs2mYbSD2SySuaXi95NMYLUM4WUTTuHQV5FLcT",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM71Cx8yd7Saesa9zPKEmqmfAwQjaNz6nqWLEg4vmgd9B1V98FgB",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7cWGWNy1vd2HpqYcoNmrXEtGfdJqpz2FjeMVJvfXmFEgdtEjVD",
        1
      ]
    ]
  },
  "memo": "STM7rkG4XMvZVKedcaJ4REemqHRrgqupgg3rtFWZ4DgfsBHbVDEwr"
}

Witness Votes

0 / 30
No active witness votes.
[]