找回密码
 注册
搜索
查看: 670|回复: 8

国语长篇,,开始直播,,题目:寻找小小狗,,

[复制链接]
发表于 2013-12-20 04:19 PM | 显示全部楼层 |阅读模式


同学们,,每年偶们都会遇到如何BALANCE 401K的问题,,
401K是典型的BUY&HOLD,,你进进出出的很多次,,很多时候都不能BEAT BUY&HOLD SPY,,有木有??
不用怕,,不只是你一个人,,是大多数同学,,已经被统计数据证明了无数次,,

于是很多人开始尝试找一种策略,,就是假定市场最后会是涨的前提下,,
#1, 如果你扔掉赚得多的,,换成涨的最少的,,希望这些涨的少的第二年补涨,,有木有??
#2, 同样的,,你也可以有另外一个理念,,强者恒强,,专挑今年涨的最多的接着HOLD,,

你猜猜,,最后的结果,,谁会胜出??

而胜出的那个,,最终如果能完胜 SPY,,你就不用为来每年选谁猜来猜去了,,有木有??

要验证这二个理念究竟谁更好,,

偶们需要

1. 每年开始的价格,,(注意因为每年第一个交易日的日期不一定都是Jan-2)
2. #1, 重复10几年,,
3. #1/#2, 重复10个SYMBOL,,

偶们微波派通常不用这些数据,,不知道有木有哪个PROVIDER已经提供这样的数据,,
所以,,偶们手把手的找出来,,

马上进入技术难点,,

评分

6

查看全部评分

 楼主| 发表于 2013-12-20 05:19 PM | 显示全部楼层
第一步,,找出所有的数据,,EASY,,YAHOO,,OK??
都知道YAHOO可以下载历史数据,,几个电极,,有木有??SAVE AS CSV,,OK!!
Step1.jpg


第二步,,找出每年第一天的数据,,
如果你愿意,,一点点的SCROLL下去,,十几年十几个CSV文件,,
如果你喜欢用EXCEL,,大约也能FILTER出来,,
现在介绍一种新方法,,LINQPAD,,免费的,,当然需要一点CODE,,如下,,

A. 下载安装LINQPAD,
Step2A.jpg

B. 执行程序,,CODE马上来,,
Step2B.jpg

评分

2

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2013-12-20 05:21 PM | 显示全部楼层
void Main()
{
        List<string> lines = new List<string>();
        using(var reader = File.OpenText(@"C:\Users\Admin\Desktop\SPY.csv")) //PLEASE USE REAL FILENAME
        {
                string line;
                while((line = reader.ReadLine()) != null)
                {
                        lines.Add(line);
                }
        }

        var csvData = from row in lines.Skip(1)
                let columns = row.Split(',')
                select new
                {
                        date = DateTime.Parse(columns[0]),
                        open = columns[1],
                        high = columns[2],
                        low = columns[3],
                        close = columns[4],
                        volume = columns[5],
                        adjClose = columns[6],
                };
       
        var JanData = from row in csvData
                          let year = row.date.Year
                          let month = row.date.Month
                          let day = row.date.Day
                          where month == 1
                          orderby year, day
                          select new
                          {        year, month, day, row.close };
                          
        var YearStartData = from row in JanData
                                                group row by row.year into g
                                                select g.First();
                                               
        YearStartData.Dump();
}

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

发表于 2013-12-20 05:33 PM | 显示全部楼层
哇! 介高深! 辛苦了!
回复 鲜花 鸡蛋

使用道具 举报

发表于 2013-12-20 05:35 PM | 显示全部楼层
说真的, 我看这么长, 就没耐心研究下去了,,,

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2013-12-20 05:54 PM | 显示全部楼层
也是,,准备直接上结果算了,,
回复 鲜花 鸡蛋

使用道具 举报

发表于 2013-12-20 06:42 PM | 显示全部楼层
不着急,慢慢来!
回复 鲜花 鸡蛋

使用道具 举报

发表于 2013-12-21 03:02 PM | 显示全部楼层
回复 鲜花 鸡蛋

使用道具 举报

发表于 2013-12-24 08:39 PM | 显示全部楼层
回复 鲜花 鸡蛋

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|www.hutong9.net

GMT-5, 2025-1-16 07:58 AM , Processed in 0.041213 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表