用前几天讨论的 只有 3 个运算操作的解密函数 更新了之前的时间锁算法。现在“GPU 并行加密时间 / CPU 单核解密时间”的比例更大,在高端显卡上可达到万级,几秒钟的加密可生成一天的解密。 在线演示 默认 8192 并发,高端显卡可以调高。想测试 GPU 性能的话,可以把 Cost 调到几万,否则加密很快就完成。 加密完成后点击 Share 按钮可生成解密链接,打开后可测试 CPU 的解密速度和用时。不过 CPU 单核性能不像 GPU 那样有巨大差距,即使顶配也只有 6GHz 左右(能长时间稳定运行的频率),因此解密的时间差距相对公平,这也是这个锁的意义。 原理细节 (看不懂的话让 AI 解读下就可以,文档本身就是 AI 写的~)
用前几天讨论的 只有 3 个运算操作的解密函数 更新了之前的时间锁算法。现在“GPU 并行加密时间 / CPU 单核解密时间”的比例更大,在高端显卡上可达到万级,几秒钟的加密可生成一天的解密。 在线演示 默认 8192 并发,高端显卡可以调高。想测试 GPU 性能的话,可以把 Cost 调到几万,否则加密很快就完成。 加密完成后点击 Share 按钮可生成解密链接,打开后可测试 CPU 的解密速度和用时。不过 CPU 单核性能不像 GPU 那样有巨大差距,即使顶配也只有 6GHz 左右(能长时间稳定运行的频率),因此解密的时间差距相对公平,这也是这个锁的意义。 原理细节 (看不懂的话让 AI 解读下就可以,文档本身就是 AI 写的~)
想让 Codex 帮我读源码,一个函数分析半天,我认真看它分析,它认真胡说八道。 怀疑原因: 商家换便宜模型了; 用户太多,模型被带偏了; 也可能是我天天拿它分析屎山代码,把它训练疯了。 自己的 Codex 又舍不得在公司用(此处自我推广.jpg: https://www.v2ex.com/t/1213396 )。 一边骂,一边继续维护别人留下来的屎山。 人和 AI ,总得疯一个。
D(x0)={d∈R|f(x0+d)>f(x0)}。 (1)当 x≥0 时,f(x)=1-x,求 D(-1); (2)当 x≠0 时,f(x) 是奇函数,x1x2≠0,f(x1)≤f(x2), 求证:D(x1)⊇D(x2); (3)f(x) 满足: ① f(x1)≤f(x2) 时,D(x1)⊇D(x2); ② 0<x<1 时,f(x)<f(0)。 求证: (i)f(0)≥1; (ii)f(x) 在 (0,+∞) 单调递增。 --- 直接解题,按照高考标准,不要跳步,格式规范,按照高考标准书写和解题``` [message (10).txt|attachment](upload://y0J96UQWYAHZOy1jFAGkOxj078a.txt) (6.3 KB) 9 个帖子 - 4 位参与者 阅读完整话题
用的v4pro,和codex一起让他给个新增功能的方案,codex哪个函数怎么设计都说出来了,opencode就几句话,是模型的问题还是工具的问题 1 个帖子 - 1 位参与者 阅读完整话题
佬们帮我看看对不对 openrouter的思维链返回在reasoning_details非标准字段中。如果此时使用 const stream= client.chat.completions.stream(...) await stream.finalChatCompletion() 在ChatCompletionStream.ts中的accumulateChatCompletion函数 非标准字段会直接赋值而不是拼接 Object.assign(choice.message, rest); 因此 reasoning_details 就只会剩下最后一个… 1 个帖子 - 1 位参与者 阅读完整话题
上次问了 回测和实盘差距的因素 ,V 友 @KeinHong 特别提了“数据有未来函数”,最近又重新研究了下这块,和大家分享下收获: 1. 什么是未来函数? 简单来说,就是在 T 时刻的代码逻辑里,使用了 T+1 时刻的信息。 最典型的逻辑错误: 收盘价陷阱: 计算出今日收盘价突破压力位,然后在“今日开盘”买入。 全局归一化: 在预处理数据时,用了整个数据集的最大值/最小值。 偷看一眼: 使用 df\['close'\].shift(-1) 却忘了这是在模拟历史。 2. 难以察觉未来函数? 在复杂的策略中,未来函数往往隐藏在数据清洗和特征工程阶段。 一旦引入,回测结果就会变成上帝视角,曲线完美,但实盘时并没有上帝视角。 3. 尝试去掉未来函数 以下是一个简单的 Python 示例,演示如何获取数据并确保交易决策仅基于过去的信息。 import time import requests import pandas as pd API_KEY = 'YOUR_API_KEY' BASE_URL = 'https://quote.alltick.io/quote-b-api/kline' def get_historical_data(symbol, bin_size='1m'): params = { 'token': API_KEY, 'symbol': symbol, 'kline_type': bin_size, # 1m, 5m, 1h, 1d 'query_count': 500 } response = requests.get(BASE_URL, params=params) data = response.json() if data['code'] != 200: print("Error fetching data") return None df = pd.DataFrame(data['data']['list']) df['time'] = pd.to_datetime(df['t'], unit='s') df.set_index('time', inplace=True) return df[['o', 'h', 'l', 'c', 'v']] # Open, High, Low, Close, Volume def backtest_logic(df): """ 一个简单的突破策略 核心:确保信号产生后,在下一根 K 线才能成交 """ # 1. 特征计算:仅使用过去的数据 (shift 1 位) # 计算前 20 分钟的最高价,不包含当前这一分钟 df['prev_high'] = df['c'].shift(1).rolling(window=20).max() # 2. 产生信号:当前价格 > 过去 20 分钟最高价 # 注意:这里的 'c' 是当前时刻确定的,买入动作必须发生在‘未来’ df['signal'] = df['c'] > df['prev_high'] # 3. 模拟成交 (关键!避免未来函数) # 我们不能以产生信号那一刻的收盘价成交,而应模拟以“下一分钟开盘价”买入 df['execution_price'] = df['o'].shift(-1) # 计算收益 df['returns'] = 0.0 # 只有信号为 True 且我们有下一分钟成交价时才计算 hold_mask = df['signal'].shift(1) == True df.loc[hold_mask, 'returns'] = (df['c'] - df['execution_price'].shift(1)) / df['execution_price'].shift(1) return df.dropna() # 运行回测(以黄金 XAUUSD 为例) gold_data = get_historical_data('XAUUSD') if gold_data is not None: results = backtest_logic(gold_data) print(results[['c', 'prev_high', 'signal', 'returns']].tail(10)) 4. 如何自测? 如果你怀疑回测有问题,尝试: 随机噪声法: 将历史数据的价格顺序随机打乱,如果策略还能跑出高收益,说明逻辑里肯定藏着未来函数——因为它正在利用“乱序”后的未来信息。 信号漂移检查: 记录下回测中某天的买入信号。然后删除该日期之后的所有数据,重新跑一遍。如果那个信号消失了,说明该信号依赖于未来的数据。 最后,回测是用来证伪的,要时刻警惕 shift(-1) 或 max(future) 的逻辑,才能在量化这条路上走得远一点。欢迎大家来讨论下避免未来函数的方式
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~
周末写了一个非常简单的解密函数:将参数 x 乘以一个常数,然后高低位置换,重复 n 次。 代码: #include <cstdint> #include <iostream> uint64_t solve(uint64_t x, uint64_t n) { while (n--) { x *= 0xD1342543DE82EF95; x ^= x >> 32; } return x; } int main() { uint64_t result = solve(11451419260817, 1e14); std::cout << "x" << result % 100000 << "\n"; return 0; } 结果是支付宝口令红包,最先破解者奖赏一杯咖啡☕️。(明天 11 点过期) ⚠️ 上述代码大约需运行一天时间( 5GHz ),暴力运算大概率会超时,因此需要一些数学技巧来优化。如果能找到优化方案,我再发一个新的测试~