探討多時的「金融科技創新實驗條例草案」(俗稱金融監理沙盒),今天(12月29日)順利三讀過關!臺灣成為繼英國、新加坡、澳洲及香港之後,第5個實施金融實驗沙盒的國家。而且,實驗期間最長可達三年。正式施行日期由行政院訂定,而這也是全球第一部監理沙盒專法。
監理沙盒的目的,是要讓金融新創業者,以科技發展創新金融商品或服務時,可在封閉空間進行實驗,避免金融科技造成風險或危害消費者權益。而在這段實驗期間內,金融新創業者擁有法規豁免權。
相較其他國家,實驗期最長三年也是台灣金融監理沙盒的一大特色。其中,經主管機關核准辦理創新實驗期間,首次核准以一年為限,並可在實驗期間屆滿一個月前,申請延長一次、最長不得超過六個月,但當創新實驗內容涉及應修正法律時,延長不以一次為限;換言之,若涉及修法,實驗期最長三年,超越英國、新加坡、澳洲6至12個月的實驗期,也讓台灣擁有目前全球最長的實驗期間。
其中,這次爭議最大的條文為與「申請案件審查委員組成比例」相關的第六條與第十六條,該條立法目的在於促進金融創新,但連專家學者都不讓他進來,如何達到立法目的?此外金融科技涉及雲端、電信、社群媒體、大數據等應用,以金管會的人力來說,缺乏這樣的技術,也難以客觀審查。考量到申請案件商業、資安、個資等機密性,發起監理沙盒制度的英國,其審查即完全由英國金融管理單位FCA政府官員審理、沒有外部專家。
2017年12月30日 星期六
2017年12月20日 星期三
今年漲90倍之後,萊特幣創始人李啟威清倉了
2011年創立萊特幣的舊金山軟體工程師李啟威(Charlie Lee)20日表示,他在過去幾天中全數出售了手中的萊特幣,並捐出了所得款項。
他說:「過去這些年我都儘量不去談論萊特幣的價格,但價格又是萊特幣增長的一個重要方面,而每當我談論到萊特幣價格,無論好的還是不好的,都有人指責我是為了圖謀個人利益。甚至有人認為我在做空萊特幣!某種意義上,對我來說,持有萊特幣和評論它是一種利益衝突,因為我有如此大的影響力。」
他還表示:「萊特幣讓我在經濟上受益良多,我的狀況已經夠好了,不再需要把個人財務狀況與萊特幣的成功與否聯繫起來。」李啟威說,他手頭除了幾枚收藏貨幣之外,不再持有任何萊特幣。
李啟威未說明出售數量和價格,不過表示數量占全天成交量的比例很小,「並未導致市場崩盤」。
交易平台Coinbase顯示,去年12月20日,萊特幣的價格為3.67元,今年年初的價格為4.39元。目前萊特幣價格依然高於330元,這意味著一年內萊特幣價格漲幅超過90倍。
他說:「過去這些年我都儘量不去談論萊特幣的價格,但價格又是萊特幣增長的一個重要方面,而每當我談論到萊特幣價格,無論好的還是不好的,都有人指責我是為了圖謀個人利益。甚至有人認為我在做空萊特幣!某種意義上,對我來說,持有萊特幣和評論它是一種利益衝突,因為我有如此大的影響力。」
他還表示:「萊特幣讓我在經濟上受益良多,我的狀況已經夠好了,不再需要把個人財務狀況與萊特幣的成功與否聯繫起來。」李啟威說,他手頭除了幾枚收藏貨幣之外,不再持有任何萊特幣。
李啟威未說明出售數量和價格,不過表示數量占全天成交量的比例很小,「並未導致市場崩盤」。
交易平台Coinbase顯示,去年12月20日,萊特幣的價格為3.67元,今年年初的價格為4.39元。目前萊特幣價格依然高於330元,這意味著一年內萊特幣價格漲幅超過90倍。
Bitcoin.com 共同創辦人兼技術長 Emil Oldenburg:已出清比特幣
「Bitcoin.com」共同創辦人兼技術長 Emil Oldenburg,接受挪威科技網站 Breakit 訪問表示,當前各種投資項目中,投資比特幣風險最高;他持有的比特幣都已賣出,轉向擁抱新版比特幣--「比特幣現金」(Bitcoin Cash)。
Oldenburg 批評,舊的比特幣網路幾乎無法使用,流動性極差。傳統比特幣每秒交易量有上限,導致交易費高昂、處理曠日廢時,隨著投資人不斷增加,此一問題不斷惡化。部分數據顯示,確認一筆比特幣交易平均要花上 4.5 小時,最久需要 12 小時,而且比特幣交易費每三個月就加倍。Ars Technica 指出,近來比特幣每筆交易費用高達 26 美元。他說,等到大家了解比特幣如何運作之後,就會開始出售。
他強調,傳統比特幣被激進份子把持,這群人有如「狂熱的比特幣神學士」("fanatical bitcoin talibans"),把比特幣當成數位黃金和科技實驗,而不是真的能夠使用的技術。相較之下,比特幣現金交易費只要 0.012 美元,處理也不須前置時間,優於傳統比特幣。
比特幣現金和比特幣分裂是因為擴容問題擺不平,比特幣現金的區塊容量將一口氣從 1MB 增至 8MB。傳統比特幣則打算實施隔離見證 2x,區塊容量從 1MB 增至 2MB。
Oldenburg 批評,舊的比特幣網路幾乎無法使用,流動性極差。傳統比特幣每秒交易量有上限,導致交易費高昂、處理曠日廢時,隨著投資人不斷增加,此一問題不斷惡化。部分數據顯示,確認一筆比特幣交易平均要花上 4.5 小時,最久需要 12 小時,而且比特幣交易費每三個月就加倍。Ars Technica 指出,近來比特幣每筆交易費用高達 26 美元。他說,等到大家了解比特幣如何運作之後,就會開始出售。
他強調,傳統比特幣被激進份子把持,這群人有如「狂熱的比特幣神學士」("fanatical bitcoin talibans"),把比特幣當成數位黃金和科技實驗,而不是真的能夠使用的技術。相較之下,比特幣現金交易費只要 0.012 美元,處理也不須前置時間,優於傳統比特幣。
比特幣現金和比特幣分裂是因為擴容問題擺不平,比特幣現金的區塊容量將一口氣從 1MB 增至 8MB。傳統比特幣則打算實施隔離見證 2x,區塊容量從 1MB 增至 2MB。
2017年11月23日 星期四
2017年10月20日 星期五
靠人工智慧(AI)投資的指數股票型基金(ETF)
美國舊金山的新創公司EquBot於17日推出這種前所未見的ETF,代號是「AIEQ」(AI powered Eqquity
ETF),將由IBM的AI平台「華生」(Watson)模仿一大群分析師如何研究股市,電腦程式蒐集資料的來源包括向監管機構的申報資料、超過百萬則新聞、企業管理階層的個人資料、經濟數據、情緒量表,和金融模型,建立出來的投資部位包括30支到70支不等的股票。選股完成後,ETF
Managers Group的人類操盤手每天還會依據電腦意見(如果建議變更)調整投資配置。
差別在於AI可以24小時不間斷地工作。EquBot共同創辦人阿莫多爾(Art Amador)說:「這是個資訊爆炸的時代。AI能提供更可靠的投資方法。」EquBot將與ETF Managers Group公司合作,用AI和機器學習每天審視6,000多家美國上市公司,力求基金配置多元化。
差別在於AI可以24小時不間斷地工作。EquBot共同創辦人阿莫多爾(Art Amador)說:「這是個資訊爆炸的時代。AI能提供更可靠的投資方法。」EquBot將與ETF Managers Group公司合作,用AI和機器學習每天審視6,000多家美國上市公司,力求基金配置多元化。
2017年10月17日 星期二
使用深度學習來判讀K線擬定投資決策
參考論文 :
使用深度學習來判讀K線擬定投資決策
Deep Stock Representation Learning : From Candlestick Charts to Investment Decisions
下載 https://arxiv.org/pdf/1709.03803.pdf
使用深度學習來判讀K線擬定投資決策
Deep Stock Representation Learning : From Candlestick Charts to Investment Decisions
下載 https://arxiv.org/pdf/1709.03803.pdf
2017年9月18日 星期一
第一次挖礦就上手 -- A Taste of Cryptocurrencies
贊助帳號:
門羅幣
XMR:
4C3eEhrB4z11p1oRD9BLxUdj7cbhpawZMLtK82gJAdM2BoTi1aWL37wRe7CeR8TtfnifHXoe1bY8CXRx2sMqQ8nWRGogZthNEZJTEQ5gNx
挖礦挖的是俗稱的加密貨幣或稱作虛擬貨幣,最多也是最早最長的一條區塊鏈代表,就是比特幣(Bitcoin),現在第二常見的應該就是以太坊(Ethereum),號稱 Bitcoin 2.0,擁有智能合約的功能。目前加密貨幣有八百多種一千多種,可以參考 加密貨幣與他們的產地 的介紹。
今年比特幣繼續狂漲,以太坊飆漲30倍,所以就有了 隨便買,隨時買,不要賣 的說法。
以太坊2015年推出,2017年飆漲30倍,以二年計算每年的報酬率是 447.7%。
假定您每年投資12萬,持續不斷的投資30年之後,投資總額共360萬,期望最後能擁有30倍的金額 10800 萬元,請問每年需要的投資報酬率是多少?答案是每年需要 18.65% 的報酬率才能達成。
首先要開戶,可以選擇使用像網路銀行的雲端錢包,或是自己桌上電腦的軟體錢包。
雲端電子錢包
可以到 www.coinbase.com 註冊一個電子錢包,同時可以用來存放比特幣,以太幣,萊特幣。
台灣則有 Maicoin、 幣託 BitoEx。
或是到國外交易所開個帳戶,例如: 幣安。
也可以自己安裝桌上電腦錢包,安全但是比較不方便。
. Windows 10 直接安裝 Bitcoin Miner 馬上可以體驗挖礦。
<<待續>>
.ethminer
參考這篇 如何使用Windows來挖礦,也可以自己挖礦或是使用礦池。
.Claymore
<<待續>>
也可以自己安裝桌上電腦錢包,安全但是比較不方便。
參考這篇如何使用 XMR-Stak-CPU 挖礦 Monero
<<待續>>
<<待續>>
數位貨幣買賣:
maicoin - 也賣ETH(可萊爾富付款)
https://www.maicoin.com/zh-TW/
bitoex - 幣託(可全家付款)
https://www.bitoex.com/
拍賣:
bitexc - 比特台灣交換網
https://www.bitexc.com/
論壇:
Bitcoin比特幣中文論壇
https://www.facebook.com/groups/bitcoin.tw/
cryptocurrency - 數位貨幣論壇
http://cryptocurrency.tw/
Discord及時討論區
https://discord.gg/JeTuGAc
Line Band及時討論區
http://band.us/n/a6a0UbIcReP8p
Telegram及時討論區
https://t.me/TheCryptoCurrency
新聞:
btctw.tumblr
http://btctw.tumblr.com/
bitcoin-tw
http://www.bitcoin-tw.com/
錢包:
coolbitx - 卡片冷錢包
https://coolbitx.com/
Bitcoin Debit Card
WageCan
https://www.wagecan.com/
blockchain科技:
DLT DOJO
https://www.facebook.com/groups/dltdojo/
dtco.co
https://dtco.co/
區塊客
http://blockcast.it/
即時行情搬磚
https://www.bitexc.com/
門羅幣
XMR:
4C3eEhrB4z11p1oRD9BLxUdj7cbhpawZMLtK82gJAdM2BoTi1aWL37wRe7CeR8TtfnifHXoe1bY8CXRx2sMqQ8nWRGogZthNEZJTEQ5gNx
挖礦挖的是俗稱的加密貨幣或稱作虛擬貨幣,最多也是最早最長的一條區塊鏈代表,就是比特幣(Bitcoin),現在第二常見的應該就是以太坊(Ethereum),號稱 Bitcoin 2.0,擁有智能合約的功能。目前加密貨幣有
今年比特幣繼續狂漲,以太坊飆漲30倍,所以就有了 隨便買,隨時買,不要賣 的說法。
以太坊2015年推出,2017年飆漲30倍,以二年計算每年的報酬率是 447.7%。
假定您每年投資12萬,持續不斷的投資30年之後,投資總額共360萬,期望最後能擁有30倍的金額 10800 萬元,請問每年需要的投資報酬率是多少?答案是每年需要 18.65% 的報酬率才能達成。
A. 比特幣(bitcoin,BTC,位元幣;1聰 Satoshi = 0.00000001 BTC)
開戶:
首先要開戶,可以選擇使用像網路銀行的雲端錢包,或是自己桌上電腦的軟體錢包。
雲端電子錢包
可以到 www.coinbase.com 註冊一個電子錢包,同時可以用來存放比特幣,以太幣,萊特幣。
台灣則有 Maicoin、 幣託 BitoEx。
或是到國外交易所開個帳戶,例如: 幣安。
也可以自己安裝桌上電腦錢包,安全但是比較不方便。
挖礦方法:
. Windows 10 直接安裝 Bitcoin Miner 馬上可以體驗挖礦。
自己設定挖礦軟體
Python Bitcoin Miner<<待續>>
B. 以太坊(Ethereum,ETH)
開戶:
可以到 www.coinbase.com 註冊一個電子錢包,同時可以用來存放比特幣,以太幣,萊特幣。挖礦方法:
直接到 MinerGate 下載軟體,安裝好之後就可以立刻挖礦。除了以太坊,也可以同時挖其他的幣別。自己設定挖礦軟體
.ethminer
參考這篇 如何使用Windows來挖礦,也可以自己挖礦或是使用礦池。
.Claymore
<<待續>>
C. 門羅幣 (Monero,XMR)
開戶:
到國外交易所開個帳戶,例如: 幣安。也可以自己安裝桌上電腦錢包,安全但是比較不方便。
挖礦方法:
直接到 MinerGate 下載軟體,安裝好之後就可以立刻挖礦。除了門羅幣,也可以同時挖其他的幣別。自己設定挖礦軟體
參考這篇如何使用 XMR-Stak-CPU 挖礦 Monero
<<待續>>
挖礦硬體
<<待續>>
數位貨幣買賣:
maicoin - 也賣ETH(可萊爾富付款)
https://www.maicoin.com/zh-TW/
bitoex - 幣託(可全家付款)
https://www.bitoex.com/
拍賣:
bitexc - 比特台灣交換網
https://www.bitexc.com/
論壇:
Bitcoin比特幣中文論壇
https://www.facebook.com/groups/bitcoin.tw/
cryptocurrency - 數位貨幣論壇
http://cryptocurrency.tw/
Discord及時討論區
https://discord.gg/JeTuGAc
Line Band及時討論區
http://band.us/n/a6a0UbIcReP8p
Telegram及時討論區
https://t.me/TheCryptoCurrency
新聞:
btctw.tumblr
http://btctw.tumblr.com/
bitcoin-tw
http://www.bitcoin-tw.com/
錢包:
coolbitx - 卡片冷錢包
https://coolbitx.com/
Bitcoin Debit Card
WageCan
https://www.wagecan.com/
blockchain科技:
DLT DOJO
https://www.facebook.com/groups/dltdojo/
dtco.co
https://dtco.co/
區塊客
http://blockcast.it/
即時行情搬磚
https://www.bitexc.com/
2017年9月17日 星期日
Pyminer -- Python Bitcoin Miner
#!/usr/bin/python
#
# Copyright 2011 Jeff Garzik
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
# Copyright 2011 Jeff Garzik
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
#
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import time | |
import json | |
import pprint | |
import hashlib | |
import struct | |
import re | |
import base64 | |
import httplib | |
import sys | |
from multiprocessing import Process | |
ERR_SLEEP = 15 | |
MAX_NONCE = 1000000L | |
settings = {} | |
pp = pprint.PrettyPrinter(indent=4) | |
class BitcoinRPC: | |
OBJID = 1 | |
def __init__(self, host, port, username, password): | |
authpair = "%s:%s" % (username, password) | |
self.authhdr = "Basic %s" % (base64.b64encode(authpair)) | |
self.conn = httplib.HTTPConnection(host, port, False, 30) | |
def rpc(self, method, params=None): | |
self.OBJID += 1 | |
obj = { 'version' : '1.1', | |
'method' : method, | |
'id' : self.OBJID } | |
if params is None: | |
obj['params'] = [] | |
else: | |
obj['params'] = params | |
self.conn.request('POST', '/', json.dumps(obj), | |
{ 'Authorization' : self.authhdr, | |
'Content-type' : 'application/json' }) | |
resp = self.conn.getresponse() | |
if resp is None: | |
print "JSON-RPC: no response" | |
return None | |
body = resp.read() | |
resp_obj = json.loads(body) | |
if resp_obj is None: | |
print "JSON-RPC: cannot JSON-decode body" | |
return None | |
if 'error' in resp_obj and resp_obj['error'] != None: | |
return resp_obj['error'] | |
if 'result' not in resp_obj: | |
print "JSON-RPC: no result in object" | |
return None | |
return resp_obj['result'] | |
def getblockcount(self): | |
return self.rpc('getblockcount') | |
def getwork(self, data=None): | |
return self.rpc('getwork', data) | |
def uint32(x): | |
return x & 0xffffffffL | |
def bytereverse(x): | |
return uint32(( ((x) << 24) | (((x) << 8) & 0x00ff0000) | (((x) >> 8) & 0x0000ff00) | ((x) >> 24) )) | |
def bufreverse(in_buf): | |
out_words = [] | |
for i in range(0, len(in_buf), 4): | |
word = struct.unpack('@I', in_buf[i:i+4])[0] | |
out_words.append(struct.pack('@I', bytereverse(word))) | |
return ''.join(out_words) | |
def wordreverse(in_buf): | |
out_words = [] | |
for i in range(0, len(in_buf), 4): | |
out_words.append(in_buf[i:i+4]) | |
out_words.reverse() | |
return ''.join(out_words) | |
class Miner: | |
def __init__(self, id): | |
self.id = id | |
self.max_nonce = MAX_NONCE | |
def work(self, datastr, targetstr): | |
# decode work data hex string to binary | |
static_data = datastr.decode('hex') | |
static_data = bufreverse(static_data) | |
# the first 76b of 80b do not change | |
blk_hdr = static_data[:76] | |
# decode 256-bit target value | |
targetbin = targetstr.decode('hex') | |
targetbin = targetbin[::-1] # byte-swap and dword-swap | |
targetbin_str = targetbin.encode('hex') | |
target = long(targetbin_str, 16) | |
# pre-hash first 76b of block header | |
static_hash = hashlib.sha256() | |
static_hash.update(blk_hdr) | |
for nonce in xrange(self.max_nonce): | |
# encode 32-bit nonce value | |
nonce_bin = struct.pack("<I", nonce) | |
# hash final 4b, the nonce value | |
hash1_o = static_hash.copy() | |
hash1_o.update(nonce_bin) | |
hash1 = hash1_o.digest() | |
# sha256 hash of sha256 hash | |
hash_o = hashlib.sha256() | |
hash_o.update(hash1) | |
hash = hash_o.digest() | |
# quick test for winning solution: high 32 bits zero? | |
if hash[-4:] != '\0\0\0\0': | |
continue | |
# convert binary hash to 256-bit Python long | |
hash = bufreverse(hash) | |
hash = wordreverse(hash) | |
hash_str = hash.encode('hex') | |
l = long(hash_str, 16) | |
# proof-of-work test: hash < target | |
if l < target: | |
print time.asctime(), "PROOF-OF-WORK found: %064x" % (l,) | |
return (nonce + 1, nonce_bin) | |
else: | |
print time.asctime(), "PROOF-OF-WORK false positive %064x" % (l,) | |
# return (nonce + 1, nonce_bin) | |
return (nonce + 1, None) | |
def submit_work(self, rpc, original_data, nonce_bin): | |
nonce_bin = bufreverse(nonce_bin) | |
nonce = nonce_bin.encode('hex') | |
solution = original_data[:152] + nonce + original_data[160:256] | |
param_arr = [ solution ] | |
result = rpc.getwork(param_arr) | |
print time.asctime(), "--> Upstream RPC result:", result | |
def iterate(self, rpc): | |
work = rpc.getwork() | |
if work is None: | |
time.sleep(ERR_SLEEP) | |
return | |
if 'data' not in work or 'target' not in work: | |
time.sleep(ERR_SLEEP) | |
return | |
time_start = time.time() | |
(hashes_done, nonce_bin) = self.work(work['data'], work['target']) | |
time_end = time.time() | |
time_diff = time_end - time_start | |
self.max_nonce = long((hashes_done * settings['scantime']) / time_diff) | |
if self.max_nonce > 0xfffffffaL: | |
self.max_nonce = 0xfffffffaL | |
if settings['hashmeter']: | |
print "HashMeter(%d): %d hashes, %.2f Khash/sec" % (self.id, hashes_done, (hashes_done / 1000.0) / time_diff) | |
if nonce_bin is not None: | |
self.submit_work(rpc, work['data'], nonce_bin) | |
def loop(self): | |
rpc = BitcoinRPC(settings['host'], settings['port'], settings['rpcuser'], settings['rpcpass']) | |
if rpc is None: | |
return | |
while True: | |
self.iterate(rpc) | |
def miner_thread(id): | |
miner = Miner(id) | |
miner.loop() | |
if __name__ == '__main__': | |
if len(sys.argv) != 2: | |
print "Usage: pyminer.py CONFIG-FILE" | |
sys.exit(1) | |
f = open(sys.argv[1]) | |
for line in f: | |
# skip comment lines | |
m = re.search('^\s*#', line) | |
if m: | |
continue | |
# parse key=value lines | |
m = re.search('^(\w+)\s*=\s*(\S.*)$', line) | |
if m is None: | |
continue | |
settings[m.group(1)] = m.group(2) | |
f.close() | |
if 'host' not in settings: | |
settings['host'] = '127.0.0.1' | |
if 'port' not in settings: | |
settings['port'] = 8332 | |
if 'threads' not in settings: | |
settings['threads'] = 1 | |
if 'hashmeter' not in settings: | |
settings['hashmeter'] = 0 | |
if 'scantime' not in settings: | |
settings['scantime'] = 30L | |
if 'rpcuser' not in settings or 'rpcpass' not in settings: | |
print "Missing username and/or password in cfg file" | |
sys.exit(1) | |
settings['port'] = int(settings['port']) | |
settings['threads'] = int(settings['threads']) | |
settings['hashmeter'] = int(settings['hashmeter']) | |
settings['scantime'] = long(settings['scantime']) | |
thr_list = [] | |
for thr_id in range(settings['threads']): | |
p = Process(target=miner_thread, args=(thr_id,)) | |
p.start() | |
thr_list.append(p) | |
time.sleep(1) # stagger threads | |
print settings['threads'], "mining threads started" | |
print time.asctime(), "Miner Starts - %s:%s" % (settings['host'], settings['port']) | |
try: | |
for thr_proc in thr_list: | |
thr_proc.join() | |
except KeyboardInterrupt: | |
pass | |
print time.asctime(), "Miner Stops - %s:%s" % (settings['host'], settings['port']) |
標籤:
CryptoCoins,
python
訂閱:
文章 (Atom)